/**
  * Explicitly handle an exception, should be called from an exception handler (in Flow or TypoScript)
  *
  * @param \Exception $exception The exception to capture
  * @param array $extraData Additional data passed to the Sentry sample
  */
 public function handleException(\Exception $exception, array $extraData = array())
 {
     $this->setUserContext();
     $tags = array('code' => $exception->getCode());
     if ($exception instanceof \TYPO3\Flow\Exception) {
         $extraData['referenceCode'] = $exception->getReferenceCode();
     }
     $this->client->captureException($exception, array('extra' => $extraData, 'tags' => $tags));
 }
 /**
  * Displays a human readable, partly beautified version of the given exception
  * and stops the application, return a non-zero exit code.
  *
  * @static
  * @param \Exception $exception
  * @return void
  */
 public static function writeResponseAndExit(\Exception $exception)
 {
     $response = new Response();
     $exceptionMessage = '';
     $exceptionReference = "\n<b>More Information</b>\n";
     $exceptionReference .= "  Exception code      #" . $exception->getCode() . "\n";
     $exceptionReference .= "  File                " . $exception->getFile() . ($exception->getLine() ? ' line ' . $exception->getLine() : '') . "\n";
     $exceptionReference .= $exception instanceof \TYPO3\Flow\Exception ? "  Exception reference #" . $exception->getReferenceCode() . "\n" : '';
     foreach (explode(chr(10), wordwrap($exception->getMessage(), 73)) as $messageLine) {
         $exceptionMessage .= "  {$messageLine}\n";
     }
     $response->setContent(sprintf("<b>Uncaught Exception</b>\n%s%s\n", $exceptionMessage, $exceptionReference));
     $response->send();
     exit(1);
 }
 /**
  * Formats and echoes the exception for the command line
  *
  * @param \Exception $exception The exception object
  * @return void
  */
 public function handleException(\Exception $exception)
 {
     $pathPosition = strpos($exception->getFile(), 'ext/');
     $filePathAndName = $pathPosition !== FALSE ? substr($exception->getFile(), $pathPosition) : $exception->getFile();
     $exceptionCodeNumber = $exception->getCode() > 0 ? '#' . $exception->getCode() . ': ' : '';
     echo PHP_EOL . 'Uncaught Exception in TYPO3 CMS ' . $exceptionCodeNumber . $exception->getMessage() . PHP_EOL;
     echo 'thrown in file ' . $filePathAndName . PHP_EOL;
     echo 'in line ' . $exception->getLine() . PHP_EOL;
     if ($exception instanceof \TYPO3\Flow\Exception) {
         echo 'Reference code: ' . $exception->getReferenceCode() . PHP_EOL;
     }
     $indent = '  ';
     while (($exception = $exception->getPrevious()) !== NULL) {
         echo PHP_EOL . $indent . 'Nested exception:' . PHP_EOL;
         $pathPosition = strpos($exception->getFile(), 'Packages/');
         $filePathAndName = $pathPosition !== FALSE ? substr($exception->getFile(), $pathPosition) : $exception->getFile();
         $exceptionCodeNumber = $exception->getCode() > 0 ? '#' . $exception->getCode() . ': ' : '';
         echo PHP_EOL . $indent . 'Uncaught Exception in Flow ' . $exceptionCodeNumber . $exception->getMessage() . PHP_EOL;
         echo $indent . 'thrown in file ' . $filePathAndName . PHP_EOL;
         echo $indent . 'in line ' . $exception->getLine() . PHP_EOL;
         if ($exception instanceof \TYPO3\Flow\Exception) {
             echo 'Reference code: ' . $exception->getReferenceCode() . PHP_EOL;
         }
         $indent .= '  ';
     }
     if (function_exists('xdebug_get_function_stack')) {
         $backtraceSteps = xdebug_get_function_stack();
     } else {
         $backtraceSteps = debug_backtrace();
     }
     for ($index = 0; $index < count($backtraceSteps); $index++) {
         echo PHP_EOL . '#' . $index . ' ';
         if (isset($backtraceSteps[$index]['class'])) {
             echo $backtraceSteps[$index]['class'];
         }
         if (isset($backtraceSteps[$index]['function'])) {
             echo '::' . $backtraceSteps[$index]['function'] . '()';
         }
         echo PHP_EOL;
         if (isset($backtraceSteps[$index]['file'])) {
             echo '   ' . $backtraceSteps[$index]['file'] . (isset($backtraceSteps[$index]['line']) ? ':' . $backtraceSteps[$index]['line'] : '') . PHP_EOL;
         }
     }
     echo PHP_EOL;
     exit(1);
 }
 /**
  * Echoes an exception for the web.
  *
  * @param \Exception $exception The exception
  * @return void
  */
 protected function echoExceptionWeb(\Exception $exception)
 {
     $statusCode = 500;
     if ($exception instanceof FlowException) {
         $statusCode = $exception->getStatusCode();
     }
     $statusMessage = Response::getStatusMessageByCode($statusCode);
     $referenceCode = $exception instanceof FlowException ? $exception->getReferenceCode() : null;
     if (!headers_sent()) {
         header(sprintf('HTTP/1.1 %s %s', $statusCode, $statusMessage));
     }
     try {
         if (isset($this->renderingOptions['templatePathAndFilename'])) {
             echo $this->buildCustomFluidView($exception, $this->renderingOptions)->render();
         } else {
             echo $this->renderStatically($statusCode, $referenceCode);
         }
     } catch (\Exception $innerException) {
         $this->systemLogger->logException($innerException);
     }
 }
 /**
  * Prepares a Fluid view for rendering the custom error page.
  *
  * @param \Exception $exception
  * @param array $renderingOptions Rendering options as defined in the settings
  * @return StandaloneView
  */
 protected function buildCustomFluidView(\Exception $exception, array $renderingOptions)
 {
     $statusCode = 500;
     $referenceCode = NULL;
     if ($exception instanceof FlowException) {
         $statusCode = $exception->getStatusCode();
         $referenceCode = $exception->getReferenceCode();
     }
     $statusMessage = Response::getStatusMessageByCode($statusCode);
     $fluidView = new StandaloneView();
     $fluidView->getRequest()->setControllerPackageKey('TYPO3.Flow');
     $fluidView->setTemplatePathAndFilename($renderingOptions['templatePathAndFilename']);
     if (isset($renderingOptions['layoutRootPath'])) {
         $fluidView->setLayoutRootPath($renderingOptions['layoutRootPath']);
     }
     if (isset($renderingOptions['partialRootPath'])) {
         $fluidView->setPartialRootPath($renderingOptions['partialRootPath']);
     }
     if (isset($renderingOptions['format'])) {
         $fluidView->setFormat($renderingOptions['format']);
     }
     if (isset($renderingOptions['variables'])) {
         $fluidView->assignMultiple($renderingOptions['variables']);
     }
     $fluidView->assignMultiple(array('exception' => $exception, 'renderingOptions' => $renderingOptions, 'statusCode' => $statusCode, 'statusMessage' => $statusMessage, 'referenceCode' => $referenceCode));
     return $fluidView;
 }
    /**
     * Echoes an exception for the web.
     *
     * @param \Exception $exception The exception
     * @return void
     */
    protected function echoExceptionWeb(\Exception $exception)
    {
        $statusCode = 500;
        if ($exception instanceof \TYPO3\FLOW3\Exception) {
            $statusCode = $exception->getStatusCode();
        }
        $statusMessage = \TYPO3\FLOW3\Http\Response::getStatusMessageByCode($statusCode);
        if (!headers_sent()) {
            header(sprintf('HTTP/1.1 %s %s', $statusCode, $statusMessage));
        }
        $referenceCode = $exception instanceof \TYPO3\FLOW3\Exception ? '<p>Reference code: ' . $exception->getReferenceCode() . '</p>' : '';
        echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
	<head>
		<title>FLOW3 - ' . $statusCode . ' ' . $statusMessage . '</title>
		<style type="text/css">
			body {
				font-family: Helvetica, Arial, sans-serif;
				margin: 0;
			}

			h1 {
				font-size: 15px;
			}

			.TYPO3_FLOW3_WidgetLibrary_Widgets_ApplicationWindow {
				position: absolute;
				width: 100%;
				height: 100%;
				background-color: #515151;
				margin: 0;
				z-index:1000;
			}

			.TYPO3_FLOW3_WidgetLibrary_Widgets_FloatingWindow {
				width: 500px;
				height: 360px;
				background-color: none;
				background-image: url(data:image/gif;base64,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);
			}

			.TYPO3_FLOW3_WidgetLibrary_Widgets_FloatingWindow .TYPO3_FLOW3_WidgetLibrary_Widgets_Window_TitleBar {
				font-size: 13px;
				position: relative;
				padding: 25px 0 0 26px;
				width: 440px;
				text-align: center;
				color: #404040;
			}

			.TYPO3_FLOW3_WidgetLibrary_Widgets_FloatingWindow .TYPO3_FLOW3_WidgetLibrary_Widgets_Window_Body {
				font-size: 14px;
				position: relative;
				padding: 30px 0 0 50px;
				width: 400px;
				text-align: left;
				color: #202020;
				line-height: 18px;
			}

			.StandardView_Package {
				width: 70px;
				float: right;
				margin: 0 0 80px 10px;
			}
		</style>

		<!--[if lte IE 7]>
		<style type="text/css">
			.TYPO3_FLOW3_WidgetLibrary_Widgets_FloatingWindow {
				background-color: #ccc;
				background-image: none;
			}
			.TYPO3_FLOW3_WidgetLibrary_Widgets_Window_TitleBar {
				background-color:#aaa;
				font-weight:bold;
			}
			.StandardView_Package {
				display:none;
			}
		</style>
		<![endif]-->

	</head>
	<body>
		<div class="TYPO3_FLOW3_WidgetLibrary_Widgets_ApplicationWindow">
			<div class="TYPO3_FLOW3_WidgetLibrary_Widgets_FloatingWindow">
				<div class="TYPO3_FLOW3_WidgetLibrary_Widgets_Window_TitleBar">FLOW3 - ' . $statusCode . ' ' . $statusMessage . '</div>
				<div class="TYPO3_FLOW3_WidgetLibrary_Widgets_Window_Body">
					<img src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAGsAAACVCAYAAABfJwRlAAAKRGlDQ1BJQ0MgUHJvZmlsZQAAeAGdlndUFNcXx9/MbC+0XZYiZem9twWkLr1IlSYKy+4CS1nWZRewN0QFIoqICFYkKGLAaCgSK6JYCAgW7AEJIkoMRhEVlczGHPX3Oyf5/U7eH3c+8333nnfn3vvOGQAoASECYQ6sAEC2UCKO9PdmxsUnMPG9AAZEgAM2AHC4uaLQKL9ogK5AXzYzF3WS8V8LAuD1LYBaAK5bBIQzmX/p/+9DkSsSSwCAwtEAOx4/l4tyIcpZ+RKRTJ9EmZ6SKWMYI2MxmiDKqjJO+8Tmf/p8Yk8Z87KFPNRHlrOIl82TcRfKG/OkfJSREJSL8gT8fJRvoKyfJc0WoPwGZXo2n5MLAIYi0yV8bjrK1ihTxNGRbJTnAkCgpH3FKV+xhF+A5gkAO0e0RCxIS5cwjbkmTBtnZxYzgJ+fxZdILMI53EyOmMdk52SLOMIlAHz6ZlkUUJLVlokW2dHG2dHRwtYSLf/n9Y+bn73+GWS9/eTxMuLPnkGMni/al9gvWk4tAKwptDZbvmgpOwFoWw+A6t0vmv4+AOQLAWjt++p7GLJ5SZdIRC5WVvn5+ZYCPtdSVtDP6386fPb8e/jqPEvZeZ9rx/Thp3KkWRKmrKjcnKwcqZiZK+Jw+UyL/x7ifx34VVpf5WEeyU/li/lC9KgYdMoEwjS03UKeQCLIETIFwr/r8L8M+yoHGX6aaxRodR8BPckSKPTRAfJrD8DQyABJ3IPuQJ/7FkKMAbKbF6s99mnuUUb3/7T/YeAy9BXOFaQxZTI7MprJlYrzZIzeCZnBAhKQB3SgBrSAHjAGFsAWOAFX4Al8QRAIA9EgHiwCXJAOsoEY5IPlYA0oAiVgC9gOqsFeUAcaQBM4BtrASXAOXARXwTVwE9wDQ2AUPAOT4DWYgSAID1EhGqQGaUMGkBlkC7Egd8gXCoEioXgoGUqDhJAUWg6tg0qgcqga2g81QN9DJ6Bz0GWoH7oDDUPj0O/QOxiBKTAd1oQNYSuYBXvBwXA0vBBOgxfDS+FCeDNcBdfCR+BW+Bx8Fb4JD8HP4CkEIGSEgeggFggLYSNhSAKSioiRlUgxUonUIk1IB9KNXEeGkAnkLQaHoWGYGAuMKyYAMx/DxSzGrMSUYqoxhzCtmC7MdcwwZhLzEUvFamDNsC7YQGwcNg2bjy3CVmLrsS3YC9ib2FHsaxwOx8AZ4ZxwAbh4XAZuGa4UtxvXjDuL68eN4KbweLwa3gzvhg/Dc/ASfBF+J/4I/gx+AD+Kf0MgE7QJtgQ/QgJBSFhLqCQcJpwmDBDGCDNEBaIB0YUYRuQRlxDLiHXEDmIfcZQ4Q1IkGZHcSNGkDNIaUhWpiXSBdJ/0kkwm65KdyRFkAXk1uYp8lHyJPEx+S1GimFLYlESKlLKZcpBylnKH8pJKpRpSPakJVAl1M7WBep76kPpGjiZnKRcox5NbJVcj1yo3IPdcnihvIO8lv0h+qXyl/HH5PvkJBaKCoQJbgaOwUqFG4YTCoMKUIk3RRjFMMVuxVPGw4mXFJ0p4JUMlXyWeUqHSAaXzSiM0hKZHY9O4tHW0OtoF2igdRzeiB9Iz6CX07+i99EllJWV75RjlAuUa5VPKQwyEYcgIZGQxyhjHGLcY71Q0VbxU+CqbVJpUBlSmVeeoeqryVYtVm1Vvqr5TY6r5qmWqbVVrU3ugjlE3VY9Qz1ffo35BfWIOfY7rHO6c4jnH5tzVgDVMNSI1lmkc0OjRmNLU0vTXFGnu1DyvOaHF0PLUytCq0DqtNa5N03bXFmhXaJ/RfspUZnoxs5hVzC7mpI6GToCOVGe/Tq/OjK6R7nzdtbrNug/0SHosvVS9Cr1OvUl9bf1Q/eX6jfp3DYgGLIN0gx0G3QbThkaGsYYbDNsMnxipGgUaLTVqNLpvTDX2MF5sXGt8wwRnwjLJNNltcs0UNnUwTTetMe0zg80czQRmu836zbHmzuZC81rzQQuKhZdFnkWjxbAlwzLEcq1lm+VzK32rBKutVt1WH60drLOs66zv2SjZBNmstemw+d3W1JZrW2N7w45q52e3yq7d7oW9mT3ffo/9bQeaQ6jDBodOhw+OTo5ixybHcSd9p2SnXU6DLDornFXKuuSMdfZ2XuV80vmti6OLxOWYy2+uFq6Zroddn8w1msufWzd3xE3XjeO2323Ineme7L7PfchDx4PjUevxyFPPk+dZ7znmZeKV4XXE67m3tbfYu8V7mu3CXsE+64P4+PsU+/T6KvnO9632fein65fm1+g36e/gv8z/bAA2IDhga8BgoGYgN7AhcDLIKWhFUFcwJTgquDr4UYhpiDikIxQODQrdFnp/nsE84by2MBAWGLYt7EG4Ufji8B8jcBHhETURjyNtIpdHdkfRopKiDke9jvaOLou+N994vnR+Z4x8TGJMQ8x0rE9seexQnFXcirir8erxgvj2BHxCTEJ9wtQC3wXbF4wmOiQWJd5aaLSwYOHlReqLshadSpJP4iQdT8YmxyYfTn7PCePUcqZSAlN2pUxy2dwd3Gc8T14Fb5zvxi/nj6W6pZanPklzS9uWNp7ukV6ZPiFgC6oFLzICMvZmTGeGZR7MnM2KzWrOJmQnZ58QKgkzhV05WjkFOf0iM1GRaGixy+LtiyfFweL6XCh3YW67hI7+TPVIjaXrpcN57nk1eW/yY/KPFygWCAt6lpgu2bRkbKnf0m+XYZZxl3Uu11m+ZvnwCq8V+1dCK1NWdq7SW1W4anS1/+pDa0hrMtf8tNZ6bfnaV+ti13UUahauLhxZ77++sUiuSFw0uMF1w96NmI2Cjb2b7Dbt3PSxmFd8pcS6pLLkfSm39Mo3Nt9UfTO7OXVzb5lj2Z4tuC3CLbe2emw9VK5YvrR8ZFvottYKZkVxxavtSdsvV9pX7t1B2iHdMVQVUtW+U3/nlp3vq9Orb9Z41zTv0ti1adf0bt7ugT2ee5r2au4t2ftun2Df7f3++1trDWsrD+AO5B14XBdT1/0t69uGevX6kvoPB4UHhw5FHupqcGpoOKxxuKwRbpQ2jh9JPHLtO5/v2pssmvY3M5pLjoKj0qNPv0/+/tax4GOdx1nHm34w+GFXC62luBVqXdI62ZbeNtQe395/IuhEZ4drR8uPlj8ePKlzsuaU8qmy06TThadnzyw9M3VWdHbiXNq5kc6kznvn487f6Iro6r0QfOHSRb+L57u9us9ccrt08rLL5RNXWFfarjpebe1x6Gn5yeGnll7H3tY+p772a87XOvrn9p8e8Bg4d93n+sUbgTeu3px3s//W/Fu3BxMHh27zbj+5k3Xnxd28uzP3Vt/H3i9+oPCg8qHGw9qfTX5uHnIcOjXsM9zzKOrRvRHuyLNfcn95P1r4mPq4ckx7rOGJ7ZOT437j154ueDr6TPRsZqLoV8Vfdz03fv7Db56/9UzGTY6+EL+Y/b30pdrLg6/sX3VOhU89fJ39ema6+I3am0NvWW+738W+G5vJf49/X/XB5EPHx+CP92ezZ2f/AAOY8/xJsCmYAAAAIGNIUk0AAHolAAB6JQAAAAAAAHolAAAAAAAAeiUAAAAAAAB6JXIyHmAAAAAJcEhZcwAACxMAAAsTAQCanBgAACAASURBVHgB7b0JvGVVdee/7/DuG2quoqCwmBFQBNuBKBoHNKYTkw6OiWKc/60oSNBG/2qC+slguhHTUREkUf+2Q9LR9D/igArGpI12G+0kHTUikwMiSlFQRVW9euMd+vv97XuhKIpqkHo0Zbur3j3n7LOHtddvrbXXHs45jcFgUH4W7j0HznrVqw5vDPrXv+vCi/r3vrQ9l9D4GVh7Zsxdxb7iFa9Y1W63V3uf46pWu7Xa41GHHn7umr/45Hc6J5/wyS/M7PjoBRf+yT7Xgp+BtQdURoCMwOh1e7e2AWXZsmXHvu51r3lvd3ERoJql1+uXsbHx0i+9MrN1unz8cS8o3R/eVNadeOhXtz7+6BdeWcaufee73rXPNO3/SrAEY6gZd9SQVnvC+Dee+4bLygAeoxuNRqMMOB9rt0sXcLREjVY78aaxF2lyb8fmW8pnn/KS0r1xW+mTrruwUDaefNSlV5+w4cU/aLRvueii99xrTfupBktQJiYmDlcrYOpclKhRJt785t/+YqM0uGyWbr9b2mPtMsZxYdAsKAxxgzIJAAu9bmk2SUN8H2CajSbXjdLvLpYCYG10ahFMW2NjZWbz5vKpX/h/SnfTdsCkEMLizALpe+XAxzzwg/945MpX/uH7PjibGz/hz34N1qvo1G33yFzlHO3odru3gsXEuW964xdlWwMmD9CQAnPbqEsXBjc7nTJA+slbFnuD0gIU7/VJ11V7BqRXq8ijBrW5T7LERZ08b7dKs7dQ+q1Omdu6rXzylBfeASxSRDu7swul0V4sR/7rh1/42ZX917zzP/05aN/zcL8H6w79R6s1AXPp0Fur6Efm/t83vOaTAuG/ARLPf/lbGmjGgPi+IPEPo1WaANBrtmLGBLDHn/AJIIlJRSB9u0EP1I+6lDHzqFFoitrWNg2hjxaW5hjaVkEecH8nZvDTT37xncGqWcAbIZmZK62pdjn+tMec95Hprb/9px/+z1R098P/cbB2B0ONmBgfP0hAzn71b723D+OaDVk+KBOYm66M5U9g6CwABMbRRzRKiwjugUSLYxs4ejC/21tEa8b4a9GX9MiP2Wt3AohmTXAEfMEyYShZKbtRQeJCbWoMetE8khQMI8IATRBg/wX8ZdAZxwzesmfN2h0L6pibnisrDpzoHvqsJ5z7lAv+6Lzdk9zV9ZKDdQcwdHMxU8uXTz2UdiaceebLz28o8ZgTtaHT1rtSyGucqtJsjxGDlMNscJOfdBmtgrmj458oi4tzHAEDU9WwcydPow98SLzV9LvoUXNQOi01i5IAsE+fI7xd2c11p9Uoi41WGSPHgmaRvAIJ1JSlHtayWgKJZjV1MkgbGjoTZcfNW8qnnrQHM0jOPYX+IsI0N18mNyy/ed2vP/asy2emP3rhxX865Mqecig0I67t+f7djrX/GJ8YP1wwUI3DaMS2FuOP3zrr5e+1p6BbRmIRe7jdbHYotxqieFcAozQbZIRctM9oNTQ1pEOSleYBoDWiUrVPURGiHW36GYBTe9KvYLoEWzM1BsMHDTSQOJvaIn+PjG3qU1uFHlyBAhAFhftj0DnHLYGDaqOiiWOcKCzdiEvN27T81ljZCVh77LNs1F5Cnw50cXa2rD3mwCvmfvHBv/nNQfMb73jXu/doHu82WCPPynrHx8c31GPnMPsQz195xsvO1829PcgKXVzAkSnei7bYt6ItMhNvqwUAMokmxwVuYce6XbwoPLQmqPWQ+oK2BedF2ITpGwwWAaBVOhQ5j7Y1ASP8o44xuC5IAwHWTKoFHA2yF5hDE5AFxA70LUYwAIQE9i1xQgIS5VCHoOmUaFaRi5g/BUXPcREhGMc8b9+89ScCK4Tx01/AG52ZLRsfdcjf3XDSkS+6st+6bnd3/w5gjQBpDTtyTM2qdos/ABGM2tzKF/zTnChpmq+IbWqOEYMlVW5NR/v4w4TJVEDCLlWmI5XeCaCcdmF8wLNQ+yFMzaAPWGrI+ES8Nxk2rludfgONpISurjRANalL5sb7CzQwFGb2yN8B/HnQGAuz9ez6VUDMBw0Kyxjnak0bk6kWUkW0zrKF2zS1As5JUMdgmEzK3rl5S/nEExkU7+K6k+WeBepZ3DlPuYtl42Mf9FdfP2b1S25sdnaMQGucffbZrbVr17zGDv1lL3vxuYpwNARiBkiknevQSMAFWTMMNPaOgYbkvg3ij7yatjBbu08fYL+BqghPxRama94MLdIPALFm7cBAwW3SZ6BfANcnr5oiB6vTIYMZrFoHDkQbgBegqS0ZxKmRTTRSoKoRph7ue4/uibRoMsIDvDHIUmEZTWzivOeQa5wkkwlwhlxQGIiSUMUQ/UTAGBTfsrV84gnPv3dgWS7BrqE3Dy8Q1CN/6cQLP7e6+ep3ffDPugrMOWjNeWFEkiI/mKJm08bVfqWSrUh6PQw0IGHYmHpu89QUQWL8ATNkiEk1eYN+iwbCIDSmx33NX7w4GKOXlpkBuNKn7kGfSEwDWs41xVpP0sM0r2USIFETjOyhaXZ1mi0aSl9XTV8VDJx4QKcmTa+0UdZY0lXTJ4G2RiZZV5uy7DP1+OyvDDkO2xoBI52XOin2o8NkJr3XQf61JzC+g3a59pP/fOZjH3vMWgp9nmDVALNq0Cgo4VAjl28jQ+ogD06pAdhPiJVIAeKeQa20CUqs5g5JHiiaME8NrcVh/wfzFNPhWt1A2pHmDvXhWIcD7R5gwkw7CGuxH4v7TgGOnZRomafZ7HHUaTBE1qnTMZWD4MRC7yLXUuZ/70mnB7VQD1KXXfNpPyiNWvgmEZq6ZONoeZahKfRc/oQ6ktS6ybiPg6CNTU0I3LRFCxbUDjGTKCIaUqtnJOU0PseYJW5Kv6JtQwTJtKNg2rROh8F09iGcUVZMUhd7TF0NNIxIzBlMtCzsUlcttBzK7UaDJIvxEP1RDzqANHWrEQuYh3EYrnc2T/Et8vRg7hgauUAROh72bVLY8oe8srIKl9eck9cmGB8B5K5yFY1WiGwaZd+WJ4BSjmnIIiMtQF5ohCqPLGzfB8eVhqDUsBO3chpY+yhcaw27TfFgqzyMfusJaTVt9SJm1NZhmoxr0nIHoZoggbF8dULwm453dCYsrzlBFbCYsVIbz3CR+jQ/mjQnTj1Xi+3yFqgqLj2AzxOni20/4z+SoQl9yKbvI06Q1DrbKWPr9BH1DZncgiQBkx5+k4YLWWBBoyaTT+DUZe6mqQgVVkKXPnEI6wDAnK5asjDoO9apYDkOibYYQ+WCN8THCP5DCKaPnjSNo02Js2PP/bCLU9K26NjNq5nQFMp2bXpcaBumQOSo1yVf0GBsc3OsxRwdQ1A6a5neTR3WrVbgXls9DOmFJwJvdTAXFPto4hgCoDnVOdB3c/wztBeVHtNyH7IS+tBkFXqQRHOPK2gTQL1WBSRjOhya9GXQwaivpkUQxwTM9A4jpF8zX4vep7/K1tAHG2qW/ZUKEOplKM0c1UwcZEM4E59BkIagEjoMlqLkh6FKOKLswDUyB8O5SR7BkA/mo+zF+Zi5plNHt9VJDaanHpcXzNduyAyrAAzqaNJ/yUBdnI4Mp0zvxRwhFJl8pWUdVAmdjkalnwEEm2Lpql8gIp39VAUsraNqaNO3k1YyZMqJLM5kqKWm6tpUzjRL9l2JBbAx6J2mX641WdG+C9LTbDe17oAFASMNscOXUkGp5s3GVea5pmPahCTjnteWxg0sd6RyAPB9GhPPywEtAGlWDEy+MiZhyYj4cTIvZnA79OhsvKCEIZg86uiQVcGoDgOCgUDYmXjPwSk6EemuWqYOpwh7VzRFN70CYp+iACkQmqw4COmgbB//LJc/9IMryAvgeoySXmnPL8Ro1qsOmdNYIVZIqCTXHJYoMLxComCwEipdVf1pPsTbBkEzrooqVIgQ15FoiA/ARAMv95R0mA/o8ayQyoCsiSKPZqmLZiEqMJwGooWau7AZ06tDYtn2NZnHE2RIUZsUAKeI+vSlraFka6YombvJRrpKA7dTVhMGOm7S9Gr+MpAlrZpiT2UbuDOSJX3RlCZ4mTC2VbV4aFejAGSYxxYb1MC+6TkuRbDYQXfYZ9UqrQhGK9YwKwDZDJmPJBoEIxKoASUuhsD0zAo4qWmfFpfecydVde/RAgd2mtDaSet4KBzkphwmlWAm+aiihednnI4EJCSEHqhtm14SYYrutgzU2BoXr4+IFuY2g3DpNAHHHoUp/8GcfGqOgIy0t5pO0pt6F2abS69T6NRWhcAruwc1y/QGTaFar1Wx7iUJVtxsxAw2MU0IBgQDQI/JUE1g6ISQRg8t0HToXKTvgSBvQljDASkir/eoQ6Dz4aSqjM5lr/YB7c4yWsvsOJF2R3qIznCPYYY0IzoUFMa9iEPm6Ww3SQOGfI9WkFamK0Ay0zaEbk7s3LniqBmNzxmGaun805VXi+xzWtBfmQ+TuTaftlYNNadMXwhE0qXGWOcuWkj5OhYG8zhTn5ZI9BKEtHNYdtvZ6gDipOpIrGlFzJj2XW7Fq6sal8GsfU1ItJ0MbiHSZYYGs88tB6rOVjDV02I81Sfec9k78qYWqVMNM8QJQCgsR0ZrFm28qKsV/mbgaxx0+Y9I8tV0OiLR1HBeuimUxtkTaspQ7xzt77xFBH+V+pTFpVe0njs1jUsjYRIxptZsBmhiHdMZRvULlSGD7ZzVnwA8TLtL9E90OpID5mhxoPXUQioSA3WauDr2ogFqlYEcVRI9RwI1Z5ow+rsWjO4j/pqxMYBhCpk/dUPmYZ4GuOWcOz2UINMBVCXtA2ijNU6T0RwGwGP0Y+asZklptxSrzy/1kRJQdRa8t4hpakVLg2VYZ8raPw0ZaQSpNWHRCcqi9vpPhnK/amcFoTo0tf90UK+w2H7NriWq0cIqjYIXWkOf9ezbYLG9xd5t4yysmJ6WRMB87+IkaKltYAbHaTM/gIqMhWFJxrUaRQb+0TgatsgiouMhGarHxn4RinPFlkYDUJgPeAPAjjRSkEAo1V2KqKLhNYyhHPXP6mOeUxPlAZTDAE1cbgo+p5adZQ5LQxLMK/C5yUEXJ74cahHP0nLIlbqgIc3kQq0xn+V5N/cBxaNBqxNbT37zOFEmmLsGAd0XwWJGrnvosSN3AW2AhghIxkYBBiIgSCozj2f/BDdkrszgZmngX/cASFrVNo9png3h3Jl7TW2HOhyPWJZzebrWcRpIlz6P0mQct2oaCmpl2om+xf6M+DCeMixfzdEYS7ugmS3GeZhfQvxXoah5YzFIa70aPfvpLvmd3K3/KMQ8lI24UQR/xPRIJ0BOTFcRqNoUbRc4UsuLpQjWn66Io6pSxcMpJ8Ow8wxINSZqH9PHtZ5f37ROJWHyukwtjOHJZVleZgO4prGJyXPjiY12Z1BcdM0ntbtgN6anBgICIEEybKQJenxpv32Yd8lkvxHmwcgMkocMlklaA8sw/wgk9STmizspz2K4HQEhva72GG0wsi3D7a9TipUDVoQBx4P+2fGc5QtdJpK5yPgL+loKs3cpL2EfY2ZxDlUNOhhwzaZV6ZBlTTjTZXph5HCYQVIasTtIHo1r4NHZZwlGX7cQcNrE2cd1aUCbRlbyWRShfCdjHafI1rjYqgpQTECJa1ZhEVG66Xp/RghmhxGtYyyFSLMoa5SwyDwMVcOTl1j55QqTg1T7khTD/Z4SQqJolGVBR5wSBK+NNZjtzZXFHTNlbtFEGuJGmZzslBXLVmBWnZnAiaEwctLX6iHaBpISk0lveFZrI8E+DrZpcX7YZ+FgMPkNkSEmskNbOAYYyKExapELgR6xSayAEEcW04RYHANBcMyTeTW4ad9h43S3yUVydMRpLJpYBUUBYXBMjFpjcEtXHToowVxrahUMKHbgaXnC2guawKZk808T3aUWwTGLtWUtjbqE15xOEhuc0fd+i3Ln5neWT//1p8rXvva1snnzzeXWTTsyfLGtaw5eVU4++THltF8/rayeWhMBpCI8W0qjjkqNNCo8QjVsRGrZdz9C0+7cPt2EoFO1zJGzHgUlbjwX3LBf8D5bV7mHJMe8QThSGMD05tQu+y7XqXAk+miM6TqdMZbTKY41qsxyw9ym7jblKQ/OMGjWAiDpBcCQMRTn9jn2oZoqp4HUSt1oBgkBEL0LSOYascxJXB0J2yI9Leq75cfXla3X/XM57IgjytiGf+WtcuV3rix//O/fhUkez2bPppaB8hWYnVfPlA/8438q07fuKK979evpP203fKIiLV+Oaih0Rc1sEKXe1hau9kWw1H5sdxUKWkbtzhwDkDecdNWkZQsXzYbVMArOOrcncZpAmY5T4jYtV301J3qRLho6A57WcFxgf7HORZ81CfWgmg40DCpsnxKqEdF7pKXUhRODeXIpv5pOklKnm1qcVVCqlaMs9wtPla8wP9qXcikT2gR6y/XfLJd8/JPl8i/8bdk21yyX/JePkCvVl7mdszSlXSYmGW7sEgQMi8sGxonyg+9dX+8Qkak166N5smNA+7LXkBTyDq+Na/glL/ZRkFaXmwwZFMsMtccZhjabJgWsH01weoXWE9cEzLjMqlimkRbY590rU50pAIPZjrOQaEGzHNPq9bkMsogGOsayN+l4X4Bq/VBCceRFRDiX+Wos5dF4+yzp0szYk/jHJeDyA+yWMXIi4mTAwYgRmtKb2VQ+9MEPlEsu/UL54U3bYeRYOXTjhtIaXzlkaBOQOBeVvYTO+GTuan1CslUTZIN1Sb/BJ0oGNnwfB+vpLgznBh0Uy1iDAKrWLTUH0yMd1VXVy5Od6IAmknSt9mSciQVKS34a7aaXHtvInMmwFWqj+TuuURHjelIGoxDgtTMWiqgmTxDEAJnmJFVEk1ySF1wZ48pw5iGHdfbsGClJDa1jNugCqO9e8U/l4nf+h/I3//T9MjU1VZYvX5YtAN2FOXZI3VoGYxusqqxeu7KsXL+izG1jm4Hqunsg0eRE1bohVLunuP2atJBKsOR9FyyzPd6qc4OZbkpFqjl3tMNWKCMxR+mXUO0RIZq+6jHJQlNi2GCeswguAmZubiiFakBMHGVaqoCnaKqJxlooefUXdHI0kUIjcnbYOje6+AFE04pjc9NNm8pVV11ZpndMA0zVMdnjWMiZlJ2brylvetO55b9+/Ydl5YrlZKkg6DQszO4om675p2iF7Nz4gA3l+BMeVObZGbunoFZvOOSAPd26U1yE5U6x9z7CtsUn4sijRW2MjkCJj7uCYAoen56YA2C1pYKCbMl04jMfiDj3GU/JW7WnT3/l1mKDu0w1Cd7XqXCPX8Zl3gSUeHfkinbhjOipaY7ck+EcXZ3GKmXT5pvKD66/Pho6Pz1dPvLhPysvfenLyjOe+ezy3Oc+r3zjG18HDOiFTq2C4fJLP1G+e8MtZTkbTXYNLpJu2T5bPv+1axKtUHQak+VBRz0YGhXSXVPXc4XhhEeccOcbe4hRthXEPRa0h/R3N0qycJhum25KBdl7ARDujGgwgq22HDAaTLAy+HX5XcejspgCYHW0LJpIkeRxGYRIQGbQDCg9N8YwgM70I60ZYwO/oxYncguP2zi7MYtZ3fz975VVK1eWFSt5xo16NJUdGPihD3+4XPXtK8sFF11UvnPtNeW1/+61ZfPNN6fj//YV306e93/g/Tyw4EBc6PHwrudpn6HQJGL4Ix8Zvpcff/dbnPEMVVmZO7/4K08pH//4J8rM9Ew0dZic8gaF7eDlQYcdP4ra61F5dHXhNrXda+q7f9Om9JxRIDQ1gxozt48pGg5qMzGKJGYpH8Znz5+dvX9Ivw2vIytHOeyQxT3WxPWdF+SmnphwWpHVaM5u3baj/MVf/Ofy/ve+r3znmmvQTh5gY9/Fj67/QTn99DPK5Z//a/I5zpKKZCo3/PCG8u0rrizdudmyfMXKctrzTit//ucfLpd+5lPlxBNPLJ//whfKt799BY6szk1ylWWu+e8BLIucmuiUL/3DFeX7117nJeLWL4esP7yc/KRHM/AczuDkDtuy5xbKQ086vqxdu24Ys/dDHKao197T3dO78qM1NuyzamY5BBBcZJDrRCuendLqXglpcGYg99EGPWynkMbHO2UM9xYuZ9qJByPK17/+z+XHN9xAFFpITQI3Oz9X3n7+28uLXvjScvorzsSUvZx+5yrkgzEY01VXfOtbZdNNm7kmD0LCfykpawCog3TPL/LI52GHld976x+U0077zfLkJz2lPOc5v1G2btlSrr36GgRGDa6adfLxB7Netuchqt7pLTt75dt/f3marXk3PP1XTi3jK/BWfdqEIN0DuoLH//wT8lRL+tHcuesf18gU5qUIAmbQ0sKWCkxQARRGOlTMLVJxJynSz2gKdSL4c9T/zj9+Rzn3d95UXvLil5QPf+jDaM8t5Q/e+rbypS9/uYwj4ZI+iZL9/Zf/W3nve99fnvH0U8s5r31N+eY3vlE++MEPY/EGZdnUMqR3DduF5+LRpTakw/HKzVu30ie1YX6nTKE9yxhgLy7oDAzKQQdvAB/S3HwL1wpZ1eIjHvzIaK207ynomf6Xz30Fm7iV2w4jBuX4Y04spz793zCjUZ9kXVxYLIcevrE87nE/v6ci7iIOXmWq6i5u35voXbai4cCNY8Z0IPDecH37LAay7l8b7egZLdKbasGcLJUD1sf/6pLy7ndfhGs8ySxFpxx51FG42u2y+cYb6Ve2opnMZLDjZIZB8Sc+8Zmy8dBDytv/4/llw4YN5eqrril/96Uv49FtLatWrcK1Xll+zHQPHSMryjBdkwr3XWrxOaxmh0dJkSslvApvo6xeviLNn965M0f9ToWjvebwsmKqU7bPOL11Zw75/PB3r7uhfOnzl5fHP/U5lKo2tcuLXvzScu13ri1f/bt/pJ5Bedqzns400wGp886l3DlGqdcy7OsQIaxGw7GiFTCzZic2YH86xOsVtui001Y6evwOPDx2xppE5wAGKoXHPeg4nIAPlksv/WQ544zTYw6XLV/OYpnSz8w6kqYmfO973ykPOf74suaAA5mhnyhPPOWJ5QfX/YD+5soyyRhoYnKizO6cgTGUb1+JJ6mDs2LVyjJPPT0Ep7LBB+JiDBCIzeHLCoBOIForsJax01NPfmCZ2a0PqomQO1o/w4D/c5/5NB3TNtpY17hWdFaW33nz75VnP/fZ5cUve0F52q8+bZTlbh31b9xmt6+DBqIx3IrWdIlDl0EEM6/nTWKyL1ArKUAc8vQhjHRayBntSRh85FFHlCc95cnlkY96VFm/fj2pmVUAyFmeM8oiJox1rNLhyUCGCMyoKwjdctyxx8Qj/M6138Nc0u/RL87PMzClMge9daqIOukLF+YXsnDpTLd1++T8zPS28pnPfK4oGD/3mEcP+aP7jpbgjh/84MfiQt0145ax6f9v/uGa8i9f/ULyKpQu6xzAhO05Z59TXvHSM8u4Sz3RurvJfuirkwF3M/1PkCxiWn9QflzPzHTD4NrLV60a0PHGBNEgnXfHNvY12/Hwdm6/FebdamsZ7U/idEyUObRJ7XB+vQWDJ2COc43uJuqzpXYD/Y1g34RT4WOpazCFW7duicu+9ZYt5Yc/ul7xoVxMHEwYH0fTAfFW7r3tbeeV573wReXTl16aPvCRD3uoap90ERCY8Life0g54uA1zEtWh2FPfHHY8c73/nmZ3XoDNeGgRFrjf9NCdVQ9v4cBvvwk2fZWi2SNtqIFJ7oK5gRdD6Ky6IezEvZT1l09Oif81Dz7rzaasBypnpvDRDGWGmN+UMdXb4uHt8s8j+osYhIciKq1XcB2GrcDg+wCV61eE2Cnd/pwBF4fDobA99Hyiy++uJx15tll27ZtZfmyZfHQXODTXdFjvOiCi8onGBcZbuGZqFu2bM34jmITdDoOOOIR5ZhjHohg3NEdHybJwdWAf7nmh+X//8jFXNM2ASNUiO45UC28R1xim7NPg2aQreV1ugnz9DZKf496INFwR7ZyRLqgH78sDWjG8chCOiCMlfHJqSjfBGMXJV9Xvs2g14Hk3Kz9j2aJMiDeyd05nptdZN7Q6axJXX6YpYkzOLvt4zsz87Plf/zDP5bLLr+8XMMgeNWaNUVAZ2ZxeDBJBx20vvy7151T3vHOd5SnPvWXy2c/+9nyvve9L0CmIH/sYAm/+bQnx1u8K94Zbxsu/ujflk9/6I+5wnTLgvxwvIfBRUo6+nuY6+4lZ7RUwXrHO97hEkw8wczx0bf0u7wIBQdDTmd3LXrj8jZTvsPSGf+vXFGu/PZV5Tm//tzy+MefUi75q0/A9CmAm2RAOZd9F3mkB1HrAKhxc2iczBij7A7AqpmGCSZbvX8rL/7YduutTG4slB/9eBOmkklURGseLfWhhRVo5NlnnlnO/q2zy1t///egYWX57//9K4C5M46DaUcUHvKQx5cTjtrA6u9eTCGJ3bf4R++/pDz/N55bLv2L99FeGT4qJeTdrZ8WO4O0I/7f52FYZsxgGjkcIzjP1wbKaAWJYvowkbrOdvimNa8enG7z1ddcW3bcuh0Gu/ePh6HpnwRhAe/S1dsGC38CqPfowNrlD50Q+6ztO7anXYds3IjpnC833nC9xZeVeIFXXnkl57joq1cjsNCDK1p3DDEdxfrZhkM2luOOO65cRbqbmUPUBqRN8Nk+Z+Xag8ov/+ovYVqZac+NPbNQi7DIKH8LgnLKEx4zTLSXDHsupj5koWbec5zvosQ7R1ffos1ABlNlJ6Xr7txcWohJ7OFhmch58EX6niyywQ5d+IMPPhiT9B/LJZ/8ePlVzFIT52ECB2MGk9cVPNyRDg8iaL5mZufKDO8ysiQf2LZvcabAsGrNaoZYg3Ldj28sB6xbV0455ZRy9dVXY5GZ1JImTKQ7kVyKwTrTN/Spp1MO2nAQg+Kb6e8EXZdkFICLop9+6qnl6EPW03+i0XcRpGABQXrlC08tKw55aIC+i6R7jbacTGzv3UtbKgAAIABJREFUNdW9uxmwBMhFPzfBVJfAvka3GwBhauYDGTTrQeWRHOps8+q2cczbYYcemgHxBM7AHADm7WGAurAwA+AVXAe+LmnMzjtZ2qD/muevPjwn+W7s9Gn6K775L2WSQfavnfpvyg+vvyHuvJq4yBIG5MS50UFxA4yLmXkmCzD1VRP0iIbB2PaKjeX5pz0DMuzz9hxmKfvnH3Z0+aWnvWCY4K5S7jn/KNbhjPOdSxkqWIsMO501cNYCryK2Fx3L7DWmT6uvsyPz5ZrOgGbMPRa3MiU0j0PhuMxxlvHzC3TWaFWbMZT93Ar6lm2kWwQk15xmtm+P43D4YYembWtwJKaWLS//83/+E9rWK498+CPKTbxl7AfX/5D0jq3UKMZ3eKsTmFAfURWXbdt34JWuKGtX5VUcd+KTbH/KU59RHvXQo8s0703aPbjxdOVEo7zu7JeXzsr10GxLf7LgsGEpBsW7UhOwmH9ruiFEuXSc5eBOV9aJXB+vcdJAR6NuYtHguHzgehFjIUyeCbRo7riNl8jAVQ8wE6L0dwcxxTTHoPf6G35Enma5nimpHQD2wGOPtcZy6AMOykTw33/lq5Q7VdatW4ub3ypf+tKX0r+N44mi3mV6drpsZynDWY6rrr6qXHHFFWUtaZe5tLJ7oDEu67Sn1pbXvubV5bB1k3cYd2mGffzozNP/bXnAQ04ht9J4LwL1OTG9lCF6i1axJwMTSON04bX3GEAYNnw5CAy37/IJDPsPn/gYp5tTvHUm3FHrTIVTRC763bT55vK5z19WljFIXr/+oPLoRzysHHX0keX8t53PYHqifOgjf5YZjSOOOAKoqAfgd87szKTsSsZvzoYcfuQR5WMf+8vysIc/jDQOrxvlPe/50/LXl11WHvqvHlq+8t++Um4E9F879dfKmtVOOVnSHQMkBbCND3pUeeNZzy+vf+vFaBhzjdDZZxjx6jNeUE59zovJad47579jaXu/oir4IdeWLlQjixXsM5MgQ9yt4/4/ei0AAkCXSvAFdRbcbSSKasz45LJMK93CrIKD3wVMik87HrBufTy0M04/K5p2woknMOn7sfLyl7+snPnKs8ov/MIvxa139v1BxzFwZVbEV5e63GLYeMghmNLl5UHMOxpmZ9h8GceGyVm08b9+8Yvli1/8O/INyoknnFBefdaroA0tvgsTJskCcdIvv7C8k1mXd3/gEujvlWfQL/7yM1/gTcK91CpKiImiHv8vVQhYSNoXWDg83V21qA6OBMRj2tz+7H69uPE4GF3ccYXHt7c84MD15ZnPOLUcfvhhdGW49Sw8dnsz5djjji2/wVrTrcxASPjRRx8Vs/qMZz4j2nPZZy8vD3/kI8orT395BsZ9xlRrcM/f+PrXlx+jKU9+8pOiDc969rOz8LfxoA3lgDWrcAC75fSX/dvycPqz639wXRYun/TkJ7OH4kSYX6eb7opJaqZj5ROe8Bvl4sf+ChrATENrDfTpSO0b7tZOBAoiHHdFyb2LpxsalC233nw+0vbatt4ey/B5cRWmQqdi4Kw84EiD7rMDZZrOFSYTk5jdTppA9rsLDhvZysJ2ZrPt97DhPjQ3Rj/kbDduAY7FTN0fwT0X+/TydGQ6TGHZz3UdLuDo+Eq67GSiJuNAJHOSDj3dz2GH7mYYt4BpguMM/W94Mdokqs8r/fsqqNk7sDAfe/SzS3fz7a9d3Rfl91g9OOhxD7zwmZf95auqGWR2QoDqKq2zBsKBGyFaMMonTNSuiA3tdLnEF2K1fAMMDM5TJADV06SRdpKlcM2PG25EUK/R/X0CtnIF831cDywj4Nf+kWeQSGCfiTFmVgGZMGfym06zpxeqY2DQJPu6OyeVK/MTvdcf+1xLXbKAR72UxVewlHlFHAbKpNp4AIvYw0ydCqQ4m/3VBJgZaYdhbj9TsrLhRrNC2kWQUSvcnkUMvAFU+sKua2Noggy3Xd7yvuO5dPpc182h7qgahRCUaxckAyI/PhniM1qVxttTj3Ld10ftjYK9C+H7nISA5Wy7W/tbzNc5Le7EjSyG1zkLITKHfwswPZstGY8FCC0j4MjwPDpjJgHlroysGzmrpvpggmtOY5jWqiGBOeOnjKd8I6Mb/wFl92CcGqZ2Sh1VUIlCdue0u+e9T67ZsZwuYQkrq5olD5g17tHZu0+wy3Zp9tHCDE2YDNTJCGTqYOLsL9Qun0ewn+oBno/2OH84emtLxmnRThYUYbCQ1acGwZP8Amw/aNkKSHtC5t91awWmggNN/N9r4rsuZknu5AENJ7+HbyRfikoCFn1KHkCHzdg8GcsR8+YqUgUHDgoEZqyCpo55TfZx0gCorr3aIbMFReBAJH1N3ivLZR5qoxVu6CcJZcFx+jX3tXeHGk3ldyOQmf/3p6C+L3WomuWoNnaF6hgs6jS0XGjEYWjgZLja6ypvpcekwykoAdEUwWyD/YndvYhF8PlVk3SP3Vfn+C17EikrxaFV8jzOi9NdFHBfNDrE7usfeWFYQszCZVzfPFWSeqhUhnWZ/HQ/nkwVNEPMGEA6MxAuc3TCVzcapcsfQ67cSgZ+GErnWjNnCdnTTh4rdoLYxTTn/fSk81D2KOP+drS7WGIHI2BpxFzlzIuwhMT1LBiqIcx7nRgsZ5xkv4XTUz08mA199a2X0Jm+qgJgv2J6nWyBNL2z5fZb4uyD3cbzE1PYwj6qlftzqP3I0s4NBqw2itVb2BnHwW1oo3WmPIqDhfTBgna0C3SQIPut9D8wWM2Q77hCeZJjZAKH27OJFyTvkxYBMGlvuLipKhJFvZQRSky4fwZFO41cQvLDIiW/wSKhjkCT2QrHTkxJVBCoXJd8kZl0B83O3zogVVOqdoAC+WMGAdUrNciXNqb/4roOYwEEkNVGZ9DxTsSX62H/VRNxc/8MGUykz1g6+gMWLja+9/ABBfqk7LXQ50DcdcWFwEGrbNc0G2R6AOKeTy7iCnIGgvx3MdC+Kf+4jvfirUwKAxjjshQzdEyajq1CSS17//ylRQr5EobKIueO1BYmY+s4SDbzpAgM77E8Px4nQAic9oHZMN4+JppFXJ58HEqVbr+geS+aRDmZCDa9SAKQvqRTUSpTjzc7/HQEBZY+awm1K5xi1poHB3EqGNQ5ketgVRVyH6A7ZudQvAlmHRqAGecBJGPOBJM0/A+RmjT7KieLBFs/0FtW4rXB14N31UJMaz7aYoc2upkU++eP2wgSlOQlClWsG60vKOd+RUC1YXWLWW+YzeWC+8yJ82XCLqF4sL/Ssaj9FFoypK+P1qhXmkCgT7+l9nhfTOpzvw6iNbGU5E0lcenaRwX3TYjVuC/MIG9N6TqvJRPlm+YrLwZhVlunos9GGHkqaOpMtIp0vcwyO3dR+a1LXl12AB/ySP/PMitomkzy00EpF5Y9ei/RMPn+e7BfWOIQzeIh68c3XI+SrY639NZg/LhzgjCWLRoqHBoX+akkiR5/Ln24p9APibllxugRmtKvc1G9QPMKmYHej3uW6V/UNfH78Y8NsfsIA5amHQFrbrH7D/Fk5D9e4Ug7ssRE5R7bHFWkkb9TzZqz5jwrTKzPbgmA5s17+pBqYB1aU27cPavjj7R5n5JtGqmp5/txiIAreLEjS9OQzA3yopJnOX3bzVwdJoxKrddlDJSKczRGHsN8nQe1SW1wpjn/UJgGk3867wNm37kVjTFdk4xpyJD+vL5BbdW+I43VSA5v7seHKNR9Mt00NuE7HGEcbGak6tKGnyXKwh6xqrbboZ250LRlSQNvTmsZEwfILpFoBtVKgy6+DkgFzLIJDqzxNur0E+c1qXf2++CwJlZjCVtiDTC9vtS4qguyDlNdstDN1hHQ/DlQjglUo8JuANFBMD9gOmFr/gygBQzzNvIS1dQMjJnB1xoKcFTVyn9KQjiRiQM5sjQhYOmR+bIS/6XvgtE6FnlGFkDcWZT+CDB84qmS424JtY8IfmocMEZdar+lZqWvC+2gjh3VrVfN8ia228pKgv36p5p3GyRDliYELDTks2qEs+ys7asUYCZAPIyAwvg8Vl1rGiq6igHT/Sd0rlOpKZLpphTxoKSAksdLOc0YS8SBuG6+Me9PUbA57GGp9n5p2hWweFVCPy92hMXVPVDyqZBJXafv3AzjZJOEeN/RmLfzNjNQaaN5RkjvyEEXOjXWz/gZsoQAivZsplECTW85Pw0hfZau+xKGgAXjHtZgUCxzW3gN1bSJkn6gB7WhaosMNtRta5g97LRw1N/cicmsWhdMqpaZB+3rUVawqjWb4aci2I9Xxi1dc+K6u3tFM+iyxTxeQQwaJktXXefBoDaEvyYbxsh0NUOtMc40bhWs/ZvaxwX/dVDqXSEErERHvzxNGabYr8PIRNigJQpD+e5/0S/auAXavUr+OZOeF/HLzqhaeBwyQhdxuvg6JF67p09wMgPFdYADRF13/USFwXbY16lduv01pLTRxf57tD33xTgLM/hEPwXRbPmVOIfHMhB3nJ1OscUMjg2+VJ9kYfpI47I9DADyCSRUcaiIpLZnq/m05GpUXVLRiQdg7GoVwiUURYm+j8J9tqzP19Xy8Zh0/jgTXTRCkHxTc77ZGC2qyx9Z8gcwPcZoivf8o3MdAK4urOqqvvn9RM+FLI4LGTSm9o0jJ8WY0Qt77yO+Lkk1CmDlyJIUn0JjBnm80lkkFhvtTzBY/gmXzgDMjfaEzVrEqi8Cat+mhkVHNIfO0gOEQFIcP8JJ4JA+kbyaSt1488UDRcOI3v8D/LCdSxkCFp6EX+QDHJhJpVnygJn1LV+Ag7bpwrs7177GPYBCNqItm2fQKkNgVvMEhb9okNcCxJXmQg9SfHwCvxYyKilF7J8/emMOYZYwBCxfUrJ6ajUrwa5f+QQHGhVx15RVUJgnzz4MhxK+qFgg5LSOha8Hb0lojeIedKNhwlN38Io0+UAog2MFgXw+x2xwvnB/D7f3WTJhaULA4tU+y51uyjttez68jf3VqZCHMNWZ9DZ/85jHLtpQTWE1gUIiMHmCC63JNb/i4IPbvj58CBuAqmn2gyyrAK7CYd82em/50jTxvin19j5r6QQvYM36LKiBB61bfDc4+wLRFpVLDRp9zU0vUaCUHUlSIXyEy0JMm925nDtt5X2/e58KhJ/yzCecPknSRTjc6+E6GIq234dYI1uxhG0JL3ldz4QvEvFLPXpudvxMNKWfCSfVOrRAAIRKj1DfQbpGezF03d21ZLw3NJ4ZIHNpcAZEr1GfKQkoQ0emS2eoueR0vw6uUGTsKJOWKMQrmJmenk43ZX/F7iYBwPChOe7Opa8CqNGrgNzxZIgjAZPDYxwGHxd1DUz0BcRUHn0/oFNYVQsBhRvRQjeRWi7TXHXdjMQCvYSNpfQlC1qHJXvt6pDqaBaPo/JRUze7wCsYrz/oljT7Lmfe8zGyHAdl1oFvTJ/mjPQymAjfTpONnSBR3Xm0yQRCxsGzBWcuOFMz1VQdjGo+0C0oscH7a/CFKnmBZlq6NK0IWCkfc5TvQgEVw18YnaFXbunS+8iPTx46LaUb7wZQB7oud9iP+Sr/OBCWSDoB0aWX/xpQS+1wFo1EKrKFnzx1Rp9MCoFqt58GW4b3BfVL14YhWIN+3j3EG1dkctav9Nboq3zcx8GxYytftmgG3XkdBb9DonkTkLxOCJB8ZlhPUvMI/5NOoJKGX/dkUEXdMOMamJqY+2h0NJGM+2FQcPPlhSWkPWDJVHqcPPITNnPtYz++OsH31dqPKfR9FiHtg4RM9stbQcmAVy3h3KWTOgD2hv9JxJ9ge+bnMaKNImZfRgrHXkllGgvcz0JoVyx5Zrq2cmkaELCoo+2nALP0qFkDHB2Jps6G2gMh7nTKzDxbayZBKZ8QVCugNEv1IbMCpq7kA5zEaRjiaFCGk1c2JlrHUZAqNjaXMztNpEIc96egkDp+rK959WppQjWDfonM91LIQDTJdzP5gg/ci7y31tck+AhPPomI3Vvgnu+fcPopZhHQECsAAixc2MxMGCfAAgftOisGz9XIgKxAqFV3AF30TbV/hTyJzRTrUoaqWXRCjc4k4yzkg63SftNRrQI5XqOAZgBkX9+eYF8VJwFFcIG+8lUzBhx4HplmAgDZ7T1nMUaAmS9aiutnCgFzM2hsXzIAot2kmuXffhTkRR4OWEKaR2ChwjzuAzLp7J3VlaFIvE+FyMcwVaeDc82eH4oJfPKauGiZmqWTobYAa50XFLCqgSYETu7XP6ETPGNTMOl8r65rXWwKIX7/CenFlb4lDAFrwODXvYJ27hqtAf1S3nGBSbMb8d1I0QRMH1trMHWMmdBCCRSqOA+aPQK3AgY/3DKXcfZDwlSDzooVZ/+gZWhyuQ/OoUE7OSxumOP+fZALiq5OmfxYqhCw+v15Vi1gqB/a9BktxgvjvFZOpHwYgf/0V94HGECQqW761MwJQAAaEmmBFUbSAZb9lv2dJlDw7K/4ny3amsyYRl/fgNn18dcIy1Cr9pfZeAUS8c77qIRtqULA4vXYvHcELeLdF75F2hn4RZ7LcpJ2wNtm1Cvd7TxrTKfi3vVF+zdn4P0H9/0TjCxcakK57rEPwDcA6Ji4JcAxlc6Jbwe1YstxMC169ok6KK5/GhyzuOq8vwDmc9dL8eGYyo36G7D6/QVWMjSDDIB1LuAecJACxvK1HgHINBQbQAXJ/qRj3wTznfdzT2G0TEDIJbCZTQfM+o6mOuNhlaYDmwQ10q3VI3Oavk7tU9/oLB02aJr9u7+HfBpYwVvCELCYpGWSAuYDWEwT/YezF0IWFRECgQQW+Ec8E1L0XepVNtpII3/1AIM1qWiX2qbZqw/pYUJJ5hacOmuvdqmzhDSSM8o2Tz62aUZMqE+nVBEw4f032BInvZcyDDXLIayuOhXy0nr3UoSLuuJOMfkiR+Vf5tGJ5vljwPSbxiEwHmBlqRDKZCwdoFE8wFlJFijRGgFzbctpYjXJe8LhdJeOiEFqkte2W5CaZaL7aZA0h/z1Kz/3nlC5MOREmq1yGAIWazF/M+CpeZ8lFoiMqXhxfXcB1sOsRT7jp/R3Aa7bnY+nqMn0M+xkwWTxOYuYPkokXfQl9sv8rAZTi895Gay4jrsYlwGa0Zo7e0bzCZpkZVYEZHVAGswID4uziPtdkLFwCz64B6Oy+e4QuXtKW66T5ariPB75Asowi5osNPqbLC9DbvqdU+KSwxiX4X33YFjO3KDzgRIhgE7oylCXT/AfK6Phop9Xx9sAsKqRPtXoFgEnhNWKHu+k9WXHvhRlHjDzkRm0zqalz4LqLMVYOudqqzWNFjZ7ixhMirKPVOmraSQz14ZRoyvcd5Rs46qIJOmS/dTP2A8lcg+1jGiUWif2DL6ATGXwOnzfpT09cJDDPSaXSJcPxwSsSLESTYk6EzK1n0nJaubqNXFUYOPta1KZV2jiwK/32EeRz/6ox4sSBcrXorpP3s00xmv6BNwxmt/RqhUKttDUNKmBa7dxq4168dbZnleQrBWD40jdQJ25q7ml0QM+pGbaPH7D0SbFOZIJI0YMjy77SJMh32bOmT/DsofXljcK3vFqlKLeqVcWlQcLuWuekekyr3wbAdSjq3Hgj1sgROHZiG+1bH4B0XFv7pN2FAJWuGCHTgIlOzMU2h00BJcC5rs2RXU0kHLS8Bacs+JcurmznqXyuO9U4l4LP0KzCFPzgRa3BigxANbt+8kKX+Cl+WW/RviOJEHAGLZV8+fmTwUlGsi1wCtxlWUID06OoTowandtqHGa6R7m2/fxOleZ5hkvRygi70OkXQGMchM4+l5g8SRLbYsCQQSsqGCYn9ZWcmUf53yo0lXiLhZHWt0Y64KtKwxqTJBJvsqvDEvIV0uxpYqgPrEY+Gv3AEcRwlE/TpJqBh1ROQU0YOa99iJmxKUAvCxBUpEAmsan8iXU+y2Y43ygBMf746gM6ebHGSG3YyxBsSEGt7r5OqAxtmp3+fSTYzsH2jKofsLCoQAv5odJi86WcARS9S7OiZ2X01djxAtkjbWp0s814Mwzl+n+j1gJ0jcgIi9XgW++dFla68CE9JRVBn7kxuVD6FbkCZldiWQ61SY/jCSpwHHS0OQTEGO4yNtP56ZLfxWfUNzCi120NvLLDKTGY+KotaIGyg8Q3re81KdwmsSIehRCy8gl7PB2NEsDl2i3nCkV3LDXiAj6S7xssW6rN639lJ/AdeAceujXfI2dGpSXnwCqn7uoU0qQZwNwUOzvUkqfmXwBQ8OajXGYDLs5n+AVDwuUKUVjlOGKtCH77EMZAhQaZYbM5Q3UaAQbwCkLhlN+2C1tgFL7BawCTHFVukqwoFUBrNwRDIRGYBUGQefPpzYV4K7tFzhpoRxrkA8GemELwrQjYnDTQbxJ5bvxCailfHA7X4QDAgUtppGE0bC00/pGICOGWi8KoJTb+yxeh8DMkE2URYQUACAWEIBMCyUwIx8DI67eg2iYIyMcTGt60jCLoCQJdgorzgmMHwNgy3e2RE2Tya0Ws/0CRvl+VMb+rENaoIfxmkclk/6OhitZanS0HyAUKfdw+DE0tUinxgocEbbCDGurWuFZb7gBSDpDH3F1DU/OUnJsZO0/vV8FFlYiHBENytTEuYvLX0Mzglyn1DS18stgnyPdRvmjVmX+lUQCVxdhuRVkkzTpwnsYJ+vB6g4hmlUxgQAZMCxd0zSyl/VhOgrQpqcAfmD2QCcETXBc5A1Yn6PeZNQNbWqRJlvcSNLzhSiks99KnwDTlFS1Tup8y42TxvNo4AQv5XcoIUi+7bqaPEuVCbYBekm/wFAiJBOjSazm3F0kXFMn3g/1SS//ERKZrmEzj3KrthmjAKhNhioWnORS2MImwDaXRlGDKWD8kmaMNsVkjdKTLoCkCEqG6zI+uNCWmEi7Cu/LfHgQ8KhQrkf7OFccdw2hAlCisCYNKVRuR27yACFIEBfiaTw6kr5LeWuiCTJDOq3Ixqh9ut/CZ8FtNo86NMjeQ7RG8EmAaw7BcpQ01m1j3AJnB+znkjSp86SryzQ2SIaTiLIEMhkxtah18kqjzpCMIhVHNUjWDtPaHu4IWJg7ZEdlvn2W7VSzpN3WjUA1v7VV9pk/9BKjVenSHrllyTWF50KpAECuZtD78BRprGUN+eP9Co7lUyMRqU2GEmpO5vwIVWSSiMQwXZBSpaVAdHUclCKvaSyHnv1Cj24fppo6jB9WpDjnPblqDXSpjQu49uPMgjio1m2VuYEnBHstuJREB6grIYPVATdOyjrammCfN+prTK/Z0doIRjSWo/IaR4icXkmeNOXpFgVQUxkQKtMsOOlIa63V0RAkr+1fNXeBl3vWpCkXDMUagxva5AJspeGeKRK2L0Iy5KOEehq18JhrYYlKcA9CkcbbvF3pJl3iPScELKuWIKeEZA7dNVe6ybXaSiznNFTTV/cS0hAqFLy69w/ioueUAHNafDUoUp5q6CEBybdYu2E0QQ0DLDfkLNKvGfLlOzRGE0xLMZuUGU1iIhigJFaT2ormQq/9mRPQxJtOupwBERiltLaRc64hM+0byaeMtl0yP1zxPmzeNbjGPQqWJfv9izBzXWGpV4lXeoil+fBFLRkCRL+m8OlU0GhKsCxAGtGpxuWewuQ9aOHHc7LVCA4BSxLC9ZqMwpxyQqZouKR5r/5D4mC6sw4u+WfPRe5xTZAIZ9tNn6/ccQ2dRPracUrSXDDS1Yt0SNB14EwdfrCmh/bxdjbq1dypTVBBUYt8J2WBhuhhkjT1LsiNMKUyT9DVAIVNt17GxfhxbUsrgyWkXpvXNvomAfvPCuxImxwkmKJqFKcE8xksy/K1NKZHu6SFDNEskqknik9mJtRkeZG81mI59deUtzkZlmylyUmKekHKO4bbNMuFQp/1tdlWpk5ZdPYLcj3wM0Z6PhRkfIiFsTIxRou8xvtiThkliS1mMmReyQDYD6bV5uodqkumjw03HkCjRTYGwG2gL6UUoRZgCGDtjzBVlmlmwLB2/wmYtVbhFnA7fr6LItPJ6xtwbJsZbZ1F6DXWUOn1Ti3PlJpEEhFqiytXvNZUGuufc3kKVuVWSAoI8rvSYm7pIcJKrTPpvYZI28FfbTGnxCWpP5S9axiCZQIrFX1DlYKs3AJGxlnJ7D1MjTxkolFHQ1KkIVrImCSMoxL7FCc38/WgEClxQiCDOAeIkIKGjt7B4dfixvkeyoITovZt0KS3VbNDU07MBUhplEy1mZV+oUvZMIMXHFGLwiUDzKHronZXTbJOYw1tNNfUsRicqXVeDykkRVrJsdZlegEyVCjMr+ZzBd1+NzMhfJCX1QQ6ZrP96a9Ib5AavcURLYn0SrPIvV1DBQuceszwWpBSlyJI16RwzVKy+EOrNQGL9FsZxwzzZBWZ/kPXPZO5NNYxk5O78td+jteRc+6EMLLLeSWGInE2WPwkDvbQz80y0y/h2nM6KP5GTLNuWcgf8ZFAgUAgfMmX2NY5NumgFbsIniJkn2F+td3QwlIYo4XQpbHkGiqA3hsF+xptTp/28tkb/rynJQmrySk4tMn+01tKh/cUgvCMS6MEgOsqsqPya82aPttkuM2pGCVJ7LDPwrz086GYSD6Fkcjm9WkYxol6cJUjJTQq95QVqrRydF2AnQvLXJ/nFO7eQ2eirU+zleUXx1xDc2X9YV8Yj1kkfZ3rszxvVim0gJBFlMBYXnZNEWnPJ5i1JBsrrbebcnMYhMN4PVtFssa6UKPRIw/xtjjnqUPmW7+/VYCrydSgVQE2vSY8oiyNlgMvRvQ5TRaFkUfcTZuGNZumXg+PAFWdDWskCJqJdgsRM6sI81OKBFW0ZY5EWp2dsRrluKJO95gOIhRpTFn6Nj020IzrnNkKcuJMaArTz5C+Pt6jJFMHQwClNFNWgiaDAFgAAoEopVVew9qYF0UBekKrkp6SEicgMlxt8a9mNqF/AGN5Uh1wbKMtE5RavsKhNb3rAAAQlklEQVRX205d0Kxp11Gv5pFkKYcSYO6QMGJCYO6EJM4UmUpVDPQwG+liLTzU+7ZTrfVq5FQkzbBMa9w1BKzRbEXcXqulUSq+T+RLTC3auS2YAzNHJsVmhiVDwPw0u/dbmIN0+BSVSd2UR+LwnlyYTNtbZz4iJtyUcbVu66v0VrC4IgYW0Dgp86bjtZGpt7kyqIqVNFVD5fDdIIg1yLx6r8YLbTVnptJ6jKC3zoz4NNucRTOlCxDTEH7VBvu+UC7JggCNNq4BcVEq+zZOLM/+8jZTSUzFTgFCYMWSMxJwhIpcGHF7sJ6kCjNSq2qO7wTjRzKidqVH0xukeZaaiVHOdTMsvnpy3MVxsGmNfCXIPotzTYKaQ/lZwKQvcw+HbJB9Yl0Hu9X9jjmzDqtKi4i38dQliYpPpYcLMtYO27I02JYna2R71RouEqom8W1J7iuYlqRFGOPcFlqCR3xY7lE5xYy0NJTaByRXZZvOz6imxKTPsl61t9IlItWpISWg9auLWEGlLFPXUi2Z89Du+Z3DLmaQQpNQSckyIallUHSMo1JkY2gdoAmmzNNUZrAHY0azHaZ1ni+DV5yHLsP8rGEJmAuPKdejZQ0lizqrlAuwDSAVzLGP8xvJYYCDcqni2lmPxToW4L5bBRQyB7EeK2hqa+2vajtsi3U6haVDU90OpwDUPKXfu7TJ+uM81XyZTqNiZ+XjgpNWk1o9ysAqtRQhT5QwoFM1QizRlDcyc/Wc6kxvgmEyLxVC/+fvdgRNnBCw6FHoNioTqw3HzbUCmiFBuzLRMZK6ZKWS6RTVqAGqiGx2rcl1I5mnhtWZeWhQtZJi2CCBCs1VUi1PrRjV6GRPNBPmenTXFFwkCyBwDRHRWr2uLKVQnptVLc02KwZ6b4JgTBVCmqwQeN8+kPMajLOHquZVV99tdqHJeOs1EyF5b8s3jCReDa98ocxR9AioUd4UIs+Ed1i3zeJ+WJoa9vwTLrkKFEdAieOfY6RF68Mcel1rVrUBRwZTiQV7RgQ/SlR4ZwwQywPLQROGa1phdrVrxGs2a57Ek05WVbuNVnCf+QzSWCpNEmQZzKUmyzlDvTQjPJfBJpE+dd8QerjSFNqqCoTac7tp9FyzJ5j1T1OoFtc6HW9Zv6WlJGnIdT16x5JrqEcsITGekwYEolFDwEwfyridocsoa2Lr3fz6471d7nNFXYQwFo+uSlEiKuM0P1SkJygBEuqfvY223sU5Vb6arSqRdelf04X0B03Pa60yRLBH2iNNkShKtQ9z3jsAEB8nx34Nc2p+PTA12pVnNayOpSpTdSjUkhZ/WaE2PWVqEWRaBcg2mMt+T0AE1j5SFlQBNK35RgPekEHMKD01k8I/obNN9SxM5LK2h99oJOVQdk1PHgEbXQXEMMcqCJbl397DsJ4KRZ7OJ70kxPbbOLWJGM2id6ovqKdkYyWsSm4d45AkAHpYiHZ0I2qkIb7BaM5prXhMwcUyvK7SLEDWEuEAKPu5SVafq/bAMvop65Oh9l7+owskj/+GFFHAAnU6+LU3SnnksO+SIbZFjRFOQ64FOaUKC9oUOtTAet97prYs0xtuZ68g2I6hpeHogmS0ytQAptcq++Rl/IuUUsuxrF2dir1BVsEK6hDkx6UpSILjLCABGoa6KIdMwtTaf0mg8RgXmc8/+7ZUREOrLyUwPEZEjtpAztjrUL0+OmdBtRSOzm4LZsYcgORUEYWzCAng9IN+4XWBMZz1m0YY6hiIvhUa+E//ArNsv2ngyBwa2ezz4WtpI672XbebwAokwkEetbZqn6wLVSlzFGdbpacysrbdqoRd+j1LGUmAQAxpsiz7cwEy/UjPvEo24gQxwWOtoB5rBcOb9RCw8HIwLMNKrTjnNWf1n/R8jHegqCYZ6m/eFCO3rJ0/GyYj47HBWP0zvSiT65wof7JGIh0r+ZQKr9DjvEqyfU4cFihzh6vi4QBh0uUQMi3S7znrriQvBAT7SAWB/kyWUIftFDB12/6zximCdTbTqDziZ/KUROZQXvtO25CpIrOGWttvLhke6pPaa81+TaWzYgwhCMha+UAN1uMxt2wh9Q3Thu+jfObdSwhYaFH4E4JggP2R+TVXlTSJl2BvVMuvYfCesw91BoIMpDGd+9/dAOOMvE+aZIyUe6ap+WWs5fvKoPhgHO21dPgm0CSfXzZe3SBrAHLoMOYeQ70JvT7SmV54ZHeWUTimr8o9tZuh8bAd7hq2f7VPyppZ2mA7rCk+bnJbQkCwUO5UwKrQyYJdQ72ETwjRQLNhaspPCJACRin8OGFbHQu5a/DIn9lq1sTkZ5e4zBKRJGD9fx/40O8GdQmGESKnHnlbQqNd0QrjdH2rFMX8cZ9PBCWNFavyushqgxQ4IbTI/QDD6rEmTi1yc4r0zKkS5Gjj4Ngv+gTmDB6kjqMgzJPH7x975WO09l9pqpo4FIC68wjxifdavTsH566f9Yirk1K0hXbVwbQM0oRbavUAqYBr6Aj9I9ppOdfVnVAz7NtsZQXD9gtxAsAo2iObNwLM9BRL+8mFVFcfoGa57XyImbGmTxjG8d5OeMOyPEHftLz+9W/sb9lyo1TYBoIdsiTyC1OctmkhoWEO55IliXp7AmueOA7kd+m+pSMASDZUuCNaHH2rWhsHQW9wUXedBirX7uDVbOa1DIzNNLV+Y9KVaXc6OSmcWXtTI7VtaHKWxbxOidknBRJ47MqzzLSX6vFV8zg2pNRDy8ovRwFzbtHJ5wFp0jcFSCLTvuothiHSTzoPtQxb5IWMlQ9oL5c+gLhz5wzvoiKvsmUgnyClD5MEy4YnghePMSdheNLwU49mhcg+m1T7BzfL948+4N0WF7DOPvvVzWMf/OCHrJgaX7N6zaovr123rkxOTPDBszbHybJs2URZtnwZkwbs7wOMHoQN2Eip/2XlaruLjHHhoTxQwmDN2QJaInN8VUPeuQuj/bC0S/xK8hxl4JCTx2sG1DKQcydPBV0N0WzpaBhkvrqjeRNs93PYE+ajNwFOoRrmBTDrrTllVjVpiqF9pdumffledbE188LvHwCEaoEZ5kYg0lDq0npESE1nezD58XQ7pA4fhFDro3BRIl6wRNlSokJf5gi5tsxEpRrow/L0FliaXV3K1OMe/Ljr167/Wm9iee5inYbEUMYf/dEfbzzp5046a+uWra/fvnM7hUIEHXudwEWeqHjlsqly4AEHlFXrDywrANEZA6WRbYPcJ60MoGGzSgXtc2Arw5R2GZH9GzDKq+yh56hN7tAX6SHa73RoQFaYKS8v6oI7tUHQKvNJZ605AlaYSJ02xZQu1avb1aGpAHEJXZrF2l5jZaESbr6UUaniYshRrisrw19iK3NJTJpKg2lt384t0+VjT3tumdu0g7lee3TKQPhENlVynv6KKP1tNS7CFu+D4uBVHgDpLJTJxxxVZo5/8Lo3nveOLdy5LdwBLGPPPPPMxtTUsvby5ctQo0HZdNNNO0866aRHrli5amOnM75u5cpVx+7YvuVb27Zt++70zpmtYzwauXzVqo1rly/79NjEVNq5bGq8rFq5HI1cWSbGLUYu9tiM2Y031xFg+yg9N1oyx2b3NJ/zCr7w1z9lW//JQXMrG2g0O2gBAPsuKb1FjXamg2wx6d2i7TBE1yXCQuEKgcyJ2YrWDM+pc6Q9oYESLNFyBMfzkaDFUTERf2qf5hNS2BzUKtO3bC9/+fTTAGua78W5oEp9AqKgau4qYmZMySPzSGkODOnPFsv4ievK2BNPLt/b3m/PLSz0L7zooipZSWQREavh1V4Or3vd69rnn3++Fi2AXnjhhQOB9fi+973/YUcffcxzt2/f+vrZ+cWn256Fhblt8/Ozf+uzyZMT7bJqxfKydvXqsnL1GpbukXucBh82Xz45RYPcrQvLAMQPWPcWdVAgDu/KBT2DMw0TrJHVDaDjcVp8VFZzNqZaIwx9QBox3Ila/9mv+AvUHC11xGjPvWuoQmNfKaC67bvO3Zmm6rZpBb2WZclC6ev9dt60tfzls55X5m6cxv9Su01aQYop1Eol0rKQVTRqwIde2JlfyhFry7qnnly+35+c+MPzziNiz+Fug7Xn7LfHCpy4H3bYoeve8IY33OydN7/5LVPLV6xYuQwVW71m3TFzM9Obdkzv/B/OyC9bMZkvtU7SF3boG8fZgbtm5bKybNWasmxqEmbBWr1C5xZpmNNMTqxmi4AjYJrc8UPYKgHS64iuA2bOaYZTgkg6+zfBMtogo5TtEfPVzRplQegLCfRtNaVqoXGmNsTEClbinDjgnhqOJu24eRtgnVbmfzQEy1RqUyq2HyQtbTIKmShNn3k7eOwN63/x5z5z46qN173p936ffmfvYZ+Btfdqbr971llnNS644IK0/k/+5E9PBMuDeYPNZeDxOL7A25uZn92OZn1Lj3HFJCAuX1lWTE2xSxsvEWQ0q5NcT0xOApb9RYeHOGSGLGatSjcvjgNVaA5hkObMCuufvQncQjsqYCPYuD9MK7WjtIEVWmR8TYlhREtGQMQMAtbOTVvLR3/9eWV+E2+wtRxow/JG6ARMyMGVVRTM86rmm1c+4YRP/Xhy7RX//oL31E2Tt7PoLs/uc7B2p+TMV70KgWuUdw8BfBXXU1NTbUxke93atWv58nhrbnZ2mpeoMFnSAjP+2u1NYxPjmL+xsnzFsnLAgQfh9KzNzihNbIP4jmYVJglm3ZKcuYwwjeqGYAiFJtQhRbp9rqqGxQwCqClHGiVI6mEcDX6jLwAAWWV6y/bysWc9t8zeAliYRSvIg/CcC1Qmo6f47vPxB5fxE044+JzfPY+x0j0L/8fBumfklnLGGWc0Dj744BVTkxNTjKl4jEuJ1eHwdQ+95sTU1IrlK1d9Yz3Dj6kpgOLBiQn6xVXLp8rkZDW5Tgb3mK5xD4hep/1ZndGQGrgcDfMMQIYaJazcIYD06Bxp0KP1AfnpTVvKx573/DIHWANMev2CBOBynynK0jzigCPXPPyEue9s3rHpove8pxaV8u7+z34H1v+uaWrmox/9qMfyMWxG84tfaY2NPQZNm9Bz46v0fyurl2FC161bU9YfsB6TOgFjNaeWjIcat1vNcL7S8aNeXfU4s49yqFuhg6FFAw+31WmXmc3T5aMveVGZvZlXrU+ydVznhzmzwQMw48cfu2rzQmP6Xe+6oHo4yXzPf37qwNqVBa997Wvbb3/72+PBnnvuuZNHHnnkcXzKY+IBB64/aefcws3TO3dczxt1dmIyJzqTy1auWrX6spWTE0wV8FkCtGM5Y8opnJ32OA4PgDnd5Tutbhvn6VygaQNM7symW8slr3lNmd2KMzcBUAetKOPHHr5s8oBDJhjv9X/nzW++dVfafpLzn2qw7glD3vKWt0w95uRHv3TH9PT3mI7Dte4ucuRhyoUZ+puvONU7wfCDKR5AXD6cHsXhAVQ+P1a24WB8/nffUmZK4yGtYw/93vJDjhjn4YzmG9/0pjsMbO8JTbun/RlYu3HkDW94Y8eB9NvO+w/x0s4555wWkwTjaNnUhgccfNzO6Z2bZ2dntzN453M7Y2OdTnuqMz7xrbkdO8oN3/zqqrEDNvbf8odvm96t2H1y+TOw7iUbf/+tb109OT4xMbcwt3Dub//OPtOiPZH1M7D2xJX7aVx8oPspbT8jazcO/C9kE8mSycbXKgAAAABJRU5ErkJggg==" class="StandardView_Package" />
					<h1>' . $statusCode . ' ' . $statusMessage . '</h1>
					<p>FLOW3 experienced an internal error (uncaught exception)</p>
					' . $referenceCode . '
				</div>
			</div>
		</div>
	</body>
</html>';
    }
    /**
     * @param \Exception $exception
     * @return array
     */
    protected function convertException(\Exception $exception)
    {
        $exceptionData = array('code' => $exception->getCode(), 'message' => $exception->getMessage());
        $splitMessagePattern = '/
			(?<=                # Begin positive lookbehind.
			  [.!?]\\s           # Either an end of sentence punct,
			| \\n                # or line break
			)
			(?<!                # Begin negative lookbehind.
			  i\\.E\\.\\s          # Skip "i.E."
			)                   # End negative lookbehind.
			/ix';
        $sentences = preg_split($splitMessagePattern, $exception->getMessage(), 2, PREG_SPLIT_NO_EMPTY);
        if (!isset($sentences[1])) {
            $exceptionData['message'] = $exception->getMessage();
        } else {
            $exceptionData['message'] = trim($sentences[0]);
            $exceptionData['details'] = trim($sentences[1]);
        }
        if ($exception instanceof FlowException) {
            $exceptionData['referenceCode'] = $exception->getReferenceCode();
        }
        if ($exception->getPrevious() !== null) {
            $exceptionData['previous'] = $this->convertException($exception->getPrevious());
        }
        return $exceptionData;
    }
 /**
  * @param \Exception $exception
  * @return void
  */
 public function logException(\Exception $exception)
 {
     if (!isset($this->settings['host']) || strlen($this->settings['host']) === 0) {
         return;
     }
     $statusCode = NULL;
     if ($exception instanceof FlowException) {
         $statusCode = $exception->getStatusCode();
     }
     // skip exceptions with status codes matching "skipStatusCodes" setting
     if (isset($this->settings['skipStatusCodes']) && in_array($statusCode, $this->settings['skipStatusCodes'])) {
         return;
     }
     $host = $this->settings['host'];
     $port = isset($this->settings['port']) ? $this->settings['port'] : UdpTransport::DEFAULT_PORT;
     // set chunk size option to wan (default) or lan
     if (isset($this->settings['chunksize']) && strtolower($this->settings['chunksize']) === 'lan') {
         $chunkSize = UdpTransport::CHUNK_SIZE_LAN;
     } else {
         $chunkSize = UdpTransport::CHUNK_SIZE_WAN;
     }
     // setup connection to graylog server
     $transport = new UdpTransport($host, $port, $chunkSize);
     $publisher = new Publisher();
     $publisher->addTransport($transport);
     // set logLevel depending on http status code
     $logLevel = 4;
     // warning
     if ($statusCode === 500) {
         $logLevel = 3;
         // error
     }
     // build message context
     $messageContext = array('full_message' => $exception->getTraceAsString(), 'reference_code' => $exception instanceof FlowException ? $exception->getReferenceCode() : NULL, 'response_status' => $statusCode, 'short_message' => sprintf('%d %s', $statusCode, Response::getStatusMessageByCode($statusCode)), 'code' => $exception->getCode(), 'file' => $exception->getFile(), 'line' => $exception->getLine());
     if ($this->securityContext !== NULL && $this->securityContext->isInitialized()) {
         $account = $this->securityContext->getAccount();
         if ($account !== NULL) {
             $messageContext['authenticated_account'] = $account->getAccountIdentifier() . ' (' . $this->persistenceManager->getIdentifierByObject($account) . ')';
             $messageContext['authenticated_roles'] = implode(', ', array_keys($this->securityContext->getRoles()));
             if ($this->objectManager->isRegistered(PartyService::class)) {
                 /** @var PartyService $partyService */
                 $partyService = $this->objectManager->get(PartyService::class);
                 $person = $partyService->getAssignedPartyOfAccount($account);
                 if ($person instanceof Person) {
                     $messageContext['authenticated_person'] = (string) $person->getName() . ' (' . $this->persistenceManager->getIdentifierByObject($person) . ')';
                 }
             }
         }
     }
     // prepare request details
     if (Bootstrap::$staticObjectManager instanceof ObjectManagerInterface) {
         $bootstrap = Bootstrap::$staticObjectManager->get('TYPO3\\Flow\\Core\\Bootstrap');
         /* @var Bootstrap $bootstrap */
         $requestHandler = $bootstrap->getActiveRequestHandler();
         if ($requestHandler instanceof HttpRequestHandlerInterface) {
             $request = $requestHandler->getHttpRequest();
             $requestData = array('request_domain' => $request->getHeader('Host'), 'request_remote_addr' => $request->getClientIpAddress(), 'request_path' => $request->getRelativePath(), 'request_uri' => $request->getUri()->getPath(), 'request_user_agent' => $request->getHeader('User-Agent'), 'request_method' => $request->getMethod(), 'request_port' => $request->getPort());
             $messageContext = array_merge($messageContext, $requestData);
         }
     }
     // send message to graylog server
     $logger = new Logger($publisher);
     $logger->log($logLevel, $exception->getMessage(), $messageContext);
 }
 /**
  * @param \Exception $exception
  * @return array
  */
 protected function convertException(\Exception $exception)
 {
     if ($this->objectManager->getContext()->isProduction()) {
         if ($exception instanceof FlowException) {
             $exceptionData['message'] = 'When contacting the maintainer of this application please mention the following reference code:<br /><br />' . $exception->getReferenceCode();
         }
     } else {
         $exceptionData = array('code' => $exception->getCode(), 'message' => $exception->getMessage());
         $splitMessagePattern = '/
             (?<=                # Begin positive lookbehind.
               [.!?]\\s           # Either an end of sentence punct,
             | \\n                # or line break
             )
             (?<!                # Begin negative lookbehind.
               i\\.E\\.\\s          # Skip "i.E."
             )                   # End negative lookbehind.
             /ix';
         $sentences = preg_split($splitMessagePattern, $exception->getMessage(), 2, PREG_SPLIT_NO_EMPTY);
         if (!isset($sentences[1])) {
             $exceptionData['message'] = $exception->getMessage();
         } else {
             $exceptionData['message'] = trim($sentences[0]);
             $exceptionData['details'] = trim($sentences[1]);
         }
         if ($exception instanceof FlowException) {
             $exceptionData['referenceCode'] = $exception->getReferenceCode();
         }
         if ($exception->getPrevious() !== null) {
             $exceptionData['previous'] = $this->convertException($exception->getPrevious());
         }
     }
     return $exceptionData;
 }