9331051191/8910896319

The Golden Road : How Ancient India Transformed the World (New Book)

In stock
Author Name :

Product details

FROM THE AWARD-WINNING, BESTSELLING AUTHOR AND CO-HOST OF THE CHART TOPPING EMPIRE PODCAST – A REVOLUTIONARY NEW HISTORY OF THE DIFFUSION OF INDIAN IDEAS ‘A master storyteller’ Sunday Times India is the forgotten heart of the ancient world For a millennium and a half, India was a confident exporter of its diverse civilisation, creating around it a vast empire of ideas. Indian art, religions, technology, astronomy, music, dance, literature, mathematics and mythology blazed a trail across the world, along a Golden Road that stretched from the Red Sea to the Pacific. William Dalrymple draws from a lifetime of scholarship to highlight India’s oft­forgotten position as the heart of ancient Eurasia. For the first time, he gives a name to this spread of Indian ideas that transformed the world. From the largest Hindu temple in the world at Angkor Wat to the Buddhism of China, from the trade that helped fund the Roman Empire to the creation of the numerals we use today (including zero), India transformed the culture and technology of its ancient world – and our world today as we know it. Praise for William Dalrymple and The Anarchy ‘A superb historian with a visceral understanding of India’ The Times ‘Magnificently readable, deeply researched and richly atmospheric’ Francis Wheen, Mail on Sunday

  • ISBN-10 : 1408864418
  • ISBN-13 : 978-1408864418
  • Height : 3.12 CM
  • Weight : 450 g
  • Dimensions : 15.32 x 3.12 x 23.42 cm
  • Item Length : 23.42 CM
  • Country of Origin : ‎ India

Related products


Whoops! There was an error.
ErrorException (E_NOTICE)
fwrite(): write of 1479 bytes failed with errno=122 Disk quota exceeded ErrorException thrown with message "fwrite(): write of 1479 bytes failed with errno=122 Disk quota exceeded" Stacktrace: #11 ErrorException in /home/trytelldxrko/public_html/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:133 #10 fwrite in /home/trytelldxrko/public_html/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:133 #9 Monolog\Handler\StreamHandler:streamWrite in /home/trytelldxrko/public_html/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:119 #8 Monolog\Handler\StreamHandler:write in /home/trytelldxrko/public_html/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php:39 #7 Monolog\Handler\AbstractProcessingHandler:handle in /home/trytelldxrko/public_html/vendor/monolog/monolog/src/Monolog/Logger.php:344 #6 Monolog\Logger:addRecord in /home/trytelldxrko/public_html/vendor/monolog/monolog/src/Monolog/Logger.php:712 #5 Monolog\Logger:error in /home/trytelldxrko/public_html/vendor/laravel/framework/src/Illuminate/Log/Writer.php:203 #4 Illuminate\Log\Writer:writeLog in /home/trytelldxrko/public_html/vendor/laravel/framework/src/Illuminate/Log/Writer.php:114 #3 Illuminate\Log\Writer:error in /home/trytelldxrko/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php:113 #2 Illuminate\Foundation\Exceptions\Handler:report in /home/trytelldxrko/public_html/app/Exceptions/Handler.php:41 #1 App\Exceptions\Handler:report in /home/trytelldxrko/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php:81 #0 Illuminate\Foundation\Bootstrap\HandleExceptions:handleException in [internal]:0
11
ErrorException
/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php133
10
fwrite
/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php133
9
Monolog\Handler\StreamHandler streamWrite
/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php119
8
Monolog\Handler\StreamHandler write
/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php39
7
Monolog\Handler\AbstractProcessingHandler handle
/vendor/monolog/monolog/src/Monolog/Logger.php344
6
Monolog\Logger addRecord
/vendor/monolog/monolog/src/Monolog/Logger.php712
5
Monolog\Logger error
/vendor/laravel/framework/src/Illuminate/Log/Writer.php203
4
Illuminate\Log\Writer writeLog
/vendor/laravel/framework/src/Illuminate/Log/Writer.php114
3
Illuminate\Log\Writer error
/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php113
2
Illuminate\Foundation\Exceptions\Handler report
/app/Exceptions/Handler.php41
1
App\Exceptions\Handler report
/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php81
0
Illuminate\Foundation\Bootstrap\HandleExceptions handleException
[internal]0
/home/trytelldxrko/public_html/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php
        if ($this->useLocking) {
            // ignoring errors here, there's not much we can do about them
            flock($this->stream, LOCK_EX);
        }
 
        $this->streamWrite($this->stream, $record);
 
        if ($this->useLocking) {
            flock($this->stream, LOCK_UN);
        }
    }
 
    /**
     * Write to stream
     * @param resource $stream
     * @param array $record
     */
    protected function streamWrite($stream, array $record)
    {
        fwrite($stream, (string) $record['formatted']);
    }
 
    private function customErrorHandler($code, $msg)
    {
        $this->errorMessage = preg_replace('{^(fopen|mkdir)\(.*?\): }', '', $msg);
    }
 
    /**
     * @param string $stream
     *
     * @return null|string
     */
    private function getDirFromStream($stream)
    {
        $pos = strpos($stream, '://');
        if ($pos === false) {
            return dirname($stream);
        }
 
        if ('file://' === substr($stream, 0, 7)) {
Arguments
  1. "fwrite(): write of 1479 bytes failed with errno=122 Disk quota exceeded"
    
/home/trytelldxrko/public_html/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php
        if ($this->useLocking) {
            // ignoring errors here, there's not much we can do about them
            flock($this->stream, LOCK_EX);
        }
 
        $this->streamWrite($this->stream, $record);
 
        if ($this->useLocking) {
            flock($this->stream, LOCK_UN);
        }
    }
 
    /**
     * Write to stream
     * @param resource $stream
     * @param array $record
     */
    protected function streamWrite($stream, array $record)
    {
        fwrite($stream, (string) $record['formatted']);
    }
 
    private function customErrorHandler($code, $msg)
    {
        $this->errorMessage = preg_replace('{^(fopen|mkdir)\(.*?\): }', '', $msg);
    }
 
    /**
     * @param string $stream
     *
     * @return null|string
     */
    private function getDirFromStream($stream)
    {
        $pos = strpos($stream, '://');
        if ($pos === false) {
            return dirname($stream);
        }
 
        if ('file://' === substr($stream, 0, 7)) {
/home/trytelldxrko/public_html/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php
            $this->errorMessage = null;
            set_error_handler(array($this, 'customErrorHandler'));
            $this->stream = fopen($this->url, 'a');
            if ($this->filePermission !== null) {
                @chmod($this->url, $this->filePermission);
            }
            restore_error_handler();
            if (!is_resource($this->stream)) {
                $this->stream = null;
 
                throw new \UnexpectedValueException(sprintf('The stream or file "%s" could not be opened in append mode: '.$this->errorMessage, $this->url));
            }
        }
 
        if ($this->useLocking) {
            // ignoring errors here, there's not much we can do about them
            flock($this->stream, LOCK_EX);
        }
 
        $this->streamWrite($this->stream, $record);
 
        if ($this->useLocking) {
            flock($this->stream, LOCK_UN);
        }
    }
 
    /**
     * Write to stream
     * @param resource $stream
     * @param array $record
     */
    protected function streamWrite($stream, array $record)
    {
        fwrite($stream, (string) $record['formatted']);
    }
 
    private function customErrorHandler($code, $msg)
    {
        $this->errorMessage = preg_replace('{^(fopen|mkdir)\(.*?\): }', '', $msg);
    }
/home/trytelldxrko/public_html/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php
 *
 * @author Jordi Boggiano <j.boggiano@seld.be>
 * @author Christophe Coevoet <stof@notk.org>
 */
abstract class AbstractProcessingHandler extends AbstractHandler
{
    /**
     * {@inheritdoc}
     */
    public function handle(array $record)
    {
        if (!$this->isHandling($record)) {
            return false;
        }
 
        $record = $this->processRecord($record);
 
        $record['formatted'] = $this->getFormatter()->format($record);
 
        $this->write($record);
 
        return false === $this->bubble;
    }
 
    /**
     * Writes the record down to the log of the implementing handler
     *
     * @param  array $record
     * @return void
     */
    abstract protected function write(array $record);
 
    /**
     * Processes a record.
     *
     * @param  array $record
     * @return array
     */
    protected function processRecord(array $record)
    {
/home/trytelldxrko/public_html/vendor/monolog/monolog/src/Monolog/Logger.php
        }
        $ts->setTimezone(static::$timezone);
 
        $record = array(
            'message' => (string) $message,
            'context' => $context,
            'level' => $level,
            'level_name' => $levelName,
            'channel' => $this->name,
            'datetime' => $ts,
            'extra' => array(),
        );
 
        try {
            foreach ($this->processors as $processor) {
                $record = call_user_func($processor, $record);
            }
 
            while ($handler = current($this->handlers)) {
                if (true === $handler->handle($record)) {
                    break;
                }
 
                next($this->handlers);
            }
        } catch (Exception $e) {
            $this->handleException($e, $record);
        }
 
        return true;
    }
 
    /**
     * Ends a log cycle and frees all resources used by handlers.
     *
     * Closing a Handler means flushing all buffers and freeing any open resources/handles.
     * Handlers that have been closed should be able to accept log records again and re-open
     * themselves on demand, but this may not always be possible depending on implementation.
     *
     * This is useful at the end of a request and will be called automatically on every handler
/home/trytelldxrko/public_html/vendor/monolog/monolog/src/Monolog/Logger.php
     * @param  array  $context The log context
     * @return bool   Whether the record has been processed
     */
    public function err($message, array $context = array())
    {
        return $this->addRecord(static::ERROR, $message, $context);
    }
 
    /**
     * Adds a log record at the ERROR level.
     *
     * This method allows for compatibility with common interfaces.
     *
     * @param  string $message The log message
     * @param  array  $context The log context
     * @return bool   Whether the record has been processed
     */
    public function error($message, array $context = array())
    {
        return $this->addRecord(static::ERROR, $message, $context);
    }
 
    /**
     * Adds a log record at the CRITICAL level.
     *
     * This method allows for compatibility with common interfaces.
     *
     * @param  string $message The log message
     * @param  array  $context The log context
     * @return bool   Whether the record has been processed
     */
    public function crit($message, array $context = array())
    {
        return $this->addRecord(static::CRITICAL, $message, $context);
    }
 
    /**
     * Adds a log record at the CRITICAL level.
     *
     * This method allows for compatibility with common interfaces.
/home/trytelldxrko/public_html/vendor/laravel/framework/src/Illuminate/Log/Writer.php
     * @return void
     */
    public function write($level, $message, array $context = [])
    {
        $this->writeLog($level, $message, $context);
    }
 
    /**
     * Write a message to Monolog.
     *
     * @param  string  $level
     * @param  string  $message
     * @param  array  $context
     * @return void
     */
    protected function writeLog($level, $message, $context)
    {
        $this->fireLogEvent($level, $message = $this->formatMessage($message), $context);
 
        $this->monolog->{$level}($message, $context);
    }
 
    /**
     * Register a file log handler.
     *
     * @param  string  $path
     * @param  string  $level
     * @return void
     */
    public function useFiles($path, $level = 'debug')
    {
        $this->monolog->pushHandler($handler = new StreamHandler($path, $this->parseLevel($level)));
 
        $handler->setFormatter($this->getDefaultFormatter());
    }
 
    /**
     * Register a daily file log handler.
     *
     * @param  string  $path
/home/trytelldxrko/public_html/vendor/laravel/framework/src/Illuminate/Log/Writer.php
     *
     * @param  string  $message
     * @param  array  $context
     * @return void
     */
    public function critical($message, array $context = [])
    {
        $this->writeLog(__FUNCTION__, $message, $context);
    }
 
    /**
     * Log an error message to the logs.
     *
     * @param  string  $message
     * @param  array  $context
     * @return void
     */
    public function error($message, array $context = [])
    {
        $this->writeLog(__FUNCTION__, $message, $context);
    }
 
    /**
     * Log a warning message to the logs.
     *
     * @param  string  $message
     * @param  array  $context
     * @return void
     */
    public function warning($message, array $context = [])
    {
        $this->writeLog(__FUNCTION__, $message, $context);
    }
 
    /**
     * Log a notice to the logs.
     *
     * @param  string  $message
     * @param  array  $context
     * @return void
/home/trytelldxrko/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php
     */
    public function report(Exception $e)
    {
        if ($this->shouldntReport($e)) {
            return;
        }
 
        if (method_exists($e, 'report')) {
            return $e->report();
        }
 
        try {
            $logger = $this->container->make(LoggerInterface::class);
        } catch (Exception $ex) {
            throw $e; // throw the original exception
        }
 
        $logger->error(
            $e->getMessage(),
            array_merge($this->context(), ['exception' => $e]
        ));
    }
 
    /**
     * Determine if the exception should be reported.
     *
     * @param  \Exception  $e
     * @return bool
     */
    public function shouldReport(Exception $e)
    {
        return ! $this->shouldntReport($e);
    }
 
    /**
     * Determine if the exception is in the "do not report" list.
     *
     * @param  \Exception  $e
     * @return bool
     */
/home/trytelldxrko/public_html/app/Exceptions/Handler.php
     * A list of the inputs that are never flashed for validation exceptions.
     *
     * @var array
     */
    protected $dontFlash = [
        'password',
        'password_confirmation',
    ];

    /**
     * Report or log an exception.
     *
     * This is a great spot to send exceptions to Sentry, Bugsnag, etc.
     *
     * @param  \Exception  $exception
     * @return void
     */
    public function report(Exception $exception)
    {
        parent::report($exception);
    }

    /**
     * Render an exception into an HTTP response.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Exception  $exception
     * @return \Illuminate\Http\Response
     */
    public function render($request, Exception $exception)
    {
        $url=URL::previous();
        if($this->isHttpException($exception))
        {
            if ( isset(Auth::user()->id) && (Auth::user()->hasRole(['admin', 'sub admin']))) {

                switch ($exception->getStatusCode()) {
                    // not found
                    case 401:
                          return response()->view('admin.errors.401',compact('url'));
/home/trytelldxrko/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php
    }
 
    /**
     * Handle an uncaught exception from the application.
     *
     * Note: Most exceptions can be handled via the try / catch block in
     * the HTTP and Console kernels. But, fatal error exceptions must
     * be handled differently since they are not normal exceptions.
     *
     * @param  \Throwable  $e
     * @return void
     */
    public function handleException($e)
    {
        if (! $e instanceof Exception) {
            $e = new FatalThrowableError($e);
        }
 
        try {
            $this->getExceptionHandler()->report($e);
        } catch (Exception $e) {
            //
        }
 
        if ($this->app->runningInConsole()) {
            $this->renderForConsole($e);
        } else {
            $this->renderHttpResponse($e);
        }
    }
 
    /**
     * Render an exception to the console.
     *
     * @param  \Exception  $e
     * @return void
     */
    protected function renderForConsole(Exception $e)
    {
        $this->getExceptionHandler()->renderForConsole(new ConsoleOutput, $e);
[internal]

Environment & details:

empty
empty
empty
Key Value
session_id
"3954ca6e4f7d3be61aea92ddddd149e4c6c3d8d8"
XSRF-TOKEN
"eyJpdiI6IlNBYWhJdkZKaGtpSVFqZFoybHlWQXc9PSIsInZhbHVlIjoiQ0t4MWo4ZVpLQjNYSXVWejE1UncwYzVGVHFwdHpSZGJcL0NMejRvQmFtSXJ2ZDhFWnFQTXdqczdPTW1sSWxFd0IiLCJtYWMiOiI4MDM5ZWE1MjE3NTJkZWVmZTA0OThhZTk0MjY1MTFjMjk5NTYxNDMwYTgzMjI1ZGY2ZmIwODA4MjU3NmUzNDI0In0="
laravel_session
"LVUhwjZt3oUSbKrJdbL5qd9CmFFaBIk6FEpwGnGY"
empty
Key Value
TZ
"America/New_York"
REDIRECT_REDIRECT_UNIQUE_ID
"alK59zgXlteUmIE-Fbv2AAAAAAc"
REDIRECT_REDIRECT_SCRIPT_URL
"/product-details/the-golden-road-how-ancient-india-transformed-the-world-new-book"
REDIRECT_REDIRECT_SCRIPT_URI
"https://www.storytellerkol.com/product-details/the-golden-road-how-ancient-india-transformed-the-world-new-book"
REDIRECT_REDIRECT_HTTPS
"on"
REDIRECT_REDIRECT_SSL_TLS_SNI
"www.storytellerkol.com"
REDIRECT_REDIRECT_STATUS
"200"
REDIRECT_UNIQUE_ID
"alK59zgXlteUmIE-Fbv2AAAAAAc"
REDIRECT_SCRIPT_URL
"/product-details/the-golden-road-how-ancient-india-transformed-the-world-new-book"
REDIRECT_SCRIPT_URI
"https://www.storytellerkol.com/product-details/the-golden-road-how-ancient-india-transformed-the-world-new-book"
REDIRECT_HTTPS
"on"
REDIRECT_SSL_TLS_SNI
"www.storytellerkol.com"
REDIRECT_HANDLER
"application/x-httpd-nf-php74"
REDIRECT_STATUS
"200"
UNIQUE_ID
"alK59zgXlteUmIE-Fbv2AAAAAAc"
SCRIPT_URL
"/product-details/the-golden-road-how-ancient-india-transformed-the-world-new-book"
SCRIPT_URI
"https://www.storytellerkol.com/product-details/the-golden-road-how-ancient-india-transformed-the-world-new-book"
HTTPS
"on"
SSL_TLS_SNI
"www.storytellerkol.com"
HTTP_ACCEPT
"*/*"
HTTP_USER_AGENT
"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"
HTTP_COOKIE
"session_id=3954ca6e4f7d3be61aea92ddddd149e4c6c3d8d8; XSRF-TOKEN=eyJpdiI6IlNBYWhJdkZKaGtpSVFqZFoybHlWQXc9PSIsInZhbHVlIjoiQ0t4MWo4ZVpLQjNYSXVWejE1UncwYzVGVHFwdHpSZGJcL0NMejRvQmFtSXJ2ZDhFWnFQTXdqczdPTW1sSWxFd0IiLCJtYWMiOiI4MDM5ZWE1MjE3NTJkZWVmZTA0OThhZTk0MjY1MTFjMjk5NTYxNDMwYTgzMjI1ZGY2ZmIwODA4MjU3NmUzNDI0In0%3D; laravel_session=LVUhwjZt3oUSbKrJdbL5qd9CmFFaBIk6FEpwGnGY"
HTTP_ACCEPT_ENCODING
"gzip, br, zstd, deflate"
HTTP_HOST
"www.storytellerkol.com"
HTTP_X_HTTPS
"1"
PATH
"/usr/local/jdk/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/X11R6/bin:/root/bin:/opt/bin"
SERVER_SIGNATURE
""
SERVER_SOFTWARE
"Apache"
SERVER_NAME
"www.storytellerkol.com"
SERVER_ADDR
"66.116.225.174"
SERVER_PORT
"443"
REMOTE_ADDR
"216.73.216.139"
DOCUMENT_ROOT
"/home/trytelldxrko/public_html"
REQUEST_SCHEME
"https"
CONTEXT_PREFIX
"/cgi-sys"
CONTEXT_DOCUMENT_ROOT
"/usr/local/cpanel/cgi-sys/"
SERVER_ADMIN
"webmaster@storytellerkol.com"
SCRIPT_FILENAME
"/home/trytelldxrko/public_html/server.php"
REMOTE_PORT
"65046"
REDIRECT_URL
"/server.php"
GATEWAY_INTERFACE
"CGI/1.1"
SERVER_PROTOCOL
"HTTP/1.1"
REQUEST_METHOD
"GET"
QUERY_STRING
""
REQUEST_URI
"/product-details/the-golden-road-how-ancient-india-transformed-the-world-new-book"
SCRIPT_NAME
"/server.php"
ORIG_SCRIPT_FILENAME
"/usr/local/cpanel/cgi-sys/nf-php74"
ORIG_PATH_INFO
"/server.php"
ORIG_PATH_TRANSLATED
"/home/trytelldxrko/public_html/server.php"
ORIG_SCRIPT_NAME
"/cgi-sys/nf-php74"
PHP_SELF
"/server.php"
REQUEST_TIME_FLOAT
1783806455.1405
REQUEST_TIME
1783806455
APP_NAME
"Laravel"
APP_ENV
"local"
APP_KEY
"base64:BWiSHMMOE6TucKV4CqVGvp8JmA4BO63xb3vY9OpME/I="
APP_DEBUG
"true"
APP_LOG_LEVEL
"debug"
APP_URL
"http://localhost"
DB_CONNECTION
"mysql"
DB_HOST
"localhost"
DB_PORT
"3306"
DB_DATABASE
"trytelldxrko_storyteller"
DB_USERNAME
"trytelldxrko_storyuser"
DB_PASSWORD
"(.-0($.6sMY^"
BROADCAST_DRIVER
"log"
CACHE_DRIVER
"array"
SESSION_DRIVER
"file"
QUEUE_DRIVER
"sync"
REDIS_HOST
"127.0.0.1"
REDIS_PASSWORD
"null"
REDIS_PORT
"6379"
MAIL_DRIVER
"smtp"
MAIL_HOST
"smtp.gmail.com"
MAIL_PORT
"587"
mail_username
"asoktestmail@gmail.com"
MAIL_PASSWORD
"7585957638"
MAIL_ENCRYPTION
"tls"
MAIL_FROM_ADDRESS
"null"
PUSHER_APP_ID
""
PUSHER_APP_KEY
""
PUSHER_APP_SECRET
""
LARAVEL_PAGE_SPEED_ENABLE
"false"
Key Value
APP_NAME
"Laravel"
APP_ENV
"local"
APP_KEY
"base64:BWiSHMMOE6TucKV4CqVGvp8JmA4BO63xb3vY9OpME/I="
APP_DEBUG
"true"
APP_LOG_LEVEL
"debug"
APP_URL
"http://localhost"
DB_CONNECTION
"mysql"
DB_HOST
"localhost"
DB_PORT
"3306"
DB_DATABASE
"trytelldxrko_storyteller"
DB_USERNAME
"trytelldxrko_storyuser"
DB_PASSWORD
"(.-0($.6sMY^"
BROADCAST_DRIVER
"log"
CACHE_DRIVER
"array"
SESSION_DRIVER
"file"
QUEUE_DRIVER
"sync"
REDIS_HOST
"127.0.0.1"
REDIS_PASSWORD
"null"
REDIS_PORT
"6379"
MAIL_DRIVER
"smtp"
MAIL_HOST
"smtp.gmail.com"
MAIL_PORT
"587"
mail_username
"asoktestmail@gmail.com"
MAIL_PASSWORD
"7585957638"
MAIL_ENCRYPTION
"tls"
MAIL_FROM_ADDRESS
"null"
PUSHER_APP_ID
""
PUSHER_APP_KEY
""
PUSHER_APP_SECRET
""
LARAVEL_PAGE_SPEED_ENABLE
"false"
0. Whoops\Handler\PrettyPageHandler