From dab3dc3f97ea84d8f179230d0cc229285e908b16 Mon Sep 17 00:00:00 2001 From: Martin Date: Wed, 17 Jun 2020 19:17:20 -0300 Subject: [PATCH 01/38] Fix Product Entity --- .../2014_10_12_000000_create_users_table.php | 2 +- ..._08_19_000000_create_failed_jobs_table.php | 3 +- domain/Entities/Product.php | 49 +++++++++++-------- 3 files changed, 31 insertions(+), 23 deletions(-) diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php index 83ab770..6e482cd 100644 --- a/database/migrations/2014_10_12_000000_create_users_table.php +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -14,7 +14,7 @@ class CreateUsersTable extends Migration public function up() { Schema::create('users', function (Blueprint $table) { - $table->id(); + $table->increments('id'); $table->string('name'); $table->string('email')->unique(); $table->string('username')->unique(); diff --git a/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/database/migrations/2019_08_19_000000_create_failed_jobs_table.php index 9bddee3..c854b27 100644 --- a/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ b/database/migrations/2019_08_19_000000_create_failed_jobs_table.php @@ -14,7 +14,8 @@ class CreateFailedJobsTable extends Migration public function up() { Schema::create('failed_jobs', function (Blueprint $table) { - $table->id(); + $table->increments('id'); + $table->text('connection'); $table->text('connection'); $table->text('queue'); $table->longText('payload'); diff --git a/domain/Entities/Product.php b/domain/Entities/Product.php index 93b6693..719d96c 100644 --- a/domain/Entities/Product.php +++ b/domain/Entities/Product.php @@ -3,7 +3,9 @@ namespace Domain\Entities; +use Doctrine\Common\Collections\ArrayCollection; use Doctrine\ORM\Mapping as ORM; +use Illuminate\Support\Arr; class Product { @@ -11,47 +13,52 @@ class Product * @var int * @ORM\Id */ - private $id; + private int $id; /** * @var string */ - private $title; + private string $title; /** * @var string */ - private $description; + private string $description; /** * @var float */ - private $price; + private float $price; /** * @var float */ - private $taxes; + private float $iva; /** - * @var Category[] + * @var ArrayCollection */ - private $categories; + private ArrayCollection $categories; /** - * @var Stock + * @var int */ - private $stock; + private int $stock; /** - * @var Characteristic[] + * @var ArrayCollection */ - private $characteristics; + private ArrayCollection $characteristics; /** - * @var Order[] + * @var ArrayCollection */ - private $orders; + private ArrayCollection $orders; + + /** + * @var ArrayCollection . + */ + private ArrayCollection $providers; /** * Product constructor. @@ -134,9 +141,9 @@ public function setTaxes(float $taxes): void } /** - * @return Category[] + * @return ArrayCollection */ - public function getCategories(): array + public function getCategories(): ArrayCollection { return $this->categories; } @@ -150,25 +157,25 @@ public function setCategories(Category $categories): void } /** - * @return Stock + * @return int */ - public function getStock(): Stock + public function getStock(): int { return $this->stock; } /** - * @param Stock $stock + * @param int $stock */ - public function setStock(Stock $stock): void + public function setStock(int $stock): void { $this->stock = $stock; } /** - * @return Characteristic[] + * @return ArrayCollection */ - public function getCharacteristics(): array + public function getCharacteristics(): ArrayCollection { return $this->characteristics; } From fc09512d110dd5a7887689ab0e9399e4004a2385 Mon Sep 17 00:00:00 2001 From: Martin Date: Wed, 17 Jun 2020 20:15:17 -0300 Subject: [PATCH 02/38] Finish StoreProduct Action/Adapter/Schema --- domain/Entities/Product.php | 22 +++---- .../Actions/Products/StoreProductAction.php | 30 ++++++++-- .../Adapters/Product/StoreProductAdapter.php | 60 +++++++++++++++++++ .../Schemas/Products/StoreProductSchema.php | 46 ++++++++++++++ .../Validations/Utils/ValidatorService.php | 2 +- .../Utils/ValidatorServiceInterface.php | 2 +- 6 files changed, 145 insertions(+), 17 deletions(-) create mode 100644 presentation/Http/Adapters/Product/StoreProductAdapter.php create mode 100644 presentation/Http/Validations/Schemas/Products/StoreProductSchema.php diff --git a/domain/Entities/Product.php b/domain/Entities/Product.php index 719d96c..2371a1f 100644 --- a/domain/Entities/Product.php +++ b/domain/Entities/Product.php @@ -18,7 +18,7 @@ class Product /** * @var string */ - private string $title; + private string $name; /** * @var string @@ -79,17 +79,17 @@ public function getId(): int /** * @return string */ - public function getTitle(): string + public function getName(): string { - return $this->title; + return $this->name; } /** - * @param string $title + * @param string name */ - public function setTitle(string $title): void + public function setTitle(string $name): void { - $this->title = $title; + $this->name = $name; } /** @@ -127,17 +127,17 @@ public function setPrice(float $price): void /** * @return float */ - public function getTaxes(): float + public function getIva(): float { - return $this->taxes; + return $this->iva; } /** - * @param float $taxes + * @param float $iva */ - public function setTaxes(float $taxes): void + public function setIva(float $iva): void { - $this->taxes = $taxes; + $this->iva = $iva; } /** diff --git a/presentation/Http/Actions/Products/StoreProductAction.php b/presentation/Http/Actions/Products/StoreProductAction.php index 6279a2c..8c29045 100644 --- a/presentation/Http/Actions/Products/StoreProductAction.php +++ b/presentation/Http/Actions/Products/StoreProductAction.php @@ -4,15 +4,37 @@ namespace Presentation\Http\Actions\Products; +use Illuminate\Http\JsonResponse; +use Illuminate\Http\Request; +use Infrastructure\CommandBus\CommandBusInterface; +use Presentation\Http\Adapters\Product\StoreProductAdapter; +use Presentation\Http\Enums\HttpCodes; + class StoreProductAction { - public function __construct() - { + private StoreProductAdapter $adapter; + private CommandBusInterface $commandBus; + + public function __construct + ( + StoreProductAdapter $storeProductAdapter, + CommandBusInterface $commandBusInterface + ) + { + $this->adapter = $storeProductAdapter; + $this->commandBus = $commandBusInterface; } - public function __invoke() + public function __invoke(Request $request) { - // TODO: Implement __invoke() method. + $command = $this->adapter->adapt($request); + + $this->commandBus->handle($command); + + return new JsonResponse( + ['message' => 'Product has been created successfully'], + HttpCodes::CREATED + ); } } diff --git a/presentation/Http/Adapters/Product/StoreProductAdapter.php b/presentation/Http/Adapters/Product/StoreProductAdapter.php new file mode 100644 index 0000000..c07b5db --- /dev/null +++ b/presentation/Http/Adapters/Product/StoreProductAdapter.php @@ -0,0 +1,60 @@ +validatorService = $validatorServiceInterface; + $this->productSchema = $storeProductSchema; + } + + + public function adapt(Request $request) + { + $this->validatorService->make($request->all(),$this->productSchema->getRules(),$this->productSchema->getMessages()); + if(!$this->validatorService->isValid()){ + trhow new InvalidBodyException($this->validatorService->getErrors()); + } + + return new StoreProductCommand( + $request->input( 'name'), + $request->input('description'), + $request->input('price'), + $request->input('categories'), + $request->input('stock'), + $request->input('characteristics'), + $request->input('orders'), + $request->input('provider') + ) + } + +} diff --git a/presentation/Http/Validations/Schemas/Products/StoreProductSchema.php b/presentation/Http/Validations/Schemas/Products/StoreProductSchema.php new file mode 100644 index 0000000..af9faef --- /dev/null +++ b/presentation/Http/Validations/Schemas/Products/StoreProductSchema.php @@ -0,0 +1,46 @@ + 'bail|required|regex:/^[\pL\s]+$/u|min:10|max:256', + 'description' => 'bail|required|regex:/^[\pL\s]+$/u|min:10|max:2700', + 'price' => 'bail|required|numeric|regex:/^\d*(\.\d{2})?$/|min:0.01', + 'categories' => 'bail|required|array', + 'stock' => 'bail|required|numeric|integer|min:0', + 'characteristics' => 'bail|required|array', + 'orders' => 'alpha_num|array', + 'provider' => 'bail|required|array' + ]; + } + public function getMessages() : array + { + return [ + 'name.required' => 'Debe ingresar el nombre del producto', + 'name.regex' => 'El nombre del producto solo puede contener números y letras', + 'name.min' => 'El nombre del producto debe tener 10 carácteres como mínimo', + 'name.max' => 'El nombre del producto debe tener 256 carácterés como máximo', + 'description.required' => 'Debe ingresar la descripción del producto', + 'description.regex' => 'La descripción del producto solo puede contener números y letras', + 'description.min' => 'La descripción del producto debe tener 10 carácteres como mínimo', + 'description.max' => 'La descripción del producto debe tener 2700 carácterés como máximo', + 'price.required' => 'Debe ingresar el precio del producto', + 'price.numeric' => 'El precio del producto debe ser solo números', + 'price.regex' => 'El precio del producto debe ser solo números con 2 decimales', + 'price.min' => 'El precio mínimo permitido de un producto es de $0.01', + 'categories.required' => 'Debe seleccionar al menos una categoría ṕara el producto', + 'stock.required' => 'Debe ingresar el stock del producto', + 'stock.integer' => 'El stock debe ser un número entero', + 'stock.min' => 'El stock mínimo permitido es 0', + 'characteristics.required' => 'Debe ingresar las características del producto', + 'orders.alpha_num' => 'La orden ingresada solo debe contener números y letras', + 'provider.required' => 'Debe seleccionar el proveedor que ha vendido el producto' + ]; + } +} diff --git a/presentation/Http/Validations/Utils/ValidatorService.php b/presentation/Http/Validations/Utils/ValidatorService.php index 22e4418..15b7541 100644 --- a/presentation/Http/Validations/Utils/ValidatorService.php +++ b/presentation/Http/Validations/Utils/ValidatorService.php @@ -9,7 +9,7 @@ class ValidatorService implements ValidatorServiceInterface { - private $validatorFactory; + private Factory $validatorFactory; private $validated; public function __construct(Factory $validatorFactory) diff --git a/presentation/Http/Validations/Utils/ValidatorServiceInterface.php b/presentation/Http/Validations/Utils/ValidatorServiceInterface.php index 38e0251..05f5d58 100644 --- a/presentation/Http/Validations/Utils/ValidatorServiceInterface.php +++ b/presentation/Http/Validations/Utils/ValidatorServiceInterface.php @@ -6,7 +6,7 @@ interface ValidatorServiceInterface { - public function make(array $options, array $rules); + public function make(array $options, array $rules, array $messages); public function isValid(); From ff618e8d4ad2bde66b241010e9aa484317ac3935 Mon Sep 17 00:00:00 2001 From: Martin Date: Wed, 17 Jun 2020 20:16:33 -0300 Subject: [PATCH 03/38] Fix php docs --- .../Actions/Products/StoreProductAction.php | 17 ++++++++++++++++- .../Adapters/Product/StoreProductAdapter.php | 5 ++++- .../Schemas/Products/StoreProductSchema.php | 8 ++++++++ 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/presentation/Http/Actions/Products/StoreProductAction.php b/presentation/Http/Actions/Products/StoreProductAction.php index 8c29045..1fa9379 100644 --- a/presentation/Http/Actions/Products/StoreProductAction.php +++ b/presentation/Http/Actions/Products/StoreProductAction.php @@ -12,10 +12,21 @@ class StoreProductAction { - + /** + * @var StoreProductAdapter + */ private StoreProductAdapter $adapter; + + /** + * @var CommandBusInterface + */ private CommandBusInterface $commandBus; + /** + * StoreProductAction constructor. + * @param StoreProductAdapter $storeProductAdapter + * @param CommandBusInterface $commandBusInterface + */ public function __construct ( StoreProductAdapter $storeProductAdapter, @@ -26,6 +37,10 @@ public function __construct $this->commandBus = $commandBusInterface; } + /** + * @param Request $request + * @return JsonResponse + */ public function __invoke(Request $request) { $command = $this->adapter->adapt($request); diff --git a/presentation/Http/Adapters/Product/StoreProductAdapter.php b/presentation/Http/Adapters/Product/StoreProductAdapter.php index c07b5db..c7ce643 100644 --- a/presentation/Http/Adapters/Product/StoreProductAdapter.php +++ b/presentation/Http/Adapters/Product/StoreProductAdapter.php @@ -37,7 +37,10 @@ public function __construct $this->productSchema = $storeProductSchema; } - + /** + * @param Request $request + * @return StoreProductCommand + */ public function adapt(Request $request) { $this->validatorService->make($request->all(),$this->productSchema->getRules(),$this->productSchema->getMessages()); diff --git a/presentation/Http/Validations/Schemas/Products/StoreProductSchema.php b/presentation/Http/Validations/Schemas/Products/StoreProductSchema.php index af9faef..62ccf1d 100644 --- a/presentation/Http/Validations/Schemas/Products/StoreProductSchema.php +++ b/presentation/Http/Validations/Schemas/Products/StoreProductSchema.php @@ -6,6 +6,9 @@ class StoreProductSchema { + /** + * @return array|string[] + */ public function getRules(): array { return [ @@ -19,8 +22,13 @@ public function getRules(): array 'provider' => 'bail|required|array' ]; } + + /** + * @return array|string[] + */ public function getMessages() : array { + return [ 'name.required' => 'Debe ingresar el nombre del producto', 'name.regex' => 'El nombre del producto solo puede contener números y letras', From 0eac11f6e93328660f9962de72c3cf863e14ff55 Mon Sep 17 00:00:00 2001 From: Martin Date: Thu, 18 Jun 2020 11:25:53 -0300 Subject: [PATCH 04/38] StoreProductAdapter & fixes in Product --- .../Command/Products/StoreProductCommand.php | 28 +++++++++++++++++++ .../Handler/Products/StoreProductHandler.php | 10 +++++++ domain/Entities/Product.php | 26 ++++++++--------- .../Adapters/Product/StoreProductAdapter.php | 7 +++-- 4 files changed, 55 insertions(+), 16 deletions(-) create mode 100644 application/Commands/Command/Products/StoreProductCommand.php create mode 100644 application/Commands/Handler/Products/StoreProductHandler.php diff --git a/application/Commands/Command/Products/StoreProductCommand.php b/application/Commands/Command/Products/StoreProductCommand.php new file mode 100644 index 0000000..67782db --- /dev/null +++ b/application/Commands/Command/Products/StoreProductCommand.php @@ -0,0 +1,28 @@ +categories; } @@ -173,9 +171,9 @@ public function setStock(int $stock): void } /** - * @return ArrayCollection + * @return array */ - public function getCharacteristics(): ArrayCollection + public function getCharacteristics(): array { return $this->characteristics; } diff --git a/presentation/Http/Adapters/Product/StoreProductAdapter.php b/presentation/Http/Adapters/Product/StoreProductAdapter.php index c7ce643..37cde08 100644 --- a/presentation/Http/Adapters/Product/StoreProductAdapter.php +++ b/presentation/Http/Adapters/Product/StoreProductAdapter.php @@ -5,6 +5,7 @@ use App\Exceptions\InvalidBodyException; +use Application\Commands\Command\Products\StoreProductCommand; use Illuminate\Http\Request; use Illuminate\Validation\Rules\In; use Presentation\Http\Validations\Schemas\Products\StoreProductSchema; @@ -45,7 +46,7 @@ public function adapt(Request $request) { $this->validatorService->make($request->all(),$this->productSchema->getRules(),$this->productSchema->getMessages()); if(!$this->validatorService->isValid()){ - trhow new InvalidBodyException($this->validatorService->getErrors()); + throw new InvalidBodyException($this->validatorService->getErrors()); } return new StoreProductCommand( @@ -57,7 +58,9 @@ public function adapt(Request $request) $request->input('characteristics'), $request->input('orders'), $request->input('provider') - ) + //TODO Terminar Adapter Aquí + ); + } } From 28c3a1dc2b35ed5107a5f2950d42c9e5cbff54dd Mon Sep 17 00:00:00 2001 From: Martin Date: Thu, 18 Jun 2020 11:46:54 -0300 Subject: [PATCH 05/38] fix stock entity //TODO relations --- domain/Entities/Stock.php | 74 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 70 insertions(+), 4 deletions(-) diff --git a/domain/Entities/Stock.php b/domain/Entities/Stock.php index 5a6ab0f..2f223fb 100644 --- a/domain/Entities/Stock.php +++ b/domain/Entities/Stock.php @@ -4,27 +4,44 @@ namespace Domain\Entities; +use phpDocumentor\Reflection\DocBlock\Serializer; + class Stock { /** * @var int */ - private $id; + private int $id; /** * @var Product */ - private $product; + private Product $product; /** * @var int */ - private $quantity; + private int $quantity; /** * @var int */ - private $remanentQuantity; + private int $remanentQuantity; + + /** + * @var array + */ + private array $brands; + + /** + * @var array + */ + private array $reserved; + + /** + * @var array + */ + private array $categories; /** * @return int @@ -81,4 +98,53 @@ public function setRemanentQuantity(int $remanentQuantity): void { $this->remanentQuantity = $remanentQuantity; } + + /** + * @return array + */ + public function getBrands() : array + { + return $this->brands; + } + + /** + * @param string $brand + */ + public function setBrands(string $brand) : void + { + $this->brands = serialize($brand); + } + + /** + * @return array + */ + private function getReservations() : array + { + return $this->reserved; + } + + /** + * @param string $reservation + */ + public function setReservation(string $reservation) : void + { + $this->reserved = serialize($reservation); + } + + /** + * @return array + */ + public function getCategories() : array + { + return $this->categories; + } + + /** + * @param string $category + */ + public function setCategory(string $category) : void + { + $this->categories = serialize($category); + } + } From 3811ac723ca86235f849b4e2d6c0472821435cb1 Mon Sep 17 00:00:00 2001 From: Martin Date: Thu, 18 Jun 2020 19:50:55 -0300 Subject: [PATCH 06/38] Some fixes in Product and Schemas --- .../Command/Products/StoreProductCommand.php | 7 +- domain/Entities/Product.php | 86 +++++++++++++++++-- domain/Entities/Stock.php | 1 + .../Adapters/Product/StoreProductAdapter.php | 6 +- .../Schemas/Products/StoreProductSchema.php | 14 ++- 5 files changed, 101 insertions(+), 13 deletions(-) diff --git a/application/Commands/Command/Products/StoreProductCommand.php b/application/Commands/Command/Products/StoreProductCommand.php index 67782db..94a891a 100644 --- a/application/Commands/Command/Products/StoreProductCommand.php +++ b/application/Commands/Command/Products/StoreProductCommand.php @@ -13,16 +13,19 @@ class StoreProductCommand implements CommandInterface private float $price; private array $categories; private int $stock; + private float $iva; + private array $brand; private array $characteristics; - private array $orders; + private string $order; private array $provider; public function __construct ( - //TODO Finish StoreProductCommand + ) { + } } diff --git a/domain/Entities/Product.php b/domain/Entities/Product.php index f5b18be..ca0f25e 100644 --- a/domain/Entities/Product.php +++ b/domain/Entities/Product.php @@ -23,6 +23,11 @@ class Product */ private string $description; + /** + * @var bool + */ + private bool $available; + /** * @var float */ @@ -36,7 +41,12 @@ class Product /** * @var array */ - private array $categories; + private array $categoriesId; + + /** + * @var array + */ + private array $brandsId; /** * @var int @@ -51,12 +61,12 @@ class Product /** * @var array */ - private array $orders; + private array $ordersId; /** * @var array . */ - private array $providers; + private array $providersId; /** * Product constructor. @@ -143,7 +153,7 @@ public function setIva(float $iva): void */ public function getCategories(): array { - return $this->categories; + return $this->categoriesId; } /** @@ -151,7 +161,7 @@ public function getCategories(): array */ public function setCategories(Category $categories): void { - $this->categories[] = $categories; + $this->categoriesId[] = $categories; } /** @@ -181,8 +191,72 @@ public function getCharacteristics(): array /** * @param Characteristic $characteristics */ - public function addCharacteristics(Characteristic $characteristics): void + public function setCharacteristics(Characteristic $characteristics): void { $this->characteristics[] = $characteristics; } + + /** + * @return bool + */ + public function getAvailability() : bool + { + return $this->available; + } + + /** + * @param bool $notAvailable + */ + public function setNotAvailable(bool $notAvailable) : void + { + $this->available = $notAvailable; + } + + /** + * @return array + */ + public function getOrders() : array + { + return $this->ordersId; + } + + /** + * @param Order $newOrder + */ + public function setOrder(Order $newOrder) : void + { + $this->ordersId [] =$newOrder; + } + + /** + * @return array + */ + public function getProviders() : array + { + return $this->providersId; + } + + /** + * @param Provider $newProvider + */ + public function setProvider(Provider $newProvider) : void + { + $this->providersId [] = $newProvider; + } + + /** + * @return array + */ + public function getBrands() : array + { + return $this->brandsId; + } + + /** + * @param Brand $newBrand + */ + public function setBrand(Brand $newBrand) : void + { + $this->brandsId[] = $newBrand; + } } diff --git a/domain/Entities/Stock.php b/domain/Entities/Stock.php index 2f223fb..9cb88be 100644 --- a/domain/Entities/Stock.php +++ b/domain/Entities/Stock.php @@ -147,4 +147,5 @@ public function setCategory(string $category) : void $this->categories = serialize($category); } + //TODO TERMINAR CON LAS RELACIONES ENTRE ENTIDADES } diff --git a/presentation/Http/Adapters/Product/StoreProductAdapter.php b/presentation/Http/Adapters/Product/StoreProductAdapter.php index 37cde08..b86bbdf 100644 --- a/presentation/Http/Adapters/Product/StoreProductAdapter.php +++ b/presentation/Http/Adapters/Product/StoreProductAdapter.php @@ -38,9 +38,11 @@ public function __construct $this->productSchema = $storeProductSchema; } + /** * @param Request $request * @return StoreProductCommand + * @throws InvalidBodyException */ public function adapt(Request $request) { @@ -54,11 +56,11 @@ public function adapt(Request $request) $request->input('description'), $request->input('price'), $request->input('categories'), + $request->input('brands'), $request->input('stock'), $request->input('characteristics'), - $request->input('orders'), + $request->input('order'), $request->input('provider') - //TODO Terminar Adapter Aquí ); } diff --git a/presentation/Http/Validations/Schemas/Products/StoreProductSchema.php b/presentation/Http/Validations/Schemas/Products/StoreProductSchema.php index 62ccf1d..034644e 100644 --- a/presentation/Http/Validations/Schemas/Products/StoreProductSchema.php +++ b/presentation/Http/Validations/Schemas/Products/StoreProductSchema.php @@ -17,8 +17,10 @@ public function getRules(): array 'price' => 'bail|required|numeric|regex:/^\d*(\.\d{2})?$/|min:0.01', 'categories' => 'bail|required|array', 'stock' => 'bail|required|numeric|integer|min:0', + 'iva' => 'bail|required|numeric|min:0', + 'brand' => 'bail|required|regex:/^[\pL\s]+$/u|min:10|array', 'characteristics' => 'bail|required|array', - 'orders' => 'alpha_num|array', + 'order' => 'bail|required|alpha_num', 'provider' => 'bail|required|array' ]; } @@ -46,9 +48,15 @@ public function getMessages() : array 'stock.required' => 'Debe ingresar el stock del producto', 'stock.integer' => 'El stock debe ser un número entero', 'stock.min' => 'El stock mínimo permitido es 0', + 'iva.required' => 'Debe ingresar el porcentaje de IVA del producto', + 'iva.numeric' => 'El IVA ingresado debe ser un número', + 'iva.min' => 'El IVA mínimo permitido es 0%', + 'brand.required' => 'Debe ingresar una marca para el producto', + 'brand.regex' => 'La marca ingresada para el producto cotenre solo números y letras', 'characteristics.required' => 'Debe ingresar las características del producto', - 'orders.alpha_num' => 'La orden ingresada solo debe contener números y letras', - 'provider.required' => 'Debe seleccionar el proveedor que ha vendido el producto' + 'order.alpha_num' => 'La orden ingresada solo debe contener números y letras', + 'order.required' => 'Debe ingresar el número de orden de compra del producto', + 'provider.required' => 'Debe seleccionar el proveedor al que se le ha comprado el producto' ]; } } From c003bb4e04723553b44937d3ea955b0ff4a4a319 Mon Sep 17 00:00:00 2001 From: Martin Date: Thu, 18 Jun 2020 20:12:06 -0300 Subject: [PATCH 07/38] StoreProduct command and validations --- app/Exceptions/InvalidBodyException.php | 2 +- .../Command/Products/StoreProductCommand.php | 73 ++++++++++++++++++- .../Handler/Products/StoreProductHandler.php | 27 ++++++- .../Repositories/ProductRepository.php | 1 + .../Actions/Products/StoreProductAction.php | 3 +- 5 files changed, 101 insertions(+), 5 deletions(-) diff --git a/app/Exceptions/InvalidBodyException.php b/app/Exceptions/InvalidBodyException.php index afe9add..efcf9bb 100644 --- a/app/Exceptions/InvalidBodyException.php +++ b/app/Exceptions/InvalidBodyException.php @@ -7,7 +7,7 @@ use Presentation\Http\Enums\HttpCodes; -class InvalidBodyException extends BasePresentationException +class InvalidBodyException extends \Exception { private array $messages; diff --git a/application/Commands/Command/Products/StoreProductCommand.php b/application/Commands/Command/Products/StoreProductCommand.php index 94a891a..4656538 100644 --- a/application/Commands/Command/Products/StoreProductCommand.php +++ b/application/Commands/Command/Products/StoreProductCommand.php @@ -8,6 +8,7 @@ class StoreProductCommand implements CommandInterface { + private string $name; private string $description; private float $price; @@ -17,15 +18,83 @@ class StoreProductCommand implements CommandInterface private array $brand; private array $characteristics; private string $order; - private array $provider; + private string $provider; public function __construct ( - + string $name, + string $description, + float $price, + array $categories, + int $stock, + float $iva, + array $brand, + array $characteristics, + string $order, + string $provider ) { + $this->name = $name; + $this->description = $description; + $this->price = $price; + $this->categories = $categories; + $this->stock = $stock; + $this->iva = $iva; + $this->brand = $brand; + $this->characteristics = $characteristics; + $this->order = $order; + $this->provider = $provider; + } + + public function getName(): string + { + return $this->name; + } + + public function getDescription(): string + { + return $this->description; + } + + public function getPrice(): float + { + return $this->price; + } + public function getCategories(): array + { + return $this->categories; + } + + public function getStock(): int + { + return $this->stock; + } + + public function getIva(): float + { + return $this->iva; + } + + public function getBrands() : array + { + return $this->brand; + } + + public function getCharacteristics() : array + { + return $this->characteristics; + } + + public function getOrder() : string + { + return $this->order; + } + + public function getProvider() : string + { + return $this->provider; } } diff --git a/application/Commands/Handler/Products/StoreProductHandler.php b/application/Commands/Handler/Products/StoreProductHandler.php index 50e2205..d7e78af 100644 --- a/application/Commands/Handler/Products/StoreProductHandler.php +++ b/application/Commands/Handler/Products/StoreProductHandler.php @@ -4,7 +4,32 @@ namespace Application\Commands\Handler\Products; -class StoreProductHandler +use Application\Commands\Command\Products\StoreProductCommand; +use Infrastructure\CommandBus\Handler\HandlerInterface; +use Infrastructure\Persistence\Repositories\ProductRepository; + +class StoreProductHandler implements HandlerInterface { + private ProductRepository $productRepository; + + /** + * StoreProductHandler constructor. + * @param ProductRepository $repository + */ + public function __construct + ( + ProductRepository $repository + ) + { + $this->productRepository = $repository; + } + + /** + * @param StoreProductCommand $command + */ + public function handle($command) : void + { + //TODO FINISH HANDLER AND PERSIST + } } diff --git a/infrastructure/Persistence/Repositories/ProductRepository.php b/infrastructure/Persistence/Repositories/ProductRepository.php index e9007d8..052c81d 100644 --- a/infrastructure/Persistence/Repositories/ProductRepository.php +++ b/infrastructure/Persistence/Repositories/ProductRepository.php @@ -14,5 +14,6 @@ class ProductRepository extends EntityRepository public function __construct(EntityManagerInterface $em) { parent::__construct($em, new Mapping\ClassMetadata(Product::class)); + //TODO WTF? REPOSITORY?? DOOOOCTRINE } } diff --git a/presentation/Http/Actions/Products/StoreProductAction.php b/presentation/Http/Actions/Products/StoreProductAction.php index 1fa9379..ed2efd3 100644 --- a/presentation/Http/Actions/Products/StoreProductAction.php +++ b/presentation/Http/Actions/Products/StoreProductAction.php @@ -13,7 +13,7 @@ class StoreProductAction { /** - * @var StoreProductAdapter + * @var StoreProductAdapter */ private StoreProductAdapter $adapter; @@ -40,6 +40,7 @@ public function __construct /** * @param Request $request * @return JsonResponse + * @throws \App\Exceptions\InvalidBodyException */ public function __invoke(Request $request) { From 29fce4ae0492db47231d09b71213a014b271ec19 Mon Sep 17 00:00:00 2001 From: cristianvena18 Date: Sun, 28 Jun 2020 18:56:50 -0300 Subject: [PATCH 08/38] Create heroku.yml --- heroku.yml | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 heroku.yml diff --git a/heroku.yml b/heroku.yml new file mode 100644 index 0000000..1819036 --- /dev/null +++ b/heroku.yml @@ -0,0 +1,55 @@ +version: '2' +services: + mysql: + image: mysql:8.0 + hostname: mysql + ports: + - "3306:3306" + volumes: + - ./mysql-data:/var/lib/mysql + - ./mysql-config:/etc/mysql/conf.d + environment: + MYSQL_ROOT_PASSWORD: root + MYSQL_DATABASE: apizeep + MYSQL_USER: test + MYSQL_PASSWORD: test + USER: 1000 + + beanstalkd: + image: schickling/beanstalkd + hostname: beanstalkd + links: + - redis + - mysql + ports: + - "11300:11300" + + redis: + image: redis + hostname: redis + ports: + - "6379:6379" + volumes: + - ./redis-data:/data + + adminer: + image: adminer + ports: + - 8080:8080 + + web: + image: lbanchio/docker-php-nginx + hostname: dev + links: + - redis + - mysql + - beanstalkd + ports: + - "80:80" + volumes: + - ./nginx:/etc/nginx/sites-available + - ../:/var/www + environment: + TZ: "America/Argentina/Cordoba" + COMPOSER_CACHE_DIR: /var/www/.composer + COMPOSER_HOME: /var/www/.composer From 798ba60ab80a6198ad968b8e0f7b463dc8b42602 Mon Sep 17 00:00:00 2001 From: cristianvena18 Date: Sun, 28 Jun 2020 20:56:41 -0300 Subject: [PATCH 09/38] added install dependencies script --- heroku.yml | 61 +++++------------------------------------- installDependencies.sh | 22 +++++++++++++++ 2 files changed, 29 insertions(+), 54 deletions(-) create mode 100644 installDependencies.sh diff --git a/heroku.yml b/heroku.yml index 1819036..569c279 100644 --- a/heroku.yml +++ b/heroku.yml @@ -1,55 +1,8 @@ -version: '2' -services: - mysql: - image: mysql:8.0 - hostname: mysql - ports: - - "3306:3306" - volumes: - - ./mysql-data:/var/lib/mysql - - ./mysql-config:/etc/mysql/conf.d - environment: - MYSQL_ROOT_PASSWORD: root - MYSQL_DATABASE: apizeep - MYSQL_USER: test - MYSQL_PASSWORD: test - USER: 1000 - - beanstalkd: - image: schickling/beanstalkd - hostname: beanstalkd - links: - - redis - - mysql - ports: - - "11300:11300" - - redis: - image: redis - hostname: redis - ports: - - "6379:6379" - volumes: - - ./redis-data:/data - - adminer: - image: adminer - ports: - - 8080:8080 - +build: + docker: + web: zeepdocker/docker-compose + worker: worker/docker-compose + config: + RAILS_ENV: production +run: web: - image: lbanchio/docker-php-nginx - hostname: dev - links: - - redis - - mysql - - beanstalkd - ports: - - "80:80" - volumes: - - ./nginx:/etc/nginx/sites-available - - ../:/var/www - environment: - TZ: "America/Argentina/Cordoba" - COMPOSER_CACHE_DIR: /var/www/.composer - COMPOSER_HOME: /var/www/.composer diff --git a/installDependencies.sh b/installDependencies.sh new file mode 100644 index 0000000..35f8b32 --- /dev/null +++ b/installDependencies.sh @@ -0,0 +1,22 @@ +apt install -y \ + apt-transport-https \ + ca-certificates \ + curl \ + gnupg-agent \ + software-properties-common +curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - +add-apt-repository \ + "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ + $(lsb_release -cs) \ + stable" +apt update && apt install -y docker-ce docker-ce-cli containerd.io + +groupadd docker +usermod -aG docker $USER +echo "Log out and log back in so that your group membership is re-evaluated." + +# Docker-Compose +echo "INSTALLING DOCKER..." +curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose + +chmod +x /usr/local/bin/docker-compose From 3120940de9b5e6017c7680ecac7c9504ca2df484 Mon Sep 17 00:00:00 2001 From: cristianvena18 Date: Sat, 4 Jul 2020 15:31:23 -0300 Subject: [PATCH 10/38] lack make change password flow --- .../Actions/Auth/ChangePasswordAction.php | 20 +++++++++++++++++++ presentation/Http/routes/api.php | 1 + 2 files changed, 21 insertions(+) create mode 100644 presentation/Http/Actions/Auth/ChangePasswordAction.php diff --git a/presentation/Http/Actions/Auth/ChangePasswordAction.php b/presentation/Http/Actions/Auth/ChangePasswordAction.php new file mode 100644 index 0000000..1f38687 --- /dev/null +++ b/presentation/Http/Actions/Auth/ChangePasswordAction.php @@ -0,0 +1,20 @@ +name('login'); Route::post('renew-token', Actions\Auth\RenewTokenAction::class)->name('renew-token'); Route::post('signup', Actions\Customers\StoreWebCustomerAction::class)->name('createWebCustomer'); + Route::post('change-password', Actions\Auth\ChangePasswordAction::class)->name('change-password'); }); From 515b808d80751c45a045f506d654194dab2aa87f Mon Sep 17 00:00:00 2001 From: cristianvena18 Date: Mon, 6 Jul 2020 17:35:56 -0300 Subject: [PATCH 11/38] added find employees flow --- .../Handler/Employees/FindEmployeeHandler.php | 35 ++++++++++++++++++ .../Query/Employees/FindEmployeeQuery.php | 27 ++++++++++++++ .../Results/Employees/FindEmployeeResult.php | 20 +++++++++++ application/Services/Users/UserService.php | 8 +++++ .../Services/Users/UserServiceInterface.php | 2 ++ .../Repositories/UserRepositoryInterface.php | 1 + .../Mappings/Domain.Entities.Customer.php | 2 +- .../Repositories/UserRepository.php | 9 +++++ .../Actions/Employees/FindEmployeeAction.php | 33 +++++++++++++++-- .../Employees/FindEmployeeAdapter.php | 36 +++++++++++++++++++ .../Employee/FindEmployeePresenter.php | 28 +++++++++++++++ 11 files changed, 198 insertions(+), 3 deletions(-) create mode 100644 application/Queries/Handler/Employees/FindEmployeeHandler.php create mode 100644 application/Queries/Query/Employees/FindEmployeeQuery.php create mode 100644 application/Queries/Results/Employees/FindEmployeeResult.php create mode 100644 presentation/Http/Adapters/Employees/FindEmployeeAdapter.php create mode 100644 presentation/Http/Presenters/Employee/FindEmployeePresenter.php diff --git a/application/Queries/Handler/Employees/FindEmployeeHandler.php b/application/Queries/Handler/Employees/FindEmployeeHandler.php new file mode 100644 index 0000000..df14b2e --- /dev/null +++ b/application/Queries/Handler/Employees/FindEmployeeHandler.php @@ -0,0 +1,35 @@ +userService = $userService; + } + + /** + * @param FindEmployeeQuery $query + * @return ResultInterface + */ + public function handle($query): ResultInterface + { + $employees = $this->userService->findEmployees($query->getPage(), $query->getSize()); + + $result = new FindEmployeeResult(); + $result->setEmployees($employees); + return $result; + } +} diff --git a/application/Queries/Query/Employees/FindEmployeeQuery.php b/application/Queries/Query/Employees/FindEmployeeQuery.php new file mode 100644 index 0000000..390aeea --- /dev/null +++ b/application/Queries/Query/Employees/FindEmployeeQuery.php @@ -0,0 +1,27 @@ +page = $page; + $this->size = $size; + } + + public function getPage() { + return $this->page; + } + + public function getSize() { + return $this->size; + } +} diff --git a/application/Queries/Results/Employees/FindEmployeeResult.php b/application/Queries/Results/Employees/FindEmployeeResult.php new file mode 100644 index 0000000..24d1fff --- /dev/null +++ b/application/Queries/Results/Employees/FindEmployeeResult.php @@ -0,0 +1,20 @@ +employees = $employees; + } + + public function getEmployees(): array { + return $this->employees; + } +} diff --git a/application/Services/Users/UserService.php b/application/Services/Users/UserService.php index 71c1e96..980fe52 100644 --- a/application/Services/Users/UserService.php +++ b/application/Services/Users/UserService.php @@ -122,4 +122,12 @@ public function update() { $this->repository->flush(); } + + public function findEmployees($page, $size): array + { + $page = $page ? $page : 0; + $size = $size ? $size : 10; + + return $this->repository->findEmployees($page, $size); + } } diff --git a/application/Services/Users/UserServiceInterface.php b/application/Services/Users/UserServiceInterface.php index e5226d6..7fc43d1 100644 --- a/application/Services/Users/UserServiceInterface.php +++ b/application/Services/Users/UserServiceInterface.php @@ -36,4 +36,6 @@ public function findOneByEmailOrFail(string $email): User; public function existWithEmail(string $email): bool; public function update(); + + public function findEmployees($getPage, $getSize): array; } diff --git a/domain/Interfaces/Repositories/UserRepositoryInterface.php b/domain/Interfaces/Repositories/UserRepositoryInterface.php index 04e5eaa..2f0450c 100644 --- a/domain/Interfaces/Repositories/UserRepositoryInterface.php +++ b/domain/Interfaces/Repositories/UserRepositoryInterface.php @@ -17,4 +17,5 @@ public function findOneByEmployeeId(int $employeeId): ?User; public function existWithTheEmail(string $email): bool; public function findAll(): array; public function destroy(User $user): void; + public function findEmployees($page, $size); } diff --git a/infrastructure/Persistence/Mappings/Domain.Entities.Customer.php b/infrastructure/Persistence/Mappings/Domain.Entities.Customer.php index 2ee0c94..6c1195e 100644 --- a/infrastructure/Persistence/Mappings/Domain.Entities.Customer.php +++ b/infrastructure/Persistence/Mappings/Domain.Entities.Customer.php @@ -11,7 +11,7 @@ ->generatedValue() ->build(); -$builder->addField('uuid', Type::STRING); +$builder->addField('uuid', Type::GUID); $builder->addField('email', Type::STRING); diff --git a/infrastructure/Persistence/Repositories/UserRepository.php b/infrastructure/Persistence/Repositories/UserRepository.php index d83a258..99ee8f6 100644 --- a/infrastructure/Persistence/Repositories/UserRepository.php +++ b/infrastructure/Persistence/Repositories/UserRepository.php @@ -129,4 +129,13 @@ public function findOneByEmployeeId(int $employeeId): ?User return $dqlQuery->getQuery()->getSingleResult(); } + + public function findEmployees($page, $size) + { + $dqlQuery = $this->createQueryBuilder('u'); + $dqlQuery->where('NOT u.employee IS null'); + $dqlQuery->setFirstResult($page); + $dqlQuery->setMaxResults($size); + return $dqlQuery->getQuery()->getArrayResult(); + } } diff --git a/presentation/Http/Actions/Employees/FindEmployeeAction.php b/presentation/Http/Actions/Employees/FindEmployeeAction.php index 62dfd2a..35f9c68 100644 --- a/presentation/Http/Actions/Employees/FindEmployeeAction.php +++ b/presentation/Http/Actions/Employees/FindEmployeeAction.php @@ -4,17 +4,46 @@ namespace Presentation\Http\Actions\Employees; +use App\Exceptions\InvalidBodyException; +use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; +use Infrastructure\QueryBus\QueryBusInterface; +use Presentation\Http\Adapters\Employees\FindEmployeeAdapter; +use Presentation\Http\Enums\HttpCodes; +use Presentation\Http\Presenters\Employee\FindEmployeePresenter; class FindEmployeeAction { - public function __construct() - { + private FindEmployeeAdapter $adapter; + + private QueryBusInterface $queryBus; + + private FindEmployeePresenter $presenter; + public function __construct( + FindEmployeeAdapter $adapter, + QueryBusInterface $queryBus, + FindEmployeePresenter $presenter + ) + { + $this->adapter = $adapter; + $this->queryBus = $queryBus; + $this->presenter = $presenter; } + /** + * @param Request $request + * @return JsonResponse + * @throws InvalidBodyException + */ public function __invoke(Request $request) { + $query = $this->adapter->from($request); + + $result = $this->queryBus->handle($query); + return new JsonResponse([ + 'data' => $this->presenter->fromResult($result)->getData(), + ], HttpCodes::OK); } } diff --git a/presentation/Http/Adapters/Employees/FindEmployeeAdapter.php b/presentation/Http/Adapters/Employees/FindEmployeeAdapter.php new file mode 100644 index 0000000..7d8c83d --- /dev/null +++ b/presentation/Http/Adapters/Employees/FindEmployeeAdapter.php @@ -0,0 +1,36 @@ +validatorService = $validatorService; + } + + /** + * @param Request $request + * @return FindEmployeeQuery + * @throws InvalidBodyException + */ + public function from(Request $request) + { + $this->validatorService->make($request->all(), []); + + if(!$this->validatorService->isValid()) { + throw new InvalidBodyException($this->validatorService->getErrors()); + } + + return new FindEmployeeQuery($request->query('page'), $request->query('size')); + } +} diff --git a/presentation/Http/Presenters/Employee/FindEmployeePresenter.php b/presentation/Http/Presenters/Employee/FindEmployeePresenter.php new file mode 100644 index 0000000..abaf037 --- /dev/null +++ b/presentation/Http/Presenters/Employee/FindEmployeePresenter.php @@ -0,0 +1,28 @@ +result = $result; + return $this; + } + + public function getData(): array { + $result = []; + $employees = $this->result->getEmployees(); + + foreach ($employees as $employee) { + array_push($result, $employee); + } + + return $result; + } +} From 8ca86d95cf2d6e5a25756f33b208be7aa79f9881 Mon Sep 17 00:00:00 2001 From: cristianvena18 Date: Mon, 6 Jul 2020 20:41:31 -0300 Subject: [PATCH 12/38] added show employees and show employee flow --- .../Employees/FindOneEmployeeHandler.php | 42 ++++++++++++++++ .../Query/Employees/FindOneEmployeeQuery.php | 21 ++++++++ .../Employees/FindOneEmployeeResult.php | 21 ++++++++ application/Services/Users/UserService.php | 2 +- bootstrap/cache/routes.php | 2 +- domain/Entities/Customer.php | 3 +- .../Repositories/UserRepository.php | 34 +++++++++++-- .../Employees/FindOneEmployeeAction.php | 48 +++++++++++++++++++ .../Http/Actions/Orders/IndexOrdersAction.php | 23 +++++++++ .../Employees/FindOneEmployeeAdapter.php | 43 +++++++++++++++++ .../Employee/FindEmployeePresenter.php | 9 +++- .../Employee/FindOneEmployeePresenter.php | 28 +++++++++++ presentation/Http/routes/api.php | 4 ++ 13 files changed, 271 insertions(+), 9 deletions(-) create mode 100644 application/Queries/Handler/Employees/FindOneEmployeeHandler.php create mode 100644 application/Queries/Query/Employees/FindOneEmployeeQuery.php create mode 100644 application/Queries/Results/Employees/FindOneEmployeeResult.php create mode 100644 presentation/Http/Actions/Employees/FindOneEmployeeAction.php create mode 100644 presentation/Http/Actions/Orders/IndexOrdersAction.php create mode 100644 presentation/Http/Adapters/Employees/FindOneEmployeeAdapter.php create mode 100644 presentation/Http/Presenters/Employee/FindOneEmployeePresenter.php diff --git a/application/Queries/Handler/Employees/FindOneEmployeeHandler.php b/application/Queries/Handler/Employees/FindOneEmployeeHandler.php new file mode 100644 index 0000000..838300f --- /dev/null +++ b/application/Queries/Handler/Employees/FindOneEmployeeHandler.php @@ -0,0 +1,42 @@ +userService = $userService; + } + + /** + * @param FindOneEmployeeQuery $query + * @return ResultInterface + * @throws EntityNotFoundException + */ + public function handle($query): ResultInterface + { + $employee = $this->userService->findOneByIdOrFail($query->getId()); + + if(!$employee->isEmployee()) { + $id = $query->getId(); + throw new EntityNotFoundException(`Employee with id: $id not found`); + } + + $result = new FindOneEmployeeResult(); + $result->setEmployee($employee); + return $result; + } +} diff --git a/application/Queries/Query/Employees/FindOneEmployeeQuery.php b/application/Queries/Query/Employees/FindOneEmployeeQuery.php new file mode 100644 index 0000000..5858a94 --- /dev/null +++ b/application/Queries/Query/Employees/FindOneEmployeeQuery.php @@ -0,0 +1,21 @@ +id = $id; + } + + public function getId() { + return $this->id; + } +} diff --git a/application/Queries/Results/Employees/FindOneEmployeeResult.php b/application/Queries/Results/Employees/FindOneEmployeeResult.php new file mode 100644 index 0000000..a37fa43 --- /dev/null +++ b/application/Queries/Results/Employees/FindOneEmployeeResult.php @@ -0,0 +1,21 @@ +employee = $employee; + } + + public function getEmployee() { + return $this->employee; + } +} diff --git a/application/Services/Users/UserService.php b/application/Services/Users/UserService.php index 980fe52..9566688 100644 --- a/application/Services/Users/UserService.php +++ b/application/Services/Users/UserService.php @@ -125,7 +125,7 @@ public function update() public function findEmployees($page, $size): array { - $page = $page ? $page : 0; + $page = $page ? $page : 1; $size = $size ? $size : 10; return $this->repository->findEmployees($page, $size); diff --git a/bootstrap/cache/routes.php b/bootstrap/cache/routes.php index 838977e..6b47c38 100644 --- a/bootstrap/cache/routes.php +++ b/bootstrap/cache/routes.php @@ -12,5 +12,5 @@ */ app('router')->setRoutes( - unserialize(base64_decode('TzozNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlQ29sbGVjdGlvbiI6NDp7czo5OiIAKgByb3V0ZXMiO2E6Nzp7czozOiJHRVQiO2E6MTc6e3M6MTc6ImFwaS9kb2N1bWVudGF0aW9uIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNzoiYXBpL2RvY3VtZW50YXRpb24iO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjI6ImFzIjtzOjE0OiJsNS1zd2FnZ2VyLmFwaSI7czoxMDoibWlkZGxld2FyZSI7YTowOnt9czo0OiJ1c2VzIjtzOjQ5OiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAYXBpIjtzOjEwOiJjb250cm9sbGVyIjtzOjQ5OiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAYXBpIjtzOjk6Im5hbWVzcGFjZSI7czo5OiJMNVN3YWdnZXIiO3M6NjoicHJlZml4IjtOO3M6NToid2hlcmUiO2E6MDp7fX1zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxODoiL2FwaS9kb2N1bWVudGF0aW9uIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjI1OiIjXi9hcGkvZG9jdW1lbnRhdGlvbiQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxODoiL2FwaS9kb2N1bWVudGF0aW9uIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE2OiJkb2NzL3tqc29uRmlsZT99IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNjoiZG9jcy97anNvbkZpbGU/fSI7czo3OiJtZXRob2RzIjthOjc6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7aToyO3M6NDoiUE9TVCI7aTozO3M6MzoiUFVUIjtpOjQ7czo1OiJQQVRDSCI7aTo1O3M6NjoiREVMRVRFIjtpOjY7czo3OiJPUFRJT05TIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoyOiJhcyI7czoxNToibDUtc3dhZ2dlci5kb2NzIjtzOjEwOiJtaWRkbGV3YXJlIjthOjA6e31zOjQ6InVzZXMiO3M6NTA6IlxMNVN3YWdnZXJcSHR0cFxDb250cm9sbGVyc1xTd2FnZ2VyQ29udHJvbGxlckBkb2NzIjtzOjEwOiJjb250cm9sbGVyIjtzOjUwOiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAZG9jcyI7czo5OiJuYW1lc3BhY2UiO3M6OToiTDVTd2FnZ2VyIjtzOjY6InByZWZpeCI7TjtzOjU6IndoZXJlIjthOjA6e319czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czo4OiJqc29uRmlsZSI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjU6Ii9kb2NzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM4OiIjXi9kb2NzKD86Lyg/UDxqc29uRmlsZT5bXi9dKyspKT8kI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6ODoianNvbkZpbGUiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjU6Ii9kb2NzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjg6Impzb25GaWxlIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxODoiZG9jcy9hc3NldC97YXNzZXR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxODoiZG9jcy9hc3NldC97YXNzZXR9IjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoyOiJhcyI7czoxNjoibDUtc3dhZ2dlci5hc3NldCI7czoxMDoibWlkZGxld2FyZSI7YTowOnt9czo0OiJ1c2VzIjtzOjU2OiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckFzc2V0Q29udHJvbGxlckBpbmRleCI7czoxMDoiY29udHJvbGxlciI7czo1NjoiXEw1U3dhZ2dlclxIdHRwXENvbnRyb2xsZXJzXFN3YWdnZXJBc3NldENvbnRyb2xsZXJAaW5kZXgiO3M6OToibmFtZXNwYWNlIjtzOjk6Ikw1U3dhZ2dlciI7czo2OiJwcmVmaXgiO047czo1OiJ3aGVyZSI7YTowOnt9fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6NToiYXNzZXQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMToiL2RvY3MvYXNzZXQiO3M6MTA6InBhdGhfcmVnZXgiO3M6MzY6IiNeL2RvY3MvYXNzZXQvKD9QPGFzc2V0PlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6NToiYXNzZXQiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjExOiIvZG9jcy9hc3NldCI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czo1OiJhc3NldCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTk6ImFwaS9vYXV0aDItY2FsbGJhY2siO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE5OiJhcGkvb2F1dGgyLWNhbGxiYWNrIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoyOiJhcyI7czoyNjoibDUtc3dhZ2dlci5vYXV0aDJfY2FsbGJhY2siO3M6MTA6Im1pZGRsZXdhcmUiO2E6MDp7fXM6NDoidXNlcyI7czo2MDoiXEw1U3dhZ2dlclxIdHRwXENvbnRyb2xsZXJzXFN3YWdnZXJDb250cm9sbGVyQG9hdXRoMkNhbGxiYWNrIjtzOjEwOiJjb250cm9sbGVyIjtzOjYwOiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAb2F1dGgyQ2FsbGJhY2siO3M6OToibmFtZXNwYWNlIjtzOjk6Ikw1U3dhZ2dlciI7czo2OiJwcmVmaXgiO047czo1OiJ3aGVyZSI7YTowOnt9fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjIwOiIvYXBpL29hdXRoMi1jYWxsYmFjayI7czoxMDoicGF0aF9yZWdleCI7czoyODoiI14vYXBpL29hdXRoMlwtY2FsbGJhY2skI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MjA6Ii9hcGkvb2F1dGgyLWNhbGxiYWNrIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE0OiJhcGkvc2VuZF9lbWFpbCI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTQ6ImFwaS9zZW5kX2VtYWlsIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Njp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NDU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFNlbmRFbWFpbEBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czozNjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU2VuZEVtYWlsIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjM6ImFwaSI7czo1OiJ3aGVyZSI7YTowOnt9fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE1OiIvYXBpL3NlbmRfZW1haWwiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjI6IiNeL2FwaS9zZW5kX2VtYWlsJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE1OiIvYXBpL3NlbmRfZW1haWwiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MjE6ImFwaS91c2Vycy97aWR9L2VuYWJsZSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MjE6ImFwaS91c2Vycy97aWR9L2VuYWJsZSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjU4OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xFbmFibGVVc2VyQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjQ5OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xFbmFibGVVc2VyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjk6ImFwaS91c2VycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMDoiZW5hYmxlVXNlciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMDoiL2FwaS91c2VycyI7czoxMDoicGF0aF9yZWdleCI7czozOToiI14vYXBpL3VzZXJzLyg/UDxpZD5bXi9dKyspL2VuYWJsZSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YTozOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czo3OiIvZW5hYmxlIjt9aToxO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MjthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEwOiIvYXBpL3VzZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoyMjoiYXBpL3VzZXJzL3tpZH0vZGlzYWJsZSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MjI6ImFwaS91c2Vycy97aWR9L2Rpc2FibGUiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1OToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcRGlzYWJsZVVzZXJBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTA6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXERpc2FibGVVc2VyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjk6ImFwaS91c2VycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMToiZGlzYWJsZVVzZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTA6Ii9hcGkvdXNlcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6NDA6IiNeL2FwaS91c2Vycy8oP1A8aWQ+W14vXSsrKS9kaXNhYmxlJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjM6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjg6Ii9kaXNhYmxlIjt9aToxO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MjthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEwOiIvYXBpL3VzZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNDoiYXBpL3VzZXJzL3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE0OiJhcGkvdXNlcnMve2lkfSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjU2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xTaG93VXNlckFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo0NzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcU2hvd1VzZXJBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6OToiYXBpL3VzZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjExOiJzaG93T25lVXNlciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMDoiL2FwaS91c2VycyI7czoxMDoicGF0aF9yZWdleCI7czozMjoiI14vYXBpL3VzZXJzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMDoiL2FwaS91c2VycyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTM6ImFwaS9lbXBsb3llZXMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEzOiJhcGkvZW1wbG95ZWVzIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xGaW5kRW1wbG95ZWVBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xGaW5kRW1wbG95ZWVBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTM6ImFwaS9lbXBsb3llZXMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTI6Imxpc3RFbXBsb3llZSI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE0OiIvYXBpL2VtcGxveWVlcyI7czoxMDoicGF0aF9yZWdleCI7czoyMToiI14vYXBpL2VtcGxveWVlcyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9lbXBsb3llZXMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTM6ImFwaS9jdXN0b21lcnMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEzOiJhcGkvY3VzdG9tZXJzIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xGaW5kQ3VzdG9tZXJBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xGaW5kQ3VzdG9tZXJBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTM6ImFwaS9jdXN0b21lcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTM6Imxpc3RDdXN0b21lcnMiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNDoiL2FwaS9jdXN0b21lcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjE6IiNeL2FwaS9jdXN0b21lcnMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTQ6Ii9hcGkvY3VzdG9tZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE5OiJhcGkvcHJvZHVjdHMve3V1aWR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxOToiYXBpL3Byb2R1Y3RzL3t1dWlkfSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjYyOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xGaW5kUHJvZHVjdEFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1MzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcRmluZFByb2R1Y3RBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTI6ImFwaS9wcm9kdWN0cyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMToiZmluZFByb2R1Y3QiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjQ6InV1aWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMzoiL2FwaS9wcm9kdWN0cyI7czoxMDoicGF0aF9yZWdleCI7czozNzoiI14vYXBpL3Byb2R1Y3RzLyg/UDx1dWlkPlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6NDoidXVpZCI7aTo0O2I6MTt9aToxO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTM6Ii9hcGkvcHJvZHVjdHMiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6NDoidXVpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTA6ImFwaS9zZWFyY2giO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEwOiJhcGkvc2VhcmNoIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFNlYXJjaFByb2R1Y3RzQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xTZWFyY2hQcm9kdWN0c0FjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMDoiYXBpL3NlYXJjaCI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNDoic2VhcmNoUHJvZHVjdHMiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxMToiL2FwaS9zZWFyY2giO3M6MTA6InBhdGhfcmVnZXgiO3M6MTg6IiNeL2FwaS9zZWFyY2gkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTE6Ii9hcGkvc2VhcmNoIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE1OiJhcGkvc2VhcmNoL2hvbWUiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE1OiJhcGkvc2VhcmNoL2hvbWUiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo3MjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcU2VhcmNoUHJvZHVjdHNGb3JIb21lQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjYzOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xTZWFyY2hQcm9kdWN0c0ZvckhvbWVBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTA6ImFwaS9zZWFyY2giO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTQ6InNlYXJjaFByb2R1Y3RzIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTY6Ii9hcGkvc2VhcmNoL2hvbWUiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjM6IiNeL2FwaS9zZWFyY2gvaG9tZSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNjoiL2FwaS9zZWFyY2gvaG9tZSI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxMzoiYXBpL2ludmVudG9yeSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTM6ImFwaS9pbnZlbnRvcnkiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1OToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcSW5kZXhQcm9kdWN0U3RvY2tAX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTA6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFN0b2NrXEluZGV4UHJvZHVjdFN0b2NrIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEzOiJhcGkvaW52ZW50b3J5IjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE4OiJpbmRleFByb2R1Y3RzU3RvY2siO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNDoiL2FwaS9pbnZlbnRvcnkiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjE6IiNeL2FwaS9pbnZlbnRvcnkkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTQ6Ii9hcGkvaW52ZW50b3J5Ijt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE4OiJhcGkvaW52ZW50b3J5L3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE4OiJhcGkvaW52ZW50b3J5L3tpZH0iO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1ODoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcRmluZFByb2R1Y3RTdG9ja0BfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo0OToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcRmluZFByb2R1Y3RTdG9jayI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMzoiYXBpL2ludmVudG9yeSI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNzoiZmluZFByb2R1Y3RzU3RvY2siO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTQ6Ii9hcGkvaW52ZW50b3J5IjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM2OiIjXi9hcGkvaW52ZW50b3J5Lyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9pbnZlbnRvcnkiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjExOiJhcGkvZmlsdGVycyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTE6ImFwaS9maWx0ZXJzIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjI6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEZpbHRlcnNcSW5kZXhGaWx0ZXJzQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjUzOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXEluZGV4RmlsdGVyc0FjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMToiYXBpL2ZpbHRlcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTI6ImluZGV4RmlsdGVycyI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjEyOiIvYXBpL2ZpbHRlcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MTk6IiNeL2FwaS9maWx0ZXJzJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEyOiIvYXBpL2ZpbHRlcnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTQ6ImFwaS9jYXRlZ29yaWVzIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNDoiYXBpL2NhdGVnb3JpZXMiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2NjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xJbmRleENhdGVnb3J5QWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU3OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDYXRlZ29yaWVzXEluZGV4Q2F0ZWdvcnlBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTQ6ImFwaS9jYXRlZ29yaWVzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjEzOiJpbmRleENhdGVnb3J5Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTU6Ii9hcGkvY2F0ZWdvcmllcyI7czoxMDoicGF0aF9yZWdleCI7czoyMjoiI14vYXBpL2NhdGVnb3JpZXMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTU6Ii9hcGkvY2F0ZWdvcmllcyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19fXM6NDoiSEVBRCI7YToxNzp7czoxNzoiYXBpL2RvY3VtZW50YXRpb24iO3I6NDtzOjE2OiJkb2NzL3tqc29uRmlsZT99IjtyOjM3O3M6MTg6ImRvY3MvYXNzZXQve2Fzc2V0fSI7cjo4MztzOjE5OiJhcGkvb2F1dGgyLWNhbGxiYWNrIjtyOjEyNDtzOjE0OiJhcGkvc2VuZF9lbWFpbCI7cjoxNTc7czoyMToiYXBpL3VzZXJzL3tpZH0vZW5hYmxlIjtyOjE5MDtzOjIyOiJhcGkvdXNlcnMve2lkfS9kaXNhYmxlIjtyOjIzNTtzOjE0OiJhcGkvdXNlcnMve2lkfSI7cjoyODA7czoxMzoiYXBpL2VtcGxveWVlcyI7cjozMjI7czoxMzoiYXBpL2N1c3RvbWVycyI7cjozNTY7czoxOToiYXBpL3Byb2R1Y3RzL3t1dWlkfSI7cjozOTA7czoxMDoiYXBpL3NlYXJjaCI7cjo0MzI7czoxNToiYXBpL3NlYXJjaC9ob21lIjtyOjQ2NjtzOjEzOiJhcGkvaW52ZW50b3J5IjtyOjUwMDtzOjE4OiJhcGkvaW52ZW50b3J5L3tpZH0iO3I6NTM0O3M6MTE6ImFwaS9maWx0ZXJzIjtyOjU3NjtzOjE0OiJhcGkvY2F0ZWdvcmllcyI7cjo2MTA7fXM6NDoiUE9TVCI7YToxNTp7czoxNjoiZG9jcy97anNvbkZpbGU/fSI7cjozNztzOjE4OiJhcGkvdXNlcnMvcmVjb3ZlcnkiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE4OiJhcGkvdXNlcnMvcmVjb3ZlcnkiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXFJlY292ZXJ5UGFzc3dvcmRBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXFJlY292ZXJ5UGFzc3dvcmRBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6OToiYXBpL3VzZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE2OiJyZWNvdmVyeVBhc3N3b3JkIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTk6Ii9hcGkvdXNlcnMvcmVjb3ZlcnkiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjY6IiNeL2FwaS91c2Vycy9yZWNvdmVyeSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxOToiL2FwaS91c2Vycy9yZWNvdmVyeSI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNjoiYXBpL3VzZXJzL2ZvcmdvdCI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTY6ImFwaS91c2Vycy9mb3Jnb3QiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NzQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXENoYW5nZVBhc3N3b3JkRnJvbVJlY292ZXJ5QWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjY1OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xDaGFuZ2VQYXNzd29yZEZyb21SZWNvdmVyeUFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czo5OiJhcGkvdXNlcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MjY6ImNoYW5nZVBhc3N3b3JkRnJvbVJlY292ZXJ5Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTc6Ii9hcGkvdXNlcnMvZm9yZ290IjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjI0OiIjXi9hcGkvdXNlcnMvZm9yZ290JCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE3OiIvYXBpL3VzZXJzL2ZvcmdvdCI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNDoiYXBpL2F1dGgvbG9naW4iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE0OiJhcGkvYXV0aC9sb2dpbiI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1MjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQXV0aFxMb2dpbkFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo0MzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQXV0aFxMb2dpbkFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czo4OiJhcGkvYXV0aCI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czo1OiJsb2dpbiI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE1OiIvYXBpL2F1dGgvbG9naW4iO3M6MTA6InBhdGhfcmVnZXgiO3M6MjI6IiNeL2FwaS9hdXRoL2xvZ2luJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE1OiIvYXBpL2F1dGgvbG9naW4iO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MjA6ImFwaS9hdXRoL3JlbmV3LXRva2VuIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoyMDoiYXBpL2F1dGgvcmVuZXctdG9rZW4iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NTc6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEF1dGhcUmVuZXdUb2tlbkFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo0ODoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQXV0aFxSZW5ld1Rva2VuQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjg6ImFwaS9hdXRoIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjExOiJyZW5ldy10b2tlbiI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjIxOiIvYXBpL2F1dGgvcmVuZXctdG9rZW4iO3M6MTA6InBhdGhfcmVnZXgiO3M6Mjk6IiNeL2FwaS9hdXRoL3JlbmV3XC10b2tlbiQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoyMToiL2FwaS9hdXRoL3JlbmV3LXRva2VuIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE1OiJhcGkvYXV0aC9zaWdudXAiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE1OiJhcGkvYXV0aC9zaWdudXAiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6Njg6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xTdG9yZVdlYkN1c3RvbWVyQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU5OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcU3RvcmVXZWJDdXN0b21lckFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czo4OiJhcGkvYXV0aCI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNzoiY3JlYXRlV2ViQ3VzdG9tZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNjoiL2FwaS9hdXRoL3NpZ251cCI7czoxMDoicGF0aF9yZWdleCI7czoyMzoiI14vYXBpL2F1dGgvc2lnbnVwJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE2OiIvYXBpL2F1dGgvc2lnbnVwIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjEzOiJhcGkvZW1wbG95ZWVzIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxMzoiYXBpL2VtcGxveWVlcyI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2NToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRW1wbG95ZWVzXFN0b3JlRW1wbG95ZWVBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTY6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xTdG9yZUVtcGxveWVlQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEzOiJhcGkvZW1wbG95ZWVzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE0OiJjcmVhdGVFbXBsb3llZSI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE0OiIvYXBpL2VtcGxveWVlcyI7czoxMDoicGF0aF9yZWdleCI7czoyMToiI14vYXBpL2VtcGxveWVlcyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9lbXBsb3llZXMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTM6ImFwaS9jdXN0b21lcnMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEzOiJhcGkvY3VzdG9tZXJzIjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY1OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcU3RvcmVDdXN0b21lckFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ3VzdG9tZXJzXFN0b3JlQ3VzdG9tZXJBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTM6ImFwaS9jdXN0b21lcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTQ6ImNyZWF0ZUN1c3RvbWVyIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTQ6Ii9hcGkvY3VzdG9tZXJzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjIxOiIjXi9hcGkvY3VzdG9tZXJzJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE0OiIvYXBpL2N1c3RvbWVycyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxMDoiYXBpL2FkbWlucyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTA6ImFwaS9hZG1pbnMiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NTk6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEFkbWluc1xTdG9yZUFkbWluQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjUwOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xBZG1pbnNcU3RvcmVBZG1pbkFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMDoiYXBpL2FkbWlucyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMToiY3JlYXRlQWRtaW4iO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxMToiL2FwaS9hZG1pbnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MTg6IiNeL2FwaS9hZG1pbnMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTE6Ii9hcGkvYWRtaW5zIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjEyOiJhcGkvcHJvZHVjdHMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEyOiJhcGkvcHJvZHVjdHMiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjM6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFN0b3JlUHJvZHVjdEFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcU3RvcmVQcm9kdWN0QWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEyOiJhcGkvcHJvZHVjdHMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTM6ImNyZWF0ZVByb2R1Y3QiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxMzoiL2FwaS9wcm9kdWN0cyI7czoxMDoicGF0aF9yZWdleCI7czoyMDoiI14vYXBpL3Byb2R1Y3RzJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEzOiIvYXBpL3Byb2R1Y3RzIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE4OiJhcGkvaW52ZW50b3J5L3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE4OiJhcGkvaW52ZW50b3J5L3tpZH0iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjA6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFVwZGF0ZUludmVudG9yeUBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1MToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcVXBkYXRlSW52ZW50b3J5IjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEzOiJhcGkvaW52ZW50b3J5IjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjIyOiJ1cGRhdGVJbnZlbnRvcnlQcm9kdWN0Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE0OiIvYXBpL2ludmVudG9yeSI7czoxMDoicGF0aF9yZWdleCI7czozNjoiI14vYXBpL2ludmVudG9yeS8oP1A8aWQ+W14vXSsrKSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToyOntpOjA7YTo1OntpOjA7czo4OiJ2YXJpYWJsZSI7aToxO3M6MToiLyI7aToyO3M6NjoiW14vXSsrIjtpOjM7czoyOiJpZCI7aTo0O2I6MTt9aToxO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTQ6Ii9hcGkvaW52ZW50b3J5Ijt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxMToiYXBpL2ZpbHRlcnMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjExOiJhcGkvZmlsdGVycyI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2MjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xTdG9yZUZpbHRlcnNBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTM6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEZpbHRlcnNcU3RvcmVGaWx0ZXJzQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjExOiJhcGkvZmlsdGVycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czo5OiJhZGRGaWx0ZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxMjoiL2FwaS9maWx0ZXJzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjE5OiIjXi9hcGkvZmlsdGVycyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMjoiL2FwaS9maWx0ZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE0OiJhcGkvY2F0ZWdvcmllcyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTQ6ImFwaS9jYXRlZ29yaWVzIjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDYXRlZ29yaWVzXFN0b3JlQ2F0ZWdvcnlBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTc6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcU3RvcmVDYXRlZ29yeUFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxNDoiYXBpL2NhdGVnb3JpZXMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTM6InN0b3JlQ2F0ZWdvcnkiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNToiL2FwaS9jYXRlZ29yaWVzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjIyOiIjXi9hcGkvY2F0ZWdvcmllcyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNToiL2FwaS9jYXRlZ29yaWVzIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjI0OiJhcGkvcGF5bWVudHMvbWVyY2Fkb3BhZ28iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjI0OiJhcGkvcGF5bWVudHMvbWVyY2Fkb3BhZ28iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjM6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFBheW1lbnRzXE1lcmNhZG9QYWdvRXhlY3V0ZUBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUGF5bWVudHNcTWVyY2Fkb1BhZ29FeGVjdXRlIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEyOiJhcGkvcGF5bWVudHMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTg6InBheW1lbnRNZXJjYWRvUGFnbyI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjI1OiIvYXBpL3BheW1lbnRzL21lcmNhZG9wYWdvIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjMyOiIjXi9hcGkvcGF5bWVudHMvbWVyY2Fkb3BhZ28kI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MjU6Ii9hcGkvcGF5bWVudHMvbWVyY2Fkb3BhZ28iO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTc6ImFwaS9ub3RpZmljYXRpb25zIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNzoiYXBpL25vdGlmaWNhdGlvbnMiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NzE6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXE5vdGlmaWNhdGlvbnNcQ2hlY2tOb3RpZmljYXRpb25Vc2VyQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjYyOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xOb3RpZmljYXRpb25zXENoZWNrTm90aWZpY2F0aW9uVXNlciI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxNzoiYXBpL25vdGlmaWNhdGlvbnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MjE6ImNoZWNrTm90aWZpY2F0aW9uVXNlciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE4OiIvYXBpL25vdGlmaWNhdGlvbnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjU6IiNeL2FwaS9ub3RpZmljYXRpb25zJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE4OiIvYXBpL25vdGlmaWNhdGlvbnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fX1zOjM6IlBVVCI7YTo1OntzOjE2OiJkb2NzL3tqc29uRmlsZT99IjtyOjM3O3M6MTg6ImFwaS9jdXN0b21lcnMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTg6ImFwaS9jdXN0b21lcnMve2lkfSI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjM6IlBVVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcVXBkYXRlQ3VzdG9tZXJBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTc6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xVcGRhdGVDdXN0b21lckFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMzoiYXBpL2N1c3RvbWVycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNDoidXBkYXRlQ3VzdG9tZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTQ6Ii9hcGkvY3VzdG9tZXJzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM2OiIjXi9hcGkvY3VzdG9tZXJzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9jdXN0b21lcnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE3OiJhcGkvcHJvZHVjdHMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTc6ImFwaS9wcm9kdWN0cy97aWR9IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6MzoiUFVUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFVwZGF0ZVByb2R1Y3RBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFVwZGF0ZVByb2R1Y3RBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTI6ImFwaS9wcm9kdWN0cyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMzoidXBkYXRlUHJvZHVjdCI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMzoiL2FwaS9wcm9kdWN0cyI7czoxMDoicGF0aF9yZWdleCI7czozNToiI14vYXBpL3Byb2R1Y3RzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMzoiL2FwaS9wcm9kdWN0cyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTY6ImFwaS9maWx0ZXJzL3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE2OiJhcGkvZmlsdGVycy97aWR9IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6MzoiUFVUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjM6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEZpbHRlcnNcVXBkYXRlRmlsdGVyc0FjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xVcGRhdGVGaWx0ZXJzQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjExOiJhcGkvZmlsdGVycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMjoidXBkYXRlRmlsdGVyIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjEyOiIvYXBpL2ZpbHRlcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MzQ6IiNeL2FwaS9maWx0ZXJzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMjoiL2FwaS9maWx0ZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxOToiYXBpL2NhdGVnb3JpZXMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTk6ImFwaS9jYXRlZ29yaWVzL3tpZH0iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czozOiJQVVQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2NzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xVcGRhdGVDYXRlZ29yeUFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1ODoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xVcGRhdGVDYXRlZ29yeUFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxNDoiYXBpL2NhdGVnb3JpZXMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTQ6InVwZGF0ZUNhdGVnb3J5Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE1OiIvYXBpL2NhdGVnb3JpZXMiO3M6MTA6InBhdGhfcmVnZXgiO3M6Mzc6IiNeL2FwaS9jYXRlZ29yaWVzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNToiL2FwaS9jYXRlZ29yaWVzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19fXM6NToiUEFUQ0giO2E6MTp7czoxNjoiZG9jcy97anNvbkZpbGU/fSI7cjozNzt9czo2OiJERUxFVEUiO2E6NDp7czoxNjoiZG9jcy97anNvbkZpbGU/fSI7cjozNztzOjE3OiJhcGkvcHJvZHVjdHMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTc6ImFwaS9wcm9kdWN0cy97aWR9IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NjoiREVMRVRFIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXERlc3Ryb3lQcm9kdWN0QWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xEZXN0cm95UHJvZHVjdEFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMjoiYXBpL3Byb2R1Y3RzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE0OiJkZXN0cm95UHJvZHVjdCI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMzoiL2FwaS9wcm9kdWN0cyI7czoxMDoicGF0aF9yZWdleCI7czozNToiI14vYXBpL3Byb2R1Y3RzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMzoiL2FwaS9wcm9kdWN0cyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTY6ImFwaS9maWx0ZXJzL3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE2OiJhcGkvZmlsdGVycy97aWR9IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NjoiREVMRVRFIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjM6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEZpbHRlcnNcRGVzdHJveUZpbHRlckFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xEZXN0cm95RmlsdGVyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjExOiJhcGkvZmlsdGVycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMzoiZGVzdHJveUZpbHRlciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMjoiL2FwaS9maWx0ZXJzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM0OiIjXi9hcGkvZmlsdGVycy8oP1A8aWQ+W14vXSsrKSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToyOntpOjA7YTo1OntpOjA7czo4OiJ2YXJpYWJsZSI7aToxO3M6MToiLyI7aToyO3M6NjoiW14vXSsrIjtpOjM7czoyOiJpZCI7aTo0O2I6MTt9aToxO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTI6Ii9hcGkvZmlsdGVycyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTk6ImFwaS9jYXRlZ29yaWVzL3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE5OiJhcGkvY2F0ZWdvcmllcy97aWR9IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NjoiREVMRVRFIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6Njg6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcRGVzdHJveUNhdGVnb3J5QWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU5OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDYXRlZ29yaWVzXERlc3Ryb3lDYXRlZ29yeUFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxNDoiYXBpL2NhdGVnb3JpZXMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTU6ImRlc3Ryb3lDYXRlZ29yeSI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxNToiL2FwaS9jYXRlZ29yaWVzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM3OiIjXi9hcGkvY2F0ZWdvcmllcy8oP1A8aWQ+W14vXSsrKSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToyOntpOjA7YTo1OntpOjA7czo4OiJ2YXJpYWJsZSI7aToxO3M6MToiLyI7aToyO3M6NjoiW14vXSsrIjtpOjM7czoyOiJpZCI7aTo0O2I6MTt9aToxO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTU6Ii9hcGkvY2F0ZWdvcmllcyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fX1zOjc6Ik9QVElPTlMiO2E6MTp7czoxNjoiZG9jcy97anNvbkZpbGU/fSI7cjozNzt9fXM6MTI6IgAqAGFsbFJvdXRlcyI7YTozODp7czoyMToiSEVBRGFwaS9kb2N1bWVudGF0aW9uIjtyOjQ7czoyMzoiT1BUSU9OU2RvY3Mve2pzb25GaWxlP30iO3I6Mzc7czoyMjoiSEVBRGRvY3MvYXNzZXQve2Fzc2V0fSI7cjo4MztzOjIzOiJIRUFEYXBpL29hdXRoMi1jYWxsYmFjayI7cjoxMjQ7czoxODoiSEVBRGFwaS9zZW5kX2VtYWlsIjtyOjE1NztzOjIyOiJQT1NUYXBpL3VzZXJzL3JlY292ZXJ5IjtyOjY2NDtzOjIwOiJQT1NUYXBpL3VzZXJzL2ZvcmdvdCI7cjo2OTc7czoyNToiSEVBRGFwaS91c2Vycy97aWR9L2VuYWJsZSI7cjoxOTA7czoyNjoiSEVBRGFwaS91c2Vycy97aWR9L2Rpc2FibGUiO3I6MjM1O3M6MTg6IkhFQURhcGkvdXNlcnMve2lkfSI7cjoyODA7czoxODoiUE9TVGFwaS9hdXRoL2xvZ2luIjtyOjczMDtzOjI0OiJQT1NUYXBpL2F1dGgvcmVuZXctdG9rZW4iO3I6NzYzO3M6MTk6IlBPU1RhcGkvYXV0aC9zaWdudXAiO3I6Nzk2O3M6MTc6IlBPU1RhcGkvZW1wbG95ZWVzIjtyOjgyOTtzOjE3OiJIRUFEYXBpL2VtcGxveWVlcyI7cjozMjI7czoxNzoiUE9TVGFwaS9jdXN0b21lcnMiO3I6ODYyO3M6MjE6IlBVVGFwaS9jdXN0b21lcnMve2lkfSI7cjoxMTM2O3M6MTc6IkhFQURhcGkvY3VzdG9tZXJzIjtyOjM1NjtzOjE0OiJQT1NUYXBpL2FkbWlucyI7cjo4OTU7czoyMDoiUFVUYXBpL3Byb2R1Y3RzL3tpZH0iO3I6MTE3NztzOjIzOiJIRUFEYXBpL3Byb2R1Y3RzL3t1dWlkfSI7cjozOTA7czoyMzoiREVMRVRFYXBpL3Byb2R1Y3RzL3tpZH0iO3I6MTMwNDtzOjE2OiJQT1NUYXBpL3Byb2R1Y3RzIjtyOjkyODtzOjE0OiJIRUFEYXBpL3NlYXJjaCI7cjo0MzI7czoxOToiSEVBRGFwaS9zZWFyY2gvaG9tZSI7cjo0NjY7czoyMjoiUE9TVGFwaS9pbnZlbnRvcnkve2lkfSI7cjo5NjE7czoxNzoiSEVBRGFwaS9pbnZlbnRvcnkiO3I6NTAwO3M6MjI6IkhFQURhcGkvaW52ZW50b3J5L3tpZH0iO3I6NTM0O3M6MTU6IkhFQURhcGkvZmlsdGVycyI7cjo1NzY7czoxNToiUE9TVGFwaS9maWx0ZXJzIjtyOjEwMDI7czoxOToiUFVUYXBpL2ZpbHRlcnMve2lkfSI7cjoxMjE4O3M6MjI6IkRFTEVURWFwaS9maWx0ZXJzL3tpZH0iO3I6MTM0NTtzOjE4OiJQT1NUYXBpL2NhdGVnb3JpZXMiO3I6MTAzNTtzOjIyOiJQVVRhcGkvY2F0ZWdvcmllcy97aWR9IjtyOjEyNTk7czoxODoiSEVBRGFwaS9jYXRlZ29yaWVzIjtyOjYxMDtzOjI1OiJERUxFVEVhcGkvY2F0ZWdvcmllcy97aWR9IjtyOjEzODY7czoyODoiUE9TVGFwaS9wYXltZW50cy9tZXJjYWRvcGFnbyI7cjoxMDY4O3M6MjE6IlBPU1RhcGkvbm90aWZpY2F0aW9ucyI7cjoxMTAxO31zOjExOiIAKgBuYW1lTGlzdCI7YTozNjp7czoxNDoibDUtc3dhZ2dlci5hcGkiO3I6NDtzOjE1OiJsNS1zd2FnZ2VyLmRvY3MiO3I6Mzc7czoxNjoibDUtc3dhZ2dlci5hc3NldCI7cjo4MztzOjI2OiJsNS1zd2FnZ2VyLm9hdXRoMl9jYWxsYmFjayI7cjoxMjQ7czoxNjoicmVjb3ZlcnlQYXNzd29yZCI7cjo2NjQ7czoyNjoiY2hhbmdlUGFzc3dvcmRGcm9tUmVjb3ZlcnkiO3I6Njk3O3M6MTA6ImVuYWJsZVVzZXIiO3I6MTkwO3M6MTE6ImRpc2FibGVVc2VyIjtyOjIzNTtzOjExOiJzaG93T25lVXNlciI7cjoyODA7czo1OiJsb2dpbiI7cjo3MzA7czoxMToicmVuZXctdG9rZW4iO3I6NzYzO3M6MTc6ImNyZWF0ZVdlYkN1c3RvbWVyIjtyOjc5NjtzOjE0OiJjcmVhdGVFbXBsb3llZSI7cjo4Mjk7czoxMjoibGlzdEVtcGxveWVlIjtyOjMyMjtzOjE0OiJjcmVhdGVDdXN0b21lciI7cjo4NjI7czoxNDoidXBkYXRlQ3VzdG9tZXIiO3I6MTEzNjtzOjEzOiJsaXN0Q3VzdG9tZXJzIjtyOjM1NjtzOjExOiJjcmVhdGVBZG1pbiI7cjo4OTU7czoxMzoidXBkYXRlUHJvZHVjdCI7cjoxMTc3O3M6MTE6ImZpbmRQcm9kdWN0IjtyOjM5MDtzOjE0OiJkZXN0cm95UHJvZHVjdCI7cjoxMzA0O3M6MTM6ImNyZWF0ZVByb2R1Y3QiO3I6OTI4O3M6MTQ6InNlYXJjaFByb2R1Y3RzIjtyOjQ2NjtzOjIyOiJ1cGRhdGVJbnZlbnRvcnlQcm9kdWN0IjtyOjk2MTtzOjE4OiJpbmRleFByb2R1Y3RzU3RvY2siO3I6NTAwO3M6MTc6ImZpbmRQcm9kdWN0c1N0b2NrIjtyOjUzNDtzOjEyOiJpbmRleEZpbHRlcnMiO3I6NTc2O3M6OToiYWRkRmlsdGVyIjtyOjEwMDI7czoxMjoidXBkYXRlRmlsdGVyIjtyOjEyMTg7czoxMzoiZGVzdHJveUZpbHRlciI7cjoxMzQ1O3M6MTM6InN0b3JlQ2F0ZWdvcnkiO3I6MTAzNTtzOjE0OiJ1cGRhdGVDYXRlZ29yeSI7cjoxMjU5O3M6MTM6ImluZGV4Q2F0ZWdvcnkiO3I6NjEwO3M6MTU6ImRlc3Ryb3lDYXRlZ29yeSI7cjoxMzg2O3M6MTg6InBheW1lbnRNZXJjYWRvUGFnbyI7cjoxMDY4O3M6MjE6ImNoZWNrTm90aWZpY2F0aW9uVXNlciI7cjoxMTAxO31zOjEzOiIAKgBhY3Rpb25MaXN0IjthOjM4OntzOjQ4OiJMNVN3YWdnZXJcSHR0cFxDb250cm9sbGVyc1xTd2FnZ2VyQ29udHJvbGxlckBhcGkiO3I6NDtzOjQ5OiJMNVN3YWdnZXJcSHR0cFxDb250cm9sbGVyc1xTd2FnZ2VyQ29udHJvbGxlckBkb2NzIjtyOjM3O3M6NTU6Ikw1U3dhZ2dlclxIdHRwXENvbnRyb2xsZXJzXFN3YWdnZXJBc3NldENvbnRyb2xsZXJAaW5kZXgiO3I6ODM7czo1OToiTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAb2F1dGgyQ2FsbGJhY2siO3I6MTI0O3M6MzU6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU2VuZEVtYWlsIjtyOjE1NztzOjU0OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXFJlY292ZXJ5UGFzc3dvcmRBY3Rpb24iO3I6NjY0O3M6NjQ6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcQ2hhbmdlUGFzc3dvcmRGcm9tUmVjb3ZlcnlBY3Rpb24iO3I6Njk3O3M6NDg6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcRW5hYmxlVXNlckFjdGlvbiI7cjoxOTA7czo0OToiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xEaXNhYmxlVXNlckFjdGlvbiI7cjoyMzU7czo0NjoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xTaG93VXNlckFjdGlvbiI7cjoyODA7czo0MjoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xBdXRoXExvZ2luQWN0aW9uIjtyOjczMDtzOjQ3OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEF1dGhcUmVuZXdUb2tlbkFjdGlvbiI7cjo3NjM7czo1ODoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcU3RvcmVXZWJDdXN0b21lckFjdGlvbiI7cjo3OTY7czo1NToiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xFbXBsb3llZXNcU3RvcmVFbXBsb3llZUFjdGlvbiI7cjo4Mjk7czo1NDoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xFbXBsb3llZXNcRmluZEVtcGxveWVlQWN0aW9uIjtyOjMyMjtzOjU1OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xTdG9yZUN1c3RvbWVyQWN0aW9uIjtyOjg2MjtzOjU2OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xVcGRhdGVDdXN0b21lckFjdGlvbiI7cjoxMTM2O3M6NTQ6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ3VzdG9tZXJzXEZpbmRDdXN0b21lckFjdGlvbiI7cjozNTY7czo0OToiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xBZG1pbnNcU3RvcmVBZG1pbkFjdGlvbiI7cjo4OTU7czo1NDoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xVcGRhdGVQcm9kdWN0QWN0aW9uIjtyOjExNzc7czo1MjoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xGaW5kUHJvZHVjdEFjdGlvbiI7cjozOTA7czo1NToiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xEZXN0cm95UHJvZHVjdEFjdGlvbiI7cjoxMzA0O3M6NTM6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcU3RvcmVQcm9kdWN0QWN0aW9uIjtyOjkyODtzOjU1OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFNlYXJjaFByb2R1Y3RzQWN0aW9uIjtyOjQzMjtzOjYyOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFNlYXJjaFByb2R1Y3RzRm9ySG9tZUFjdGlvbiI7cjo0NjY7czo1MDoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xVcGRhdGVJbnZlbnRvcnkiO3I6OTYxO3M6NDk6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcSW5kZXhQcm9kdWN0U3RvY2siO3I6NTAwO3M6NDg6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcRmluZFByb2R1Y3RTdG9jayI7cjo1MzQ7czo1MjoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXEluZGV4RmlsdGVyc0FjdGlvbiI7cjo1NzY7czo1MjoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXFN0b3JlRmlsdGVyc0FjdGlvbiI7cjoxMDAyO3M6NTM6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xVcGRhdGVGaWx0ZXJzQWN0aW9uIjtyOjEyMTg7czo1MzoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXERlc3Ryb3lGaWx0ZXJBY3Rpb24iO3I6MTM0NTtzOjU2OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcU3RvcmVDYXRlZ29yeUFjdGlvbiI7cjoxMDM1O3M6NTc6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xVcGRhdGVDYXRlZ29yeUFjdGlvbiI7cjoxMjU5O3M6NTY6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xJbmRleENhdGVnb3J5QWN0aW9uIjtyOjYxMDtzOjU4OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcRGVzdHJveUNhdGVnb3J5QWN0aW9uIjtyOjEzODY7czo1MzoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQYXltZW50c1xNZXJjYWRvUGFnb0V4ZWN1dGUiO3I6MTA2ODtzOjYxOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXE5vdGlmaWNhdGlvbnNcQ2hlY2tOb3RpZmljYXRpb25Vc2VyIjtyOjExMDE7fX0=')) + unserialize(base64_decode('TzozNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlQ29sbGVjdGlvbiI6NDp7czo5OiIAKgByb3V0ZXMiO2E6Nzp7czozOiJHRVQiO2E6MTg6e3M6MTc6ImFwaS9kb2N1bWVudGF0aW9uIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNzoiYXBpL2RvY3VtZW50YXRpb24iO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjI6ImFzIjtzOjE0OiJsNS1zd2FnZ2VyLmFwaSI7czoxMDoibWlkZGxld2FyZSI7YTowOnt9czo0OiJ1c2VzIjtzOjQ5OiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAYXBpIjtzOjEwOiJjb250cm9sbGVyIjtzOjQ5OiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAYXBpIjtzOjk6Im5hbWVzcGFjZSI7czo5OiJMNVN3YWdnZXIiO3M6NjoicHJlZml4IjtOO3M6NToid2hlcmUiO2E6MDp7fX1zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxODoiL2FwaS9kb2N1bWVudGF0aW9uIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjI1OiIjXi9hcGkvZG9jdW1lbnRhdGlvbiQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxODoiL2FwaS9kb2N1bWVudGF0aW9uIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE2OiJkb2NzL3tqc29uRmlsZT99IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNjoiZG9jcy97anNvbkZpbGU/fSI7czo3OiJtZXRob2RzIjthOjc6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7aToyO3M6NDoiUE9TVCI7aTozO3M6MzoiUFVUIjtpOjQ7czo1OiJQQVRDSCI7aTo1O3M6NjoiREVMRVRFIjtpOjY7czo3OiJPUFRJT05TIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoyOiJhcyI7czoxNToibDUtc3dhZ2dlci5kb2NzIjtzOjEwOiJtaWRkbGV3YXJlIjthOjA6e31zOjQ6InVzZXMiO3M6NTA6IlxMNVN3YWdnZXJcSHR0cFxDb250cm9sbGVyc1xTd2FnZ2VyQ29udHJvbGxlckBkb2NzIjtzOjEwOiJjb250cm9sbGVyIjtzOjUwOiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAZG9jcyI7czo5OiJuYW1lc3BhY2UiO3M6OToiTDVTd2FnZ2VyIjtzOjY6InByZWZpeCI7TjtzOjU6IndoZXJlIjthOjA6e319czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czo4OiJqc29uRmlsZSI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjU6Ii9kb2NzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM4OiIjXi9kb2NzKD86Lyg/UDxqc29uRmlsZT5bXi9dKyspKT8kI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6ODoianNvbkZpbGUiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjU6Ii9kb2NzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjg6Impzb25GaWxlIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxODoiZG9jcy9hc3NldC97YXNzZXR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxODoiZG9jcy9hc3NldC97YXNzZXR9IjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoyOiJhcyI7czoxNjoibDUtc3dhZ2dlci5hc3NldCI7czoxMDoibWlkZGxld2FyZSI7YTowOnt9czo0OiJ1c2VzIjtzOjU2OiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckFzc2V0Q29udHJvbGxlckBpbmRleCI7czoxMDoiY29udHJvbGxlciI7czo1NjoiXEw1U3dhZ2dlclxIdHRwXENvbnRyb2xsZXJzXFN3YWdnZXJBc3NldENvbnRyb2xsZXJAaW5kZXgiO3M6OToibmFtZXNwYWNlIjtzOjk6Ikw1U3dhZ2dlciI7czo2OiJwcmVmaXgiO047czo1OiJ3aGVyZSI7YTowOnt9fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6NToiYXNzZXQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMToiL2RvY3MvYXNzZXQiO3M6MTA6InBhdGhfcmVnZXgiO3M6MzY6IiNeL2RvY3MvYXNzZXQvKD9QPGFzc2V0PlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6NToiYXNzZXQiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjExOiIvZG9jcy9hc3NldCI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czo1OiJhc3NldCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTk6ImFwaS9vYXV0aDItY2FsbGJhY2siO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE5OiJhcGkvb2F1dGgyLWNhbGxiYWNrIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoyOiJhcyI7czoyNjoibDUtc3dhZ2dlci5vYXV0aDJfY2FsbGJhY2siO3M6MTA6Im1pZGRsZXdhcmUiO2E6MDp7fXM6NDoidXNlcyI7czo2MDoiXEw1U3dhZ2dlclxIdHRwXENvbnRyb2xsZXJzXFN3YWdnZXJDb250cm9sbGVyQG9hdXRoMkNhbGxiYWNrIjtzOjEwOiJjb250cm9sbGVyIjtzOjYwOiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAb2F1dGgyQ2FsbGJhY2siO3M6OToibmFtZXNwYWNlIjtzOjk6Ikw1U3dhZ2dlciI7czo2OiJwcmVmaXgiO047czo1OiJ3aGVyZSI7YTowOnt9fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjIwOiIvYXBpL29hdXRoMi1jYWxsYmFjayI7czoxMDoicGF0aF9yZWdleCI7czoyODoiI14vYXBpL29hdXRoMlwtY2FsbGJhY2skI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MjA6Ii9hcGkvb2F1dGgyLWNhbGxiYWNrIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE0OiJhcGkvc2VuZF9lbWFpbCI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTQ6ImFwaS9zZW5kX2VtYWlsIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Njp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NDU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFNlbmRFbWFpbEBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czozNjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU2VuZEVtYWlsIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjM6ImFwaSI7czo1OiJ3aGVyZSI7YTowOnt9fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE1OiIvYXBpL3NlbmRfZW1haWwiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjI6IiNeL2FwaS9zZW5kX2VtYWlsJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE1OiIvYXBpL3NlbmRfZW1haWwiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MjE6ImFwaS91c2Vycy97aWR9L2VuYWJsZSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MjE6ImFwaS91c2Vycy97aWR9L2VuYWJsZSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjU4OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xFbmFibGVVc2VyQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjQ5OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xFbmFibGVVc2VyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjk6ImFwaS91c2VycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMDoiZW5hYmxlVXNlciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMDoiL2FwaS91c2VycyI7czoxMDoicGF0aF9yZWdleCI7czozOToiI14vYXBpL3VzZXJzLyg/UDxpZD5bXi9dKyspL2VuYWJsZSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YTozOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czo3OiIvZW5hYmxlIjt9aToxO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MjthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEwOiIvYXBpL3VzZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoyMjoiYXBpL3VzZXJzL3tpZH0vZGlzYWJsZSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MjI6ImFwaS91c2Vycy97aWR9L2Rpc2FibGUiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1OToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcRGlzYWJsZVVzZXJBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTA6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXERpc2FibGVVc2VyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjk6ImFwaS91c2VycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMToiZGlzYWJsZVVzZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTA6Ii9hcGkvdXNlcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6NDA6IiNeL2FwaS91c2Vycy8oP1A8aWQ+W14vXSsrKS9kaXNhYmxlJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjM6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjg6Ii9kaXNhYmxlIjt9aToxO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MjthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEwOiIvYXBpL3VzZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNDoiYXBpL3VzZXJzL3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE0OiJhcGkvdXNlcnMve2lkfSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjU2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xTaG93VXNlckFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo0NzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcU2hvd1VzZXJBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6OToiYXBpL3VzZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjExOiJzaG93T25lVXNlciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMDoiL2FwaS91c2VycyI7czoxMDoicGF0aF9yZWdleCI7czozMjoiI14vYXBpL3VzZXJzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMDoiL2FwaS91c2VycyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTM6ImFwaS9lbXBsb3llZXMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEzOiJhcGkvZW1wbG95ZWVzIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xGaW5kRW1wbG95ZWVBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xGaW5kRW1wbG95ZWVBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTM6ImFwaS9lbXBsb3llZXMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTI6Imxpc3RFbXBsb3llZSI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE0OiIvYXBpL2VtcGxveWVlcyI7czoxMDoicGF0aF9yZWdleCI7czoyMToiI14vYXBpL2VtcGxveWVlcyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9lbXBsb3llZXMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTM6ImFwaS9jdXN0b21lcnMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEzOiJhcGkvY3VzdG9tZXJzIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xGaW5kQ3VzdG9tZXJBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xGaW5kQ3VzdG9tZXJBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTM6ImFwaS9jdXN0b21lcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTM6Imxpc3RDdXN0b21lcnMiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNDoiL2FwaS9jdXN0b21lcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjE6IiNeL2FwaS9jdXN0b21lcnMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTQ6Ii9hcGkvY3VzdG9tZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE5OiJhcGkvcHJvZHVjdHMve3V1aWR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxOToiYXBpL3Byb2R1Y3RzL3t1dWlkfSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjYyOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xGaW5kUHJvZHVjdEFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1MzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcRmluZFByb2R1Y3RBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTI6ImFwaS9wcm9kdWN0cyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMToiZmluZFByb2R1Y3QiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjQ6InV1aWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMzoiL2FwaS9wcm9kdWN0cyI7czoxMDoicGF0aF9yZWdleCI7czozNzoiI14vYXBpL3Byb2R1Y3RzLyg/UDx1dWlkPlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6NDoidXVpZCI7aTo0O2I6MTt9aToxO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTM6Ii9hcGkvcHJvZHVjdHMiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6NDoidXVpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTA6ImFwaS9zZWFyY2giO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEwOiJhcGkvc2VhcmNoIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFNlYXJjaFByb2R1Y3RzQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xTZWFyY2hQcm9kdWN0c0FjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMDoiYXBpL3NlYXJjaCI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNDoic2VhcmNoUHJvZHVjdHMiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxMToiL2FwaS9zZWFyY2giO3M6MTA6InBhdGhfcmVnZXgiO3M6MTg6IiNeL2FwaS9zZWFyY2gkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTE6Ii9hcGkvc2VhcmNoIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE1OiJhcGkvc2VhcmNoL2hvbWUiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE1OiJhcGkvc2VhcmNoL2hvbWUiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo3MjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcU2VhcmNoUHJvZHVjdHNGb3JIb21lQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjYzOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xTZWFyY2hQcm9kdWN0c0ZvckhvbWVBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTA6ImFwaS9zZWFyY2giO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTQ6InNlYXJjaFByb2R1Y3RzIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTY6Ii9hcGkvc2VhcmNoL2hvbWUiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjM6IiNeL2FwaS9zZWFyY2gvaG9tZSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNjoiL2FwaS9zZWFyY2gvaG9tZSI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxMzoiYXBpL2ludmVudG9yeSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTM6ImFwaS9pbnZlbnRvcnkiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1OToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcSW5kZXhQcm9kdWN0U3RvY2tAX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTA6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFN0b2NrXEluZGV4UHJvZHVjdFN0b2NrIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEzOiJhcGkvaW52ZW50b3J5IjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE4OiJpbmRleFByb2R1Y3RzU3RvY2siO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNDoiL2FwaS9pbnZlbnRvcnkiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjE6IiNeL2FwaS9pbnZlbnRvcnkkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTQ6Ii9hcGkvaW52ZW50b3J5Ijt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE4OiJhcGkvaW52ZW50b3J5L3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE4OiJhcGkvaW52ZW50b3J5L3tpZH0iO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1ODoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcRmluZFByb2R1Y3RTdG9ja0BfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo0OToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcRmluZFByb2R1Y3RTdG9jayI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMzoiYXBpL2ludmVudG9yeSI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNzoiZmluZFByb2R1Y3RzU3RvY2siO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTQ6Ii9hcGkvaW52ZW50b3J5IjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM2OiIjXi9hcGkvaW52ZW50b3J5Lyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9pbnZlbnRvcnkiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjExOiJhcGkvZmlsdGVycyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTE6ImFwaS9maWx0ZXJzIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjI6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEZpbHRlcnNcSW5kZXhGaWx0ZXJzQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjUzOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXEluZGV4RmlsdGVyc0FjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMToiYXBpL2ZpbHRlcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTI6ImluZGV4RmlsdGVycyI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjEyOiIvYXBpL2ZpbHRlcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MTk6IiNeL2FwaS9maWx0ZXJzJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEyOiIvYXBpL2ZpbHRlcnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTQ6ImFwaS9jYXRlZ29yaWVzIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNDoiYXBpL2NhdGVnb3JpZXMiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2NjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xJbmRleENhdGVnb3J5QWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU3OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDYXRlZ29yaWVzXEluZGV4Q2F0ZWdvcnlBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTQ6ImFwaS9jYXRlZ29yaWVzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjEzOiJpbmRleENhdGVnb3J5Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTU6Ii9hcGkvY2F0ZWdvcmllcyI7czoxMDoicGF0aF9yZWdleCI7czoyMjoiI14vYXBpL2NhdGVnb3JpZXMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTU6Ii9hcGkvY2F0ZWdvcmllcyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxMDoiYXBpL29yZGVycyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTA6ImFwaS9vcmRlcnMiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2MDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcT3JkZXJzXEluZGV4T3JkZXJzQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjUxOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xPcmRlcnNcSW5kZXhPcmRlcnNBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTA6ImFwaS9vcmRlcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6OToiZ2V0T3JkZXJzIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTE6Ii9hcGkvb3JkZXJzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjE4OiIjXi9hcGkvb3JkZXJzJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjExOiIvYXBpL29yZGVycyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19fXM6NDoiSEVBRCI7YToxODp7czoxNzoiYXBpL2RvY3VtZW50YXRpb24iO3I6NDtzOjE2OiJkb2NzL3tqc29uRmlsZT99IjtyOjM3O3M6MTg6ImRvY3MvYXNzZXQve2Fzc2V0fSI7cjo4MztzOjE5OiJhcGkvb2F1dGgyLWNhbGxiYWNrIjtyOjEyNDtzOjE0OiJhcGkvc2VuZF9lbWFpbCI7cjoxNTc7czoyMToiYXBpL3VzZXJzL3tpZH0vZW5hYmxlIjtyOjE5MDtzOjIyOiJhcGkvdXNlcnMve2lkfS9kaXNhYmxlIjtyOjIzNTtzOjE0OiJhcGkvdXNlcnMve2lkfSI7cjoyODA7czoxMzoiYXBpL2VtcGxveWVlcyI7cjozMjI7czoxMzoiYXBpL2N1c3RvbWVycyI7cjozNTY7czoxOToiYXBpL3Byb2R1Y3RzL3t1dWlkfSI7cjozOTA7czoxMDoiYXBpL3NlYXJjaCI7cjo0MzI7czoxNToiYXBpL3NlYXJjaC9ob21lIjtyOjQ2NjtzOjEzOiJhcGkvaW52ZW50b3J5IjtyOjUwMDtzOjE4OiJhcGkvaW52ZW50b3J5L3tpZH0iO3I6NTM0O3M6MTE6ImFwaS9maWx0ZXJzIjtyOjU3NjtzOjE0OiJhcGkvY2F0ZWdvcmllcyI7cjo2MTA7czoxMDoiYXBpL29yZGVycyI7cjo2NDQ7fXM6NDoiUE9TVCI7YToxNjp7czoxNjoiZG9jcy97anNvbkZpbGU/fSI7cjozNztzOjE4OiJhcGkvdXNlcnMvcmVjb3ZlcnkiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE4OiJhcGkvdXNlcnMvcmVjb3ZlcnkiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXFJlY292ZXJ5UGFzc3dvcmRBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXFJlY292ZXJ5UGFzc3dvcmRBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6OToiYXBpL3VzZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE2OiJyZWNvdmVyeVBhc3N3b3JkIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTk6Ii9hcGkvdXNlcnMvcmVjb3ZlcnkiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjY6IiNeL2FwaS91c2Vycy9yZWNvdmVyeSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxOToiL2FwaS91c2Vycy9yZWNvdmVyeSI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNjoiYXBpL3VzZXJzL2ZvcmdvdCI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTY6ImFwaS91c2Vycy9mb3Jnb3QiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NzQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXENoYW5nZVBhc3N3b3JkRnJvbVJlY292ZXJ5QWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjY1OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xDaGFuZ2VQYXNzd29yZEZyb21SZWNvdmVyeUFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czo5OiJhcGkvdXNlcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MjY6ImNoYW5nZVBhc3N3b3JkRnJvbVJlY292ZXJ5Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTc6Ii9hcGkvdXNlcnMvZm9yZ290IjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjI0OiIjXi9hcGkvdXNlcnMvZm9yZ290JCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE3OiIvYXBpL3VzZXJzL2ZvcmdvdCI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNDoiYXBpL2F1dGgvbG9naW4iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE0OiJhcGkvYXV0aC9sb2dpbiI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1MjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQXV0aFxMb2dpbkFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo0MzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQXV0aFxMb2dpbkFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czo4OiJhcGkvYXV0aCI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czo1OiJsb2dpbiI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE1OiIvYXBpL2F1dGgvbG9naW4iO3M6MTA6InBhdGhfcmVnZXgiO3M6MjI6IiNeL2FwaS9hdXRoL2xvZ2luJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE1OiIvYXBpL2F1dGgvbG9naW4iO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MjA6ImFwaS9hdXRoL3JlbmV3LXRva2VuIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoyMDoiYXBpL2F1dGgvcmVuZXctdG9rZW4iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NTc6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEF1dGhcUmVuZXdUb2tlbkFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo0ODoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQXV0aFxSZW5ld1Rva2VuQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjg6ImFwaS9hdXRoIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjExOiJyZW5ldy10b2tlbiI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjIxOiIvYXBpL2F1dGgvcmVuZXctdG9rZW4iO3M6MTA6InBhdGhfcmVnZXgiO3M6Mjk6IiNeL2FwaS9hdXRoL3JlbmV3XC10b2tlbiQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoyMToiL2FwaS9hdXRoL3JlbmV3LXRva2VuIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE1OiJhcGkvYXV0aC9zaWdudXAiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE1OiJhcGkvYXV0aC9zaWdudXAiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6Njg6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xTdG9yZVdlYkN1c3RvbWVyQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU5OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcU3RvcmVXZWJDdXN0b21lckFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czo4OiJhcGkvYXV0aCI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNzoiY3JlYXRlV2ViQ3VzdG9tZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNjoiL2FwaS9hdXRoL3NpZ251cCI7czoxMDoicGF0aF9yZWdleCI7czoyMzoiI14vYXBpL2F1dGgvc2lnbnVwJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE2OiIvYXBpL2F1dGgvc2lnbnVwIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjI0OiJhcGkvYXV0aC9jaGFuZ2UtcGFzc3dvcmQiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjI0OiJhcGkvYXV0aC9jaGFuZ2UtcGFzc3dvcmQiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjE6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEF1dGhcQ2hhbmdlUGFzc3dvcmRBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTI6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEF1dGhcQ2hhbmdlUGFzc3dvcmRBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6ODoiYXBpL2F1dGgiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTU6ImNoYW5nZS1wYXNzd29yZCI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjI1OiIvYXBpL2F1dGgvY2hhbmdlLXBhc3N3b3JkIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjMzOiIjXi9hcGkvYXV0aC9jaGFuZ2VcLXBhc3N3b3JkJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjI1OiIvYXBpL2F1dGgvY2hhbmdlLXBhc3N3b3JkIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjEzOiJhcGkvZW1wbG95ZWVzIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxMzoiYXBpL2VtcGxveWVlcyI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2NToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRW1wbG95ZWVzXFN0b3JlRW1wbG95ZWVBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTY6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xTdG9yZUVtcGxveWVlQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEzOiJhcGkvZW1wbG95ZWVzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE0OiJjcmVhdGVFbXBsb3llZSI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE0OiIvYXBpL2VtcGxveWVlcyI7czoxMDoicGF0aF9yZWdleCI7czoyMToiI14vYXBpL2VtcGxveWVlcyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9lbXBsb3llZXMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTM6ImFwaS9jdXN0b21lcnMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEzOiJhcGkvY3VzdG9tZXJzIjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY1OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcU3RvcmVDdXN0b21lckFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ3VzdG9tZXJzXFN0b3JlQ3VzdG9tZXJBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTM6ImFwaS9jdXN0b21lcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTQ6ImNyZWF0ZUN1c3RvbWVyIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTQ6Ii9hcGkvY3VzdG9tZXJzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjIxOiIjXi9hcGkvY3VzdG9tZXJzJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE0OiIvYXBpL2N1c3RvbWVycyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxMDoiYXBpL2FkbWlucyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTA6ImFwaS9hZG1pbnMiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NTk6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEFkbWluc1xTdG9yZUFkbWluQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjUwOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xBZG1pbnNcU3RvcmVBZG1pbkFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMDoiYXBpL2FkbWlucyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMToiY3JlYXRlQWRtaW4iO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxMToiL2FwaS9hZG1pbnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MTg6IiNeL2FwaS9hZG1pbnMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTE6Ii9hcGkvYWRtaW5zIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjEyOiJhcGkvcHJvZHVjdHMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEyOiJhcGkvcHJvZHVjdHMiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjM6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFN0b3JlUHJvZHVjdEFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcU3RvcmVQcm9kdWN0QWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEyOiJhcGkvcHJvZHVjdHMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTM6ImNyZWF0ZVByb2R1Y3QiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxMzoiL2FwaS9wcm9kdWN0cyI7czoxMDoicGF0aF9yZWdleCI7czoyMDoiI14vYXBpL3Byb2R1Y3RzJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEzOiIvYXBpL3Byb2R1Y3RzIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE4OiJhcGkvaW52ZW50b3J5L3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE4OiJhcGkvaW52ZW50b3J5L3tpZH0iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjA6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFVwZGF0ZUludmVudG9yeUBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1MToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcVXBkYXRlSW52ZW50b3J5IjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEzOiJhcGkvaW52ZW50b3J5IjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjIyOiJ1cGRhdGVJbnZlbnRvcnlQcm9kdWN0Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE0OiIvYXBpL2ludmVudG9yeSI7czoxMDoicGF0aF9yZWdleCI7czozNjoiI14vYXBpL2ludmVudG9yeS8oP1A8aWQ+W14vXSsrKSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToyOntpOjA7YTo1OntpOjA7czo4OiJ2YXJpYWJsZSI7aToxO3M6MToiLyI7aToyO3M6NjoiW14vXSsrIjtpOjM7czoyOiJpZCI7aTo0O2I6MTt9aToxO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTQ6Ii9hcGkvaW52ZW50b3J5Ijt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxMToiYXBpL2ZpbHRlcnMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjExOiJhcGkvZmlsdGVycyI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2MjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xTdG9yZUZpbHRlcnNBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTM6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEZpbHRlcnNcU3RvcmVGaWx0ZXJzQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjExOiJhcGkvZmlsdGVycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czo5OiJhZGRGaWx0ZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxMjoiL2FwaS9maWx0ZXJzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjE5OiIjXi9hcGkvZmlsdGVycyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMjoiL2FwaS9maWx0ZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE0OiJhcGkvY2F0ZWdvcmllcyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTQ6ImFwaS9jYXRlZ29yaWVzIjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDYXRlZ29yaWVzXFN0b3JlQ2F0ZWdvcnlBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTc6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcU3RvcmVDYXRlZ29yeUFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxNDoiYXBpL2NhdGVnb3JpZXMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTM6InN0b3JlQ2F0ZWdvcnkiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNToiL2FwaS9jYXRlZ29yaWVzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjIyOiIjXi9hcGkvY2F0ZWdvcmllcyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNToiL2FwaS9jYXRlZ29yaWVzIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjI0OiJhcGkvcGF5bWVudHMvbWVyY2Fkb3BhZ28iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjI0OiJhcGkvcGF5bWVudHMvbWVyY2Fkb3BhZ28iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjM6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFBheW1lbnRzXE1lcmNhZG9QYWdvRXhlY3V0ZUBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUGF5bWVudHNcTWVyY2Fkb1BhZ29FeGVjdXRlIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEyOiJhcGkvcGF5bWVudHMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTg6InBheW1lbnRNZXJjYWRvUGFnbyI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjI1OiIvYXBpL3BheW1lbnRzL21lcmNhZG9wYWdvIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjMyOiIjXi9hcGkvcGF5bWVudHMvbWVyY2Fkb3BhZ28kI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MjU6Ii9hcGkvcGF5bWVudHMvbWVyY2Fkb3BhZ28iO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTc6ImFwaS9ub3RpZmljYXRpb25zIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNzoiYXBpL25vdGlmaWNhdGlvbnMiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NzE6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXE5vdGlmaWNhdGlvbnNcQ2hlY2tOb3RpZmljYXRpb25Vc2VyQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjYyOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xOb3RpZmljYXRpb25zXENoZWNrTm90aWZpY2F0aW9uVXNlciI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxNzoiYXBpL25vdGlmaWNhdGlvbnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MjE6ImNoZWNrTm90aWZpY2F0aW9uVXNlciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE4OiIvYXBpL25vdGlmaWNhdGlvbnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjU6IiNeL2FwaS9ub3RpZmljYXRpb25zJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE4OiIvYXBpL25vdGlmaWNhdGlvbnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fX1zOjM6IlBVVCI7YTo1OntzOjE2OiJkb2NzL3tqc29uRmlsZT99IjtyOjM3O3M6MTg6ImFwaS9jdXN0b21lcnMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTg6ImFwaS9jdXN0b21lcnMve2lkfSI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjM6IlBVVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcVXBkYXRlQ3VzdG9tZXJBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTc6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xVcGRhdGVDdXN0b21lckFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMzoiYXBpL2N1c3RvbWVycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNDoidXBkYXRlQ3VzdG9tZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTQ6Ii9hcGkvY3VzdG9tZXJzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM2OiIjXi9hcGkvY3VzdG9tZXJzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9jdXN0b21lcnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE3OiJhcGkvcHJvZHVjdHMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTc6ImFwaS9wcm9kdWN0cy97aWR9IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6MzoiUFVUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFVwZGF0ZVByb2R1Y3RBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFVwZGF0ZVByb2R1Y3RBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTI6ImFwaS9wcm9kdWN0cyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMzoidXBkYXRlUHJvZHVjdCI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMzoiL2FwaS9wcm9kdWN0cyI7czoxMDoicGF0aF9yZWdleCI7czozNToiI14vYXBpL3Byb2R1Y3RzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMzoiL2FwaS9wcm9kdWN0cyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTY6ImFwaS9maWx0ZXJzL3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE2OiJhcGkvZmlsdGVycy97aWR9IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6MzoiUFVUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjM6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEZpbHRlcnNcVXBkYXRlRmlsdGVyc0FjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xVcGRhdGVGaWx0ZXJzQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjExOiJhcGkvZmlsdGVycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMjoidXBkYXRlRmlsdGVyIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjEyOiIvYXBpL2ZpbHRlcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MzQ6IiNeL2FwaS9maWx0ZXJzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMjoiL2FwaS9maWx0ZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxOToiYXBpL2NhdGVnb3JpZXMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTk6ImFwaS9jYXRlZ29yaWVzL3tpZH0iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czozOiJQVVQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2NzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xVcGRhdGVDYXRlZ29yeUFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1ODoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xVcGRhdGVDYXRlZ29yeUFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxNDoiYXBpL2NhdGVnb3JpZXMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTQ6InVwZGF0ZUNhdGVnb3J5Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE1OiIvYXBpL2NhdGVnb3JpZXMiO3M6MTA6InBhdGhfcmVnZXgiO3M6Mzc6IiNeL2FwaS9jYXRlZ29yaWVzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNToiL2FwaS9jYXRlZ29yaWVzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19fXM6NToiUEFUQ0giO2E6MTp7czoxNjoiZG9jcy97anNvbkZpbGU/fSI7cjozNzt9czo2OiJERUxFVEUiO2E6NDp7czoxNjoiZG9jcy97anNvbkZpbGU/fSI7cjozNztzOjE3OiJhcGkvcHJvZHVjdHMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTc6ImFwaS9wcm9kdWN0cy97aWR9IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NjoiREVMRVRFIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXERlc3Ryb3lQcm9kdWN0QWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xEZXN0cm95UHJvZHVjdEFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMjoiYXBpL3Byb2R1Y3RzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE0OiJkZXN0cm95UHJvZHVjdCI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMzoiL2FwaS9wcm9kdWN0cyI7czoxMDoicGF0aF9yZWdleCI7czozNToiI14vYXBpL3Byb2R1Y3RzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMzoiL2FwaS9wcm9kdWN0cyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTY6ImFwaS9maWx0ZXJzL3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE2OiJhcGkvZmlsdGVycy97aWR9IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NjoiREVMRVRFIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjM6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEZpbHRlcnNcRGVzdHJveUZpbHRlckFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xEZXN0cm95RmlsdGVyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjExOiJhcGkvZmlsdGVycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMzoiZGVzdHJveUZpbHRlciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMjoiL2FwaS9maWx0ZXJzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM0OiIjXi9hcGkvZmlsdGVycy8oP1A8aWQ+W14vXSsrKSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToyOntpOjA7YTo1OntpOjA7czo4OiJ2YXJpYWJsZSI7aToxO3M6MToiLyI7aToyO3M6NjoiW14vXSsrIjtpOjM7czoyOiJpZCI7aTo0O2I6MTt9aToxO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTI6Ii9hcGkvZmlsdGVycyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTk6ImFwaS9jYXRlZ29yaWVzL3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE5OiJhcGkvY2F0ZWdvcmllcy97aWR9IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NjoiREVMRVRFIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6Njg6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcRGVzdHJveUNhdGVnb3J5QWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU5OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDYXRlZ29yaWVzXERlc3Ryb3lDYXRlZ29yeUFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxNDoiYXBpL2NhdGVnb3JpZXMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTU6ImRlc3Ryb3lDYXRlZ29yeSI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxNToiL2FwaS9jYXRlZ29yaWVzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM3OiIjXi9hcGkvY2F0ZWdvcmllcy8oP1A8aWQ+W14vXSsrKSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToyOntpOjA7YTo1OntpOjA7czo4OiJ2YXJpYWJsZSI7aToxO3M6MToiLyI7aToyO3M6NjoiW14vXSsrIjtpOjM7czoyOiJpZCI7aTo0O2I6MTt9aToxO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTU6Ii9hcGkvY2F0ZWdvcmllcyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fX1zOjc6Ik9QVElPTlMiO2E6MTp7czoxNjoiZG9jcy97anNvbkZpbGU/fSI7cjozNzt9fXM6MTI6IgAqAGFsbFJvdXRlcyI7YTo0MDp7czoyMToiSEVBRGFwaS9kb2N1bWVudGF0aW9uIjtyOjQ7czoyMzoiT1BUSU9OU2RvY3Mve2pzb25GaWxlP30iO3I6Mzc7czoyMjoiSEVBRGRvY3MvYXNzZXQve2Fzc2V0fSI7cjo4MztzOjIzOiJIRUFEYXBpL29hdXRoMi1jYWxsYmFjayI7cjoxMjQ7czoxODoiSEVBRGFwaS9zZW5kX2VtYWlsIjtyOjE1NztzOjIyOiJQT1NUYXBpL3VzZXJzL3JlY292ZXJ5IjtyOjY5OTtzOjIwOiJQT1NUYXBpL3VzZXJzL2ZvcmdvdCI7cjo3MzI7czoyNToiSEVBRGFwaS91c2Vycy97aWR9L2VuYWJsZSI7cjoxOTA7czoyNjoiSEVBRGFwaS91c2Vycy97aWR9L2Rpc2FibGUiO3I6MjM1O3M6MTg6IkhFQURhcGkvdXNlcnMve2lkfSI7cjoyODA7czoxODoiUE9TVGFwaS9hdXRoL2xvZ2luIjtyOjc2NTtzOjI0OiJQT1NUYXBpL2F1dGgvcmVuZXctdG9rZW4iO3I6Nzk4O3M6MTk6IlBPU1RhcGkvYXV0aC9zaWdudXAiO3I6ODMxO3M6Mjg6IlBPU1RhcGkvYXV0aC9jaGFuZ2UtcGFzc3dvcmQiO3I6ODY0O3M6MTc6IlBPU1RhcGkvZW1wbG95ZWVzIjtyOjg5NztzOjE3OiJIRUFEYXBpL2VtcGxveWVlcyI7cjozMjI7czoxNzoiUE9TVGFwaS9jdXN0b21lcnMiO3I6OTMwO3M6MjE6IlBVVGFwaS9jdXN0b21lcnMve2lkfSI7cjoxMjA0O3M6MTc6IkhFQURhcGkvY3VzdG9tZXJzIjtyOjM1NjtzOjE0OiJQT1NUYXBpL2FkbWlucyI7cjo5NjM7czoyMDoiUFVUYXBpL3Byb2R1Y3RzL3tpZH0iO3I6MTI0NTtzOjIzOiJIRUFEYXBpL3Byb2R1Y3RzL3t1dWlkfSI7cjozOTA7czoyMzoiREVMRVRFYXBpL3Byb2R1Y3RzL3tpZH0iO3I6MTM3MjtzOjE2OiJQT1NUYXBpL3Byb2R1Y3RzIjtyOjk5NjtzOjE0OiJIRUFEYXBpL3NlYXJjaCI7cjo0MzI7czoxOToiSEVBRGFwaS9zZWFyY2gvaG9tZSI7cjo0NjY7czoyMjoiUE9TVGFwaS9pbnZlbnRvcnkve2lkfSI7cjoxMDI5O3M6MTc6IkhFQURhcGkvaW52ZW50b3J5IjtyOjUwMDtzOjIyOiJIRUFEYXBpL2ludmVudG9yeS97aWR9IjtyOjUzNDtzOjE1OiJIRUFEYXBpL2ZpbHRlcnMiO3I6NTc2O3M6MTU6IlBPU1RhcGkvZmlsdGVycyI7cjoxMDcwO3M6MTk6IlBVVGFwaS9maWx0ZXJzL3tpZH0iO3I6MTI4NjtzOjIyOiJERUxFVEVhcGkvZmlsdGVycy97aWR9IjtyOjE0MTM7czoxODoiUE9TVGFwaS9jYXRlZ29yaWVzIjtyOjExMDM7czoyMjoiUFVUYXBpL2NhdGVnb3JpZXMve2lkfSI7cjoxMzI3O3M6MTg6IkhFQURhcGkvY2F0ZWdvcmllcyI7cjo2MTA7czoyNToiREVMRVRFYXBpL2NhdGVnb3JpZXMve2lkfSI7cjoxNDU0O3M6Mjg6IlBPU1RhcGkvcGF5bWVudHMvbWVyY2Fkb3BhZ28iO3I6MTEzNjtzOjIxOiJQT1NUYXBpL25vdGlmaWNhdGlvbnMiO3I6MTE2OTtzOjE0OiJIRUFEYXBpL29yZGVycyI7cjo2NDQ7fXM6MTE6IgAqAG5hbWVMaXN0IjthOjM4OntzOjE0OiJsNS1zd2FnZ2VyLmFwaSI7cjo0O3M6MTU6Imw1LXN3YWdnZXIuZG9jcyI7cjozNztzOjE2OiJsNS1zd2FnZ2VyLmFzc2V0IjtyOjgzO3M6MjY6Imw1LXN3YWdnZXIub2F1dGgyX2NhbGxiYWNrIjtyOjEyNDtzOjE2OiJyZWNvdmVyeVBhc3N3b3JkIjtyOjY5OTtzOjI2OiJjaGFuZ2VQYXNzd29yZEZyb21SZWNvdmVyeSI7cjo3MzI7czoxMDoiZW5hYmxlVXNlciI7cjoxOTA7czoxMToiZGlzYWJsZVVzZXIiO3I6MjM1O3M6MTE6InNob3dPbmVVc2VyIjtyOjI4MDtzOjU6ImxvZ2luIjtyOjc2NTtzOjExOiJyZW5ldy10b2tlbiI7cjo3OTg7czoxNzoiY3JlYXRlV2ViQ3VzdG9tZXIiO3I6ODMxO3M6MTU6ImNoYW5nZS1wYXNzd29yZCI7cjo4NjQ7czoxNDoiY3JlYXRlRW1wbG95ZWUiO3I6ODk3O3M6MTI6Imxpc3RFbXBsb3llZSI7cjozMjI7czoxNDoiY3JlYXRlQ3VzdG9tZXIiO3I6OTMwO3M6MTQ6InVwZGF0ZUN1c3RvbWVyIjtyOjEyMDQ7czoxMzoibGlzdEN1c3RvbWVycyI7cjozNTY7czoxMToiY3JlYXRlQWRtaW4iO3I6OTYzO3M6MTM6InVwZGF0ZVByb2R1Y3QiO3I6MTI0NTtzOjExOiJmaW5kUHJvZHVjdCI7cjozOTA7czoxNDoiZGVzdHJveVByb2R1Y3QiO3I6MTM3MjtzOjEzOiJjcmVhdGVQcm9kdWN0IjtyOjk5NjtzOjE0OiJzZWFyY2hQcm9kdWN0cyI7cjo0NjY7czoyMjoidXBkYXRlSW52ZW50b3J5UHJvZHVjdCI7cjoxMDI5O3M6MTg6ImluZGV4UHJvZHVjdHNTdG9jayI7cjo1MDA7czoxNzoiZmluZFByb2R1Y3RzU3RvY2siO3I6NTM0O3M6MTI6ImluZGV4RmlsdGVycyI7cjo1NzY7czo5OiJhZGRGaWx0ZXIiO3I6MTA3MDtzOjEyOiJ1cGRhdGVGaWx0ZXIiO3I6MTI4NjtzOjEzOiJkZXN0cm95RmlsdGVyIjtyOjE0MTM7czoxMzoic3RvcmVDYXRlZ29yeSI7cjoxMTAzO3M6MTQ6InVwZGF0ZUNhdGVnb3J5IjtyOjEzMjc7czoxMzoiaW5kZXhDYXRlZ29yeSI7cjo2MTA7czoxNToiZGVzdHJveUNhdGVnb3J5IjtyOjE0NTQ7czoxODoicGF5bWVudE1lcmNhZG9QYWdvIjtyOjExMzY7czoyMToiY2hlY2tOb3RpZmljYXRpb25Vc2VyIjtyOjExNjk7czo5OiJnZXRPcmRlcnMiO3I6NjQ0O31zOjEzOiIAKgBhY3Rpb25MaXN0IjthOjQwOntzOjQ4OiJMNVN3YWdnZXJcSHR0cFxDb250cm9sbGVyc1xTd2FnZ2VyQ29udHJvbGxlckBhcGkiO3I6NDtzOjQ5OiJMNVN3YWdnZXJcSHR0cFxDb250cm9sbGVyc1xTd2FnZ2VyQ29udHJvbGxlckBkb2NzIjtyOjM3O3M6NTU6Ikw1U3dhZ2dlclxIdHRwXENvbnRyb2xsZXJzXFN3YWdnZXJBc3NldENvbnRyb2xsZXJAaW5kZXgiO3I6ODM7czo1OToiTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAb2F1dGgyQ2FsbGJhY2siO3I6MTI0O3M6MzU6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU2VuZEVtYWlsIjtyOjE1NztzOjU0OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXFJlY292ZXJ5UGFzc3dvcmRBY3Rpb24iO3I6Njk5O3M6NjQ6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcQ2hhbmdlUGFzc3dvcmRGcm9tUmVjb3ZlcnlBY3Rpb24iO3I6NzMyO3M6NDg6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcRW5hYmxlVXNlckFjdGlvbiI7cjoxOTA7czo0OToiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xEaXNhYmxlVXNlckFjdGlvbiI7cjoyMzU7czo0NjoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xTaG93VXNlckFjdGlvbiI7cjoyODA7czo0MjoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xBdXRoXExvZ2luQWN0aW9uIjtyOjc2NTtzOjQ3OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEF1dGhcUmVuZXdUb2tlbkFjdGlvbiI7cjo3OTg7czo1ODoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcU3RvcmVXZWJDdXN0b21lckFjdGlvbiI7cjo4MzE7czo1MToiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xBdXRoXENoYW5nZVBhc3N3b3JkQWN0aW9uIjtyOjg2NDtzOjU1OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xTdG9yZUVtcGxveWVlQWN0aW9uIjtyOjg5NztzOjU0OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xGaW5kRW1wbG95ZWVBY3Rpb24iO3I6MzIyO3M6NTU6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ3VzdG9tZXJzXFN0b3JlQ3VzdG9tZXJBY3Rpb24iO3I6OTMwO3M6NTY6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ3VzdG9tZXJzXFVwZGF0ZUN1c3RvbWVyQWN0aW9uIjtyOjEyMDQ7czo1NDoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcRmluZEN1c3RvbWVyQWN0aW9uIjtyOjM1NjtzOjQ5OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEFkbWluc1xTdG9yZUFkbWluQWN0aW9uIjtyOjk2MztzOjU0OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFVwZGF0ZVByb2R1Y3RBY3Rpb24iO3I6MTI0NTtzOjUyOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXEZpbmRQcm9kdWN0QWN0aW9uIjtyOjM5MDtzOjU1OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXERlc3Ryb3lQcm9kdWN0QWN0aW9uIjtyOjEzNzI7czo1MzoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xTdG9yZVByb2R1Y3RBY3Rpb24iO3I6OTk2O3M6NTU6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcU2VhcmNoUHJvZHVjdHNBY3Rpb24iO3I6NDMyO3M6NjI6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcU2VhcmNoUHJvZHVjdHNGb3JIb21lQWN0aW9uIjtyOjQ2NjtzOjUwOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFVwZGF0ZUludmVudG9yeSI7cjoxMDI5O3M6NDk6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcSW5kZXhQcm9kdWN0U3RvY2siO3I6NTAwO3M6NDg6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcRmluZFByb2R1Y3RTdG9jayI7cjo1MzQ7czo1MjoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXEluZGV4RmlsdGVyc0FjdGlvbiI7cjo1NzY7czo1MjoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXFN0b3JlRmlsdGVyc0FjdGlvbiI7cjoxMDcwO3M6NTM6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xVcGRhdGVGaWx0ZXJzQWN0aW9uIjtyOjEyODY7czo1MzoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXERlc3Ryb3lGaWx0ZXJBY3Rpb24iO3I6MTQxMztzOjU2OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcU3RvcmVDYXRlZ29yeUFjdGlvbiI7cjoxMTAzO3M6NTc6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xVcGRhdGVDYXRlZ29yeUFjdGlvbiI7cjoxMzI3O3M6NTY6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xJbmRleENhdGVnb3J5QWN0aW9uIjtyOjYxMDtzOjU4OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcRGVzdHJveUNhdGVnb3J5QWN0aW9uIjtyOjE0NTQ7czo1MzoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQYXltZW50c1xNZXJjYWRvUGFnb0V4ZWN1dGUiO3I6MTEzNjtzOjYxOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXE5vdGlmaWNhdGlvbnNcQ2hlY2tOb3RpZmljYXRpb25Vc2VyIjtyOjExNjk7czo1MDoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xPcmRlcnNcSW5kZXhPcmRlcnNBY3Rpb24iO3I6NjQ0O319')) ); diff --git a/domain/Entities/Customer.php b/domain/Entities/Customer.php index 68a9e90..cfd175c 100644 --- a/domain/Entities/Customer.php +++ b/domain/Entities/Customer.php @@ -5,6 +5,7 @@ use DateTime; +use Ramsey\Uuid\Uuid; class Customer { @@ -85,7 +86,7 @@ class Customer public function __construct() { - + $this->uuid = Uuid::uuid4(); } public function getId(): int diff --git a/infrastructure/Persistence/Repositories/UserRepository.php b/infrastructure/Persistence/Repositories/UserRepository.php index 99ee8f6..c244f59 100644 --- a/infrastructure/Persistence/Repositories/UserRepository.php +++ b/infrastructure/Persistence/Repositories/UserRepository.php @@ -11,6 +11,7 @@ use Doctrine\ORM\NoResultException; use Doctrine\ORM\OptimisticLockException; use Doctrine\ORM\ORMException; +use Doctrine\ORM\Tools\Pagination\Paginator; use Domain\Entities\User; use Domain\Interfaces\Repositories\UserRepositoryInterface; use Doctrine\ORM\Mapping\ClassMetadata; @@ -132,10 +133,33 @@ public function findOneByEmployeeId(int $employeeId): ?User public function findEmployees($page, $size) { - $dqlQuery = $this->createQueryBuilder('u'); - $dqlQuery->where('NOT u.employee IS null'); - $dqlQuery->setFirstResult($page); - $dqlQuery->setMaxResults($size); - return $dqlQuery->getQuery()->getArrayResult(); + // get entity manager + $em = $this->getEntityManager(); + + // get the user repository + $employees = $em->getRepository(User::class); + + // build the query for the doctrine paginator + $query = $employees->createQueryBuilder('u') + ->where('NOT u.employee IS null') + //->orderBy('u.id', 'DESC') + ->getQuery(); + + // load doctrine Paginator + $paginator = new Paginator($query); + + // now get one page's items: + $paginator + ->getQuery() + ->setFirstResult($size * ($page-1)) // set the offset + ->setMaxResults($size); // set the limit + + $productList = []; + + foreach ($paginator as $item) { + array_push($productList, $item); + } + + return $productList; } } diff --git a/presentation/Http/Actions/Employees/FindOneEmployeeAction.php b/presentation/Http/Actions/Employees/FindOneEmployeeAction.php new file mode 100644 index 0000000..636dac6 --- /dev/null +++ b/presentation/Http/Actions/Employees/FindOneEmployeeAction.php @@ -0,0 +1,48 @@ +adapter = $adapter; + $this->queryBus = $queryBus; + $this->presenter = $presenter; + } + + /** + * @param Request $request + * @return JsonResponse + * @throws \App\Exceptions\InvalidBodyException + */ + public function __invoke(Request $request) + { + $query = $this->adapter->from($request); + + $result = $this->queryBus->handle($query); + + return new JsonResponse([ + 'data' => $this->presenter->fromResult($result)->getData(), + ], HttpCodes::OK); + } +} diff --git a/presentation/Http/Actions/Orders/IndexOrdersAction.php b/presentation/Http/Actions/Orders/IndexOrdersAction.php new file mode 100644 index 0000000..ada8aa2 --- /dev/null +++ b/presentation/Http/Actions/Orders/IndexOrdersAction.php @@ -0,0 +1,23 @@ + [ + [ + 'name' => 'azucar', + 'price' => '20' + ] + ] + ]); + } +} diff --git a/presentation/Http/Adapters/Employees/FindOneEmployeeAdapter.php b/presentation/Http/Adapters/Employees/FindOneEmployeeAdapter.php new file mode 100644 index 0000000..b659e6e --- /dev/null +++ b/presentation/Http/Adapters/Employees/FindOneEmployeeAdapter.php @@ -0,0 +1,43 @@ +validatorService = $validatorService; + $this->idSchema = $idSchema; + } + + /** + * @param Request $request + * @return FindOneEmployeeQuery + * @throws InvalidBodyException + */ + public function from(Request $request) { + $this->validatorService->make([$request->route('id')], $this->idSchema->getRule()); + + if(!$this->validatorService->isValid()) { + throw new InvalidBodyException($this->validatorService->getErrors()); + } + + return new FindOneEmployeeQuery( + $request->route('id'), + ); + } +} diff --git a/presentation/Http/Presenters/Employee/FindEmployeePresenter.php b/presentation/Http/Presenters/Employee/FindEmployeePresenter.php index abaf037..11c01b1 100644 --- a/presentation/Http/Presenters/Employee/FindEmployeePresenter.php +++ b/presentation/Http/Presenters/Employee/FindEmployeePresenter.php @@ -20,7 +20,14 @@ public function getData(): array { $employees = $this->result->getEmployees(); foreach ($employees as $employee) { - array_push($result, $employee); + //dd($employee); + array_push($result, [ + 'id' => $employee->getId(), + 'name' => $employee->getName(), + 'surname' => $employee->getSurname(), + 'email' => $employee->getEmail(), + 'roles' => $employee->getEmployee()->getRole(), + ]); } return $result; diff --git a/presentation/Http/Presenters/Employee/FindOneEmployeePresenter.php b/presentation/Http/Presenters/Employee/FindOneEmployeePresenter.php new file mode 100644 index 0000000..0becdcd --- /dev/null +++ b/presentation/Http/Presenters/Employee/FindOneEmployeePresenter.php @@ -0,0 +1,28 @@ +result = $result; + return $this; + } + + public function getData(): array { + $employee = $this->result->getEmployee(); + return [ + 'id' => $employee->getId(), + 'name' => $employee->getName(), + 'surname' => $employee->getSurname(), + 'email' => $employee->getEmail(), + 'roles' => $employee->getEmployee()->getRole(), + ]; + } +} diff --git a/presentation/Http/routes/api.php b/presentation/Http/routes/api.php index 0efdd77..1bccf53 100644 --- a/presentation/Http/routes/api.php +++ b/presentation/Http/routes/api.php @@ -96,3 +96,7 @@ Route::prefix('notifications')->group(function() { Route::post('/', Actions\Notifications\CheckNotificationUser::class)->name('checkNotificationUser'); }); + +Route::prefix('orders')->group(function () { + Route::get('/', Actions\Orders\IndexOrdersAction::class)->name('getOrders'); +}); From d5244b95f0c74c2f52fe46c267d31c4eac9c406e Mon Sep 17 00:00:00 2001 From: cristianvena18 Date: Mon, 6 Jul 2020 21:05:38 -0300 Subject: [PATCH 13/38] added get customer by id flow --- .../Handler/Customers/FindCustomerHandler.php | 43 ++++++++++++++++++ .../Query/Customers/FindCustomerQuery.php | 21 +++++++++ .../Results/Customers/FindCustomerResult.php | 20 +++++++++ .../Actions/Customers/FindCustomerAction.php | 33 +++++++++++++- .../Customers/FindCustomerAdapter.php | 44 +++++++++++++++++++ .../Customers/FindCustomerPresenter.php | 30 +++++++++++++ 6 files changed, 189 insertions(+), 2 deletions(-) create mode 100644 application/Queries/Handler/Customers/FindCustomerHandler.php create mode 100644 application/Queries/Query/Customers/FindCustomerQuery.php create mode 100644 application/Queries/Results/Customers/FindCustomerResult.php create mode 100644 presentation/Http/Adapters/Customers/FindCustomerAdapter.php create mode 100644 presentation/Http/Presenters/Customers/FindCustomerPresenter.php diff --git a/application/Queries/Handler/Customers/FindCustomerHandler.php b/application/Queries/Handler/Customers/FindCustomerHandler.php new file mode 100644 index 0000000..50e5474 --- /dev/null +++ b/application/Queries/Handler/Customers/FindCustomerHandler.php @@ -0,0 +1,43 @@ +userService = $userService; + } + + /** + * @param FindCustomerQuery $query + * @return ResultInterface + * @throws EntityNotFoundException + */ + public function handle($query): ResultInterface + { + $customer = $this->userService->findOneByIdOrFail($query->getId()); + + if(!$customer->isCustomer()) + { + $id = $query->getId(); + throw new EntityNotFoundException("Customer with id: $id not found"); + } + + $result = new FindCustomerResult(); + $result->setCustomer($customer); + return $result; + } +} diff --git a/application/Queries/Query/Customers/FindCustomerQuery.php b/application/Queries/Query/Customers/FindCustomerQuery.php new file mode 100644 index 0000000..3ba36e3 --- /dev/null +++ b/application/Queries/Query/Customers/FindCustomerQuery.php @@ -0,0 +1,21 @@ +id = $id; + } + + public function getId() { + return $this->id; + } +} diff --git a/application/Queries/Results/Customers/FindCustomerResult.php b/application/Queries/Results/Customers/FindCustomerResult.php new file mode 100644 index 0000000..c75fadd --- /dev/null +++ b/application/Queries/Results/Customers/FindCustomerResult.php @@ -0,0 +1,20 @@ +customer = $customer; + } + + public function getCustomer() { + return $this->customer; + } +} diff --git a/presentation/Http/Actions/Customers/FindCustomerAction.php b/presentation/Http/Actions/Customers/FindCustomerAction.php index 775d15c..37e6c50 100644 --- a/presentation/Http/Actions/Customers/FindCustomerAction.php +++ b/presentation/Http/Actions/Customers/FindCustomerAction.php @@ -4,17 +4,46 @@ namespace Presentation\Http\Actions\Customers; +use App\Exceptions\InvalidBodyException; +use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; +use Infrastructure\QueryBus\QueryBusInterface; +use Presentation\Http\Adapters\Customers\FindCustomerAdapter; +use Presentation\Http\Enums\HttpCodes; +use Presentation\Http\Presenters\Customers\FindCustomerPresenter; class FindCustomerAction { - public function __construct() - { + private FindCustomerAdapter $adapter; + + private QueryBusInterface $queryBus; + + private FindCustomerPresenter $presenter; + public function __construct( + FindCustomerAdapter $adapter, + QueryBusInterface $queryBus, + FindCustomerPresenter $presenter + ) + { + $this->adapter = $adapter; + $this->queryBus = $queryBus; + $this->presenter = $presenter; } + /** + * @param Request $request + * @return JsonResponse + * @throws InvalidBodyException + */ public function __invoke(Request $request) { + $query = $this->adapter->from($request); + + $result = $this->queryBus->handle($query); + return new JsonResponse([ + 'data' => $this->presenter->fromResult($result)->getData(), + ], HttpCodes::OK); } } diff --git a/presentation/Http/Adapters/Customers/FindCustomerAdapter.php b/presentation/Http/Adapters/Customers/FindCustomerAdapter.php new file mode 100644 index 0000000..a536526 --- /dev/null +++ b/presentation/Http/Adapters/Customers/FindCustomerAdapter.php @@ -0,0 +1,44 @@ +validatorService = $validatorService; + $this->idSchema = $idSchema; + } + + /** + * @param Request $request + * @return FindCustomerQuery + * @throws InvalidBodyException + */ + public function from(Request $request) { + $this->validatorService->make([$request->route('id')], $this->idSchema->getRule()); + + if(!$this->validatorService->isValid()) { + throw new InvalidBodyException($this->validatorService->getErrors()); + } + + return new FindCustomerQuery( + $request->route('id'), + ); + } +} diff --git a/presentation/Http/Presenters/Customers/FindCustomerPresenter.php b/presentation/Http/Presenters/Customers/FindCustomerPresenter.php new file mode 100644 index 0000000..7cce778 --- /dev/null +++ b/presentation/Http/Presenters/Customers/FindCustomerPresenter.php @@ -0,0 +1,30 @@ +result = $result; + return $this; + } + + public function getData(): array { + $user = $this->result->getCustomer(); + $customer = $user->getCustomer(); + + //TODO: agregar campos que faltan + return [ + 'id' => $user->getId(), + 'name' => $user->getName(), + 'surname' => $user->getSurname(), + 'email' => $user->getEmail(), + ]; + } +} From 862f4972ca85aeb1a5fde98880cfca86c1862989 Mon Sep 17 00:00:00 2001 From: cristianvena18 Date: Tue, 7 Jul 2020 13:23:44 -0300 Subject: [PATCH 14/38] finalizated find customer endpoint --- bootstrap/cache/routes.php | 2 +- domain/Entities/Customer.php | 30 ++++++++-------- .../Customers/FindCustomerAdapter.php | 2 +- .../Customers/FindCustomerPresenter.php | 13 +++++++ presentation/Http/routes/api.php | 3 +- .../proxies/__CG__DomainEntitiesCustomer.php | 36 +++++++++---------- 6 files changed, 50 insertions(+), 36 deletions(-) diff --git a/bootstrap/cache/routes.php b/bootstrap/cache/routes.php index 6b47c38..ccc5a04 100644 --- a/bootstrap/cache/routes.php +++ b/bootstrap/cache/routes.php @@ -12,5 +12,5 @@ */ app('router')->setRoutes( - unserialize(base64_decode('TzozNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlQ29sbGVjdGlvbiI6NDp7czo5OiIAKgByb3V0ZXMiO2E6Nzp7czozOiJHRVQiO2E6MTg6e3M6MTc6ImFwaS9kb2N1bWVudGF0aW9uIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNzoiYXBpL2RvY3VtZW50YXRpb24iO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjI6ImFzIjtzOjE0OiJsNS1zd2FnZ2VyLmFwaSI7czoxMDoibWlkZGxld2FyZSI7YTowOnt9czo0OiJ1c2VzIjtzOjQ5OiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAYXBpIjtzOjEwOiJjb250cm9sbGVyIjtzOjQ5OiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAYXBpIjtzOjk6Im5hbWVzcGFjZSI7czo5OiJMNVN3YWdnZXIiO3M6NjoicHJlZml4IjtOO3M6NToid2hlcmUiO2E6MDp7fX1zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxODoiL2FwaS9kb2N1bWVudGF0aW9uIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjI1OiIjXi9hcGkvZG9jdW1lbnRhdGlvbiQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxODoiL2FwaS9kb2N1bWVudGF0aW9uIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE2OiJkb2NzL3tqc29uRmlsZT99IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNjoiZG9jcy97anNvbkZpbGU/fSI7czo3OiJtZXRob2RzIjthOjc6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7aToyO3M6NDoiUE9TVCI7aTozO3M6MzoiUFVUIjtpOjQ7czo1OiJQQVRDSCI7aTo1O3M6NjoiREVMRVRFIjtpOjY7czo3OiJPUFRJT05TIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoyOiJhcyI7czoxNToibDUtc3dhZ2dlci5kb2NzIjtzOjEwOiJtaWRkbGV3YXJlIjthOjA6e31zOjQ6InVzZXMiO3M6NTA6IlxMNVN3YWdnZXJcSHR0cFxDb250cm9sbGVyc1xTd2FnZ2VyQ29udHJvbGxlckBkb2NzIjtzOjEwOiJjb250cm9sbGVyIjtzOjUwOiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAZG9jcyI7czo5OiJuYW1lc3BhY2UiO3M6OToiTDVTd2FnZ2VyIjtzOjY6InByZWZpeCI7TjtzOjU6IndoZXJlIjthOjA6e319czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czo4OiJqc29uRmlsZSI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjU6Ii9kb2NzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM4OiIjXi9kb2NzKD86Lyg/UDxqc29uRmlsZT5bXi9dKyspKT8kI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6ODoianNvbkZpbGUiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjU6Ii9kb2NzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjg6Impzb25GaWxlIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxODoiZG9jcy9hc3NldC97YXNzZXR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxODoiZG9jcy9hc3NldC97YXNzZXR9IjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoyOiJhcyI7czoxNjoibDUtc3dhZ2dlci5hc3NldCI7czoxMDoibWlkZGxld2FyZSI7YTowOnt9czo0OiJ1c2VzIjtzOjU2OiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckFzc2V0Q29udHJvbGxlckBpbmRleCI7czoxMDoiY29udHJvbGxlciI7czo1NjoiXEw1U3dhZ2dlclxIdHRwXENvbnRyb2xsZXJzXFN3YWdnZXJBc3NldENvbnRyb2xsZXJAaW5kZXgiO3M6OToibmFtZXNwYWNlIjtzOjk6Ikw1U3dhZ2dlciI7czo2OiJwcmVmaXgiO047czo1OiJ3aGVyZSI7YTowOnt9fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6NToiYXNzZXQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMToiL2RvY3MvYXNzZXQiO3M6MTA6InBhdGhfcmVnZXgiO3M6MzY6IiNeL2RvY3MvYXNzZXQvKD9QPGFzc2V0PlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6NToiYXNzZXQiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjExOiIvZG9jcy9hc3NldCI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czo1OiJhc3NldCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTk6ImFwaS9vYXV0aDItY2FsbGJhY2siO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE5OiJhcGkvb2F1dGgyLWNhbGxiYWNrIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoyOiJhcyI7czoyNjoibDUtc3dhZ2dlci5vYXV0aDJfY2FsbGJhY2siO3M6MTA6Im1pZGRsZXdhcmUiO2E6MDp7fXM6NDoidXNlcyI7czo2MDoiXEw1U3dhZ2dlclxIdHRwXENvbnRyb2xsZXJzXFN3YWdnZXJDb250cm9sbGVyQG9hdXRoMkNhbGxiYWNrIjtzOjEwOiJjb250cm9sbGVyIjtzOjYwOiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAb2F1dGgyQ2FsbGJhY2siO3M6OToibmFtZXNwYWNlIjtzOjk6Ikw1U3dhZ2dlciI7czo2OiJwcmVmaXgiO047czo1OiJ3aGVyZSI7YTowOnt9fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjIwOiIvYXBpL29hdXRoMi1jYWxsYmFjayI7czoxMDoicGF0aF9yZWdleCI7czoyODoiI14vYXBpL29hdXRoMlwtY2FsbGJhY2skI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MjA6Ii9hcGkvb2F1dGgyLWNhbGxiYWNrIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE0OiJhcGkvc2VuZF9lbWFpbCI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTQ6ImFwaS9zZW5kX2VtYWlsIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Njp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NDU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFNlbmRFbWFpbEBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czozNjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU2VuZEVtYWlsIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjM6ImFwaSI7czo1OiJ3aGVyZSI7YTowOnt9fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE1OiIvYXBpL3NlbmRfZW1haWwiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjI6IiNeL2FwaS9zZW5kX2VtYWlsJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE1OiIvYXBpL3NlbmRfZW1haWwiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MjE6ImFwaS91c2Vycy97aWR9L2VuYWJsZSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MjE6ImFwaS91c2Vycy97aWR9L2VuYWJsZSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjU4OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xFbmFibGVVc2VyQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjQ5OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xFbmFibGVVc2VyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjk6ImFwaS91c2VycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMDoiZW5hYmxlVXNlciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMDoiL2FwaS91c2VycyI7czoxMDoicGF0aF9yZWdleCI7czozOToiI14vYXBpL3VzZXJzLyg/UDxpZD5bXi9dKyspL2VuYWJsZSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YTozOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czo3OiIvZW5hYmxlIjt9aToxO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MjthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEwOiIvYXBpL3VzZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoyMjoiYXBpL3VzZXJzL3tpZH0vZGlzYWJsZSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MjI6ImFwaS91c2Vycy97aWR9L2Rpc2FibGUiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1OToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcRGlzYWJsZVVzZXJBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTA6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXERpc2FibGVVc2VyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjk6ImFwaS91c2VycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMToiZGlzYWJsZVVzZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTA6Ii9hcGkvdXNlcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6NDA6IiNeL2FwaS91c2Vycy8oP1A8aWQ+W14vXSsrKS9kaXNhYmxlJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjM6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjg6Ii9kaXNhYmxlIjt9aToxO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MjthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEwOiIvYXBpL3VzZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNDoiYXBpL3VzZXJzL3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE0OiJhcGkvdXNlcnMve2lkfSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjU2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xTaG93VXNlckFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo0NzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcU2hvd1VzZXJBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6OToiYXBpL3VzZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjExOiJzaG93T25lVXNlciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMDoiL2FwaS91c2VycyI7czoxMDoicGF0aF9yZWdleCI7czozMjoiI14vYXBpL3VzZXJzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMDoiL2FwaS91c2VycyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTM6ImFwaS9lbXBsb3llZXMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEzOiJhcGkvZW1wbG95ZWVzIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xGaW5kRW1wbG95ZWVBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xGaW5kRW1wbG95ZWVBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTM6ImFwaS9lbXBsb3llZXMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTI6Imxpc3RFbXBsb3llZSI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE0OiIvYXBpL2VtcGxveWVlcyI7czoxMDoicGF0aF9yZWdleCI7czoyMToiI14vYXBpL2VtcGxveWVlcyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9lbXBsb3llZXMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTM6ImFwaS9jdXN0b21lcnMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEzOiJhcGkvY3VzdG9tZXJzIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xGaW5kQ3VzdG9tZXJBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xGaW5kQ3VzdG9tZXJBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTM6ImFwaS9jdXN0b21lcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTM6Imxpc3RDdXN0b21lcnMiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNDoiL2FwaS9jdXN0b21lcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjE6IiNeL2FwaS9jdXN0b21lcnMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTQ6Ii9hcGkvY3VzdG9tZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE5OiJhcGkvcHJvZHVjdHMve3V1aWR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxOToiYXBpL3Byb2R1Y3RzL3t1dWlkfSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjYyOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xGaW5kUHJvZHVjdEFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1MzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcRmluZFByb2R1Y3RBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTI6ImFwaS9wcm9kdWN0cyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMToiZmluZFByb2R1Y3QiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjQ6InV1aWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMzoiL2FwaS9wcm9kdWN0cyI7czoxMDoicGF0aF9yZWdleCI7czozNzoiI14vYXBpL3Byb2R1Y3RzLyg/UDx1dWlkPlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6NDoidXVpZCI7aTo0O2I6MTt9aToxO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTM6Ii9hcGkvcHJvZHVjdHMiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6NDoidXVpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTA6ImFwaS9zZWFyY2giO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEwOiJhcGkvc2VhcmNoIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFNlYXJjaFByb2R1Y3RzQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xTZWFyY2hQcm9kdWN0c0FjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMDoiYXBpL3NlYXJjaCI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNDoic2VhcmNoUHJvZHVjdHMiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxMToiL2FwaS9zZWFyY2giO3M6MTA6InBhdGhfcmVnZXgiO3M6MTg6IiNeL2FwaS9zZWFyY2gkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTE6Ii9hcGkvc2VhcmNoIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE1OiJhcGkvc2VhcmNoL2hvbWUiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE1OiJhcGkvc2VhcmNoL2hvbWUiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo3MjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcU2VhcmNoUHJvZHVjdHNGb3JIb21lQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjYzOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xTZWFyY2hQcm9kdWN0c0ZvckhvbWVBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTA6ImFwaS9zZWFyY2giO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTQ6InNlYXJjaFByb2R1Y3RzIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTY6Ii9hcGkvc2VhcmNoL2hvbWUiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjM6IiNeL2FwaS9zZWFyY2gvaG9tZSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNjoiL2FwaS9zZWFyY2gvaG9tZSI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxMzoiYXBpL2ludmVudG9yeSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTM6ImFwaS9pbnZlbnRvcnkiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1OToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcSW5kZXhQcm9kdWN0U3RvY2tAX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTA6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFN0b2NrXEluZGV4UHJvZHVjdFN0b2NrIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEzOiJhcGkvaW52ZW50b3J5IjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE4OiJpbmRleFByb2R1Y3RzU3RvY2siO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNDoiL2FwaS9pbnZlbnRvcnkiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjE6IiNeL2FwaS9pbnZlbnRvcnkkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTQ6Ii9hcGkvaW52ZW50b3J5Ijt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE4OiJhcGkvaW52ZW50b3J5L3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE4OiJhcGkvaW52ZW50b3J5L3tpZH0iO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1ODoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcRmluZFByb2R1Y3RTdG9ja0BfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo0OToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcRmluZFByb2R1Y3RTdG9jayI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMzoiYXBpL2ludmVudG9yeSI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNzoiZmluZFByb2R1Y3RzU3RvY2siO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTQ6Ii9hcGkvaW52ZW50b3J5IjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM2OiIjXi9hcGkvaW52ZW50b3J5Lyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9pbnZlbnRvcnkiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjExOiJhcGkvZmlsdGVycyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTE6ImFwaS9maWx0ZXJzIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjI6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEZpbHRlcnNcSW5kZXhGaWx0ZXJzQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjUzOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXEluZGV4RmlsdGVyc0FjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMToiYXBpL2ZpbHRlcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTI6ImluZGV4RmlsdGVycyI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjEyOiIvYXBpL2ZpbHRlcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MTk6IiNeL2FwaS9maWx0ZXJzJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEyOiIvYXBpL2ZpbHRlcnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTQ6ImFwaS9jYXRlZ29yaWVzIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNDoiYXBpL2NhdGVnb3JpZXMiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2NjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xJbmRleENhdGVnb3J5QWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU3OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDYXRlZ29yaWVzXEluZGV4Q2F0ZWdvcnlBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTQ6ImFwaS9jYXRlZ29yaWVzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjEzOiJpbmRleENhdGVnb3J5Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTU6Ii9hcGkvY2F0ZWdvcmllcyI7czoxMDoicGF0aF9yZWdleCI7czoyMjoiI14vYXBpL2NhdGVnb3JpZXMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTU6Ii9hcGkvY2F0ZWdvcmllcyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxMDoiYXBpL29yZGVycyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTA6ImFwaS9vcmRlcnMiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2MDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcT3JkZXJzXEluZGV4T3JkZXJzQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjUxOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xPcmRlcnNcSW5kZXhPcmRlcnNBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTA6ImFwaS9vcmRlcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6OToiZ2V0T3JkZXJzIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTE6Ii9hcGkvb3JkZXJzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjE4OiIjXi9hcGkvb3JkZXJzJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjExOiIvYXBpL29yZGVycyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19fXM6NDoiSEVBRCI7YToxODp7czoxNzoiYXBpL2RvY3VtZW50YXRpb24iO3I6NDtzOjE2OiJkb2NzL3tqc29uRmlsZT99IjtyOjM3O3M6MTg6ImRvY3MvYXNzZXQve2Fzc2V0fSI7cjo4MztzOjE5OiJhcGkvb2F1dGgyLWNhbGxiYWNrIjtyOjEyNDtzOjE0OiJhcGkvc2VuZF9lbWFpbCI7cjoxNTc7czoyMToiYXBpL3VzZXJzL3tpZH0vZW5hYmxlIjtyOjE5MDtzOjIyOiJhcGkvdXNlcnMve2lkfS9kaXNhYmxlIjtyOjIzNTtzOjE0OiJhcGkvdXNlcnMve2lkfSI7cjoyODA7czoxMzoiYXBpL2VtcGxveWVlcyI7cjozMjI7czoxMzoiYXBpL2N1c3RvbWVycyI7cjozNTY7czoxOToiYXBpL3Byb2R1Y3RzL3t1dWlkfSI7cjozOTA7czoxMDoiYXBpL3NlYXJjaCI7cjo0MzI7czoxNToiYXBpL3NlYXJjaC9ob21lIjtyOjQ2NjtzOjEzOiJhcGkvaW52ZW50b3J5IjtyOjUwMDtzOjE4OiJhcGkvaW52ZW50b3J5L3tpZH0iO3I6NTM0O3M6MTE6ImFwaS9maWx0ZXJzIjtyOjU3NjtzOjE0OiJhcGkvY2F0ZWdvcmllcyI7cjo2MTA7czoxMDoiYXBpL29yZGVycyI7cjo2NDQ7fXM6NDoiUE9TVCI7YToxNjp7czoxNjoiZG9jcy97anNvbkZpbGU/fSI7cjozNztzOjE4OiJhcGkvdXNlcnMvcmVjb3ZlcnkiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE4OiJhcGkvdXNlcnMvcmVjb3ZlcnkiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXFJlY292ZXJ5UGFzc3dvcmRBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXFJlY292ZXJ5UGFzc3dvcmRBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6OToiYXBpL3VzZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE2OiJyZWNvdmVyeVBhc3N3b3JkIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTk6Ii9hcGkvdXNlcnMvcmVjb3ZlcnkiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjY6IiNeL2FwaS91c2Vycy9yZWNvdmVyeSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxOToiL2FwaS91c2Vycy9yZWNvdmVyeSI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNjoiYXBpL3VzZXJzL2ZvcmdvdCI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTY6ImFwaS91c2Vycy9mb3Jnb3QiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NzQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXENoYW5nZVBhc3N3b3JkRnJvbVJlY292ZXJ5QWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjY1OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xDaGFuZ2VQYXNzd29yZEZyb21SZWNvdmVyeUFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czo5OiJhcGkvdXNlcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MjY6ImNoYW5nZVBhc3N3b3JkRnJvbVJlY292ZXJ5Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTc6Ii9hcGkvdXNlcnMvZm9yZ290IjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjI0OiIjXi9hcGkvdXNlcnMvZm9yZ290JCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE3OiIvYXBpL3VzZXJzL2ZvcmdvdCI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNDoiYXBpL2F1dGgvbG9naW4iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE0OiJhcGkvYXV0aC9sb2dpbiI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1MjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQXV0aFxMb2dpbkFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo0MzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQXV0aFxMb2dpbkFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czo4OiJhcGkvYXV0aCI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czo1OiJsb2dpbiI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE1OiIvYXBpL2F1dGgvbG9naW4iO3M6MTA6InBhdGhfcmVnZXgiO3M6MjI6IiNeL2FwaS9hdXRoL2xvZ2luJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE1OiIvYXBpL2F1dGgvbG9naW4iO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MjA6ImFwaS9hdXRoL3JlbmV3LXRva2VuIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoyMDoiYXBpL2F1dGgvcmVuZXctdG9rZW4iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NTc6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEF1dGhcUmVuZXdUb2tlbkFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo0ODoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQXV0aFxSZW5ld1Rva2VuQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjg6ImFwaS9hdXRoIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjExOiJyZW5ldy10b2tlbiI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjIxOiIvYXBpL2F1dGgvcmVuZXctdG9rZW4iO3M6MTA6InBhdGhfcmVnZXgiO3M6Mjk6IiNeL2FwaS9hdXRoL3JlbmV3XC10b2tlbiQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoyMToiL2FwaS9hdXRoL3JlbmV3LXRva2VuIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE1OiJhcGkvYXV0aC9zaWdudXAiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE1OiJhcGkvYXV0aC9zaWdudXAiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6Njg6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xTdG9yZVdlYkN1c3RvbWVyQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU5OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcU3RvcmVXZWJDdXN0b21lckFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czo4OiJhcGkvYXV0aCI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNzoiY3JlYXRlV2ViQ3VzdG9tZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNjoiL2FwaS9hdXRoL3NpZ251cCI7czoxMDoicGF0aF9yZWdleCI7czoyMzoiI14vYXBpL2F1dGgvc2lnbnVwJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE2OiIvYXBpL2F1dGgvc2lnbnVwIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjI0OiJhcGkvYXV0aC9jaGFuZ2UtcGFzc3dvcmQiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjI0OiJhcGkvYXV0aC9jaGFuZ2UtcGFzc3dvcmQiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjE6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEF1dGhcQ2hhbmdlUGFzc3dvcmRBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTI6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEF1dGhcQ2hhbmdlUGFzc3dvcmRBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6ODoiYXBpL2F1dGgiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTU6ImNoYW5nZS1wYXNzd29yZCI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjI1OiIvYXBpL2F1dGgvY2hhbmdlLXBhc3N3b3JkIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjMzOiIjXi9hcGkvYXV0aC9jaGFuZ2VcLXBhc3N3b3JkJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjI1OiIvYXBpL2F1dGgvY2hhbmdlLXBhc3N3b3JkIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjEzOiJhcGkvZW1wbG95ZWVzIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxMzoiYXBpL2VtcGxveWVlcyI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2NToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRW1wbG95ZWVzXFN0b3JlRW1wbG95ZWVBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTY6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xTdG9yZUVtcGxveWVlQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEzOiJhcGkvZW1wbG95ZWVzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE0OiJjcmVhdGVFbXBsb3llZSI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE0OiIvYXBpL2VtcGxveWVlcyI7czoxMDoicGF0aF9yZWdleCI7czoyMToiI14vYXBpL2VtcGxveWVlcyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9lbXBsb3llZXMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTM6ImFwaS9jdXN0b21lcnMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEzOiJhcGkvY3VzdG9tZXJzIjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY1OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcU3RvcmVDdXN0b21lckFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ3VzdG9tZXJzXFN0b3JlQ3VzdG9tZXJBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTM6ImFwaS9jdXN0b21lcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTQ6ImNyZWF0ZUN1c3RvbWVyIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTQ6Ii9hcGkvY3VzdG9tZXJzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjIxOiIjXi9hcGkvY3VzdG9tZXJzJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE0OiIvYXBpL2N1c3RvbWVycyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxMDoiYXBpL2FkbWlucyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTA6ImFwaS9hZG1pbnMiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NTk6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEFkbWluc1xTdG9yZUFkbWluQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjUwOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xBZG1pbnNcU3RvcmVBZG1pbkFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMDoiYXBpL2FkbWlucyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMToiY3JlYXRlQWRtaW4iO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxMToiL2FwaS9hZG1pbnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MTg6IiNeL2FwaS9hZG1pbnMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTE6Ii9hcGkvYWRtaW5zIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjEyOiJhcGkvcHJvZHVjdHMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEyOiJhcGkvcHJvZHVjdHMiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjM6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFN0b3JlUHJvZHVjdEFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcU3RvcmVQcm9kdWN0QWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEyOiJhcGkvcHJvZHVjdHMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTM6ImNyZWF0ZVByb2R1Y3QiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxMzoiL2FwaS9wcm9kdWN0cyI7czoxMDoicGF0aF9yZWdleCI7czoyMDoiI14vYXBpL3Byb2R1Y3RzJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEzOiIvYXBpL3Byb2R1Y3RzIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE4OiJhcGkvaW52ZW50b3J5L3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE4OiJhcGkvaW52ZW50b3J5L3tpZH0iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjA6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFVwZGF0ZUludmVudG9yeUBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1MToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcVXBkYXRlSW52ZW50b3J5IjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEzOiJhcGkvaW52ZW50b3J5IjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjIyOiJ1cGRhdGVJbnZlbnRvcnlQcm9kdWN0Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE0OiIvYXBpL2ludmVudG9yeSI7czoxMDoicGF0aF9yZWdleCI7czozNjoiI14vYXBpL2ludmVudG9yeS8oP1A8aWQ+W14vXSsrKSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToyOntpOjA7YTo1OntpOjA7czo4OiJ2YXJpYWJsZSI7aToxO3M6MToiLyI7aToyO3M6NjoiW14vXSsrIjtpOjM7czoyOiJpZCI7aTo0O2I6MTt9aToxO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTQ6Ii9hcGkvaW52ZW50b3J5Ijt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxMToiYXBpL2ZpbHRlcnMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjExOiJhcGkvZmlsdGVycyI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2MjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xTdG9yZUZpbHRlcnNBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTM6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEZpbHRlcnNcU3RvcmVGaWx0ZXJzQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjExOiJhcGkvZmlsdGVycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czo5OiJhZGRGaWx0ZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxMjoiL2FwaS9maWx0ZXJzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjE5OiIjXi9hcGkvZmlsdGVycyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMjoiL2FwaS9maWx0ZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE0OiJhcGkvY2F0ZWdvcmllcyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTQ6ImFwaS9jYXRlZ29yaWVzIjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDYXRlZ29yaWVzXFN0b3JlQ2F0ZWdvcnlBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTc6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcU3RvcmVDYXRlZ29yeUFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxNDoiYXBpL2NhdGVnb3JpZXMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTM6InN0b3JlQ2F0ZWdvcnkiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNToiL2FwaS9jYXRlZ29yaWVzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjIyOiIjXi9hcGkvY2F0ZWdvcmllcyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNToiL2FwaS9jYXRlZ29yaWVzIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjI0OiJhcGkvcGF5bWVudHMvbWVyY2Fkb3BhZ28iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjI0OiJhcGkvcGF5bWVudHMvbWVyY2Fkb3BhZ28iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjM6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFBheW1lbnRzXE1lcmNhZG9QYWdvRXhlY3V0ZUBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUGF5bWVudHNcTWVyY2Fkb1BhZ29FeGVjdXRlIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEyOiJhcGkvcGF5bWVudHMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTg6InBheW1lbnRNZXJjYWRvUGFnbyI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjI1OiIvYXBpL3BheW1lbnRzL21lcmNhZG9wYWdvIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjMyOiIjXi9hcGkvcGF5bWVudHMvbWVyY2Fkb3BhZ28kI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MjU6Ii9hcGkvcGF5bWVudHMvbWVyY2Fkb3BhZ28iO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTc6ImFwaS9ub3RpZmljYXRpb25zIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNzoiYXBpL25vdGlmaWNhdGlvbnMiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NzE6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXE5vdGlmaWNhdGlvbnNcQ2hlY2tOb3RpZmljYXRpb25Vc2VyQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjYyOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xOb3RpZmljYXRpb25zXENoZWNrTm90aWZpY2F0aW9uVXNlciI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxNzoiYXBpL25vdGlmaWNhdGlvbnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MjE6ImNoZWNrTm90aWZpY2F0aW9uVXNlciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE4OiIvYXBpL25vdGlmaWNhdGlvbnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjU6IiNeL2FwaS9ub3RpZmljYXRpb25zJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE4OiIvYXBpL25vdGlmaWNhdGlvbnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fX1zOjM6IlBVVCI7YTo1OntzOjE2OiJkb2NzL3tqc29uRmlsZT99IjtyOjM3O3M6MTg6ImFwaS9jdXN0b21lcnMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTg6ImFwaS9jdXN0b21lcnMve2lkfSI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjM6IlBVVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcVXBkYXRlQ3VzdG9tZXJBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTc6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xVcGRhdGVDdXN0b21lckFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMzoiYXBpL2N1c3RvbWVycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNDoidXBkYXRlQ3VzdG9tZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTQ6Ii9hcGkvY3VzdG9tZXJzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM2OiIjXi9hcGkvY3VzdG9tZXJzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9jdXN0b21lcnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE3OiJhcGkvcHJvZHVjdHMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTc6ImFwaS9wcm9kdWN0cy97aWR9IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6MzoiUFVUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFVwZGF0ZVByb2R1Y3RBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFVwZGF0ZVByb2R1Y3RBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTI6ImFwaS9wcm9kdWN0cyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMzoidXBkYXRlUHJvZHVjdCI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMzoiL2FwaS9wcm9kdWN0cyI7czoxMDoicGF0aF9yZWdleCI7czozNToiI14vYXBpL3Byb2R1Y3RzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMzoiL2FwaS9wcm9kdWN0cyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTY6ImFwaS9maWx0ZXJzL3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE2OiJhcGkvZmlsdGVycy97aWR9IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6MzoiUFVUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjM6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEZpbHRlcnNcVXBkYXRlRmlsdGVyc0FjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xVcGRhdGVGaWx0ZXJzQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjExOiJhcGkvZmlsdGVycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMjoidXBkYXRlRmlsdGVyIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjEyOiIvYXBpL2ZpbHRlcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MzQ6IiNeL2FwaS9maWx0ZXJzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMjoiL2FwaS9maWx0ZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxOToiYXBpL2NhdGVnb3JpZXMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTk6ImFwaS9jYXRlZ29yaWVzL3tpZH0iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czozOiJQVVQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2NzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xVcGRhdGVDYXRlZ29yeUFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1ODoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xVcGRhdGVDYXRlZ29yeUFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxNDoiYXBpL2NhdGVnb3JpZXMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTQ6InVwZGF0ZUNhdGVnb3J5Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE1OiIvYXBpL2NhdGVnb3JpZXMiO3M6MTA6InBhdGhfcmVnZXgiO3M6Mzc6IiNeL2FwaS9jYXRlZ29yaWVzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNToiL2FwaS9jYXRlZ29yaWVzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19fXM6NToiUEFUQ0giO2E6MTp7czoxNjoiZG9jcy97anNvbkZpbGU/fSI7cjozNzt9czo2OiJERUxFVEUiO2E6NDp7czoxNjoiZG9jcy97anNvbkZpbGU/fSI7cjozNztzOjE3OiJhcGkvcHJvZHVjdHMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTc6ImFwaS9wcm9kdWN0cy97aWR9IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NjoiREVMRVRFIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXERlc3Ryb3lQcm9kdWN0QWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xEZXN0cm95UHJvZHVjdEFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMjoiYXBpL3Byb2R1Y3RzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE0OiJkZXN0cm95UHJvZHVjdCI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMzoiL2FwaS9wcm9kdWN0cyI7czoxMDoicGF0aF9yZWdleCI7czozNToiI14vYXBpL3Byb2R1Y3RzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMzoiL2FwaS9wcm9kdWN0cyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTY6ImFwaS9maWx0ZXJzL3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE2OiJhcGkvZmlsdGVycy97aWR9IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NjoiREVMRVRFIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjM6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEZpbHRlcnNcRGVzdHJveUZpbHRlckFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xEZXN0cm95RmlsdGVyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjExOiJhcGkvZmlsdGVycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMzoiZGVzdHJveUZpbHRlciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMjoiL2FwaS9maWx0ZXJzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM0OiIjXi9hcGkvZmlsdGVycy8oP1A8aWQ+W14vXSsrKSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToyOntpOjA7YTo1OntpOjA7czo4OiJ2YXJpYWJsZSI7aToxO3M6MToiLyI7aToyO3M6NjoiW14vXSsrIjtpOjM7czoyOiJpZCI7aTo0O2I6MTt9aToxO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTI6Ii9hcGkvZmlsdGVycyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTk6ImFwaS9jYXRlZ29yaWVzL3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE5OiJhcGkvY2F0ZWdvcmllcy97aWR9IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NjoiREVMRVRFIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6Njg6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcRGVzdHJveUNhdGVnb3J5QWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU5OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDYXRlZ29yaWVzXERlc3Ryb3lDYXRlZ29yeUFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxNDoiYXBpL2NhdGVnb3JpZXMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTU6ImRlc3Ryb3lDYXRlZ29yeSI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxNToiL2FwaS9jYXRlZ29yaWVzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM3OiIjXi9hcGkvY2F0ZWdvcmllcy8oP1A8aWQ+W14vXSsrKSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToyOntpOjA7YTo1OntpOjA7czo4OiJ2YXJpYWJsZSI7aToxO3M6MToiLyI7aToyO3M6NjoiW14vXSsrIjtpOjM7czoyOiJpZCI7aTo0O2I6MTt9aToxO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTU6Ii9hcGkvY2F0ZWdvcmllcyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fX1zOjc6Ik9QVElPTlMiO2E6MTp7czoxNjoiZG9jcy97anNvbkZpbGU/fSI7cjozNzt9fXM6MTI6IgAqAGFsbFJvdXRlcyI7YTo0MDp7czoyMToiSEVBRGFwaS9kb2N1bWVudGF0aW9uIjtyOjQ7czoyMzoiT1BUSU9OU2RvY3Mve2pzb25GaWxlP30iO3I6Mzc7czoyMjoiSEVBRGRvY3MvYXNzZXQve2Fzc2V0fSI7cjo4MztzOjIzOiJIRUFEYXBpL29hdXRoMi1jYWxsYmFjayI7cjoxMjQ7czoxODoiSEVBRGFwaS9zZW5kX2VtYWlsIjtyOjE1NztzOjIyOiJQT1NUYXBpL3VzZXJzL3JlY292ZXJ5IjtyOjY5OTtzOjIwOiJQT1NUYXBpL3VzZXJzL2ZvcmdvdCI7cjo3MzI7czoyNToiSEVBRGFwaS91c2Vycy97aWR9L2VuYWJsZSI7cjoxOTA7czoyNjoiSEVBRGFwaS91c2Vycy97aWR9L2Rpc2FibGUiO3I6MjM1O3M6MTg6IkhFQURhcGkvdXNlcnMve2lkfSI7cjoyODA7czoxODoiUE9TVGFwaS9hdXRoL2xvZ2luIjtyOjc2NTtzOjI0OiJQT1NUYXBpL2F1dGgvcmVuZXctdG9rZW4iO3I6Nzk4O3M6MTk6IlBPU1RhcGkvYXV0aC9zaWdudXAiO3I6ODMxO3M6Mjg6IlBPU1RhcGkvYXV0aC9jaGFuZ2UtcGFzc3dvcmQiO3I6ODY0O3M6MTc6IlBPU1RhcGkvZW1wbG95ZWVzIjtyOjg5NztzOjE3OiJIRUFEYXBpL2VtcGxveWVlcyI7cjozMjI7czoxNzoiUE9TVGFwaS9jdXN0b21lcnMiO3I6OTMwO3M6MjE6IlBVVGFwaS9jdXN0b21lcnMve2lkfSI7cjoxMjA0O3M6MTc6IkhFQURhcGkvY3VzdG9tZXJzIjtyOjM1NjtzOjE0OiJQT1NUYXBpL2FkbWlucyI7cjo5NjM7czoyMDoiUFVUYXBpL3Byb2R1Y3RzL3tpZH0iO3I6MTI0NTtzOjIzOiJIRUFEYXBpL3Byb2R1Y3RzL3t1dWlkfSI7cjozOTA7czoyMzoiREVMRVRFYXBpL3Byb2R1Y3RzL3tpZH0iO3I6MTM3MjtzOjE2OiJQT1NUYXBpL3Byb2R1Y3RzIjtyOjk5NjtzOjE0OiJIRUFEYXBpL3NlYXJjaCI7cjo0MzI7czoxOToiSEVBRGFwaS9zZWFyY2gvaG9tZSI7cjo0NjY7czoyMjoiUE9TVGFwaS9pbnZlbnRvcnkve2lkfSI7cjoxMDI5O3M6MTc6IkhFQURhcGkvaW52ZW50b3J5IjtyOjUwMDtzOjIyOiJIRUFEYXBpL2ludmVudG9yeS97aWR9IjtyOjUzNDtzOjE1OiJIRUFEYXBpL2ZpbHRlcnMiO3I6NTc2O3M6MTU6IlBPU1RhcGkvZmlsdGVycyI7cjoxMDcwO3M6MTk6IlBVVGFwaS9maWx0ZXJzL3tpZH0iO3I6MTI4NjtzOjIyOiJERUxFVEVhcGkvZmlsdGVycy97aWR9IjtyOjE0MTM7czoxODoiUE9TVGFwaS9jYXRlZ29yaWVzIjtyOjExMDM7czoyMjoiUFVUYXBpL2NhdGVnb3JpZXMve2lkfSI7cjoxMzI3O3M6MTg6IkhFQURhcGkvY2F0ZWdvcmllcyI7cjo2MTA7czoyNToiREVMRVRFYXBpL2NhdGVnb3JpZXMve2lkfSI7cjoxNDU0O3M6Mjg6IlBPU1RhcGkvcGF5bWVudHMvbWVyY2Fkb3BhZ28iO3I6MTEzNjtzOjIxOiJQT1NUYXBpL25vdGlmaWNhdGlvbnMiO3I6MTE2OTtzOjE0OiJIRUFEYXBpL29yZGVycyI7cjo2NDQ7fXM6MTE6IgAqAG5hbWVMaXN0IjthOjM4OntzOjE0OiJsNS1zd2FnZ2VyLmFwaSI7cjo0O3M6MTU6Imw1LXN3YWdnZXIuZG9jcyI7cjozNztzOjE2OiJsNS1zd2FnZ2VyLmFzc2V0IjtyOjgzO3M6MjY6Imw1LXN3YWdnZXIub2F1dGgyX2NhbGxiYWNrIjtyOjEyNDtzOjE2OiJyZWNvdmVyeVBhc3N3b3JkIjtyOjY5OTtzOjI2OiJjaGFuZ2VQYXNzd29yZEZyb21SZWNvdmVyeSI7cjo3MzI7czoxMDoiZW5hYmxlVXNlciI7cjoxOTA7czoxMToiZGlzYWJsZVVzZXIiO3I6MjM1O3M6MTE6InNob3dPbmVVc2VyIjtyOjI4MDtzOjU6ImxvZ2luIjtyOjc2NTtzOjExOiJyZW5ldy10b2tlbiI7cjo3OTg7czoxNzoiY3JlYXRlV2ViQ3VzdG9tZXIiO3I6ODMxO3M6MTU6ImNoYW5nZS1wYXNzd29yZCI7cjo4NjQ7czoxNDoiY3JlYXRlRW1wbG95ZWUiO3I6ODk3O3M6MTI6Imxpc3RFbXBsb3llZSI7cjozMjI7czoxNDoiY3JlYXRlQ3VzdG9tZXIiO3I6OTMwO3M6MTQ6InVwZGF0ZUN1c3RvbWVyIjtyOjEyMDQ7czoxMzoibGlzdEN1c3RvbWVycyI7cjozNTY7czoxMToiY3JlYXRlQWRtaW4iO3I6OTYzO3M6MTM6InVwZGF0ZVByb2R1Y3QiO3I6MTI0NTtzOjExOiJmaW5kUHJvZHVjdCI7cjozOTA7czoxNDoiZGVzdHJveVByb2R1Y3QiO3I6MTM3MjtzOjEzOiJjcmVhdGVQcm9kdWN0IjtyOjk5NjtzOjE0OiJzZWFyY2hQcm9kdWN0cyI7cjo0NjY7czoyMjoidXBkYXRlSW52ZW50b3J5UHJvZHVjdCI7cjoxMDI5O3M6MTg6ImluZGV4UHJvZHVjdHNTdG9jayI7cjo1MDA7czoxNzoiZmluZFByb2R1Y3RzU3RvY2siO3I6NTM0O3M6MTI6ImluZGV4RmlsdGVycyI7cjo1NzY7czo5OiJhZGRGaWx0ZXIiO3I6MTA3MDtzOjEyOiJ1cGRhdGVGaWx0ZXIiO3I6MTI4NjtzOjEzOiJkZXN0cm95RmlsdGVyIjtyOjE0MTM7czoxMzoic3RvcmVDYXRlZ29yeSI7cjoxMTAzO3M6MTQ6InVwZGF0ZUNhdGVnb3J5IjtyOjEzMjc7czoxMzoiaW5kZXhDYXRlZ29yeSI7cjo2MTA7czoxNToiZGVzdHJveUNhdGVnb3J5IjtyOjE0NTQ7czoxODoicGF5bWVudE1lcmNhZG9QYWdvIjtyOjExMzY7czoyMToiY2hlY2tOb3RpZmljYXRpb25Vc2VyIjtyOjExNjk7czo5OiJnZXRPcmRlcnMiO3I6NjQ0O31zOjEzOiIAKgBhY3Rpb25MaXN0IjthOjQwOntzOjQ4OiJMNVN3YWdnZXJcSHR0cFxDb250cm9sbGVyc1xTd2FnZ2VyQ29udHJvbGxlckBhcGkiO3I6NDtzOjQ5OiJMNVN3YWdnZXJcSHR0cFxDb250cm9sbGVyc1xTd2FnZ2VyQ29udHJvbGxlckBkb2NzIjtyOjM3O3M6NTU6Ikw1U3dhZ2dlclxIdHRwXENvbnRyb2xsZXJzXFN3YWdnZXJBc3NldENvbnRyb2xsZXJAaW5kZXgiO3I6ODM7czo1OToiTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAb2F1dGgyQ2FsbGJhY2siO3I6MTI0O3M6MzU6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU2VuZEVtYWlsIjtyOjE1NztzOjU0OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXFJlY292ZXJ5UGFzc3dvcmRBY3Rpb24iO3I6Njk5O3M6NjQ6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcQ2hhbmdlUGFzc3dvcmRGcm9tUmVjb3ZlcnlBY3Rpb24iO3I6NzMyO3M6NDg6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcRW5hYmxlVXNlckFjdGlvbiI7cjoxOTA7czo0OToiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xEaXNhYmxlVXNlckFjdGlvbiI7cjoyMzU7czo0NjoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xTaG93VXNlckFjdGlvbiI7cjoyODA7czo0MjoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xBdXRoXExvZ2luQWN0aW9uIjtyOjc2NTtzOjQ3OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEF1dGhcUmVuZXdUb2tlbkFjdGlvbiI7cjo3OTg7czo1ODoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcU3RvcmVXZWJDdXN0b21lckFjdGlvbiI7cjo4MzE7czo1MToiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xBdXRoXENoYW5nZVBhc3N3b3JkQWN0aW9uIjtyOjg2NDtzOjU1OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xTdG9yZUVtcGxveWVlQWN0aW9uIjtyOjg5NztzOjU0OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xGaW5kRW1wbG95ZWVBY3Rpb24iO3I6MzIyO3M6NTU6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ3VzdG9tZXJzXFN0b3JlQ3VzdG9tZXJBY3Rpb24iO3I6OTMwO3M6NTY6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ3VzdG9tZXJzXFVwZGF0ZUN1c3RvbWVyQWN0aW9uIjtyOjEyMDQ7czo1NDoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcRmluZEN1c3RvbWVyQWN0aW9uIjtyOjM1NjtzOjQ5OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEFkbWluc1xTdG9yZUFkbWluQWN0aW9uIjtyOjk2MztzOjU0OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFVwZGF0ZVByb2R1Y3RBY3Rpb24iO3I6MTI0NTtzOjUyOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXEZpbmRQcm9kdWN0QWN0aW9uIjtyOjM5MDtzOjU1OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXERlc3Ryb3lQcm9kdWN0QWN0aW9uIjtyOjEzNzI7czo1MzoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xTdG9yZVByb2R1Y3RBY3Rpb24iO3I6OTk2O3M6NTU6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcU2VhcmNoUHJvZHVjdHNBY3Rpb24iO3I6NDMyO3M6NjI6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcU2VhcmNoUHJvZHVjdHNGb3JIb21lQWN0aW9uIjtyOjQ2NjtzOjUwOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFVwZGF0ZUludmVudG9yeSI7cjoxMDI5O3M6NDk6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcSW5kZXhQcm9kdWN0U3RvY2siO3I6NTAwO3M6NDg6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcRmluZFByb2R1Y3RTdG9jayI7cjo1MzQ7czo1MjoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXEluZGV4RmlsdGVyc0FjdGlvbiI7cjo1NzY7czo1MjoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXFN0b3JlRmlsdGVyc0FjdGlvbiI7cjoxMDcwO3M6NTM6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xVcGRhdGVGaWx0ZXJzQWN0aW9uIjtyOjEyODY7czo1MzoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXERlc3Ryb3lGaWx0ZXJBY3Rpb24iO3I6MTQxMztzOjU2OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcU3RvcmVDYXRlZ29yeUFjdGlvbiI7cjoxMTAzO3M6NTc6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xVcGRhdGVDYXRlZ29yeUFjdGlvbiI7cjoxMzI3O3M6NTY6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xJbmRleENhdGVnb3J5QWN0aW9uIjtyOjYxMDtzOjU4OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcRGVzdHJveUNhdGVnb3J5QWN0aW9uIjtyOjE0NTQ7czo1MzoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQYXltZW50c1xNZXJjYWRvUGFnb0V4ZWN1dGUiO3I6MTEzNjtzOjYxOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXE5vdGlmaWNhdGlvbnNcQ2hlY2tOb3RpZmljYXRpb25Vc2VyIjtyOjExNjk7czo1MDoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xPcmRlcnNcSW5kZXhPcmRlcnNBY3Rpb24iO3I6NjQ0O319')) + unserialize(base64_decode('TzozNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlQ29sbGVjdGlvbiI6NDp7czo5OiIAKgByb3V0ZXMiO2E6Nzp7czozOiJHRVQiO2E6MTg6e3M6MTc6ImFwaS9kb2N1bWVudGF0aW9uIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNzoiYXBpL2RvY3VtZW50YXRpb24iO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjI6ImFzIjtzOjE0OiJsNS1zd2FnZ2VyLmFwaSI7czoxMDoibWlkZGxld2FyZSI7YTowOnt9czo0OiJ1c2VzIjtzOjQ5OiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAYXBpIjtzOjEwOiJjb250cm9sbGVyIjtzOjQ5OiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAYXBpIjtzOjk6Im5hbWVzcGFjZSI7czo5OiJMNVN3YWdnZXIiO3M6NjoicHJlZml4IjtOO3M6NToid2hlcmUiO2E6MDp7fX1zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxODoiL2FwaS9kb2N1bWVudGF0aW9uIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjI1OiIjXi9hcGkvZG9jdW1lbnRhdGlvbiQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxODoiL2FwaS9kb2N1bWVudGF0aW9uIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE2OiJkb2NzL3tqc29uRmlsZT99IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNjoiZG9jcy97anNvbkZpbGU/fSI7czo3OiJtZXRob2RzIjthOjc6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7aToyO3M6NDoiUE9TVCI7aTozO3M6MzoiUFVUIjtpOjQ7czo1OiJQQVRDSCI7aTo1O3M6NjoiREVMRVRFIjtpOjY7czo3OiJPUFRJT05TIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoyOiJhcyI7czoxNToibDUtc3dhZ2dlci5kb2NzIjtzOjEwOiJtaWRkbGV3YXJlIjthOjA6e31zOjQ6InVzZXMiO3M6NTA6IlxMNVN3YWdnZXJcSHR0cFxDb250cm9sbGVyc1xTd2FnZ2VyQ29udHJvbGxlckBkb2NzIjtzOjEwOiJjb250cm9sbGVyIjtzOjUwOiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAZG9jcyI7czo5OiJuYW1lc3BhY2UiO3M6OToiTDVTd2FnZ2VyIjtzOjY6InByZWZpeCI7TjtzOjU6IndoZXJlIjthOjA6e319czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czo4OiJqc29uRmlsZSI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjU6Ii9kb2NzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM4OiIjXi9kb2NzKD86Lyg/UDxqc29uRmlsZT5bXi9dKyspKT8kI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6ODoianNvbkZpbGUiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjU6Ii9kb2NzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjg6Impzb25GaWxlIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxODoiZG9jcy9hc3NldC97YXNzZXR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxODoiZG9jcy9hc3NldC97YXNzZXR9IjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoyOiJhcyI7czoxNjoibDUtc3dhZ2dlci5hc3NldCI7czoxMDoibWlkZGxld2FyZSI7YTowOnt9czo0OiJ1c2VzIjtzOjU2OiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckFzc2V0Q29udHJvbGxlckBpbmRleCI7czoxMDoiY29udHJvbGxlciI7czo1NjoiXEw1U3dhZ2dlclxIdHRwXENvbnRyb2xsZXJzXFN3YWdnZXJBc3NldENvbnRyb2xsZXJAaW5kZXgiO3M6OToibmFtZXNwYWNlIjtzOjk6Ikw1U3dhZ2dlciI7czo2OiJwcmVmaXgiO047czo1OiJ3aGVyZSI7YTowOnt9fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6NToiYXNzZXQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMToiL2RvY3MvYXNzZXQiO3M6MTA6InBhdGhfcmVnZXgiO3M6MzY6IiNeL2RvY3MvYXNzZXQvKD9QPGFzc2V0PlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6NToiYXNzZXQiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjExOiIvZG9jcy9hc3NldCI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czo1OiJhc3NldCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTk6ImFwaS9vYXV0aDItY2FsbGJhY2siO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE5OiJhcGkvb2F1dGgyLWNhbGxiYWNrIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoyOiJhcyI7czoyNjoibDUtc3dhZ2dlci5vYXV0aDJfY2FsbGJhY2siO3M6MTA6Im1pZGRsZXdhcmUiO2E6MDp7fXM6NDoidXNlcyI7czo2MDoiXEw1U3dhZ2dlclxIdHRwXENvbnRyb2xsZXJzXFN3YWdnZXJDb250cm9sbGVyQG9hdXRoMkNhbGxiYWNrIjtzOjEwOiJjb250cm9sbGVyIjtzOjYwOiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAb2F1dGgyQ2FsbGJhY2siO3M6OToibmFtZXNwYWNlIjtzOjk6Ikw1U3dhZ2dlciI7czo2OiJwcmVmaXgiO047czo1OiJ3aGVyZSI7YTowOnt9fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjIwOiIvYXBpL29hdXRoMi1jYWxsYmFjayI7czoxMDoicGF0aF9yZWdleCI7czoyODoiI14vYXBpL29hdXRoMlwtY2FsbGJhY2skI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MjA6Ii9hcGkvb2F1dGgyLWNhbGxiYWNrIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE0OiJhcGkvc2VuZF9lbWFpbCI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTQ6ImFwaS9zZW5kX2VtYWlsIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Njp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NDU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFNlbmRFbWFpbEBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czozNjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU2VuZEVtYWlsIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjM6ImFwaSI7czo1OiJ3aGVyZSI7YTowOnt9fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE1OiIvYXBpL3NlbmRfZW1haWwiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjI6IiNeL2FwaS9zZW5kX2VtYWlsJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE1OiIvYXBpL3NlbmRfZW1haWwiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MjE6ImFwaS91c2Vycy97aWR9L2VuYWJsZSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MjE6ImFwaS91c2Vycy97aWR9L2VuYWJsZSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjU4OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xFbmFibGVVc2VyQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjQ5OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xFbmFibGVVc2VyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjk6ImFwaS91c2VycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMDoiZW5hYmxlVXNlciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMDoiL2FwaS91c2VycyI7czoxMDoicGF0aF9yZWdleCI7czozOToiI14vYXBpL3VzZXJzLyg/UDxpZD5bXi9dKyspL2VuYWJsZSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YTozOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czo3OiIvZW5hYmxlIjt9aToxO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MjthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEwOiIvYXBpL3VzZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoyMjoiYXBpL3VzZXJzL3tpZH0vZGlzYWJsZSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MjI6ImFwaS91c2Vycy97aWR9L2Rpc2FibGUiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1OToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcRGlzYWJsZVVzZXJBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTA6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXERpc2FibGVVc2VyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjk6ImFwaS91c2VycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMToiZGlzYWJsZVVzZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTA6Ii9hcGkvdXNlcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6NDA6IiNeL2FwaS91c2Vycy8oP1A8aWQ+W14vXSsrKS9kaXNhYmxlJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjM6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjg6Ii9kaXNhYmxlIjt9aToxO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MjthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEwOiIvYXBpL3VzZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNDoiYXBpL3VzZXJzL3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE0OiJhcGkvdXNlcnMve2lkfSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjU2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xTaG93VXNlckFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo0NzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcU2hvd1VzZXJBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6OToiYXBpL3VzZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjExOiJzaG93T25lVXNlciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMDoiL2FwaS91c2VycyI7czoxMDoicGF0aF9yZWdleCI7czozMjoiI14vYXBpL3VzZXJzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMDoiL2FwaS91c2VycyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTM6ImFwaS9lbXBsb3llZXMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEzOiJhcGkvZW1wbG95ZWVzIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xGaW5kRW1wbG95ZWVBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xGaW5kRW1wbG95ZWVBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTM6ImFwaS9lbXBsb3llZXMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTI6Imxpc3RFbXBsb3llZSI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE0OiIvYXBpL2VtcGxveWVlcyI7czoxMDoicGF0aF9yZWdleCI7czoyMToiI14vYXBpL2VtcGxveWVlcyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9lbXBsb3llZXMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTg6ImFwaS9jdXN0b21lcnMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTg6ImFwaS9jdXN0b21lcnMve2lkfSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY0OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcRmluZEN1c3RvbWVyQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU1OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcRmluZEN1c3RvbWVyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEzOiJhcGkvY3VzdG9tZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE0OiJjcmVhdGVDdXN0b21lciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxNDoiL2FwaS9jdXN0b21lcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MzY6IiNeL2FwaS9jdXN0b21lcnMvKD9QPGlkPlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE0OiIvYXBpL2N1c3RvbWVycyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTk6ImFwaS9wcm9kdWN0cy97dXVpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE5OiJhcGkvcHJvZHVjdHMve3V1aWR9IjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjI6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXEZpbmRQcm9kdWN0QWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjUzOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xGaW5kUHJvZHVjdEFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMjoiYXBpL3Byb2R1Y3RzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjExOiJmaW5kUHJvZHVjdCI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6NDoidXVpZCI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjEzOiIvYXBpL3Byb2R1Y3RzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM3OiIjXi9hcGkvcHJvZHVjdHMvKD9QPHV1aWQ+W14vXSsrKSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToyOntpOjA7YTo1OntpOjA7czo4OiJ2YXJpYWJsZSI7aToxO3M6MToiLyI7aToyO3M6NjoiW14vXSsrIjtpOjM7czo0OiJ1dWlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMzoiL2FwaS9wcm9kdWN0cyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czo0OiJ1dWlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxMDoiYXBpL3NlYXJjaCI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTA6ImFwaS9zZWFyY2giO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2NToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcU2VhcmNoUHJvZHVjdHNBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTY6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFNlYXJjaFByb2R1Y3RzQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEwOiJhcGkvc2VhcmNoIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE0OiJzZWFyY2hQcm9kdWN0cyI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjExOiIvYXBpL3NlYXJjaCI7czoxMDoicGF0aF9yZWdleCI7czoxODoiI14vYXBpL3NlYXJjaCQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMToiL2FwaS9zZWFyY2giO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTU6ImFwaS9zZWFyY2gvaG9tZSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTU6ImFwaS9zZWFyY2gvaG9tZSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjcyOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xTZWFyY2hQcm9kdWN0c0ZvckhvbWVBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NjM6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFNlYXJjaFByb2R1Y3RzRm9ySG9tZUFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMDoiYXBpL3NlYXJjaCI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNDoic2VhcmNoUHJvZHVjdHMiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNjoiL2FwaS9zZWFyY2gvaG9tZSI7czoxMDoicGF0aF9yZWdleCI7czoyMzoiI14vYXBpL3NlYXJjaC9ob21lJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE2OiIvYXBpL3NlYXJjaC9ob21lIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjEzOiJhcGkvaW52ZW50b3J5IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxMzoiYXBpL2ludmVudG9yeSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjU5OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xTdG9ja1xJbmRleFByb2R1Y3RTdG9ja0BfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1MDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcSW5kZXhQcm9kdWN0U3RvY2siO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTM6ImFwaS9pbnZlbnRvcnkiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTg6ImluZGV4UHJvZHVjdHNTdG9jayI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE0OiIvYXBpL2ludmVudG9yeSI7czoxMDoicGF0aF9yZWdleCI7czoyMToiI14vYXBpL2ludmVudG9yeSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9pbnZlbnRvcnkiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTg6ImFwaS9pbnZlbnRvcnkve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTg6ImFwaS9pbnZlbnRvcnkve2lkfSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjU4OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xTdG9ja1xGaW5kUHJvZHVjdFN0b2NrQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjQ5OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xTdG9ja1xGaW5kUHJvZHVjdFN0b2NrIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEzOiJhcGkvaW52ZW50b3J5IjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE3OiJmaW5kUHJvZHVjdHNTdG9jayI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxNDoiL2FwaS9pbnZlbnRvcnkiO3M6MTA6InBhdGhfcmVnZXgiO3M6MzY6IiNeL2FwaS9pbnZlbnRvcnkvKD9QPGlkPlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE0OiIvYXBpL2ludmVudG9yeSI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTE6ImFwaS9maWx0ZXJzIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxMToiYXBpL2ZpbHRlcnMiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2MjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xJbmRleEZpbHRlcnNBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTM6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEZpbHRlcnNcSW5kZXhGaWx0ZXJzQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjExOiJhcGkvZmlsdGVycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMjoiaW5kZXhGaWx0ZXJzIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTI6Ii9hcGkvZmlsdGVycyI7czoxMDoicGF0aF9yZWdleCI7czoxOToiI14vYXBpL2ZpbHRlcnMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTI6Ii9hcGkvZmlsdGVycyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNDoiYXBpL2NhdGVnb3JpZXMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE0OiJhcGkvY2F0ZWdvcmllcyI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDYXRlZ29yaWVzXEluZGV4Q2F0ZWdvcnlBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTc6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcSW5kZXhDYXRlZ29yeUFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxNDoiYXBpL2NhdGVnb3JpZXMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTM6ImluZGV4Q2F0ZWdvcnkiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNToiL2FwaS9jYXRlZ29yaWVzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjIyOiIjXi9hcGkvY2F0ZWdvcmllcyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNToiL2FwaS9jYXRlZ29yaWVzIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjEwOiJhcGkvb3JkZXJzIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxMDoiYXBpL29yZGVycyI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjYwOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xPcmRlcnNcSW5kZXhPcmRlcnNBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTE6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXE9yZGVyc1xJbmRleE9yZGVyc0FjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMDoiYXBpL29yZGVycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czo5OiJnZXRPcmRlcnMiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxMToiL2FwaS9vcmRlcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MTg6IiNeL2FwaS9vcmRlcnMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTE6Ii9hcGkvb3JkZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX19czo0OiJIRUFEIjthOjE4OntzOjE3OiJhcGkvZG9jdW1lbnRhdGlvbiI7cjo0O3M6MTY6ImRvY3Mve2pzb25GaWxlP30iO3I6Mzc7czoxODoiZG9jcy9hc3NldC97YXNzZXR9IjtyOjgzO3M6MTk6ImFwaS9vYXV0aDItY2FsbGJhY2siO3I6MTI0O3M6MTQ6ImFwaS9zZW5kX2VtYWlsIjtyOjE1NztzOjIxOiJhcGkvdXNlcnMve2lkfS9lbmFibGUiO3I6MTkwO3M6MjI6ImFwaS91c2Vycy97aWR9L2Rpc2FibGUiO3I6MjM1O3M6MTQ6ImFwaS91c2Vycy97aWR9IjtyOjI4MDtzOjEzOiJhcGkvZW1wbG95ZWVzIjtyOjMyMjtzOjE4OiJhcGkvY3VzdG9tZXJzL3tpZH0iO3I6MzU2O3M6MTk6ImFwaS9wcm9kdWN0cy97dXVpZH0iO3I6Mzk4O3M6MTA6ImFwaS9zZWFyY2giO3I6NDQwO3M6MTU6ImFwaS9zZWFyY2gvaG9tZSI7cjo0NzQ7czoxMzoiYXBpL2ludmVudG9yeSI7cjo1MDg7czoxODoiYXBpL2ludmVudG9yeS97aWR9IjtyOjU0MjtzOjExOiJhcGkvZmlsdGVycyI7cjo1ODQ7czoxNDoiYXBpL2NhdGVnb3JpZXMiO3I6NjE4O3M6MTA6ImFwaS9vcmRlcnMiO3I6NjUyO31zOjQ6IlBPU1QiO2E6MTY6e3M6MTY6ImRvY3Mve2pzb25GaWxlP30iO3I6Mzc7czoxODoiYXBpL3VzZXJzL3JlY292ZXJ5IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxODoiYXBpL3VzZXJzL3JlY292ZXJ5IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY0OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xSZWNvdmVyeVBhc3N3b3JkQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU1OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xSZWNvdmVyeVBhc3N3b3JkQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjk6ImFwaS91c2VycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNjoicmVjb3ZlcnlQYXNzd29yZCI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE5OiIvYXBpL3VzZXJzL3JlY292ZXJ5IjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjI2OiIjXi9hcGkvdXNlcnMvcmVjb3ZlcnkkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTk6Ii9hcGkvdXNlcnMvcmVjb3ZlcnkiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTY6ImFwaS91c2Vycy9mb3Jnb3QiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE2OiJhcGkvdXNlcnMvZm9yZ290IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjc0OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xDaGFuZ2VQYXNzd29yZEZyb21SZWNvdmVyeUFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo2NToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcQ2hhbmdlUGFzc3dvcmRGcm9tUmVjb3ZlcnlBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6OToiYXBpL3VzZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjI2OiJjaGFuZ2VQYXNzd29yZEZyb21SZWNvdmVyeSI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE3OiIvYXBpL3VzZXJzL2ZvcmdvdCI7czoxMDoicGF0aF9yZWdleCI7czoyNDoiI14vYXBpL3VzZXJzL2ZvcmdvdCQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNzoiL2FwaS91c2Vycy9mb3Jnb3QiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTQ6ImFwaS9hdXRoL2xvZ2luIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNDoiYXBpL2F1dGgvbG9naW4iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NTI6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEF1dGhcTG9naW5BY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NDM6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEF1dGhcTG9naW5BY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6ODoiYXBpL2F1dGgiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6NToibG9naW4iO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNToiL2FwaS9hdXRoL2xvZ2luIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjIyOiIjXi9hcGkvYXV0aC9sb2dpbiQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNToiL2FwaS9hdXRoL2xvZ2luIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjIwOiJhcGkvYXV0aC9yZW5ldy10b2tlbiI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MjA6ImFwaS9hdXRoL3JlbmV3LXRva2VuIjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjU3OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xBdXRoXFJlbmV3VG9rZW5BY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NDg6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEF1dGhcUmVuZXdUb2tlbkFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czo4OiJhcGkvYXV0aCI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMToicmVuZXctdG9rZW4iO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoyMToiL2FwaS9hdXRoL3JlbmV3LXRva2VuIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjI5OiIjXi9hcGkvYXV0aC9yZW5ld1wtdG9rZW4kI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MjE6Ii9hcGkvYXV0aC9yZW5ldy10b2tlbiI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNToiYXBpL2F1dGgvc2lnbnVwIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNToiYXBpL2F1dGgvc2lnbnVwIjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY4OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcU3RvcmVXZWJDdXN0b21lckFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1OToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ3VzdG9tZXJzXFN0b3JlV2ViQ3VzdG9tZXJBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6ODoiYXBpL2F1dGgiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTc6ImNyZWF0ZVdlYkN1c3RvbWVyIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTY6Ii9hcGkvYXV0aC9zaWdudXAiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjM6IiNeL2FwaS9hdXRoL3NpZ251cCQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNjoiL2FwaS9hdXRoL3NpZ251cCI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoyNDoiYXBpL2F1dGgvY2hhbmdlLXBhc3N3b3JkIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoyNDoiYXBpL2F1dGgvY2hhbmdlLXBhc3N3b3JkIjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjYxOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xBdXRoXENoYW5nZVBhc3N3b3JkQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjUyOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xBdXRoXENoYW5nZVBhc3N3b3JkQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjg6ImFwaS9hdXRoIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE1OiJjaGFuZ2UtcGFzc3dvcmQiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoyNToiL2FwaS9hdXRoL2NoYW5nZS1wYXNzd29yZCI7czoxMDoicGF0aF9yZWdleCI7czozMzoiI14vYXBpL2F1dGgvY2hhbmdlXC1wYXNzd29yZCQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoyNToiL2FwaS9hdXRoL2NoYW5nZS1wYXNzd29yZCI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxMzoiYXBpL2VtcGxveWVlcyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTM6ImFwaS9lbXBsb3llZXMiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xTdG9yZUVtcGxveWVlQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xFbXBsb3llZXNcU3RvcmVFbXBsb3llZUFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMzoiYXBpL2VtcGxveWVlcyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNDoiY3JlYXRlRW1wbG95ZWUiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNDoiL2FwaS9lbXBsb3llZXMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjE6IiNeL2FwaS9lbXBsb3llZXMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTQ6Ii9hcGkvZW1wbG95ZWVzIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjEzOiJhcGkvY3VzdG9tZXJzIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxMzoiYXBpL2N1c3RvbWVycyI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2NToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ3VzdG9tZXJzXFN0b3JlQ3VzdG9tZXJBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTY6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xTdG9yZUN1c3RvbWVyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEzOiJhcGkvY3VzdG9tZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE0OiJjcmVhdGVDdXN0b21lciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE0OiIvYXBpL2N1c3RvbWVycyI7czoxMDoicGF0aF9yZWdleCI7czoyMToiI14vYXBpL2N1c3RvbWVycyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9jdXN0b21lcnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTA6ImFwaS9hZG1pbnMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEwOiJhcGkvYWRtaW5zIjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjU5OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xBZG1pbnNcU3RvcmVBZG1pbkFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1MDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQWRtaW5zXFN0b3JlQWRtaW5BY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTA6ImFwaS9hZG1pbnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTE6ImNyZWF0ZUFkbWluIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTE6Ii9hcGkvYWRtaW5zIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjE4OiIjXi9hcGkvYWRtaW5zJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjExOiIvYXBpL2FkbWlucyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxMjoiYXBpL3Byb2R1Y3RzIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxMjoiYXBpL3Byb2R1Y3RzIjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjYzOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xTdG9yZVByb2R1Y3RBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFN0b3JlUHJvZHVjdEFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMjoiYXBpL3Byb2R1Y3RzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjEzOiJjcmVhdGVQcm9kdWN0Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTM6Ii9hcGkvcHJvZHVjdHMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjA6IiNeL2FwaS9wcm9kdWN0cyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMzoiL2FwaS9wcm9kdWN0cyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxODoiYXBpL2ludmVudG9yeS97aWR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxODoiYXBpL2ludmVudG9yeS97aWR9IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjYwOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xVcGRhdGVJbnZlbnRvcnlAX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTE6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFVwZGF0ZUludmVudG9yeSI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMzoiYXBpL2ludmVudG9yeSI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoyMjoidXBkYXRlSW52ZW50b3J5UHJvZHVjdCI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxNDoiL2FwaS9pbnZlbnRvcnkiO3M6MTA6InBhdGhfcmVnZXgiO3M6MzY6IiNeL2FwaS9pbnZlbnRvcnkvKD9QPGlkPlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE0OiIvYXBpL2ludmVudG9yeSI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTE6ImFwaS9maWx0ZXJzIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxMToiYXBpL2ZpbHRlcnMiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjI6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEZpbHRlcnNcU3RvcmVGaWx0ZXJzQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjUzOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXFN0b3JlRmlsdGVyc0FjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMToiYXBpL2ZpbHRlcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6OToiYWRkRmlsdGVyIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTI6Ii9hcGkvZmlsdGVycyI7czoxMDoicGF0aF9yZWdleCI7czoxOToiI14vYXBpL2ZpbHRlcnMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTI6Ii9hcGkvZmlsdGVycyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNDoiYXBpL2NhdGVnb3JpZXMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE0OiJhcGkvY2F0ZWdvcmllcyI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2NjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xTdG9yZUNhdGVnb3J5QWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU3OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDYXRlZ29yaWVzXFN0b3JlQ2F0ZWdvcnlBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTQ6ImFwaS9jYXRlZ29yaWVzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjEzOiJzdG9yZUNhdGVnb3J5Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTU6Ii9hcGkvY2F0ZWdvcmllcyI7czoxMDoicGF0aF9yZWdleCI7czoyMjoiI14vYXBpL2NhdGVnb3JpZXMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTU6Ii9hcGkvY2F0ZWdvcmllcyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoyNDoiYXBpL3BheW1lbnRzL21lcmNhZG9wYWdvIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoyNDoiYXBpL3BheW1lbnRzL21lcmNhZG9wYWdvIjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjYzOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQYXltZW50c1xNZXJjYWRvUGFnb0V4ZWN1dGVAX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFBheW1lbnRzXE1lcmNhZG9QYWdvRXhlY3V0ZSI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMjoiYXBpL3BheW1lbnRzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE4OiJwYXltZW50TWVyY2Fkb1BhZ28iO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoyNToiL2FwaS9wYXltZW50cy9tZXJjYWRvcGFnbyI7czoxMDoicGF0aF9yZWdleCI7czozMjoiI14vYXBpL3BheW1lbnRzL21lcmNhZG9wYWdvJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjI1OiIvYXBpL3BheW1lbnRzL21lcmNhZG9wYWdvIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE3OiJhcGkvbm90aWZpY2F0aW9ucyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTc6ImFwaS9ub3RpZmljYXRpb25zIjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjcxOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xOb3RpZmljYXRpb25zXENoZWNrTm90aWZpY2F0aW9uVXNlckBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo2MjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcTm90aWZpY2F0aW9uc1xDaGVja05vdGlmaWNhdGlvblVzZXIiO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTc6ImFwaS9ub3RpZmljYXRpb25zIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjIxOiJjaGVja05vdGlmaWNhdGlvblVzZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxODoiL2FwaS9ub3RpZmljYXRpb25zIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjI1OiIjXi9hcGkvbm90aWZpY2F0aW9ucyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxODoiL2FwaS9ub3RpZmljYXRpb25zIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX19czozOiJQVVQiO2E6NTp7czoxNjoiZG9jcy97anNvbkZpbGU/fSI7cjozNztzOjE4OiJhcGkvY3VzdG9tZXJzL3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE4OiJhcGkvY3VzdG9tZXJzL3tpZH0iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czozOiJQVVQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2NjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ3VzdG9tZXJzXFVwZGF0ZUN1c3RvbWVyQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU3OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcVXBkYXRlQ3VzdG9tZXJBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTM6ImFwaS9jdXN0b21lcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTQ6InVwZGF0ZUN1c3RvbWVyIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE0OiIvYXBpL2N1c3RvbWVycyI7czoxMDoicGF0aF9yZWdleCI7czozNjoiI14vYXBpL2N1c3RvbWVycy8oP1A8aWQ+W14vXSsrKSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToyOntpOjA7YTo1OntpOjA7czo4OiJ2YXJpYWJsZSI7aToxO3M6MToiLyI7aToyO3M6NjoiW14vXSsrIjtpOjM7czoyOiJpZCI7aTo0O2I6MTt9aToxO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTQ6Ii9hcGkvY3VzdG9tZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNzoiYXBpL3Byb2R1Y3RzL3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE3OiJhcGkvcHJvZHVjdHMve2lkfSI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjM6IlBVVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY0OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xVcGRhdGVQcm9kdWN0QWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU1OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xVcGRhdGVQcm9kdWN0QWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEyOiJhcGkvcHJvZHVjdHMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTM6InVwZGF0ZVByb2R1Y3QiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTM6Ii9hcGkvcHJvZHVjdHMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MzU6IiNeL2FwaS9wcm9kdWN0cy8oP1A8aWQ+W14vXSsrKSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToyOntpOjA7YTo1OntpOjA7czo4OiJ2YXJpYWJsZSI7aToxO3M6MToiLyI7aToyO3M6NjoiW14vXSsrIjtpOjM7czoyOiJpZCI7aTo0O2I6MTt9aToxO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTM6Ii9hcGkvcHJvZHVjdHMiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE2OiJhcGkvZmlsdGVycy97aWR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNjoiYXBpL2ZpbHRlcnMve2lkfSI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjM6IlBVVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjYzOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXFVwZGF0ZUZpbHRlcnNBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEZpbHRlcnNcVXBkYXRlRmlsdGVyc0FjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMToiYXBpL2ZpbHRlcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTI6InVwZGF0ZUZpbHRlciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMjoiL2FwaS9maWx0ZXJzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM0OiIjXi9hcGkvZmlsdGVycy8oP1A8aWQ+W14vXSsrKSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToyOntpOjA7YTo1OntpOjA7czo4OiJ2YXJpYWJsZSI7aToxO3M6MToiLyI7aToyO3M6NjoiW14vXSsrIjtpOjM7czoyOiJpZCI7aTo0O2I6MTt9aToxO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTI6Ii9hcGkvZmlsdGVycyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTk6ImFwaS9jYXRlZ29yaWVzL3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE5OiJhcGkvY2F0ZWdvcmllcy97aWR9IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6MzoiUFVUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6Njc6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcVXBkYXRlQ2F0ZWdvcnlBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTg6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcVXBkYXRlQ2F0ZWdvcnlBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTQ6ImFwaS9jYXRlZ29yaWVzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE0OiJ1cGRhdGVDYXRlZ29yeSI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxNToiL2FwaS9jYXRlZ29yaWVzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM3OiIjXi9hcGkvY2F0ZWdvcmllcy8oP1A8aWQ+W14vXSsrKSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToyOntpOjA7YTo1OntpOjA7czo4OiJ2YXJpYWJsZSI7aToxO3M6MToiLyI7aToyO3M6NjoiW14vXSsrIjtpOjM7czoyOiJpZCI7aTo0O2I6MTt9aToxO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTU6Ii9hcGkvY2F0ZWdvcmllcyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fX1zOjU6IlBBVENIIjthOjE6e3M6MTY6ImRvY3Mve2pzb25GaWxlP30iO3I6Mzc7fXM6NjoiREVMRVRFIjthOjQ6e3M6MTY6ImRvY3Mve2pzb25GaWxlP30iO3I6Mzc7czoxNzoiYXBpL3Byb2R1Y3RzL3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE3OiJhcGkvcHJvZHVjdHMve2lkfSI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjY6IkRFTEVURSI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY1OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xEZXN0cm95UHJvZHVjdEFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcRGVzdHJveVByb2R1Y3RBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTI6ImFwaS9wcm9kdWN0cyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNDoiZGVzdHJveVByb2R1Y3QiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTM6Ii9hcGkvcHJvZHVjdHMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MzU6IiNeL2FwaS9wcm9kdWN0cy8oP1A8aWQ+W14vXSsrKSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToyOntpOjA7YTo1OntpOjA7czo4OiJ2YXJpYWJsZSI7aToxO3M6MToiLyI7aToyO3M6NjoiW14vXSsrIjtpOjM7czoyOiJpZCI7aTo0O2I6MTt9aToxO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTM6Ii9hcGkvcHJvZHVjdHMiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE2OiJhcGkvZmlsdGVycy97aWR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNjoiYXBpL2ZpbHRlcnMve2lkfSI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjY6IkRFTEVURSI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjYzOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXERlc3Ryb3lGaWx0ZXJBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEZpbHRlcnNcRGVzdHJveUZpbHRlckFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMToiYXBpL2ZpbHRlcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTM6ImRlc3Ryb3lGaWx0ZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTI6Ii9hcGkvZmlsdGVycyI7czoxMDoicGF0aF9yZWdleCI7czozNDoiI14vYXBpL2ZpbHRlcnMvKD9QPGlkPlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEyOiIvYXBpL2ZpbHRlcnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE5OiJhcGkvY2F0ZWdvcmllcy97aWR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxOToiYXBpL2NhdGVnb3JpZXMve2lkfSI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjY6IkRFTEVURSI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY4OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDYXRlZ29yaWVzXERlc3Ryb3lDYXRlZ29yeUFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1OToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xEZXN0cm95Q2F0ZWdvcnlBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTQ6ImFwaS9jYXRlZ29yaWVzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE1OiJkZXN0cm95Q2F0ZWdvcnkiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTU6Ii9hcGkvY2F0ZWdvcmllcyI7czoxMDoicGF0aF9yZWdleCI7czozNzoiI14vYXBpL2NhdGVnb3JpZXMvKD9QPGlkPlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE1OiIvYXBpL2NhdGVnb3JpZXMiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX19czo3OiJPUFRJT05TIjthOjE6e3M6MTY6ImRvY3Mve2pzb25GaWxlP30iO3I6Mzc7fX1zOjEyOiIAKgBhbGxSb3V0ZXMiO2E6NDA6e3M6MjE6IkhFQURhcGkvZG9jdW1lbnRhdGlvbiI7cjo0O3M6MjM6Ik9QVElPTlNkb2NzL3tqc29uRmlsZT99IjtyOjM3O3M6MjI6IkhFQURkb2NzL2Fzc2V0L3thc3NldH0iO3I6ODM7czoyMzoiSEVBRGFwaS9vYXV0aDItY2FsbGJhY2siO3I6MTI0O3M6MTg6IkhFQURhcGkvc2VuZF9lbWFpbCI7cjoxNTc7czoyMjoiUE9TVGFwaS91c2Vycy9yZWNvdmVyeSI7cjo3MDc7czoyMDoiUE9TVGFwaS91c2Vycy9mb3Jnb3QiO3I6NzQwO3M6MjU6IkhFQURhcGkvdXNlcnMve2lkfS9lbmFibGUiO3I6MTkwO3M6MjY6IkhFQURhcGkvdXNlcnMve2lkfS9kaXNhYmxlIjtyOjIzNTtzOjE4OiJIRUFEYXBpL3VzZXJzL3tpZH0iO3I6MjgwO3M6MTg6IlBPU1RhcGkvYXV0aC9sb2dpbiI7cjo3NzM7czoyNDoiUE9TVGFwaS9hdXRoL3JlbmV3LXRva2VuIjtyOjgwNjtzOjE5OiJQT1NUYXBpL2F1dGgvc2lnbnVwIjtyOjgzOTtzOjI4OiJQT1NUYXBpL2F1dGgvY2hhbmdlLXBhc3N3b3JkIjtyOjg3MjtzOjE3OiJQT1NUYXBpL2VtcGxveWVlcyI7cjo5MDU7czoxNzoiSEVBRGFwaS9lbXBsb3llZXMiO3I6MzIyO3M6MTc6IlBPU1RhcGkvY3VzdG9tZXJzIjtyOjkzODtzOjIyOiJIRUFEYXBpL2N1c3RvbWVycy97aWR9IjtyOjM1NjtzOjIxOiJQVVRhcGkvY3VzdG9tZXJzL3tpZH0iO3I6MTIxMjtzOjE0OiJQT1NUYXBpL2FkbWlucyI7cjo5NzE7czoyMDoiUFVUYXBpL3Byb2R1Y3RzL3tpZH0iO3I6MTI1MztzOjIzOiJIRUFEYXBpL3Byb2R1Y3RzL3t1dWlkfSI7cjozOTg7czoyMzoiREVMRVRFYXBpL3Byb2R1Y3RzL3tpZH0iO3I6MTM4MDtzOjE2OiJQT1NUYXBpL3Byb2R1Y3RzIjtyOjEwMDQ7czoxNDoiSEVBRGFwaS9zZWFyY2giO3I6NDQwO3M6MTk6IkhFQURhcGkvc2VhcmNoL2hvbWUiO3I6NDc0O3M6MjI6IlBPU1RhcGkvaW52ZW50b3J5L3tpZH0iO3I6MTAzNztzOjE3OiJIRUFEYXBpL2ludmVudG9yeSI7cjo1MDg7czoyMjoiSEVBRGFwaS9pbnZlbnRvcnkve2lkfSI7cjo1NDI7czoxNToiSEVBRGFwaS9maWx0ZXJzIjtyOjU4NDtzOjE1OiJQT1NUYXBpL2ZpbHRlcnMiO3I6MTA3ODtzOjE5OiJQVVRhcGkvZmlsdGVycy97aWR9IjtyOjEyOTQ7czoyMjoiREVMRVRFYXBpL2ZpbHRlcnMve2lkfSI7cjoxNDIxO3M6MTg6IlBPU1RhcGkvY2F0ZWdvcmllcyI7cjoxMTExO3M6MjI6IlBVVGFwaS9jYXRlZ29yaWVzL3tpZH0iO3I6MTMzNTtzOjE4OiJIRUFEYXBpL2NhdGVnb3JpZXMiO3I6NjE4O3M6MjU6IkRFTEVURWFwaS9jYXRlZ29yaWVzL3tpZH0iO3I6MTQ2MjtzOjI4OiJQT1NUYXBpL3BheW1lbnRzL21lcmNhZG9wYWdvIjtyOjExNDQ7czoyMToiUE9TVGFwaS9ub3RpZmljYXRpb25zIjtyOjExNzc7czoxNDoiSEVBRGFwaS9vcmRlcnMiO3I6NjUyO31zOjExOiIAKgBuYW1lTGlzdCI7YTozNzp7czoxNDoibDUtc3dhZ2dlci5hcGkiO3I6NDtzOjE1OiJsNS1zd2FnZ2VyLmRvY3MiO3I6Mzc7czoxNjoibDUtc3dhZ2dlci5hc3NldCI7cjo4MztzOjI2OiJsNS1zd2FnZ2VyLm9hdXRoMl9jYWxsYmFjayI7cjoxMjQ7czoxNjoicmVjb3ZlcnlQYXNzd29yZCI7cjo3MDc7czoyNjoiY2hhbmdlUGFzc3dvcmRGcm9tUmVjb3ZlcnkiO3I6NzQwO3M6MTA6ImVuYWJsZVVzZXIiO3I6MTkwO3M6MTE6ImRpc2FibGVVc2VyIjtyOjIzNTtzOjExOiJzaG93T25lVXNlciI7cjoyODA7czo1OiJsb2dpbiI7cjo3NzM7czoxMToicmVuZXctdG9rZW4iO3I6ODA2O3M6MTc6ImNyZWF0ZVdlYkN1c3RvbWVyIjtyOjgzOTtzOjE1OiJjaGFuZ2UtcGFzc3dvcmQiO3I6ODcyO3M6MTQ6ImNyZWF0ZUVtcGxveWVlIjtyOjkwNTtzOjEyOiJsaXN0RW1wbG95ZWUiO3I6MzIyO3M6MTQ6ImNyZWF0ZUN1c3RvbWVyIjtyOjM1NjtzOjE0OiJ1cGRhdGVDdXN0b21lciI7cjoxMjEyO3M6MTE6ImNyZWF0ZUFkbWluIjtyOjk3MTtzOjEzOiJ1cGRhdGVQcm9kdWN0IjtyOjEyNTM7czoxMToiZmluZFByb2R1Y3QiO3I6Mzk4O3M6MTQ6ImRlc3Ryb3lQcm9kdWN0IjtyOjEzODA7czoxMzoiY3JlYXRlUHJvZHVjdCI7cjoxMDA0O3M6MTQ6InNlYXJjaFByb2R1Y3RzIjtyOjQ3NDtzOjIyOiJ1cGRhdGVJbnZlbnRvcnlQcm9kdWN0IjtyOjEwMzc7czoxODoiaW5kZXhQcm9kdWN0c1N0b2NrIjtyOjUwODtzOjE3OiJmaW5kUHJvZHVjdHNTdG9jayI7cjo1NDI7czoxMjoiaW5kZXhGaWx0ZXJzIjtyOjU4NDtzOjk6ImFkZEZpbHRlciI7cjoxMDc4O3M6MTI6InVwZGF0ZUZpbHRlciI7cjoxMjk0O3M6MTM6ImRlc3Ryb3lGaWx0ZXIiO3I6MTQyMTtzOjEzOiJzdG9yZUNhdGVnb3J5IjtyOjExMTE7czoxNDoidXBkYXRlQ2F0ZWdvcnkiO3I6MTMzNTtzOjEzOiJpbmRleENhdGVnb3J5IjtyOjYxODtzOjE1OiJkZXN0cm95Q2F0ZWdvcnkiO3I6MTQ2MjtzOjE4OiJwYXltZW50TWVyY2Fkb1BhZ28iO3I6MTE0NDtzOjIxOiJjaGVja05vdGlmaWNhdGlvblVzZXIiO3I6MTE3NztzOjk6ImdldE9yZGVycyI7cjo2NTI7fXM6MTM6IgAqAGFjdGlvbkxpc3QiO2E6NDA6e3M6NDg6Ikw1U3dhZ2dlclxIdHRwXENvbnRyb2xsZXJzXFN3YWdnZXJDb250cm9sbGVyQGFwaSI7cjo0O3M6NDk6Ikw1U3dhZ2dlclxIdHRwXENvbnRyb2xsZXJzXFN3YWdnZXJDb250cm9sbGVyQGRvY3MiO3I6Mzc7czo1NToiTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckFzc2V0Q29udHJvbGxlckBpbmRleCI7cjo4MztzOjU5OiJMNVN3YWdnZXJcSHR0cFxDb250cm9sbGVyc1xTd2FnZ2VyQ29udHJvbGxlckBvYXV0aDJDYWxsYmFjayI7cjoxMjQ7czozNToiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xTZW5kRW1haWwiO3I6MTU3O3M6NTQ6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcUmVjb3ZlcnlQYXNzd29yZEFjdGlvbiI7cjo3MDc7czo2NDoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xDaGFuZ2VQYXNzd29yZEZyb21SZWNvdmVyeUFjdGlvbiI7cjo3NDA7czo0ODoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xFbmFibGVVc2VyQWN0aW9uIjtyOjE5MDtzOjQ5OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXERpc2FibGVVc2VyQWN0aW9uIjtyOjIzNTtzOjQ2OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXFNob3dVc2VyQWN0aW9uIjtyOjI4MDtzOjQyOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEF1dGhcTG9naW5BY3Rpb24iO3I6NzczO3M6NDc6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQXV0aFxSZW5ld1Rva2VuQWN0aW9uIjtyOjgwNjtzOjU4OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xTdG9yZVdlYkN1c3RvbWVyQWN0aW9uIjtyOjgzOTtzOjUxOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEF1dGhcQ2hhbmdlUGFzc3dvcmRBY3Rpb24iO3I6ODcyO3M6NTU6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRW1wbG95ZWVzXFN0b3JlRW1wbG95ZWVBY3Rpb24iO3I6OTA1O3M6NTQ6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRW1wbG95ZWVzXEZpbmRFbXBsb3llZUFjdGlvbiI7cjozMjI7czo1NToiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcU3RvcmVDdXN0b21lckFjdGlvbiI7cjo5Mzg7czo1NDoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcRmluZEN1c3RvbWVyQWN0aW9uIjtyOjM1NjtzOjU2OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xVcGRhdGVDdXN0b21lckFjdGlvbiI7cjoxMjEyO3M6NDk6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQWRtaW5zXFN0b3JlQWRtaW5BY3Rpb24iO3I6OTcxO3M6NTQ6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcVXBkYXRlUHJvZHVjdEFjdGlvbiI7cjoxMjUzO3M6NTI6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcRmluZFByb2R1Y3RBY3Rpb24iO3I6Mzk4O3M6NTU6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcRGVzdHJveVByb2R1Y3RBY3Rpb24iO3I6MTM4MDtzOjUzOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFN0b3JlUHJvZHVjdEFjdGlvbiI7cjoxMDA0O3M6NTU6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcU2VhcmNoUHJvZHVjdHNBY3Rpb24iO3I6NDQwO3M6NjI6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcU2VhcmNoUHJvZHVjdHNGb3JIb21lQWN0aW9uIjtyOjQ3NDtzOjUwOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFVwZGF0ZUludmVudG9yeSI7cjoxMDM3O3M6NDk6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcSW5kZXhQcm9kdWN0U3RvY2siO3I6NTA4O3M6NDg6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcRmluZFByb2R1Y3RTdG9jayI7cjo1NDI7czo1MjoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXEluZGV4RmlsdGVyc0FjdGlvbiI7cjo1ODQ7czo1MjoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXFN0b3JlRmlsdGVyc0FjdGlvbiI7cjoxMDc4O3M6NTM6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xVcGRhdGVGaWx0ZXJzQWN0aW9uIjtyOjEyOTQ7czo1MzoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXERlc3Ryb3lGaWx0ZXJBY3Rpb24iO3I6MTQyMTtzOjU2OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcU3RvcmVDYXRlZ29yeUFjdGlvbiI7cjoxMTExO3M6NTc6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xVcGRhdGVDYXRlZ29yeUFjdGlvbiI7cjoxMzM1O3M6NTY6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xJbmRleENhdGVnb3J5QWN0aW9uIjtyOjYxODtzOjU4OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcRGVzdHJveUNhdGVnb3J5QWN0aW9uIjtyOjE0NjI7czo1MzoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQYXltZW50c1xNZXJjYWRvUGFnb0V4ZWN1dGUiO3I6MTE0NDtzOjYxOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXE5vdGlmaWNhdGlvbnNcQ2hlY2tOb3RpZmljYXRpb25Vc2VyIjtyOjExNzc7czo1MDoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xPcmRlcnNcSW5kZXhPcmRlcnNBY3Rpb24iO3I6NjUyO319')) ); diff --git a/domain/Entities/Customer.php b/domain/Entities/Customer.php index cfd175c..9715083 100644 --- a/domain/Entities/Customer.php +++ b/domain/Entities/Customer.php @@ -94,7 +94,7 @@ public function getId(): int return $this->id; } - public function getUuid(): string + public function getUuid(): ?string { return $this->uuid; } @@ -104,7 +104,7 @@ public function setEmail(string $email): void $this->email = $email; } - public function getEmail(): string + public function getEmail(): ?string { return $this->email; } @@ -112,7 +112,7 @@ public function getEmail(): string /** * @return int */ - public function getAge(): int + public function getAge(): ?int { return $this->age; } @@ -128,7 +128,7 @@ public function setAge(int $age): void /** * @return string */ - public function getCellPhone(): string + public function getPhoneNumber(): ?string { return $this->cellPhone; } @@ -136,7 +136,7 @@ public function getCellPhone(): string /** * @param string $cellPhone */ - public function setCellPhone(string $cellPhone): void + public function setPhoneNumber(string $cellPhone): void { $this->cellPhone = $cellPhone; } @@ -144,7 +144,7 @@ public function setCellPhone(string $cellPhone): void /** * @return string */ - public function getDni(): string + public function getDni(): ?string { return $this->dni; } @@ -160,13 +160,13 @@ public function setDni(string $dni): void /** * @return DateTime */ - public function getBirthday(): DateTime + public function getBirthday(): ?DateTime { return $this->birthday; } /** - * @param DateTime $birthdate + * @param DateTime $birthday */ public function setBirthday(DateTime $birthday): void { @@ -176,7 +176,7 @@ public function setBirthday(DateTime $birthday): void /** * @return string */ - public function getPostalCode(): string + public function getPostalCode(): ?string { return $this->postalCode; } @@ -192,7 +192,7 @@ public function setPostalCode(string $postalCode): void /** * @return string */ - public function getCountry(): string + public function getCountry(): ?string { return $this->country; } @@ -208,7 +208,7 @@ public function setCountry(string $country): void /** * @return string */ - public function getState(): string + public function getState(): ?string { return $this->state; } @@ -224,7 +224,7 @@ public function setState(string $state): void /** * @return string */ - public function getCity(): string + public function getCity(): ?string { return $this->city; } @@ -240,7 +240,7 @@ public function setCity(string $city): void /** * @return string */ - public function getVatCondition(): string + public function getVatCondition(): ?string { return $this->vatCondition; } @@ -256,7 +256,7 @@ public function setVatCondition(string $vatCondition): void /** * @return string */ - public function getTaxationKey(): string + public function getTaxationKey(): ?string { return $this->taxationKey; } @@ -272,7 +272,7 @@ public function setTaxationKey(?string $taxationKey): void /** * @return string */ - public function getGrossIncome(): string + public function getGrossIncome(): ?string { return $this->grossIncome; } diff --git a/presentation/Http/Adapters/Customers/FindCustomerAdapter.php b/presentation/Http/Adapters/Customers/FindCustomerAdapter.php index a536526..e06cccd 100644 --- a/presentation/Http/Adapters/Customers/FindCustomerAdapter.php +++ b/presentation/Http/Adapters/Customers/FindCustomerAdapter.php @@ -31,7 +31,7 @@ public function __construct( * @throws InvalidBodyException */ public function from(Request $request) { - $this->validatorService->make([$request->route('id')], $this->idSchema->getRule()); + $this->validatorService->make(['id' => $request->route('id')], $this->idSchema->getRule()); if(!$this->validatorService->isValid()) { throw new InvalidBodyException($this->validatorService->getErrors()); diff --git a/presentation/Http/Presenters/Customers/FindCustomerPresenter.php b/presentation/Http/Presenters/Customers/FindCustomerPresenter.php index 7cce778..f401711 100644 --- a/presentation/Http/Presenters/Customers/FindCustomerPresenter.php +++ b/presentation/Http/Presenters/Customers/FindCustomerPresenter.php @@ -25,6 +25,19 @@ public function getData(): array { 'name' => $user->getName(), 'surname' => $user->getSurname(), 'email' => $user->getEmail(), + 'isActive' => $user->isActive(), + 'uuid' => $customer->getUuid(), + 'age' => $customer->getAge(), + 'dni' => $customer->getDni(), + 'birthday' => $customer->getBirthday(), + 'postalCode' => $customer->getPostalCode(), + 'country' => $customer->getCountry(), + 'state' => $customer->getState(), + 'city' => $customer->getCity(), + 'vatCondition' => $customer->getVatCondition(), + 'taxationKey' => $customer->getTaxationKey(), + 'grossIncome' => $customer->getGrossIncome(), + 'phoneNumber' => $customer->getPhoneNumber(), ]; } } diff --git a/presentation/Http/routes/api.php b/presentation/Http/routes/api.php index 1bccf53..15f8743 100644 --- a/presentation/Http/routes/api.php +++ b/presentation/Http/routes/api.php @@ -47,8 +47,9 @@ Route::prefix('customers')->group(function () { Route::post('/', Actions\Customers\StoreCustomerAction::class)->name('createCustomer'); + Route::get('/{id}', Actions\Customers\FindCustomerAction::class)->name('createCustomer'); Route::put('/{id}', Actions\Customers\UpdateCustomerAction::class)->name('updateCustomer'); - Route::get('/', Actions\Customers\FindCustomerAction::class)->name('listCustomers'); + //Route::get('/', Actions\Customers\FindCustomerAction::class)->name('listCustomers'); }); Route::prefix('admins')->group(function () { diff --git a/storage/proxies/__CG__DomainEntitiesCustomer.php b/storage/proxies/__CG__DomainEntitiesCustomer.php index 4475d62..ca76fe9 100644 --- a/storage/proxies/__CG__DomainEntitiesCustomer.php +++ b/storage/proxies/__CG__DomainEntitiesCustomer.php @@ -194,7 +194,7 @@ public function getId(): int /** * {@inheritDoc} */ - public function getUuid(): string + public function getUuid(): ?string { $this->__initializer__ && $this->__initializer__->__invoke($this, 'getUuid', []); @@ -216,7 +216,7 @@ public function setEmail(string $email): void /** * {@inheritDoc} */ - public function getEmail(): string + public function getEmail(): ?string { $this->__initializer__ && $this->__initializer__->__invoke($this, 'getEmail', []); @@ -227,7 +227,7 @@ public function getEmail(): string /** * {@inheritDoc} */ - public function getAge(): int + public function getAge(): ?int { $this->__initializer__ && $this->__initializer__->__invoke($this, 'getAge', []); @@ -249,29 +249,29 @@ public function setAge(int $age): void /** * {@inheritDoc} */ - public function getCellPhone(): string + public function getPhoneNumber(): ?string { - $this->__initializer__ && $this->__initializer__->__invoke($this, 'getCellPhone', []); + $this->__initializer__ && $this->__initializer__->__invoke($this, 'getPhoneNumber', []); - return parent::getCellPhone(); + return parent::getPhoneNumber(); } /** * {@inheritDoc} */ - public function setCellPhone(string $cellPhone): void + public function setPhoneNumber(string $cellPhone): void { - $this->__initializer__ && $this->__initializer__->__invoke($this, 'setCellPhone', [$cellPhone]); + $this->__initializer__ && $this->__initializer__->__invoke($this, 'setPhoneNumber', [$cellPhone]); - parent::setCellPhone($cellPhone); + parent::setPhoneNumber($cellPhone); } /** * {@inheritDoc} */ - public function getDni(): string + public function getDni(): ?string { $this->__initializer__ && $this->__initializer__->__invoke($this, 'getDni', []); @@ -293,7 +293,7 @@ public function setDni(string $dni): void /** * {@inheritDoc} */ - public function getBirthday(): \DateTime + public function getBirthday(): ?\DateTime { $this->__initializer__ && $this->__initializer__->__invoke($this, 'getBirthday', []); @@ -315,7 +315,7 @@ public function setBirthday(\DateTime $birthday): void /** * {@inheritDoc} */ - public function getPostalCode(): string + public function getPostalCode(): ?string { $this->__initializer__ && $this->__initializer__->__invoke($this, 'getPostalCode', []); @@ -337,7 +337,7 @@ public function setPostalCode(string $postalCode): void /** * {@inheritDoc} */ - public function getCountry(): string + public function getCountry(): ?string { $this->__initializer__ && $this->__initializer__->__invoke($this, 'getCountry', []); @@ -359,7 +359,7 @@ public function setCountry(string $country): void /** * {@inheritDoc} */ - public function getState(): string + public function getState(): ?string { $this->__initializer__ && $this->__initializer__->__invoke($this, 'getState', []); @@ -381,7 +381,7 @@ public function setState(string $state): void /** * {@inheritDoc} */ - public function getCity(): string + public function getCity(): ?string { $this->__initializer__ && $this->__initializer__->__invoke($this, 'getCity', []); @@ -403,7 +403,7 @@ public function setCity(string $city): void /** * {@inheritDoc} */ - public function getVatCondition(): string + public function getVatCondition(): ?string { $this->__initializer__ && $this->__initializer__->__invoke($this, 'getVatCondition', []); @@ -425,7 +425,7 @@ public function setVatCondition(string $vatCondition): void /** * {@inheritDoc} */ - public function getTaxationKey(): string + public function getTaxationKey(): ?string { $this->__initializer__ && $this->__initializer__->__invoke($this, 'getTaxationKey', []); @@ -447,7 +447,7 @@ public function setTaxationKey(?string $taxationKey): void /** * {@inheritDoc} */ - public function getGrossIncome(): string + public function getGrossIncome(): ?string { $this->__initializer__ && $this->__initializer__->__invoke($this, 'getGrossIncome', []); From ed1b98f3ae1e8de2ed8f323217a794be0f9ca7ad Mon Sep 17 00:00:00 2001 From: cristianvena18 Date: Tue, 7 Jul 2020 13:54:52 -0300 Subject: [PATCH 15/38] finalizated endpoint index customers --- .../Customers/IndexCustomerHandler.php | 34 ++++++++++++++ .../Query/Customers/IndexCustomerQuery.php | 35 ++++++++++++++ .../Results/Customers/IndexCustomerResult.php | 20 ++++++++ application/Services/Users/UserService.php | 8 ++++ .../Services/Users/UserServiceInterface.php | 4 +- bootstrap/cache/routes.php | 2 +- .../Repositories/UserRepositoryInterface.php | 1 + .../Repositories/UserRepository.php | 38 +++++++++++++-- .../Actions/Customers/IndexCustomerAction.php | 43 +++++++++++++++++ .../Customers/IndexCustomerAdapter.php | 36 ++++++++++++++ .../Customers/FindCustomerPresenter.php | 1 - .../Customers/IndexCustomerPresenter.php | 47 +++++++++++++++++++ presentation/Http/routes/api.php | 4 +- 13 files changed, 265 insertions(+), 8 deletions(-) create mode 100644 application/Queries/Handler/Customers/IndexCustomerHandler.php create mode 100644 application/Queries/Query/Customers/IndexCustomerQuery.php create mode 100644 application/Queries/Results/Customers/IndexCustomerResult.php create mode 100644 presentation/Http/Actions/Customers/IndexCustomerAction.php create mode 100644 presentation/Http/Adapters/Customers/IndexCustomerAdapter.php create mode 100644 presentation/Http/Presenters/Customers/IndexCustomerPresenter.php diff --git a/application/Queries/Handler/Customers/IndexCustomerHandler.php b/application/Queries/Handler/Customers/IndexCustomerHandler.php new file mode 100644 index 0000000..14385d0 --- /dev/null +++ b/application/Queries/Handler/Customers/IndexCustomerHandler.php @@ -0,0 +1,34 @@ +userService = $userService; + } + + /** + * @param IndexCustomerQuery $query + * @return ResultInterface + */ + public function handle($query): ResultInterface + { + $customers = $this->userService->findCustomers($query->getPage(), $query->getSize()); + + $result = new IndexCustomerResult(); + $result->setCustomers($customers); + return $result; + } +} diff --git a/application/Queries/Query/Customers/IndexCustomerQuery.php b/application/Queries/Query/Customers/IndexCustomerQuery.php new file mode 100644 index 0000000..6e2c693 --- /dev/null +++ b/application/Queries/Query/Customers/IndexCustomerQuery.php @@ -0,0 +1,35 @@ +page = $page; + $this->size = $size; + } + + /** + * @return mixed + */ + public function getPage() + { + return $this->page; + } + + /** + * @return mixed + */ + public function getSize() + { + return $this->size; + } +} diff --git a/application/Queries/Results/Customers/IndexCustomerResult.php b/application/Queries/Results/Customers/IndexCustomerResult.php new file mode 100644 index 0000000..a37b4ba --- /dev/null +++ b/application/Queries/Results/Customers/IndexCustomerResult.php @@ -0,0 +1,20 @@ +customers = $customers; + } + + public function getCustomers() { + return $this->customers; + } +} diff --git a/application/Services/Users/UserService.php b/application/Services/Users/UserService.php index 9566688..9496117 100644 --- a/application/Services/Users/UserService.php +++ b/application/Services/Users/UserService.php @@ -130,4 +130,12 @@ public function findEmployees($page, $size): array return $this->repository->findEmployees($page, $size); } + + public function findCustomers($page, $size) + { + $page = $page ? $page : 1; + $size = $size ? $size : 10; + + return $this->repository->findCustomers($page, $size); + } } diff --git a/application/Services/Users/UserServiceInterface.php b/application/Services/Users/UserServiceInterface.php index 7fc43d1..bc978af 100644 --- a/application/Services/Users/UserServiceInterface.php +++ b/application/Services/Users/UserServiceInterface.php @@ -37,5 +37,7 @@ public function existWithEmail(string $email): bool; public function update(); - public function findEmployees($getPage, $getSize): array; + public function findEmployees($page, $size): array; + + public function findCustomers($page, $size); } diff --git a/bootstrap/cache/routes.php b/bootstrap/cache/routes.php index ccc5a04..0389c24 100644 --- a/bootstrap/cache/routes.php +++ b/bootstrap/cache/routes.php @@ -12,5 +12,5 @@ */ app('router')->setRoutes( - unserialize(base64_decode('TzozNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlQ29sbGVjdGlvbiI6NDp7czo5OiIAKgByb3V0ZXMiO2E6Nzp7czozOiJHRVQiO2E6MTg6e3M6MTc6ImFwaS9kb2N1bWVudGF0aW9uIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNzoiYXBpL2RvY3VtZW50YXRpb24iO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjI6ImFzIjtzOjE0OiJsNS1zd2FnZ2VyLmFwaSI7czoxMDoibWlkZGxld2FyZSI7YTowOnt9czo0OiJ1c2VzIjtzOjQ5OiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAYXBpIjtzOjEwOiJjb250cm9sbGVyIjtzOjQ5OiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAYXBpIjtzOjk6Im5hbWVzcGFjZSI7czo5OiJMNVN3YWdnZXIiO3M6NjoicHJlZml4IjtOO3M6NToid2hlcmUiO2E6MDp7fX1zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxODoiL2FwaS9kb2N1bWVudGF0aW9uIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjI1OiIjXi9hcGkvZG9jdW1lbnRhdGlvbiQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxODoiL2FwaS9kb2N1bWVudGF0aW9uIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE2OiJkb2NzL3tqc29uRmlsZT99IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNjoiZG9jcy97anNvbkZpbGU/fSI7czo3OiJtZXRob2RzIjthOjc6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7aToyO3M6NDoiUE9TVCI7aTozO3M6MzoiUFVUIjtpOjQ7czo1OiJQQVRDSCI7aTo1O3M6NjoiREVMRVRFIjtpOjY7czo3OiJPUFRJT05TIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoyOiJhcyI7czoxNToibDUtc3dhZ2dlci5kb2NzIjtzOjEwOiJtaWRkbGV3YXJlIjthOjA6e31zOjQ6InVzZXMiO3M6NTA6IlxMNVN3YWdnZXJcSHR0cFxDb250cm9sbGVyc1xTd2FnZ2VyQ29udHJvbGxlckBkb2NzIjtzOjEwOiJjb250cm9sbGVyIjtzOjUwOiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAZG9jcyI7czo5OiJuYW1lc3BhY2UiO3M6OToiTDVTd2FnZ2VyIjtzOjY6InByZWZpeCI7TjtzOjU6IndoZXJlIjthOjA6e319czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czo4OiJqc29uRmlsZSI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjU6Ii9kb2NzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM4OiIjXi9kb2NzKD86Lyg/UDxqc29uRmlsZT5bXi9dKyspKT8kI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6ODoianNvbkZpbGUiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjU6Ii9kb2NzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjg6Impzb25GaWxlIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxODoiZG9jcy9hc3NldC97YXNzZXR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxODoiZG9jcy9hc3NldC97YXNzZXR9IjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoyOiJhcyI7czoxNjoibDUtc3dhZ2dlci5hc3NldCI7czoxMDoibWlkZGxld2FyZSI7YTowOnt9czo0OiJ1c2VzIjtzOjU2OiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckFzc2V0Q29udHJvbGxlckBpbmRleCI7czoxMDoiY29udHJvbGxlciI7czo1NjoiXEw1U3dhZ2dlclxIdHRwXENvbnRyb2xsZXJzXFN3YWdnZXJBc3NldENvbnRyb2xsZXJAaW5kZXgiO3M6OToibmFtZXNwYWNlIjtzOjk6Ikw1U3dhZ2dlciI7czo2OiJwcmVmaXgiO047czo1OiJ3aGVyZSI7YTowOnt9fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6NToiYXNzZXQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMToiL2RvY3MvYXNzZXQiO3M6MTA6InBhdGhfcmVnZXgiO3M6MzY6IiNeL2RvY3MvYXNzZXQvKD9QPGFzc2V0PlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6NToiYXNzZXQiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjExOiIvZG9jcy9hc3NldCI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czo1OiJhc3NldCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTk6ImFwaS9vYXV0aDItY2FsbGJhY2siO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE5OiJhcGkvb2F1dGgyLWNhbGxiYWNrIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoyOiJhcyI7czoyNjoibDUtc3dhZ2dlci5vYXV0aDJfY2FsbGJhY2siO3M6MTA6Im1pZGRsZXdhcmUiO2E6MDp7fXM6NDoidXNlcyI7czo2MDoiXEw1U3dhZ2dlclxIdHRwXENvbnRyb2xsZXJzXFN3YWdnZXJDb250cm9sbGVyQG9hdXRoMkNhbGxiYWNrIjtzOjEwOiJjb250cm9sbGVyIjtzOjYwOiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAb2F1dGgyQ2FsbGJhY2siO3M6OToibmFtZXNwYWNlIjtzOjk6Ikw1U3dhZ2dlciI7czo2OiJwcmVmaXgiO047czo1OiJ3aGVyZSI7YTowOnt9fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjIwOiIvYXBpL29hdXRoMi1jYWxsYmFjayI7czoxMDoicGF0aF9yZWdleCI7czoyODoiI14vYXBpL29hdXRoMlwtY2FsbGJhY2skI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MjA6Ii9hcGkvb2F1dGgyLWNhbGxiYWNrIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE0OiJhcGkvc2VuZF9lbWFpbCI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTQ6ImFwaS9zZW5kX2VtYWlsIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Njp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NDU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFNlbmRFbWFpbEBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czozNjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU2VuZEVtYWlsIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjM6ImFwaSI7czo1OiJ3aGVyZSI7YTowOnt9fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE1OiIvYXBpL3NlbmRfZW1haWwiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjI6IiNeL2FwaS9zZW5kX2VtYWlsJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE1OiIvYXBpL3NlbmRfZW1haWwiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MjE6ImFwaS91c2Vycy97aWR9L2VuYWJsZSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MjE6ImFwaS91c2Vycy97aWR9L2VuYWJsZSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjU4OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xFbmFibGVVc2VyQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjQ5OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xFbmFibGVVc2VyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjk6ImFwaS91c2VycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMDoiZW5hYmxlVXNlciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMDoiL2FwaS91c2VycyI7czoxMDoicGF0aF9yZWdleCI7czozOToiI14vYXBpL3VzZXJzLyg/UDxpZD5bXi9dKyspL2VuYWJsZSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YTozOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czo3OiIvZW5hYmxlIjt9aToxO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MjthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEwOiIvYXBpL3VzZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoyMjoiYXBpL3VzZXJzL3tpZH0vZGlzYWJsZSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MjI6ImFwaS91c2Vycy97aWR9L2Rpc2FibGUiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1OToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcRGlzYWJsZVVzZXJBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTA6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXERpc2FibGVVc2VyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjk6ImFwaS91c2VycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMToiZGlzYWJsZVVzZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTA6Ii9hcGkvdXNlcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6NDA6IiNeL2FwaS91c2Vycy8oP1A8aWQ+W14vXSsrKS9kaXNhYmxlJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjM6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjg6Ii9kaXNhYmxlIjt9aToxO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MjthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEwOiIvYXBpL3VzZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNDoiYXBpL3VzZXJzL3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE0OiJhcGkvdXNlcnMve2lkfSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjU2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xTaG93VXNlckFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo0NzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcU2hvd1VzZXJBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6OToiYXBpL3VzZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjExOiJzaG93T25lVXNlciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMDoiL2FwaS91c2VycyI7czoxMDoicGF0aF9yZWdleCI7czozMjoiI14vYXBpL3VzZXJzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMDoiL2FwaS91c2VycyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTM6ImFwaS9lbXBsb3llZXMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEzOiJhcGkvZW1wbG95ZWVzIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xGaW5kRW1wbG95ZWVBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xGaW5kRW1wbG95ZWVBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTM6ImFwaS9lbXBsb3llZXMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTI6Imxpc3RFbXBsb3llZSI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE0OiIvYXBpL2VtcGxveWVlcyI7czoxMDoicGF0aF9yZWdleCI7czoyMToiI14vYXBpL2VtcGxveWVlcyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9lbXBsb3llZXMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTg6ImFwaS9jdXN0b21lcnMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTg6ImFwaS9jdXN0b21lcnMve2lkfSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY0OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcRmluZEN1c3RvbWVyQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU1OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcRmluZEN1c3RvbWVyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEzOiJhcGkvY3VzdG9tZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE0OiJjcmVhdGVDdXN0b21lciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxNDoiL2FwaS9jdXN0b21lcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MzY6IiNeL2FwaS9jdXN0b21lcnMvKD9QPGlkPlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE0OiIvYXBpL2N1c3RvbWVycyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTk6ImFwaS9wcm9kdWN0cy97dXVpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE5OiJhcGkvcHJvZHVjdHMve3V1aWR9IjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjI6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXEZpbmRQcm9kdWN0QWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjUzOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xGaW5kUHJvZHVjdEFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMjoiYXBpL3Byb2R1Y3RzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjExOiJmaW5kUHJvZHVjdCI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6NDoidXVpZCI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjEzOiIvYXBpL3Byb2R1Y3RzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM3OiIjXi9hcGkvcHJvZHVjdHMvKD9QPHV1aWQ+W14vXSsrKSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToyOntpOjA7YTo1OntpOjA7czo4OiJ2YXJpYWJsZSI7aToxO3M6MToiLyI7aToyO3M6NjoiW14vXSsrIjtpOjM7czo0OiJ1dWlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMzoiL2FwaS9wcm9kdWN0cyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czo0OiJ1dWlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxMDoiYXBpL3NlYXJjaCI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTA6ImFwaS9zZWFyY2giO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2NToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcU2VhcmNoUHJvZHVjdHNBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTY6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFNlYXJjaFByb2R1Y3RzQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEwOiJhcGkvc2VhcmNoIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE0OiJzZWFyY2hQcm9kdWN0cyI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjExOiIvYXBpL3NlYXJjaCI7czoxMDoicGF0aF9yZWdleCI7czoxODoiI14vYXBpL3NlYXJjaCQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMToiL2FwaS9zZWFyY2giO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTU6ImFwaS9zZWFyY2gvaG9tZSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTU6ImFwaS9zZWFyY2gvaG9tZSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjcyOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xTZWFyY2hQcm9kdWN0c0ZvckhvbWVBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NjM6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFNlYXJjaFByb2R1Y3RzRm9ySG9tZUFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMDoiYXBpL3NlYXJjaCI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNDoic2VhcmNoUHJvZHVjdHMiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNjoiL2FwaS9zZWFyY2gvaG9tZSI7czoxMDoicGF0aF9yZWdleCI7czoyMzoiI14vYXBpL3NlYXJjaC9ob21lJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE2OiIvYXBpL3NlYXJjaC9ob21lIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjEzOiJhcGkvaW52ZW50b3J5IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxMzoiYXBpL2ludmVudG9yeSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjU5OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xTdG9ja1xJbmRleFByb2R1Y3RTdG9ja0BfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1MDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcSW5kZXhQcm9kdWN0U3RvY2siO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTM6ImFwaS9pbnZlbnRvcnkiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTg6ImluZGV4UHJvZHVjdHNTdG9jayI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE0OiIvYXBpL2ludmVudG9yeSI7czoxMDoicGF0aF9yZWdleCI7czoyMToiI14vYXBpL2ludmVudG9yeSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9pbnZlbnRvcnkiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTg6ImFwaS9pbnZlbnRvcnkve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTg6ImFwaS9pbnZlbnRvcnkve2lkfSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjU4OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xTdG9ja1xGaW5kUHJvZHVjdFN0b2NrQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjQ5OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xTdG9ja1xGaW5kUHJvZHVjdFN0b2NrIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEzOiJhcGkvaW52ZW50b3J5IjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE3OiJmaW5kUHJvZHVjdHNTdG9jayI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxNDoiL2FwaS9pbnZlbnRvcnkiO3M6MTA6InBhdGhfcmVnZXgiO3M6MzY6IiNeL2FwaS9pbnZlbnRvcnkvKD9QPGlkPlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE0OiIvYXBpL2ludmVudG9yeSI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTE6ImFwaS9maWx0ZXJzIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxMToiYXBpL2ZpbHRlcnMiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2MjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xJbmRleEZpbHRlcnNBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTM6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEZpbHRlcnNcSW5kZXhGaWx0ZXJzQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjExOiJhcGkvZmlsdGVycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMjoiaW5kZXhGaWx0ZXJzIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTI6Ii9hcGkvZmlsdGVycyI7czoxMDoicGF0aF9yZWdleCI7czoxOToiI14vYXBpL2ZpbHRlcnMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTI6Ii9hcGkvZmlsdGVycyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNDoiYXBpL2NhdGVnb3JpZXMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE0OiJhcGkvY2F0ZWdvcmllcyI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDYXRlZ29yaWVzXEluZGV4Q2F0ZWdvcnlBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTc6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcSW5kZXhDYXRlZ29yeUFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxNDoiYXBpL2NhdGVnb3JpZXMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTM6ImluZGV4Q2F0ZWdvcnkiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNToiL2FwaS9jYXRlZ29yaWVzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjIyOiIjXi9hcGkvY2F0ZWdvcmllcyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNToiL2FwaS9jYXRlZ29yaWVzIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjEwOiJhcGkvb3JkZXJzIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxMDoiYXBpL29yZGVycyI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjYwOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xPcmRlcnNcSW5kZXhPcmRlcnNBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTE6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXE9yZGVyc1xJbmRleE9yZGVyc0FjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMDoiYXBpL29yZGVycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czo5OiJnZXRPcmRlcnMiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxMToiL2FwaS9vcmRlcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MTg6IiNeL2FwaS9vcmRlcnMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTE6Ii9hcGkvb3JkZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX19czo0OiJIRUFEIjthOjE4OntzOjE3OiJhcGkvZG9jdW1lbnRhdGlvbiI7cjo0O3M6MTY6ImRvY3Mve2pzb25GaWxlP30iO3I6Mzc7czoxODoiZG9jcy9hc3NldC97YXNzZXR9IjtyOjgzO3M6MTk6ImFwaS9vYXV0aDItY2FsbGJhY2siO3I6MTI0O3M6MTQ6ImFwaS9zZW5kX2VtYWlsIjtyOjE1NztzOjIxOiJhcGkvdXNlcnMve2lkfS9lbmFibGUiO3I6MTkwO3M6MjI6ImFwaS91c2Vycy97aWR9L2Rpc2FibGUiO3I6MjM1O3M6MTQ6ImFwaS91c2Vycy97aWR9IjtyOjI4MDtzOjEzOiJhcGkvZW1wbG95ZWVzIjtyOjMyMjtzOjE4OiJhcGkvY3VzdG9tZXJzL3tpZH0iO3I6MzU2O3M6MTk6ImFwaS9wcm9kdWN0cy97dXVpZH0iO3I6Mzk4O3M6MTA6ImFwaS9zZWFyY2giO3I6NDQwO3M6MTU6ImFwaS9zZWFyY2gvaG9tZSI7cjo0NzQ7czoxMzoiYXBpL2ludmVudG9yeSI7cjo1MDg7czoxODoiYXBpL2ludmVudG9yeS97aWR9IjtyOjU0MjtzOjExOiJhcGkvZmlsdGVycyI7cjo1ODQ7czoxNDoiYXBpL2NhdGVnb3JpZXMiO3I6NjE4O3M6MTA6ImFwaS9vcmRlcnMiO3I6NjUyO31zOjQ6IlBPU1QiO2E6MTY6e3M6MTY6ImRvY3Mve2pzb25GaWxlP30iO3I6Mzc7czoxODoiYXBpL3VzZXJzL3JlY292ZXJ5IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxODoiYXBpL3VzZXJzL3JlY292ZXJ5IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY0OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xSZWNvdmVyeVBhc3N3b3JkQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU1OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xSZWNvdmVyeVBhc3N3b3JkQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjk6ImFwaS91c2VycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNjoicmVjb3ZlcnlQYXNzd29yZCI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE5OiIvYXBpL3VzZXJzL3JlY292ZXJ5IjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjI2OiIjXi9hcGkvdXNlcnMvcmVjb3ZlcnkkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTk6Ii9hcGkvdXNlcnMvcmVjb3ZlcnkiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTY6ImFwaS91c2Vycy9mb3Jnb3QiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE2OiJhcGkvdXNlcnMvZm9yZ290IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjc0OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xDaGFuZ2VQYXNzd29yZEZyb21SZWNvdmVyeUFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo2NToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcQ2hhbmdlUGFzc3dvcmRGcm9tUmVjb3ZlcnlBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6OToiYXBpL3VzZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjI2OiJjaGFuZ2VQYXNzd29yZEZyb21SZWNvdmVyeSI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE3OiIvYXBpL3VzZXJzL2ZvcmdvdCI7czoxMDoicGF0aF9yZWdleCI7czoyNDoiI14vYXBpL3VzZXJzL2ZvcmdvdCQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNzoiL2FwaS91c2Vycy9mb3Jnb3QiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTQ6ImFwaS9hdXRoL2xvZ2luIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNDoiYXBpL2F1dGgvbG9naW4iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NTI6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEF1dGhcTG9naW5BY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NDM6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEF1dGhcTG9naW5BY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6ODoiYXBpL2F1dGgiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6NToibG9naW4iO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNToiL2FwaS9hdXRoL2xvZ2luIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjIyOiIjXi9hcGkvYXV0aC9sb2dpbiQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNToiL2FwaS9hdXRoL2xvZ2luIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjIwOiJhcGkvYXV0aC9yZW5ldy10b2tlbiI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MjA6ImFwaS9hdXRoL3JlbmV3LXRva2VuIjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjU3OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xBdXRoXFJlbmV3VG9rZW5BY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NDg6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEF1dGhcUmVuZXdUb2tlbkFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czo4OiJhcGkvYXV0aCI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMToicmVuZXctdG9rZW4iO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoyMToiL2FwaS9hdXRoL3JlbmV3LXRva2VuIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjI5OiIjXi9hcGkvYXV0aC9yZW5ld1wtdG9rZW4kI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MjE6Ii9hcGkvYXV0aC9yZW5ldy10b2tlbiI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNToiYXBpL2F1dGgvc2lnbnVwIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNToiYXBpL2F1dGgvc2lnbnVwIjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY4OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcU3RvcmVXZWJDdXN0b21lckFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1OToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ3VzdG9tZXJzXFN0b3JlV2ViQ3VzdG9tZXJBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6ODoiYXBpL2F1dGgiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTc6ImNyZWF0ZVdlYkN1c3RvbWVyIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTY6Ii9hcGkvYXV0aC9zaWdudXAiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjM6IiNeL2FwaS9hdXRoL3NpZ251cCQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNjoiL2FwaS9hdXRoL3NpZ251cCI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoyNDoiYXBpL2F1dGgvY2hhbmdlLXBhc3N3b3JkIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoyNDoiYXBpL2F1dGgvY2hhbmdlLXBhc3N3b3JkIjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjYxOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xBdXRoXENoYW5nZVBhc3N3b3JkQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjUyOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xBdXRoXENoYW5nZVBhc3N3b3JkQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjg6ImFwaS9hdXRoIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE1OiJjaGFuZ2UtcGFzc3dvcmQiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoyNToiL2FwaS9hdXRoL2NoYW5nZS1wYXNzd29yZCI7czoxMDoicGF0aF9yZWdleCI7czozMzoiI14vYXBpL2F1dGgvY2hhbmdlXC1wYXNzd29yZCQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoyNToiL2FwaS9hdXRoL2NoYW5nZS1wYXNzd29yZCI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxMzoiYXBpL2VtcGxveWVlcyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTM6ImFwaS9lbXBsb3llZXMiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xTdG9yZUVtcGxveWVlQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xFbXBsb3llZXNcU3RvcmVFbXBsb3llZUFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMzoiYXBpL2VtcGxveWVlcyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNDoiY3JlYXRlRW1wbG95ZWUiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNDoiL2FwaS9lbXBsb3llZXMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjE6IiNeL2FwaS9lbXBsb3llZXMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTQ6Ii9hcGkvZW1wbG95ZWVzIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjEzOiJhcGkvY3VzdG9tZXJzIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxMzoiYXBpL2N1c3RvbWVycyI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2NToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ3VzdG9tZXJzXFN0b3JlQ3VzdG9tZXJBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTY6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xTdG9yZUN1c3RvbWVyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEzOiJhcGkvY3VzdG9tZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE0OiJjcmVhdGVDdXN0b21lciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE0OiIvYXBpL2N1c3RvbWVycyI7czoxMDoicGF0aF9yZWdleCI7czoyMToiI14vYXBpL2N1c3RvbWVycyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9jdXN0b21lcnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTA6ImFwaS9hZG1pbnMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEwOiJhcGkvYWRtaW5zIjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjU5OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xBZG1pbnNcU3RvcmVBZG1pbkFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1MDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQWRtaW5zXFN0b3JlQWRtaW5BY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTA6ImFwaS9hZG1pbnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTE6ImNyZWF0ZUFkbWluIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTE6Ii9hcGkvYWRtaW5zIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjE4OiIjXi9hcGkvYWRtaW5zJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjExOiIvYXBpL2FkbWlucyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxMjoiYXBpL3Byb2R1Y3RzIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxMjoiYXBpL3Byb2R1Y3RzIjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjYzOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xTdG9yZVByb2R1Y3RBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFN0b3JlUHJvZHVjdEFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMjoiYXBpL3Byb2R1Y3RzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjEzOiJjcmVhdGVQcm9kdWN0Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTM6Ii9hcGkvcHJvZHVjdHMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjA6IiNeL2FwaS9wcm9kdWN0cyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMzoiL2FwaS9wcm9kdWN0cyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxODoiYXBpL2ludmVudG9yeS97aWR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxODoiYXBpL2ludmVudG9yeS97aWR9IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjYwOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xVcGRhdGVJbnZlbnRvcnlAX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTE6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFVwZGF0ZUludmVudG9yeSI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMzoiYXBpL2ludmVudG9yeSI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoyMjoidXBkYXRlSW52ZW50b3J5UHJvZHVjdCI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxNDoiL2FwaS9pbnZlbnRvcnkiO3M6MTA6InBhdGhfcmVnZXgiO3M6MzY6IiNeL2FwaS9pbnZlbnRvcnkvKD9QPGlkPlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE0OiIvYXBpL2ludmVudG9yeSI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTE6ImFwaS9maWx0ZXJzIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxMToiYXBpL2ZpbHRlcnMiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjI6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEZpbHRlcnNcU3RvcmVGaWx0ZXJzQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjUzOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXFN0b3JlRmlsdGVyc0FjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMToiYXBpL2ZpbHRlcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6OToiYWRkRmlsdGVyIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTI6Ii9hcGkvZmlsdGVycyI7czoxMDoicGF0aF9yZWdleCI7czoxOToiI14vYXBpL2ZpbHRlcnMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTI6Ii9hcGkvZmlsdGVycyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNDoiYXBpL2NhdGVnb3JpZXMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE0OiJhcGkvY2F0ZWdvcmllcyI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2NjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xTdG9yZUNhdGVnb3J5QWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU3OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDYXRlZ29yaWVzXFN0b3JlQ2F0ZWdvcnlBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTQ6ImFwaS9jYXRlZ29yaWVzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjEzOiJzdG9yZUNhdGVnb3J5Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTU6Ii9hcGkvY2F0ZWdvcmllcyI7czoxMDoicGF0aF9yZWdleCI7czoyMjoiI14vYXBpL2NhdGVnb3JpZXMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTU6Ii9hcGkvY2F0ZWdvcmllcyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoyNDoiYXBpL3BheW1lbnRzL21lcmNhZG9wYWdvIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoyNDoiYXBpL3BheW1lbnRzL21lcmNhZG9wYWdvIjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjYzOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQYXltZW50c1xNZXJjYWRvUGFnb0V4ZWN1dGVAX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFBheW1lbnRzXE1lcmNhZG9QYWdvRXhlY3V0ZSI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMjoiYXBpL3BheW1lbnRzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE4OiJwYXltZW50TWVyY2Fkb1BhZ28iO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoyNToiL2FwaS9wYXltZW50cy9tZXJjYWRvcGFnbyI7czoxMDoicGF0aF9yZWdleCI7czozMjoiI14vYXBpL3BheW1lbnRzL21lcmNhZG9wYWdvJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjI1OiIvYXBpL3BheW1lbnRzL21lcmNhZG9wYWdvIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE3OiJhcGkvbm90aWZpY2F0aW9ucyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTc6ImFwaS9ub3RpZmljYXRpb25zIjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjcxOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xOb3RpZmljYXRpb25zXENoZWNrTm90aWZpY2F0aW9uVXNlckBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo2MjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcTm90aWZpY2F0aW9uc1xDaGVja05vdGlmaWNhdGlvblVzZXIiO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTc6ImFwaS9ub3RpZmljYXRpb25zIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjIxOiJjaGVja05vdGlmaWNhdGlvblVzZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxODoiL2FwaS9ub3RpZmljYXRpb25zIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjI1OiIjXi9hcGkvbm90aWZpY2F0aW9ucyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxODoiL2FwaS9ub3RpZmljYXRpb25zIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX19czozOiJQVVQiO2E6NTp7czoxNjoiZG9jcy97anNvbkZpbGU/fSI7cjozNztzOjE4OiJhcGkvY3VzdG9tZXJzL3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE4OiJhcGkvY3VzdG9tZXJzL3tpZH0iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czozOiJQVVQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2NjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ3VzdG9tZXJzXFVwZGF0ZUN1c3RvbWVyQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU3OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcVXBkYXRlQ3VzdG9tZXJBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTM6ImFwaS9jdXN0b21lcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTQ6InVwZGF0ZUN1c3RvbWVyIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE0OiIvYXBpL2N1c3RvbWVycyI7czoxMDoicGF0aF9yZWdleCI7czozNjoiI14vYXBpL2N1c3RvbWVycy8oP1A8aWQ+W14vXSsrKSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToyOntpOjA7YTo1OntpOjA7czo4OiJ2YXJpYWJsZSI7aToxO3M6MToiLyI7aToyO3M6NjoiW14vXSsrIjtpOjM7czoyOiJpZCI7aTo0O2I6MTt9aToxO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTQ6Ii9hcGkvY3VzdG9tZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNzoiYXBpL3Byb2R1Y3RzL3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE3OiJhcGkvcHJvZHVjdHMve2lkfSI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjM6IlBVVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY0OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xVcGRhdGVQcm9kdWN0QWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU1OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xVcGRhdGVQcm9kdWN0QWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEyOiJhcGkvcHJvZHVjdHMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTM6InVwZGF0ZVByb2R1Y3QiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTM6Ii9hcGkvcHJvZHVjdHMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MzU6IiNeL2FwaS9wcm9kdWN0cy8oP1A8aWQ+W14vXSsrKSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToyOntpOjA7YTo1OntpOjA7czo4OiJ2YXJpYWJsZSI7aToxO3M6MToiLyI7aToyO3M6NjoiW14vXSsrIjtpOjM7czoyOiJpZCI7aTo0O2I6MTt9aToxO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTM6Ii9hcGkvcHJvZHVjdHMiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE2OiJhcGkvZmlsdGVycy97aWR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNjoiYXBpL2ZpbHRlcnMve2lkfSI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjM6IlBVVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjYzOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXFVwZGF0ZUZpbHRlcnNBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEZpbHRlcnNcVXBkYXRlRmlsdGVyc0FjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMToiYXBpL2ZpbHRlcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTI6InVwZGF0ZUZpbHRlciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMjoiL2FwaS9maWx0ZXJzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM0OiIjXi9hcGkvZmlsdGVycy8oP1A8aWQ+W14vXSsrKSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToyOntpOjA7YTo1OntpOjA7czo4OiJ2YXJpYWJsZSI7aToxO3M6MToiLyI7aToyO3M6NjoiW14vXSsrIjtpOjM7czoyOiJpZCI7aTo0O2I6MTt9aToxO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTI6Ii9hcGkvZmlsdGVycyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTk6ImFwaS9jYXRlZ29yaWVzL3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE5OiJhcGkvY2F0ZWdvcmllcy97aWR9IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6MzoiUFVUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6Njc6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcVXBkYXRlQ2F0ZWdvcnlBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTg6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcVXBkYXRlQ2F0ZWdvcnlBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTQ6ImFwaS9jYXRlZ29yaWVzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE0OiJ1cGRhdGVDYXRlZ29yeSI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxNToiL2FwaS9jYXRlZ29yaWVzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM3OiIjXi9hcGkvY2F0ZWdvcmllcy8oP1A8aWQ+W14vXSsrKSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToyOntpOjA7YTo1OntpOjA7czo4OiJ2YXJpYWJsZSI7aToxO3M6MToiLyI7aToyO3M6NjoiW14vXSsrIjtpOjM7czoyOiJpZCI7aTo0O2I6MTt9aToxO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTU6Ii9hcGkvY2F0ZWdvcmllcyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fX1zOjU6IlBBVENIIjthOjE6e3M6MTY6ImRvY3Mve2pzb25GaWxlP30iO3I6Mzc7fXM6NjoiREVMRVRFIjthOjQ6e3M6MTY6ImRvY3Mve2pzb25GaWxlP30iO3I6Mzc7czoxNzoiYXBpL3Byb2R1Y3RzL3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE3OiJhcGkvcHJvZHVjdHMve2lkfSI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjY6IkRFTEVURSI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY1OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xEZXN0cm95UHJvZHVjdEFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcRGVzdHJveVByb2R1Y3RBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTI6ImFwaS9wcm9kdWN0cyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNDoiZGVzdHJveVByb2R1Y3QiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTM6Ii9hcGkvcHJvZHVjdHMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MzU6IiNeL2FwaS9wcm9kdWN0cy8oP1A8aWQ+W14vXSsrKSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToyOntpOjA7YTo1OntpOjA7czo4OiJ2YXJpYWJsZSI7aToxO3M6MToiLyI7aToyO3M6NjoiW14vXSsrIjtpOjM7czoyOiJpZCI7aTo0O2I6MTt9aToxO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTM6Ii9hcGkvcHJvZHVjdHMiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE2OiJhcGkvZmlsdGVycy97aWR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNjoiYXBpL2ZpbHRlcnMve2lkfSI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjY6IkRFTEVURSI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjYzOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXERlc3Ryb3lGaWx0ZXJBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEZpbHRlcnNcRGVzdHJveUZpbHRlckFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMToiYXBpL2ZpbHRlcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTM6ImRlc3Ryb3lGaWx0ZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTI6Ii9hcGkvZmlsdGVycyI7czoxMDoicGF0aF9yZWdleCI7czozNDoiI14vYXBpL2ZpbHRlcnMvKD9QPGlkPlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEyOiIvYXBpL2ZpbHRlcnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE5OiJhcGkvY2F0ZWdvcmllcy97aWR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxOToiYXBpL2NhdGVnb3JpZXMve2lkfSI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjY6IkRFTEVURSI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY4OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDYXRlZ29yaWVzXERlc3Ryb3lDYXRlZ29yeUFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1OToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xEZXN0cm95Q2F0ZWdvcnlBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTQ6ImFwaS9jYXRlZ29yaWVzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE1OiJkZXN0cm95Q2F0ZWdvcnkiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTU6Ii9hcGkvY2F0ZWdvcmllcyI7czoxMDoicGF0aF9yZWdleCI7czozNzoiI14vYXBpL2NhdGVnb3JpZXMvKD9QPGlkPlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE1OiIvYXBpL2NhdGVnb3JpZXMiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX19czo3OiJPUFRJT05TIjthOjE6e3M6MTY6ImRvY3Mve2pzb25GaWxlP30iO3I6Mzc7fX1zOjEyOiIAKgBhbGxSb3V0ZXMiO2E6NDA6e3M6MjE6IkhFQURhcGkvZG9jdW1lbnRhdGlvbiI7cjo0O3M6MjM6Ik9QVElPTlNkb2NzL3tqc29uRmlsZT99IjtyOjM3O3M6MjI6IkhFQURkb2NzL2Fzc2V0L3thc3NldH0iO3I6ODM7czoyMzoiSEVBRGFwaS9vYXV0aDItY2FsbGJhY2siO3I6MTI0O3M6MTg6IkhFQURhcGkvc2VuZF9lbWFpbCI7cjoxNTc7czoyMjoiUE9TVGFwaS91c2Vycy9yZWNvdmVyeSI7cjo3MDc7czoyMDoiUE9TVGFwaS91c2Vycy9mb3Jnb3QiO3I6NzQwO3M6MjU6IkhFQURhcGkvdXNlcnMve2lkfS9lbmFibGUiO3I6MTkwO3M6MjY6IkhFQURhcGkvdXNlcnMve2lkfS9kaXNhYmxlIjtyOjIzNTtzOjE4OiJIRUFEYXBpL3VzZXJzL3tpZH0iO3I6MjgwO3M6MTg6IlBPU1RhcGkvYXV0aC9sb2dpbiI7cjo3NzM7czoyNDoiUE9TVGFwaS9hdXRoL3JlbmV3LXRva2VuIjtyOjgwNjtzOjE5OiJQT1NUYXBpL2F1dGgvc2lnbnVwIjtyOjgzOTtzOjI4OiJQT1NUYXBpL2F1dGgvY2hhbmdlLXBhc3N3b3JkIjtyOjg3MjtzOjE3OiJQT1NUYXBpL2VtcGxveWVlcyI7cjo5MDU7czoxNzoiSEVBRGFwaS9lbXBsb3llZXMiO3I6MzIyO3M6MTc6IlBPU1RhcGkvY3VzdG9tZXJzIjtyOjkzODtzOjIyOiJIRUFEYXBpL2N1c3RvbWVycy97aWR9IjtyOjM1NjtzOjIxOiJQVVRhcGkvY3VzdG9tZXJzL3tpZH0iO3I6MTIxMjtzOjE0OiJQT1NUYXBpL2FkbWlucyI7cjo5NzE7czoyMDoiUFVUYXBpL3Byb2R1Y3RzL3tpZH0iO3I6MTI1MztzOjIzOiJIRUFEYXBpL3Byb2R1Y3RzL3t1dWlkfSI7cjozOTg7czoyMzoiREVMRVRFYXBpL3Byb2R1Y3RzL3tpZH0iO3I6MTM4MDtzOjE2OiJQT1NUYXBpL3Byb2R1Y3RzIjtyOjEwMDQ7czoxNDoiSEVBRGFwaS9zZWFyY2giO3I6NDQwO3M6MTk6IkhFQURhcGkvc2VhcmNoL2hvbWUiO3I6NDc0O3M6MjI6IlBPU1RhcGkvaW52ZW50b3J5L3tpZH0iO3I6MTAzNztzOjE3OiJIRUFEYXBpL2ludmVudG9yeSI7cjo1MDg7czoyMjoiSEVBRGFwaS9pbnZlbnRvcnkve2lkfSI7cjo1NDI7czoxNToiSEVBRGFwaS9maWx0ZXJzIjtyOjU4NDtzOjE1OiJQT1NUYXBpL2ZpbHRlcnMiO3I6MTA3ODtzOjE5OiJQVVRhcGkvZmlsdGVycy97aWR9IjtyOjEyOTQ7czoyMjoiREVMRVRFYXBpL2ZpbHRlcnMve2lkfSI7cjoxNDIxO3M6MTg6IlBPU1RhcGkvY2F0ZWdvcmllcyI7cjoxMTExO3M6MjI6IlBVVGFwaS9jYXRlZ29yaWVzL3tpZH0iO3I6MTMzNTtzOjE4OiJIRUFEYXBpL2NhdGVnb3JpZXMiO3I6NjE4O3M6MjU6IkRFTEVURWFwaS9jYXRlZ29yaWVzL3tpZH0iO3I6MTQ2MjtzOjI4OiJQT1NUYXBpL3BheW1lbnRzL21lcmNhZG9wYWdvIjtyOjExNDQ7czoyMToiUE9TVGFwaS9ub3RpZmljYXRpb25zIjtyOjExNzc7czoxNDoiSEVBRGFwaS9vcmRlcnMiO3I6NjUyO31zOjExOiIAKgBuYW1lTGlzdCI7YTozNzp7czoxNDoibDUtc3dhZ2dlci5hcGkiO3I6NDtzOjE1OiJsNS1zd2FnZ2VyLmRvY3MiO3I6Mzc7czoxNjoibDUtc3dhZ2dlci5hc3NldCI7cjo4MztzOjI2OiJsNS1zd2FnZ2VyLm9hdXRoMl9jYWxsYmFjayI7cjoxMjQ7czoxNjoicmVjb3ZlcnlQYXNzd29yZCI7cjo3MDc7czoyNjoiY2hhbmdlUGFzc3dvcmRGcm9tUmVjb3ZlcnkiO3I6NzQwO3M6MTA6ImVuYWJsZVVzZXIiO3I6MTkwO3M6MTE6ImRpc2FibGVVc2VyIjtyOjIzNTtzOjExOiJzaG93T25lVXNlciI7cjoyODA7czo1OiJsb2dpbiI7cjo3NzM7czoxMToicmVuZXctdG9rZW4iO3I6ODA2O3M6MTc6ImNyZWF0ZVdlYkN1c3RvbWVyIjtyOjgzOTtzOjE1OiJjaGFuZ2UtcGFzc3dvcmQiO3I6ODcyO3M6MTQ6ImNyZWF0ZUVtcGxveWVlIjtyOjkwNTtzOjEyOiJsaXN0RW1wbG95ZWUiO3I6MzIyO3M6MTQ6ImNyZWF0ZUN1c3RvbWVyIjtyOjM1NjtzOjE0OiJ1cGRhdGVDdXN0b21lciI7cjoxMjEyO3M6MTE6ImNyZWF0ZUFkbWluIjtyOjk3MTtzOjEzOiJ1cGRhdGVQcm9kdWN0IjtyOjEyNTM7czoxMToiZmluZFByb2R1Y3QiO3I6Mzk4O3M6MTQ6ImRlc3Ryb3lQcm9kdWN0IjtyOjEzODA7czoxMzoiY3JlYXRlUHJvZHVjdCI7cjoxMDA0O3M6MTQ6InNlYXJjaFByb2R1Y3RzIjtyOjQ3NDtzOjIyOiJ1cGRhdGVJbnZlbnRvcnlQcm9kdWN0IjtyOjEwMzc7czoxODoiaW5kZXhQcm9kdWN0c1N0b2NrIjtyOjUwODtzOjE3OiJmaW5kUHJvZHVjdHNTdG9jayI7cjo1NDI7czoxMjoiaW5kZXhGaWx0ZXJzIjtyOjU4NDtzOjk6ImFkZEZpbHRlciI7cjoxMDc4O3M6MTI6InVwZGF0ZUZpbHRlciI7cjoxMjk0O3M6MTM6ImRlc3Ryb3lGaWx0ZXIiO3I6MTQyMTtzOjEzOiJzdG9yZUNhdGVnb3J5IjtyOjExMTE7czoxNDoidXBkYXRlQ2F0ZWdvcnkiO3I6MTMzNTtzOjEzOiJpbmRleENhdGVnb3J5IjtyOjYxODtzOjE1OiJkZXN0cm95Q2F0ZWdvcnkiO3I6MTQ2MjtzOjE4OiJwYXltZW50TWVyY2Fkb1BhZ28iO3I6MTE0NDtzOjIxOiJjaGVja05vdGlmaWNhdGlvblVzZXIiO3I6MTE3NztzOjk6ImdldE9yZGVycyI7cjo2NTI7fXM6MTM6IgAqAGFjdGlvbkxpc3QiO2E6NDA6e3M6NDg6Ikw1U3dhZ2dlclxIdHRwXENvbnRyb2xsZXJzXFN3YWdnZXJDb250cm9sbGVyQGFwaSI7cjo0O3M6NDk6Ikw1U3dhZ2dlclxIdHRwXENvbnRyb2xsZXJzXFN3YWdnZXJDb250cm9sbGVyQGRvY3MiO3I6Mzc7czo1NToiTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckFzc2V0Q29udHJvbGxlckBpbmRleCI7cjo4MztzOjU5OiJMNVN3YWdnZXJcSHR0cFxDb250cm9sbGVyc1xTd2FnZ2VyQ29udHJvbGxlckBvYXV0aDJDYWxsYmFjayI7cjoxMjQ7czozNToiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xTZW5kRW1haWwiO3I6MTU3O3M6NTQ6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcUmVjb3ZlcnlQYXNzd29yZEFjdGlvbiI7cjo3MDc7czo2NDoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xDaGFuZ2VQYXNzd29yZEZyb21SZWNvdmVyeUFjdGlvbiI7cjo3NDA7czo0ODoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xFbmFibGVVc2VyQWN0aW9uIjtyOjE5MDtzOjQ5OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXERpc2FibGVVc2VyQWN0aW9uIjtyOjIzNTtzOjQ2OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXFNob3dVc2VyQWN0aW9uIjtyOjI4MDtzOjQyOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEF1dGhcTG9naW5BY3Rpb24iO3I6NzczO3M6NDc6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQXV0aFxSZW5ld1Rva2VuQWN0aW9uIjtyOjgwNjtzOjU4OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xTdG9yZVdlYkN1c3RvbWVyQWN0aW9uIjtyOjgzOTtzOjUxOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEF1dGhcQ2hhbmdlUGFzc3dvcmRBY3Rpb24iO3I6ODcyO3M6NTU6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRW1wbG95ZWVzXFN0b3JlRW1wbG95ZWVBY3Rpb24iO3I6OTA1O3M6NTQ6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRW1wbG95ZWVzXEZpbmRFbXBsb3llZUFjdGlvbiI7cjozMjI7czo1NToiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcU3RvcmVDdXN0b21lckFjdGlvbiI7cjo5Mzg7czo1NDoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcRmluZEN1c3RvbWVyQWN0aW9uIjtyOjM1NjtzOjU2OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xVcGRhdGVDdXN0b21lckFjdGlvbiI7cjoxMjEyO3M6NDk6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQWRtaW5zXFN0b3JlQWRtaW5BY3Rpb24iO3I6OTcxO3M6NTQ6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcVXBkYXRlUHJvZHVjdEFjdGlvbiI7cjoxMjUzO3M6NTI6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcRmluZFByb2R1Y3RBY3Rpb24iO3I6Mzk4O3M6NTU6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcRGVzdHJveVByb2R1Y3RBY3Rpb24iO3I6MTM4MDtzOjUzOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFN0b3JlUHJvZHVjdEFjdGlvbiI7cjoxMDA0O3M6NTU6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcU2VhcmNoUHJvZHVjdHNBY3Rpb24iO3I6NDQwO3M6NjI6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcU2VhcmNoUHJvZHVjdHNGb3JIb21lQWN0aW9uIjtyOjQ3NDtzOjUwOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFVwZGF0ZUludmVudG9yeSI7cjoxMDM3O3M6NDk6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcSW5kZXhQcm9kdWN0U3RvY2siO3I6NTA4O3M6NDg6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcRmluZFByb2R1Y3RTdG9jayI7cjo1NDI7czo1MjoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXEluZGV4RmlsdGVyc0FjdGlvbiI7cjo1ODQ7czo1MjoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXFN0b3JlRmlsdGVyc0FjdGlvbiI7cjoxMDc4O3M6NTM6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xVcGRhdGVGaWx0ZXJzQWN0aW9uIjtyOjEyOTQ7czo1MzoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXERlc3Ryb3lGaWx0ZXJBY3Rpb24iO3I6MTQyMTtzOjU2OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcU3RvcmVDYXRlZ29yeUFjdGlvbiI7cjoxMTExO3M6NTc6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xVcGRhdGVDYXRlZ29yeUFjdGlvbiI7cjoxMzM1O3M6NTY6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xJbmRleENhdGVnb3J5QWN0aW9uIjtyOjYxODtzOjU4OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcRGVzdHJveUNhdGVnb3J5QWN0aW9uIjtyOjE0NjI7czo1MzoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQYXltZW50c1xNZXJjYWRvUGFnb0V4ZWN1dGUiO3I6MTE0NDtzOjYxOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXE5vdGlmaWNhdGlvbnNcQ2hlY2tOb3RpZmljYXRpb25Vc2VyIjtyOjExNzc7czo1MDoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xPcmRlcnNcSW5kZXhPcmRlcnNBY3Rpb24iO3I6NjUyO319')) + unserialize(base64_decode('TzozNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlQ29sbGVjdGlvbiI6NDp7czo5OiIAKgByb3V0ZXMiO2E6Nzp7czozOiJHRVQiO2E6MTk6e3M6MTc6ImFwaS9kb2N1bWVudGF0aW9uIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNzoiYXBpL2RvY3VtZW50YXRpb24iO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjI6ImFzIjtzOjE0OiJsNS1zd2FnZ2VyLmFwaSI7czoxMDoibWlkZGxld2FyZSI7YTowOnt9czo0OiJ1c2VzIjtzOjQ5OiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAYXBpIjtzOjEwOiJjb250cm9sbGVyIjtzOjQ5OiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAYXBpIjtzOjk6Im5hbWVzcGFjZSI7czo5OiJMNVN3YWdnZXIiO3M6NjoicHJlZml4IjtOO3M6NToid2hlcmUiO2E6MDp7fX1zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxODoiL2FwaS9kb2N1bWVudGF0aW9uIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjI1OiIjXi9hcGkvZG9jdW1lbnRhdGlvbiQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxODoiL2FwaS9kb2N1bWVudGF0aW9uIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE2OiJkb2NzL3tqc29uRmlsZT99IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNjoiZG9jcy97anNvbkZpbGU/fSI7czo3OiJtZXRob2RzIjthOjc6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7aToyO3M6NDoiUE9TVCI7aTozO3M6MzoiUFVUIjtpOjQ7czo1OiJQQVRDSCI7aTo1O3M6NjoiREVMRVRFIjtpOjY7czo3OiJPUFRJT05TIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoyOiJhcyI7czoxNToibDUtc3dhZ2dlci5kb2NzIjtzOjEwOiJtaWRkbGV3YXJlIjthOjA6e31zOjQ6InVzZXMiO3M6NTA6IlxMNVN3YWdnZXJcSHR0cFxDb250cm9sbGVyc1xTd2FnZ2VyQ29udHJvbGxlckBkb2NzIjtzOjEwOiJjb250cm9sbGVyIjtzOjUwOiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAZG9jcyI7czo5OiJuYW1lc3BhY2UiO3M6OToiTDVTd2FnZ2VyIjtzOjY6InByZWZpeCI7TjtzOjU6IndoZXJlIjthOjA6e319czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czo4OiJqc29uRmlsZSI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjU6Ii9kb2NzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM4OiIjXi9kb2NzKD86Lyg/UDxqc29uRmlsZT5bXi9dKyspKT8kI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6ODoianNvbkZpbGUiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjU6Ii9kb2NzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjg6Impzb25GaWxlIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxODoiZG9jcy9hc3NldC97YXNzZXR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxODoiZG9jcy9hc3NldC97YXNzZXR9IjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoyOiJhcyI7czoxNjoibDUtc3dhZ2dlci5hc3NldCI7czoxMDoibWlkZGxld2FyZSI7YTowOnt9czo0OiJ1c2VzIjtzOjU2OiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckFzc2V0Q29udHJvbGxlckBpbmRleCI7czoxMDoiY29udHJvbGxlciI7czo1NjoiXEw1U3dhZ2dlclxIdHRwXENvbnRyb2xsZXJzXFN3YWdnZXJBc3NldENvbnRyb2xsZXJAaW5kZXgiO3M6OToibmFtZXNwYWNlIjtzOjk6Ikw1U3dhZ2dlciI7czo2OiJwcmVmaXgiO047czo1OiJ3aGVyZSI7YTowOnt9fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6NToiYXNzZXQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMToiL2RvY3MvYXNzZXQiO3M6MTA6InBhdGhfcmVnZXgiO3M6MzY6IiNeL2RvY3MvYXNzZXQvKD9QPGFzc2V0PlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6NToiYXNzZXQiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjExOiIvZG9jcy9hc3NldCI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czo1OiJhc3NldCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTk6ImFwaS9vYXV0aDItY2FsbGJhY2siO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE5OiJhcGkvb2F1dGgyLWNhbGxiYWNrIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoyOiJhcyI7czoyNjoibDUtc3dhZ2dlci5vYXV0aDJfY2FsbGJhY2siO3M6MTA6Im1pZGRsZXdhcmUiO2E6MDp7fXM6NDoidXNlcyI7czo2MDoiXEw1U3dhZ2dlclxIdHRwXENvbnRyb2xsZXJzXFN3YWdnZXJDb250cm9sbGVyQG9hdXRoMkNhbGxiYWNrIjtzOjEwOiJjb250cm9sbGVyIjtzOjYwOiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAb2F1dGgyQ2FsbGJhY2siO3M6OToibmFtZXNwYWNlIjtzOjk6Ikw1U3dhZ2dlciI7czo2OiJwcmVmaXgiO047czo1OiJ3aGVyZSI7YTowOnt9fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjIwOiIvYXBpL29hdXRoMi1jYWxsYmFjayI7czoxMDoicGF0aF9yZWdleCI7czoyODoiI14vYXBpL29hdXRoMlwtY2FsbGJhY2skI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MjA6Ii9hcGkvb2F1dGgyLWNhbGxiYWNrIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE0OiJhcGkvc2VuZF9lbWFpbCI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTQ6ImFwaS9zZW5kX2VtYWlsIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Njp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NDU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFNlbmRFbWFpbEBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czozNjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU2VuZEVtYWlsIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjM6ImFwaSI7czo1OiJ3aGVyZSI7YTowOnt9fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE1OiIvYXBpL3NlbmRfZW1haWwiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjI6IiNeL2FwaS9zZW5kX2VtYWlsJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE1OiIvYXBpL3NlbmRfZW1haWwiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MjE6ImFwaS91c2Vycy97aWR9L2VuYWJsZSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MjE6ImFwaS91c2Vycy97aWR9L2VuYWJsZSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjU4OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xFbmFibGVVc2VyQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjQ5OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xFbmFibGVVc2VyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjk6ImFwaS91c2VycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMDoiZW5hYmxlVXNlciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMDoiL2FwaS91c2VycyI7czoxMDoicGF0aF9yZWdleCI7czozOToiI14vYXBpL3VzZXJzLyg/UDxpZD5bXi9dKyspL2VuYWJsZSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YTozOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czo3OiIvZW5hYmxlIjt9aToxO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MjthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEwOiIvYXBpL3VzZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoyMjoiYXBpL3VzZXJzL3tpZH0vZGlzYWJsZSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MjI6ImFwaS91c2Vycy97aWR9L2Rpc2FibGUiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1OToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcRGlzYWJsZVVzZXJBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTA6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXERpc2FibGVVc2VyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjk6ImFwaS91c2VycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMToiZGlzYWJsZVVzZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTA6Ii9hcGkvdXNlcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6NDA6IiNeL2FwaS91c2Vycy8oP1A8aWQ+W14vXSsrKS9kaXNhYmxlJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjM6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjg6Ii9kaXNhYmxlIjt9aToxO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MjthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEwOiIvYXBpL3VzZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNDoiYXBpL3VzZXJzL3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE0OiJhcGkvdXNlcnMve2lkfSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjU2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xTaG93VXNlckFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo0NzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcU2hvd1VzZXJBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6OToiYXBpL3VzZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjExOiJzaG93T25lVXNlciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMDoiL2FwaS91c2VycyI7czoxMDoicGF0aF9yZWdleCI7czozMjoiI14vYXBpL3VzZXJzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMDoiL2FwaS91c2VycyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTM6ImFwaS9lbXBsb3llZXMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEzOiJhcGkvZW1wbG95ZWVzIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xGaW5kRW1wbG95ZWVBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xGaW5kRW1wbG95ZWVBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTM6ImFwaS9lbXBsb3llZXMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTI6Imxpc3RFbXBsb3llZSI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE0OiIvYXBpL2VtcGxveWVlcyI7czoxMDoicGF0aF9yZWdleCI7czoyMToiI14vYXBpL2VtcGxveWVlcyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9lbXBsb3llZXMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTg6ImFwaS9jdXN0b21lcnMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTg6ImFwaS9jdXN0b21lcnMve2lkfSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY0OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcRmluZEN1c3RvbWVyQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU1OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcRmluZEN1c3RvbWVyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEzOiJhcGkvY3VzdG9tZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjEyOiJmaW5kQ3VzdG9tZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTQ6Ii9hcGkvY3VzdG9tZXJzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM2OiIjXi9hcGkvY3VzdG9tZXJzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9jdXN0b21lcnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjEzOiJhcGkvY3VzdG9tZXJzIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxMzoiYXBpL2N1c3RvbWVycyI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY1OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcSW5kZXhDdXN0b21lckFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ3VzdG9tZXJzXEluZGV4Q3VzdG9tZXJBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTM6ImFwaS9jdXN0b21lcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTM6Imxpc3RDdXN0b21lcnMiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNDoiL2FwaS9jdXN0b21lcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjE6IiNeL2FwaS9jdXN0b21lcnMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTQ6Ii9hcGkvY3VzdG9tZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE5OiJhcGkvcHJvZHVjdHMve3V1aWR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxOToiYXBpL3Byb2R1Y3RzL3t1dWlkfSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjYyOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xGaW5kUHJvZHVjdEFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1MzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcRmluZFByb2R1Y3RBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTI6ImFwaS9wcm9kdWN0cyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMToiZmluZFByb2R1Y3QiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjQ6InV1aWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMzoiL2FwaS9wcm9kdWN0cyI7czoxMDoicGF0aF9yZWdleCI7czozNzoiI14vYXBpL3Byb2R1Y3RzLyg/UDx1dWlkPlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6NDoidXVpZCI7aTo0O2I6MTt9aToxO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTM6Ii9hcGkvcHJvZHVjdHMiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6NDoidXVpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTA6ImFwaS9zZWFyY2giO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEwOiJhcGkvc2VhcmNoIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFNlYXJjaFByb2R1Y3RzQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xTZWFyY2hQcm9kdWN0c0FjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMDoiYXBpL3NlYXJjaCI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNDoic2VhcmNoUHJvZHVjdHMiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxMToiL2FwaS9zZWFyY2giO3M6MTA6InBhdGhfcmVnZXgiO3M6MTg6IiNeL2FwaS9zZWFyY2gkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTE6Ii9hcGkvc2VhcmNoIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE1OiJhcGkvc2VhcmNoL2hvbWUiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE1OiJhcGkvc2VhcmNoL2hvbWUiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo3MjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcU2VhcmNoUHJvZHVjdHNGb3JIb21lQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjYzOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xTZWFyY2hQcm9kdWN0c0ZvckhvbWVBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTA6ImFwaS9zZWFyY2giO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTQ6InNlYXJjaFByb2R1Y3RzIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTY6Ii9hcGkvc2VhcmNoL2hvbWUiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjM6IiNeL2FwaS9zZWFyY2gvaG9tZSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNjoiL2FwaS9zZWFyY2gvaG9tZSI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxMzoiYXBpL2ludmVudG9yeSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTM6ImFwaS9pbnZlbnRvcnkiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1OToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcSW5kZXhQcm9kdWN0U3RvY2tAX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTA6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFN0b2NrXEluZGV4UHJvZHVjdFN0b2NrIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEzOiJhcGkvaW52ZW50b3J5IjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE4OiJpbmRleFByb2R1Y3RzU3RvY2siO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNDoiL2FwaS9pbnZlbnRvcnkiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjE6IiNeL2FwaS9pbnZlbnRvcnkkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTQ6Ii9hcGkvaW52ZW50b3J5Ijt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE4OiJhcGkvaW52ZW50b3J5L3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE4OiJhcGkvaW52ZW50b3J5L3tpZH0iO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1ODoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcRmluZFByb2R1Y3RTdG9ja0BfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo0OToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcRmluZFByb2R1Y3RTdG9jayI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMzoiYXBpL2ludmVudG9yeSI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNzoiZmluZFByb2R1Y3RzU3RvY2siO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTQ6Ii9hcGkvaW52ZW50b3J5IjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM2OiIjXi9hcGkvaW52ZW50b3J5Lyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9pbnZlbnRvcnkiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjExOiJhcGkvZmlsdGVycyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTE6ImFwaS9maWx0ZXJzIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjI6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEZpbHRlcnNcSW5kZXhGaWx0ZXJzQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjUzOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXEluZGV4RmlsdGVyc0FjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMToiYXBpL2ZpbHRlcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTI6ImluZGV4RmlsdGVycyI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjEyOiIvYXBpL2ZpbHRlcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MTk6IiNeL2FwaS9maWx0ZXJzJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEyOiIvYXBpL2ZpbHRlcnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTQ6ImFwaS9jYXRlZ29yaWVzIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNDoiYXBpL2NhdGVnb3JpZXMiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2NjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xJbmRleENhdGVnb3J5QWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU3OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDYXRlZ29yaWVzXEluZGV4Q2F0ZWdvcnlBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTQ6ImFwaS9jYXRlZ29yaWVzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjEzOiJpbmRleENhdGVnb3J5Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTU6Ii9hcGkvY2F0ZWdvcmllcyI7czoxMDoicGF0aF9yZWdleCI7czoyMjoiI14vYXBpL2NhdGVnb3JpZXMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTU6Ii9hcGkvY2F0ZWdvcmllcyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxMDoiYXBpL29yZGVycyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTA6ImFwaS9vcmRlcnMiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2MDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcT3JkZXJzXEluZGV4T3JkZXJzQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjUxOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xPcmRlcnNcSW5kZXhPcmRlcnNBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTA6ImFwaS9vcmRlcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6OToiZ2V0T3JkZXJzIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTE6Ii9hcGkvb3JkZXJzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjE4OiIjXi9hcGkvb3JkZXJzJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjExOiIvYXBpL29yZGVycyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19fXM6NDoiSEVBRCI7YToxOTp7czoxNzoiYXBpL2RvY3VtZW50YXRpb24iO3I6NDtzOjE2OiJkb2NzL3tqc29uRmlsZT99IjtyOjM3O3M6MTg6ImRvY3MvYXNzZXQve2Fzc2V0fSI7cjo4MztzOjE5OiJhcGkvb2F1dGgyLWNhbGxiYWNrIjtyOjEyNDtzOjE0OiJhcGkvc2VuZF9lbWFpbCI7cjoxNTc7czoyMToiYXBpL3VzZXJzL3tpZH0vZW5hYmxlIjtyOjE5MDtzOjIyOiJhcGkvdXNlcnMve2lkfS9kaXNhYmxlIjtyOjIzNTtzOjE0OiJhcGkvdXNlcnMve2lkfSI7cjoyODA7czoxMzoiYXBpL2VtcGxveWVlcyI7cjozMjI7czoxODoiYXBpL2N1c3RvbWVycy97aWR9IjtyOjM1NjtzOjEzOiJhcGkvY3VzdG9tZXJzIjtyOjM5ODtzOjE5OiJhcGkvcHJvZHVjdHMve3V1aWR9IjtyOjQzMjtzOjEwOiJhcGkvc2VhcmNoIjtyOjQ3NDtzOjE1OiJhcGkvc2VhcmNoL2hvbWUiO3I6NTA4O3M6MTM6ImFwaS9pbnZlbnRvcnkiO3I6NTQyO3M6MTg6ImFwaS9pbnZlbnRvcnkve2lkfSI7cjo1NzY7czoxMToiYXBpL2ZpbHRlcnMiO3I6NjE4O3M6MTQ6ImFwaS9jYXRlZ29yaWVzIjtyOjY1MjtzOjEwOiJhcGkvb3JkZXJzIjtyOjY4Njt9czo0OiJQT1NUIjthOjE2OntzOjE2OiJkb2NzL3tqc29uRmlsZT99IjtyOjM3O3M6MTg6ImFwaS91c2Vycy9yZWNvdmVyeSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTg6ImFwaS91c2Vycy9yZWNvdmVyeSI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2NDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcUmVjb3ZlcnlQYXNzd29yZEFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcUmVjb3ZlcnlQYXNzd29yZEFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czo5OiJhcGkvdXNlcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTY6InJlY292ZXJ5UGFzc3dvcmQiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxOToiL2FwaS91c2Vycy9yZWNvdmVyeSI7czoxMDoicGF0aF9yZWdleCI7czoyNjoiI14vYXBpL3VzZXJzL3JlY292ZXJ5JCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE5OiIvYXBpL3VzZXJzL3JlY292ZXJ5Ijt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE2OiJhcGkvdXNlcnMvZm9yZ290IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNjoiYXBpL3VzZXJzL2ZvcmdvdCI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo3NDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcQ2hhbmdlUGFzc3dvcmRGcm9tUmVjb3ZlcnlBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NjU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXENoYW5nZVBhc3N3b3JkRnJvbVJlY292ZXJ5QWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjk6ImFwaS91c2VycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoyNjoiY2hhbmdlUGFzc3dvcmRGcm9tUmVjb3ZlcnkiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNzoiL2FwaS91c2Vycy9mb3Jnb3QiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjQ6IiNeL2FwaS91c2Vycy9mb3Jnb3QkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTc6Ii9hcGkvdXNlcnMvZm9yZ290Ijt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE0OiJhcGkvYXV0aC9sb2dpbiI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTQ6ImFwaS9hdXRoL2xvZ2luIjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjUyOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xBdXRoXExvZ2luQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjQzOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xBdXRoXExvZ2luQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjg6ImFwaS9hdXRoIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjU6ImxvZ2luIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTU6Ii9hcGkvYXV0aC9sb2dpbiI7czoxMDoicGF0aF9yZWdleCI7czoyMjoiI14vYXBpL2F1dGgvbG9naW4kI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTU6Ii9hcGkvYXV0aC9sb2dpbiI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoyMDoiYXBpL2F1dGgvcmVuZXctdG9rZW4iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjIwOiJhcGkvYXV0aC9yZW5ldy10b2tlbiI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1NzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQXV0aFxSZW5ld1Rva2VuQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjQ4OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xBdXRoXFJlbmV3VG9rZW5BY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6ODoiYXBpL2F1dGgiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTE6InJlbmV3LXRva2VuIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MjE6Ii9hcGkvYXV0aC9yZW5ldy10b2tlbiI7czoxMDoicGF0aF9yZWdleCI7czoyOToiI14vYXBpL2F1dGgvcmVuZXdcLXRva2VuJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjIxOiIvYXBpL2F1dGgvcmVuZXctdG9rZW4iO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTU6ImFwaS9hdXRoL3NpZ251cCI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTU6ImFwaS9hdXRoL3NpZ251cCI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2ODoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ3VzdG9tZXJzXFN0b3JlV2ViQ3VzdG9tZXJBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTk6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xTdG9yZVdlYkN1c3RvbWVyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjg6ImFwaS9hdXRoIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE3OiJjcmVhdGVXZWJDdXN0b21lciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE2OiIvYXBpL2F1dGgvc2lnbnVwIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjIzOiIjXi9hcGkvYXV0aC9zaWdudXAkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTY6Ii9hcGkvYXV0aC9zaWdudXAiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MjQ6ImFwaS9hdXRoL2NoYW5nZS1wYXNzd29yZCI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MjQ6ImFwaS9hdXRoL2NoYW5nZS1wYXNzd29yZCI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2MToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQXV0aFxDaGFuZ2VQYXNzd29yZEFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1MjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQXV0aFxDaGFuZ2VQYXNzd29yZEFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czo4OiJhcGkvYXV0aCI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNToiY2hhbmdlLXBhc3N3b3JkIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MjU6Ii9hcGkvYXV0aC9jaGFuZ2UtcGFzc3dvcmQiO3M6MTA6InBhdGhfcmVnZXgiO3M6MzM6IiNeL2FwaS9hdXRoL2NoYW5nZVwtcGFzc3dvcmQkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MjU6Ii9hcGkvYXV0aC9jaGFuZ2UtcGFzc3dvcmQiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTM6ImFwaS9lbXBsb3llZXMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEzOiJhcGkvZW1wbG95ZWVzIjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY1OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xFbXBsb3llZXNcU3RvcmVFbXBsb3llZUFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRW1wbG95ZWVzXFN0b3JlRW1wbG95ZWVBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTM6ImFwaS9lbXBsb3llZXMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTQ6ImNyZWF0ZUVtcGxveWVlIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTQ6Ii9hcGkvZW1wbG95ZWVzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjIxOiIjXi9hcGkvZW1wbG95ZWVzJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE0OiIvYXBpL2VtcGxveWVlcyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxMzoiYXBpL2N1c3RvbWVycyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTM6ImFwaS9jdXN0b21lcnMiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xTdG9yZUN1c3RvbWVyQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcU3RvcmVDdXN0b21lckFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMzoiYXBpL2N1c3RvbWVycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNDoiY3JlYXRlQ3VzdG9tZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNDoiL2FwaS9jdXN0b21lcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjE6IiNeL2FwaS9jdXN0b21lcnMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTQ6Ii9hcGkvY3VzdG9tZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjEwOiJhcGkvYWRtaW5zIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxMDoiYXBpL2FkbWlucyI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1OToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQWRtaW5zXFN0b3JlQWRtaW5BY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTA6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEFkbWluc1xTdG9yZUFkbWluQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEwOiJhcGkvYWRtaW5zIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjExOiJjcmVhdGVBZG1pbiI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjExOiIvYXBpL2FkbWlucyI7czoxMDoicGF0aF9yZWdleCI7czoxODoiI14vYXBpL2FkbWlucyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMToiL2FwaS9hZG1pbnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTI6ImFwaS9wcm9kdWN0cyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTI6ImFwaS9wcm9kdWN0cyI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2MzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcU3RvcmVQcm9kdWN0QWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU0OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xTdG9yZVByb2R1Y3RBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTI6ImFwaS9wcm9kdWN0cyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMzoiY3JlYXRlUHJvZHVjdCI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjEzOiIvYXBpL3Byb2R1Y3RzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjIwOiIjXi9hcGkvcHJvZHVjdHMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTM6Ii9hcGkvcHJvZHVjdHMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTg6ImFwaS9pbnZlbnRvcnkve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTg6ImFwaS9pbnZlbnRvcnkve2lkfSI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2MDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcVXBkYXRlSW52ZW50b3J5QF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjUxOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xVcGRhdGVJbnZlbnRvcnkiO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTM6ImFwaS9pbnZlbnRvcnkiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MjI6InVwZGF0ZUludmVudG9yeVByb2R1Y3QiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTQ6Ii9hcGkvaW52ZW50b3J5IjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM2OiIjXi9hcGkvaW52ZW50b3J5Lyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9pbnZlbnRvcnkiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjExOiJhcGkvZmlsdGVycyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTE6ImFwaS9maWx0ZXJzIjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjYyOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXFN0b3JlRmlsdGVyc0FjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1MzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xTdG9yZUZpbHRlcnNBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTE6ImFwaS9maWx0ZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjk6ImFkZEZpbHRlciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjEyOiIvYXBpL2ZpbHRlcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MTk6IiNeL2FwaS9maWx0ZXJzJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEyOiIvYXBpL2ZpbHRlcnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTQ6ImFwaS9jYXRlZ29yaWVzIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNDoiYXBpL2NhdGVnb3JpZXMiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjY6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcU3RvcmVDYXRlZ29yeUFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xTdG9yZUNhdGVnb3J5QWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjE0OiJhcGkvY2F0ZWdvcmllcyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMzoic3RvcmVDYXRlZ29yeSI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE1OiIvYXBpL2NhdGVnb3JpZXMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjI6IiNeL2FwaS9jYXRlZ29yaWVzJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE1OiIvYXBpL2NhdGVnb3JpZXMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MjQ6ImFwaS9wYXltZW50cy9tZXJjYWRvcGFnbyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MjQ6ImFwaS9wYXltZW50cy9tZXJjYWRvcGFnbyI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2MzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUGF5bWVudHNcTWVyY2Fkb1BhZ29FeGVjdXRlQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU0OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQYXltZW50c1xNZXJjYWRvUGFnb0V4ZWN1dGUiO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTI6ImFwaS9wYXltZW50cyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxODoicGF5bWVudE1lcmNhZG9QYWdvIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MjU6Ii9hcGkvcGF5bWVudHMvbWVyY2Fkb3BhZ28iO3M6MTA6InBhdGhfcmVnZXgiO3M6MzI6IiNeL2FwaS9wYXltZW50cy9tZXJjYWRvcGFnbyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoyNToiL2FwaS9wYXltZW50cy9tZXJjYWRvcGFnbyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNzoiYXBpL25vdGlmaWNhdGlvbnMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE3OiJhcGkvbm90aWZpY2F0aW9ucyI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo3MToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcTm90aWZpY2F0aW9uc1xDaGVja05vdGlmaWNhdGlvblVzZXJAX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NjI6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXE5vdGlmaWNhdGlvbnNcQ2hlY2tOb3RpZmljYXRpb25Vc2VyIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjE3OiJhcGkvbm90aWZpY2F0aW9ucyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoyMToiY2hlY2tOb3RpZmljYXRpb25Vc2VyIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTg6Ii9hcGkvbm90aWZpY2F0aW9ucyI7czoxMDoicGF0aF9yZWdleCI7czoyNToiI14vYXBpL25vdGlmaWNhdGlvbnMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTg6Ii9hcGkvbm90aWZpY2F0aW9ucyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19fXM6MzoiUFVUIjthOjU6e3M6MTY6ImRvY3Mve2pzb25GaWxlP30iO3I6Mzc7czoxODoiYXBpL2N1c3RvbWVycy97aWR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxODoiYXBpL2N1c3RvbWVycy97aWR9IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6MzoiUFVUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjY6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xVcGRhdGVDdXN0b21lckFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ3VzdG9tZXJzXFVwZGF0ZUN1c3RvbWVyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEzOiJhcGkvY3VzdG9tZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE0OiJ1cGRhdGVDdXN0b21lciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxNDoiL2FwaS9jdXN0b21lcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MzY6IiNeL2FwaS9jdXN0b21lcnMvKD9QPGlkPlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE0OiIvYXBpL2N1c3RvbWVycyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTc6ImFwaS9wcm9kdWN0cy97aWR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNzoiYXBpL3Byb2R1Y3RzL3tpZH0iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czozOiJQVVQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2NDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcVXBkYXRlUHJvZHVjdEFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcVXBkYXRlUHJvZHVjdEFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMjoiYXBpL3Byb2R1Y3RzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjEzOiJ1cGRhdGVQcm9kdWN0Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjEzOiIvYXBpL3Byb2R1Y3RzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM1OiIjXi9hcGkvcHJvZHVjdHMvKD9QPGlkPlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEzOiIvYXBpL3Byb2R1Y3RzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNjoiYXBpL2ZpbHRlcnMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTY6ImFwaS9maWx0ZXJzL3tpZH0iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czozOiJQVVQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2MzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xVcGRhdGVGaWx0ZXJzQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU0OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXFVwZGF0ZUZpbHRlcnNBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTE6ImFwaS9maWx0ZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjEyOiJ1cGRhdGVGaWx0ZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTI6Ii9hcGkvZmlsdGVycyI7czoxMDoicGF0aF9yZWdleCI7czozNDoiI14vYXBpL2ZpbHRlcnMvKD9QPGlkPlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEyOiIvYXBpL2ZpbHRlcnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE5OiJhcGkvY2F0ZWdvcmllcy97aWR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxOToiYXBpL2NhdGVnb3JpZXMve2lkfSI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjM6IlBVVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY3OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDYXRlZ29yaWVzXFVwZGF0ZUNhdGVnb3J5QWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU4OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDYXRlZ29yaWVzXFVwZGF0ZUNhdGVnb3J5QWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjE0OiJhcGkvY2F0ZWdvcmllcyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNDoidXBkYXRlQ2F0ZWdvcnkiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTU6Ii9hcGkvY2F0ZWdvcmllcyI7czoxMDoicGF0aF9yZWdleCI7czozNzoiI14vYXBpL2NhdGVnb3JpZXMvKD9QPGlkPlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE1OiIvYXBpL2NhdGVnb3JpZXMiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX19czo1OiJQQVRDSCI7YToxOntzOjE2OiJkb2NzL3tqc29uRmlsZT99IjtyOjM3O31zOjY6IkRFTEVURSI7YTo0OntzOjE2OiJkb2NzL3tqc29uRmlsZT99IjtyOjM3O3M6MTc6ImFwaS9wcm9kdWN0cy97aWR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNzoiYXBpL3Byb2R1Y3RzL3tpZH0iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo2OiJERUxFVEUiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2NToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcRGVzdHJveVByb2R1Y3RBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTY6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXERlc3Ryb3lQcm9kdWN0QWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEyOiJhcGkvcHJvZHVjdHMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTQ6ImRlc3Ryb3lQcm9kdWN0Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjEzOiIvYXBpL3Byb2R1Y3RzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM1OiIjXi9hcGkvcHJvZHVjdHMvKD9QPGlkPlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEzOiIvYXBpL3Byb2R1Y3RzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNjoiYXBpL2ZpbHRlcnMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTY6ImFwaS9maWx0ZXJzL3tpZH0iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo2OiJERUxFVEUiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2MzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xEZXN0cm95RmlsdGVyQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU0OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXERlc3Ryb3lGaWx0ZXJBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTE6ImFwaS9maWx0ZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjEzOiJkZXN0cm95RmlsdGVyIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjEyOiIvYXBpL2ZpbHRlcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MzQ6IiNeL2FwaS9maWx0ZXJzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMjoiL2FwaS9maWx0ZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxOToiYXBpL2NhdGVnb3JpZXMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTk6ImFwaS9jYXRlZ29yaWVzL3tpZH0iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo2OiJERUxFVEUiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2ODoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xEZXN0cm95Q2F0ZWdvcnlBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTk6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcRGVzdHJveUNhdGVnb3J5QWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjE0OiJhcGkvY2F0ZWdvcmllcyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNToiZGVzdHJveUNhdGVnb3J5Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE1OiIvYXBpL2NhdGVnb3JpZXMiO3M6MTA6InBhdGhfcmVnZXgiO3M6Mzc6IiNeL2FwaS9jYXRlZ29yaWVzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNToiL2FwaS9jYXRlZ29yaWVzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19fXM6NzoiT1BUSU9OUyI7YToxOntzOjE2OiJkb2NzL3tqc29uRmlsZT99IjtyOjM3O319czoxMjoiACoAYWxsUm91dGVzIjthOjQxOntzOjIxOiJIRUFEYXBpL2RvY3VtZW50YXRpb24iO3I6NDtzOjIzOiJPUFRJT05TZG9jcy97anNvbkZpbGU/fSI7cjozNztzOjIyOiJIRUFEZG9jcy9hc3NldC97YXNzZXR9IjtyOjgzO3M6MjM6IkhFQURhcGkvb2F1dGgyLWNhbGxiYWNrIjtyOjEyNDtzOjE4OiJIRUFEYXBpL3NlbmRfZW1haWwiO3I6MTU3O3M6MjI6IlBPU1RhcGkvdXNlcnMvcmVjb3ZlcnkiO3I6NzQyO3M6MjA6IlBPU1RhcGkvdXNlcnMvZm9yZ290IjtyOjc3NTtzOjI1OiJIRUFEYXBpL3VzZXJzL3tpZH0vZW5hYmxlIjtyOjE5MDtzOjI2OiJIRUFEYXBpL3VzZXJzL3tpZH0vZGlzYWJsZSI7cjoyMzU7czoxODoiSEVBRGFwaS91c2Vycy97aWR9IjtyOjI4MDtzOjE4OiJQT1NUYXBpL2F1dGgvbG9naW4iO3I6ODA4O3M6MjQ6IlBPU1RhcGkvYXV0aC9yZW5ldy10b2tlbiI7cjo4NDE7czoxOToiUE9TVGFwaS9hdXRoL3NpZ251cCI7cjo4NzQ7czoyODoiUE9TVGFwaS9hdXRoL2NoYW5nZS1wYXNzd29yZCI7cjo5MDc7czoxNzoiUE9TVGFwaS9lbXBsb3llZXMiO3I6OTQwO3M6MTc6IkhFQURhcGkvZW1wbG95ZWVzIjtyOjMyMjtzOjE3OiJQT1NUYXBpL2N1c3RvbWVycyI7cjo5NzM7czoyMjoiSEVBRGFwaS9jdXN0b21lcnMve2lkfSI7cjozNTY7czoyMToiUFVUYXBpL2N1c3RvbWVycy97aWR9IjtyOjEyNDc7czoxNzoiSEVBRGFwaS9jdXN0b21lcnMiO3I6Mzk4O3M6MTQ6IlBPU1RhcGkvYWRtaW5zIjtyOjEwMDY7czoyMDoiUFVUYXBpL3Byb2R1Y3RzL3tpZH0iO3I6MTI4ODtzOjIzOiJIRUFEYXBpL3Byb2R1Y3RzL3t1dWlkfSI7cjo0MzI7czoyMzoiREVMRVRFYXBpL3Byb2R1Y3RzL3tpZH0iO3I6MTQxNTtzOjE2OiJQT1NUYXBpL3Byb2R1Y3RzIjtyOjEwMzk7czoxNDoiSEVBRGFwaS9zZWFyY2giO3I6NDc0O3M6MTk6IkhFQURhcGkvc2VhcmNoL2hvbWUiO3I6NTA4O3M6MjI6IlBPU1RhcGkvaW52ZW50b3J5L3tpZH0iO3I6MTA3MjtzOjE3OiJIRUFEYXBpL2ludmVudG9yeSI7cjo1NDI7czoyMjoiSEVBRGFwaS9pbnZlbnRvcnkve2lkfSI7cjo1NzY7czoxNToiSEVBRGFwaS9maWx0ZXJzIjtyOjYxODtzOjE1OiJQT1NUYXBpL2ZpbHRlcnMiO3I6MTExMztzOjE5OiJQVVRhcGkvZmlsdGVycy97aWR9IjtyOjEzMjk7czoyMjoiREVMRVRFYXBpL2ZpbHRlcnMve2lkfSI7cjoxNDU2O3M6MTg6IlBPU1RhcGkvY2F0ZWdvcmllcyI7cjoxMTQ2O3M6MjI6IlBVVGFwaS9jYXRlZ29yaWVzL3tpZH0iO3I6MTM3MDtzOjE4OiJIRUFEYXBpL2NhdGVnb3JpZXMiO3I6NjUyO3M6MjU6IkRFTEVURWFwaS9jYXRlZ29yaWVzL3tpZH0iO3I6MTQ5NztzOjI4OiJQT1NUYXBpL3BheW1lbnRzL21lcmNhZG9wYWdvIjtyOjExNzk7czoyMToiUE9TVGFwaS9ub3RpZmljYXRpb25zIjtyOjEyMTI7czoxNDoiSEVBRGFwaS9vcmRlcnMiO3I6Njg2O31zOjExOiIAKgBuYW1lTGlzdCI7YTozOTp7czoxNDoibDUtc3dhZ2dlci5hcGkiO3I6NDtzOjE1OiJsNS1zd2FnZ2VyLmRvY3MiO3I6Mzc7czoxNjoibDUtc3dhZ2dlci5hc3NldCI7cjo4MztzOjI2OiJsNS1zd2FnZ2VyLm9hdXRoMl9jYWxsYmFjayI7cjoxMjQ7czoxNjoicmVjb3ZlcnlQYXNzd29yZCI7cjo3NDI7czoyNjoiY2hhbmdlUGFzc3dvcmRGcm9tUmVjb3ZlcnkiO3I6Nzc1O3M6MTA6ImVuYWJsZVVzZXIiO3I6MTkwO3M6MTE6ImRpc2FibGVVc2VyIjtyOjIzNTtzOjExOiJzaG93T25lVXNlciI7cjoyODA7czo1OiJsb2dpbiI7cjo4MDg7czoxMToicmVuZXctdG9rZW4iO3I6ODQxO3M6MTc6ImNyZWF0ZVdlYkN1c3RvbWVyIjtyOjg3NDtzOjE1OiJjaGFuZ2UtcGFzc3dvcmQiO3I6OTA3O3M6MTQ6ImNyZWF0ZUVtcGxveWVlIjtyOjk0MDtzOjEyOiJsaXN0RW1wbG95ZWUiO3I6MzIyO3M6MTQ6ImNyZWF0ZUN1c3RvbWVyIjtyOjk3MztzOjEyOiJmaW5kQ3VzdG9tZXIiO3I6MzU2O3M6MTQ6InVwZGF0ZUN1c3RvbWVyIjtyOjEyNDc7czoxMzoibGlzdEN1c3RvbWVycyI7cjozOTg7czoxMToiY3JlYXRlQWRtaW4iO3I6MTAwNjtzOjEzOiJ1cGRhdGVQcm9kdWN0IjtyOjEyODg7czoxMToiZmluZFByb2R1Y3QiO3I6NDMyO3M6MTQ6ImRlc3Ryb3lQcm9kdWN0IjtyOjE0MTU7czoxMzoiY3JlYXRlUHJvZHVjdCI7cjoxMDM5O3M6MTQ6InNlYXJjaFByb2R1Y3RzIjtyOjUwODtzOjIyOiJ1cGRhdGVJbnZlbnRvcnlQcm9kdWN0IjtyOjEwNzI7czoxODoiaW5kZXhQcm9kdWN0c1N0b2NrIjtyOjU0MjtzOjE3OiJmaW5kUHJvZHVjdHNTdG9jayI7cjo1NzY7czoxMjoiaW5kZXhGaWx0ZXJzIjtyOjYxODtzOjk6ImFkZEZpbHRlciI7cjoxMTEzO3M6MTI6InVwZGF0ZUZpbHRlciI7cjoxMzI5O3M6MTM6ImRlc3Ryb3lGaWx0ZXIiO3I6MTQ1NjtzOjEzOiJzdG9yZUNhdGVnb3J5IjtyOjExNDY7czoxNDoidXBkYXRlQ2F0ZWdvcnkiO3I6MTM3MDtzOjEzOiJpbmRleENhdGVnb3J5IjtyOjY1MjtzOjE1OiJkZXN0cm95Q2F0ZWdvcnkiO3I6MTQ5NztzOjE4OiJwYXltZW50TWVyY2Fkb1BhZ28iO3I6MTE3OTtzOjIxOiJjaGVja05vdGlmaWNhdGlvblVzZXIiO3I6MTIxMjtzOjk6ImdldE9yZGVycyI7cjo2ODY7fXM6MTM6IgAqAGFjdGlvbkxpc3QiO2E6NDE6e3M6NDg6Ikw1U3dhZ2dlclxIdHRwXENvbnRyb2xsZXJzXFN3YWdnZXJDb250cm9sbGVyQGFwaSI7cjo0O3M6NDk6Ikw1U3dhZ2dlclxIdHRwXENvbnRyb2xsZXJzXFN3YWdnZXJDb250cm9sbGVyQGRvY3MiO3I6Mzc7czo1NToiTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckFzc2V0Q29udHJvbGxlckBpbmRleCI7cjo4MztzOjU5OiJMNVN3YWdnZXJcSHR0cFxDb250cm9sbGVyc1xTd2FnZ2VyQ29udHJvbGxlckBvYXV0aDJDYWxsYmFjayI7cjoxMjQ7czozNToiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xTZW5kRW1haWwiO3I6MTU3O3M6NTQ6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcUmVjb3ZlcnlQYXNzd29yZEFjdGlvbiI7cjo3NDI7czo2NDoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xDaGFuZ2VQYXNzd29yZEZyb21SZWNvdmVyeUFjdGlvbiI7cjo3NzU7czo0ODoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xFbmFibGVVc2VyQWN0aW9uIjtyOjE5MDtzOjQ5OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXERpc2FibGVVc2VyQWN0aW9uIjtyOjIzNTtzOjQ2OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXFNob3dVc2VyQWN0aW9uIjtyOjI4MDtzOjQyOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEF1dGhcTG9naW5BY3Rpb24iO3I6ODA4O3M6NDc6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQXV0aFxSZW5ld1Rva2VuQWN0aW9uIjtyOjg0MTtzOjU4OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xTdG9yZVdlYkN1c3RvbWVyQWN0aW9uIjtyOjg3NDtzOjUxOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEF1dGhcQ2hhbmdlUGFzc3dvcmRBY3Rpb24iO3I6OTA3O3M6NTU6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRW1wbG95ZWVzXFN0b3JlRW1wbG95ZWVBY3Rpb24iO3I6OTQwO3M6NTQ6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRW1wbG95ZWVzXEZpbmRFbXBsb3llZUFjdGlvbiI7cjozMjI7czo1NToiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcU3RvcmVDdXN0b21lckFjdGlvbiI7cjo5NzM7czo1NDoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcRmluZEN1c3RvbWVyQWN0aW9uIjtyOjM1NjtzOjU2OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xVcGRhdGVDdXN0b21lckFjdGlvbiI7cjoxMjQ3O3M6NTU6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ3VzdG9tZXJzXEluZGV4Q3VzdG9tZXJBY3Rpb24iO3I6Mzk4O3M6NDk6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQWRtaW5zXFN0b3JlQWRtaW5BY3Rpb24iO3I6MTAwNjtzOjU0OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFVwZGF0ZVByb2R1Y3RBY3Rpb24iO3I6MTI4ODtzOjUyOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXEZpbmRQcm9kdWN0QWN0aW9uIjtyOjQzMjtzOjU1OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXERlc3Ryb3lQcm9kdWN0QWN0aW9uIjtyOjE0MTU7czo1MzoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xTdG9yZVByb2R1Y3RBY3Rpb24iO3I6MTAzOTtzOjU1OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFNlYXJjaFByb2R1Y3RzQWN0aW9uIjtyOjQ3NDtzOjYyOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFNlYXJjaFByb2R1Y3RzRm9ySG9tZUFjdGlvbiI7cjo1MDg7czo1MDoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xVcGRhdGVJbnZlbnRvcnkiO3I6MTA3MjtzOjQ5OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFN0b2NrXEluZGV4UHJvZHVjdFN0b2NrIjtyOjU0MjtzOjQ4OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFN0b2NrXEZpbmRQcm9kdWN0U3RvY2siO3I6NTc2O3M6NTI6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xJbmRleEZpbHRlcnNBY3Rpb24iO3I6NjE4O3M6NTI6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xTdG9yZUZpbHRlcnNBY3Rpb24iO3I6MTExMztzOjUzOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEZpbHRlcnNcVXBkYXRlRmlsdGVyc0FjdGlvbiI7cjoxMzI5O3M6NTM6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xEZXN0cm95RmlsdGVyQWN0aW9uIjtyOjE0NTY7czo1NjoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDYXRlZ29yaWVzXFN0b3JlQ2F0ZWdvcnlBY3Rpb24iO3I6MTE0NjtzOjU3OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcVXBkYXRlQ2F0ZWdvcnlBY3Rpb24iO3I6MTM3MDtzOjU2OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcSW5kZXhDYXRlZ29yeUFjdGlvbiI7cjo2NTI7czo1ODoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDYXRlZ29yaWVzXERlc3Ryb3lDYXRlZ29yeUFjdGlvbiI7cjoxNDk3O3M6NTM6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUGF5bWVudHNcTWVyY2Fkb1BhZ29FeGVjdXRlIjtyOjExNzk7czo2MToiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xOb3RpZmljYXRpb25zXENoZWNrTm90aWZpY2F0aW9uVXNlciI7cjoxMjEyO3M6NTA6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcT3JkZXJzXEluZGV4T3JkZXJzQWN0aW9uIjtyOjY4Njt9fQ==')) ); diff --git a/domain/Interfaces/Repositories/UserRepositoryInterface.php b/domain/Interfaces/Repositories/UserRepositoryInterface.php index 2f0450c..9290002 100644 --- a/domain/Interfaces/Repositories/UserRepositoryInterface.php +++ b/domain/Interfaces/Repositories/UserRepositoryInterface.php @@ -18,4 +18,5 @@ public function existWithTheEmail(string $email): bool; public function findAll(): array; public function destroy(User $user): void; public function findEmployees($page, $size); + public function findCustomers(int $page, int $size); } diff --git a/infrastructure/Persistence/Repositories/UserRepository.php b/infrastructure/Persistence/Repositories/UserRepository.php index c244f59..e8234cf 100644 --- a/infrastructure/Persistence/Repositories/UserRepository.php +++ b/infrastructure/Persistence/Repositories/UserRepository.php @@ -154,12 +154,44 @@ public function findEmployees($page, $size) ->setFirstResult($size * ($page-1)) // set the offset ->setMaxResults($size); // set the limit - $productList = []; + $employeesList = []; foreach ($paginator as $item) { - array_push($productList, $item); + array_push($employeesList, $item); } - return $productList; + return $employeesList; + } + + public function findCustomers(int $page, int $size) + { + // get entity manager + $em = $this->getEntityManager(); + + // get the user repository + $customers = $em->getRepository(User::class); + + // build the query for the doctrine paginator + $query = $customers->createQueryBuilder('u') + ->where('NOT u.customer IS null') + //->orderBy('u.id', 'DESC') + ->getQuery(); + + // load doctrine Paginator + $paginator = new Paginator($query); + + // now get one page's items: + $paginator + ->getQuery() + ->setFirstResult($size * ($page-1)) // set the offset + ->setMaxResults($size); // set the limit + + $customersList = []; + + foreach ($paginator as $item) { + array_push($customersList, $item); + } + + return $customersList; } } diff --git a/presentation/Http/Actions/Customers/IndexCustomerAction.php b/presentation/Http/Actions/Customers/IndexCustomerAction.php new file mode 100644 index 0000000..962b039 --- /dev/null +++ b/presentation/Http/Actions/Customers/IndexCustomerAction.php @@ -0,0 +1,43 @@ +adapter = $adapter; + $this->queryBus = $queryBus; + $this->presenter = $presenter; + } + + public function __invoke(Request $request) + { + $query = $this->adapter->from($request); + + $result = $this->queryBus->handle($query); + + return new JsonResponse([ + 'data' => $this->presenter->fromResult($result)->getData(), + ], HttpCodes::OK); + } +} diff --git a/presentation/Http/Adapters/Customers/IndexCustomerAdapter.php b/presentation/Http/Adapters/Customers/IndexCustomerAdapter.php new file mode 100644 index 0000000..c3c16ee --- /dev/null +++ b/presentation/Http/Adapters/Customers/IndexCustomerAdapter.php @@ -0,0 +1,36 @@ +validatorService = $validatorService; + } + + public function from(Request $request) + { + $this->validatorService->make($request->all(), []); + + if (!$this->validatorService->isValid()) { + throw new InvalidBodyException($this->validatorService->getErrors()); + } + + return new IndexCustomerQuery( + $request->query('page'), + $request->query('size'), + ); + } +} diff --git a/presentation/Http/Presenters/Customers/FindCustomerPresenter.php b/presentation/Http/Presenters/Customers/FindCustomerPresenter.php index f401711..60755ff 100644 --- a/presentation/Http/Presenters/Customers/FindCustomerPresenter.php +++ b/presentation/Http/Presenters/Customers/FindCustomerPresenter.php @@ -19,7 +19,6 @@ public function getData(): array { $user = $this->result->getCustomer(); $customer = $user->getCustomer(); - //TODO: agregar campos que faltan return [ 'id' => $user->getId(), 'name' => $user->getName(), diff --git a/presentation/Http/Presenters/Customers/IndexCustomerPresenter.php b/presentation/Http/Presenters/Customers/IndexCustomerPresenter.php new file mode 100644 index 0000000..f285658 --- /dev/null +++ b/presentation/Http/Presenters/Customers/IndexCustomerPresenter.php @@ -0,0 +1,47 @@ +result = $result; + return $this; + } + + public function getData(): array { + $customerList = []; + $customers = $this->result->getCustomers(); + + foreach ($customers as $user) { + $customer = $user->getCustomer(); + array_push($customerList, [ + 'id' => $user->getId(), + 'name' => $user->getName(), + 'surname' => $user->getSurname(), + 'email' => $user->getEmail(), + 'isActive' => $user->isActive(), + 'uuid' => $customer->getUuid(), + 'age' => $customer->getAge(), + 'dni' => $customer->getDni(), + 'birthday' => $customer->getBirthday(), + 'postalCode' => $customer->getPostalCode(), + 'country' => $customer->getCountry(), + 'state' => $customer->getState(), + 'city' => $customer->getCity(), + 'vatCondition' => $customer->getVatCondition(), + 'taxationKey' => $customer->getTaxationKey(), + 'grossIncome' => $customer->getGrossIncome(), + 'phoneNumber' => $customer->getPhoneNumber(), + ]); + } + + return $customerList; + } +} diff --git a/presentation/Http/routes/api.php b/presentation/Http/routes/api.php index 15f8743..4374885 100644 --- a/presentation/Http/routes/api.php +++ b/presentation/Http/routes/api.php @@ -47,9 +47,9 @@ Route::prefix('customers')->group(function () { Route::post('/', Actions\Customers\StoreCustomerAction::class)->name('createCustomer'); - Route::get('/{id}', Actions\Customers\FindCustomerAction::class)->name('createCustomer'); + Route::get('/{id}', Actions\Customers\FindCustomerAction::class)->name('findCustomer'); Route::put('/{id}', Actions\Customers\UpdateCustomerAction::class)->name('updateCustomer'); - //Route::get('/', Actions\Customers\FindCustomerAction::class)->name('listCustomers'); + Route::get('/', Actions\Customers\IndexCustomerAction::class)->name('listCustomers'); }); Route::prefix('admins')->group(function () { From 09edf5ae2126ef3789c7cc00c696429bce06736f Mon Sep 17 00:00:00 2001 From: cristianvena18 Date: Tue, 7 Jul 2020 18:40:19 -0300 Subject: [PATCH 16/38] modify database and added index orders --- .../Handler/Orders/IndexOrdersHandler.php | 49 + .../Queries/Query/Orders/IndexOrdersQuery.php | 45 + .../Results/Orders/IndexOrdersResult.php | 20 + application/Services/Orders/OrderService.php | 27 + bootstrap/cache/config.php | 867 ------------------ bootstrap/cache/routes.php | 16 - composer.json | 9 +- composer.lock | 84 +- domain/Entities/Customer.php | 2 +- domain/Entities/Order.php | 126 +++ .../Repositories/OrderRepositoryInterface.php | 10 + .../Services/Orders/OrderServiceInterface.php | 10 + .../Mappings/Domain.Entities.Customer.php | 11 +- .../Mappings/Domain.Entities.Employee.php | 7 + .../Mappings/Domain.Entities.Order.php | 25 + .../Mappings/Domain.Entities.Product.php | 9 +- .../Repositories/OrderRepository.php | 38 +- .../Providers/AppServiceProvider.php | 4 + .../DoctrineRepositoriesServiceProvider.php | 3 + .../Actions/Auth/ChangePasswordAction.php | 2 +- .../Actions/Employees/FindEmployeeAction.php | 2 +- .../Employees/FindOneEmployeeAction.php | 2 +- .../Http/Actions/Orders/IndexOrdersAction.php | 34 +- .../Adapters/Orders/IndexOrdersAdapter.php | 36 + .../Http/Presenters/Auth/LoginPresenter.php | 6 - .../FindEmployeePresenter.php | 2 +- .../FindOneEmployeePresenter.php | 2 +- .../Orders/IndexOrdersPresenter.php | 47 + 28 files changed, 580 insertions(+), 915 deletions(-) create mode 100644 application/Queries/Handler/Orders/IndexOrdersHandler.php create mode 100644 application/Queries/Query/Orders/IndexOrdersQuery.php create mode 100644 application/Queries/Results/Orders/IndexOrdersResult.php create mode 100644 application/Services/Orders/OrderService.php delete mode 100644 bootstrap/cache/config.php delete mode 100644 bootstrap/cache/routes.php create mode 100644 domain/Entities/Order.php create mode 100644 domain/Interfaces/Repositories/OrderRepositoryInterface.php create mode 100644 domain/Interfaces/Services/Orders/OrderServiceInterface.php create mode 100644 infrastructure/Persistence/Mappings/Domain.Entities.Order.php create mode 100644 presentation/Http/Adapters/Orders/IndexOrdersAdapter.php rename presentation/Http/Presenters/{Employee => Employees}/FindEmployeePresenter.php (94%) rename presentation/Http/Presenters/{Employee => Employees}/FindOneEmployeePresenter.php (92%) create mode 100644 presentation/Http/Presenters/Orders/IndexOrdersPresenter.php diff --git a/application/Queries/Handler/Orders/IndexOrdersHandler.php b/application/Queries/Handler/Orders/IndexOrdersHandler.php new file mode 100644 index 0000000..7c2861e --- /dev/null +++ b/application/Queries/Handler/Orders/IndexOrdersHandler.php @@ -0,0 +1,49 @@ +orderService = $orderService; + $this->userService = $userService; + } + + /** + * @param IndexOrdersQuery $query + * @return ResultInterface + * @throws EntityNotFoundException + */ + public function handle($query): ResultInterface + { + $user = $this->userService->findOneByIdOrFail($query->getUserId()); + + if(!$user->isCustomer()) { + throw new EntityNotFoundException("User is not customer"); + } + + $orders = $this->orderService->indexAndFiltered($query->getPage(), $query->getSize(), $user->getCustomer()->getId()); + + $result = new IndexOrdersResult(); + $result->setOrders($orders); + return $result; + } +} diff --git a/application/Queries/Query/Orders/IndexOrdersQuery.php b/application/Queries/Query/Orders/IndexOrdersQuery.php new file mode 100644 index 0000000..9fd4fb6 --- /dev/null +++ b/application/Queries/Query/Orders/IndexOrdersQuery.php @@ -0,0 +1,45 @@ +page = $page; + $this->size = $size; + $this->userId = $userId; + } + + /** + * @return mixed + */ + public function getPage() + { + return $this->page; + } + + /** + * @return mixed + */ + public function getSize() + { + return $this->size; + } + + /** + * @return mixed + */ + public function getUserId() + { + return $this->userId; + } +} diff --git a/application/Queries/Results/Orders/IndexOrdersResult.php b/application/Queries/Results/Orders/IndexOrdersResult.php new file mode 100644 index 0000000..dc37518 --- /dev/null +++ b/application/Queries/Results/Orders/IndexOrdersResult.php @@ -0,0 +1,20 @@ +orders = $orders; + } + + public function getOrders() { + return $this->orders; + } +} diff --git a/application/Services/Orders/OrderService.php b/application/Services/Orders/OrderService.php new file mode 100644 index 0000000..fea9863 --- /dev/null +++ b/application/Services/Orders/OrderService.php @@ -0,0 +1,27 @@ +repository = $orderRepository; + } + + public function indexAndFiltered($page, $size, $userId): array + { + $page = $page ? $page : 1; + $size = $size ? $size : 10; + + return $this->repository->indexAndFiltered($page, $size, $userId); + } +} diff --git a/bootstrap/cache/config.php b/bootstrap/cache/config.php deleted file mode 100644 index 9bcb844..0000000 --- a/bootstrap/cache/config.php +++ /dev/null @@ -1,867 +0,0 @@ - - array ( - 'name' => 'Zeep Commerce', - 'env' => 'local', - 'debug' => true, - 'url' => 'http://zeepcommerce.com', - 'asset_url' => NULL, - 'timezone' => 'UTC', - 'locale' => 'en', - 'fallback_locale' => 'en', - 'faker_locale' => 'en_US', - 'key' => '', - 'cipher' => 'AES-256-CBC', - 'providers' => - array ( - 0 => 'Illuminate\\Auth\\AuthServiceProvider', - 1 => 'Illuminate\\Broadcasting\\BroadcastServiceProvider', - 2 => 'Illuminate\\Bus\\BusServiceProvider', - 3 => 'Illuminate\\Cache\\CacheServiceProvider', - 4 => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 5 => 'Illuminate\\Cookie\\CookieServiceProvider', - 6 => 'Illuminate\\Database\\DatabaseServiceProvider', - 7 => 'Illuminate\\Encryption\\EncryptionServiceProvider', - 8 => 'Illuminate\\Filesystem\\FilesystemServiceProvider', - 9 => 'Illuminate\\Foundation\\Providers\\FoundationServiceProvider', - 10 => 'Illuminate\\Hashing\\HashServiceProvider', - 11 => 'Illuminate\\Mail\\MailServiceProvider', - 12 => 'Illuminate\\Notifications\\NotificationServiceProvider', - 13 => 'Illuminate\\Pagination\\PaginationServiceProvider', - 14 => 'Illuminate\\Pipeline\\PipelineServiceProvider', - 15 => 'Illuminate\\Queue\\QueueServiceProvider', - 16 => 'Illuminate\\Redis\\RedisServiceProvider', - 17 => 'Illuminate\\Auth\\Passwords\\PasswordResetServiceProvider', - 18 => 'Illuminate\\Session\\SessionServiceProvider', - 19 => 'Illuminate\\Translation\\TranslationServiceProvider', - 20 => 'Illuminate\\Validation\\ValidationServiceProvider', - 21 => 'Illuminate\\View\\ViewServiceProvider', - 22 => 'LaravelDoctrine\\ORM\\DoctrineServiceProvider', - 23 => 'Infrastructure\\Providers\\AppServiceProvider', - 24 => 'Infrastructure\\Providers\\CommandBusServiceProvider', - 25 => 'Infrastructure\\Providers\\QueryBusServiceProvider', - 26 => 'Infrastructure\\Providers\\AuthServiceProvider', - 27 => 'Infrastructure\\Providers\\EventServiceProvider', - 28 => 'Infrastructure\\Providers\\RouteServiceProvider', - 29 => 'Infrastructure\\Providers\\DoctrineRepositoriesServiceProvider', - ), - 'aliases' => - array ( - 'App' => 'Illuminate\\Support\\Facades\\App', - 'Arr' => 'Illuminate\\Support\\Arr', - 'Artisan' => 'Illuminate\\Support\\Facades\\Artisan', - 'Auth' => 'Illuminate\\Support\\Facades\\Auth', - 'Blade' => 'Illuminate\\Support\\Facades\\Blade', - 'Broadcast' => 'Illuminate\\Support\\Facades\\Broadcast', - 'Bus' => 'Illuminate\\Support\\Facades\\Bus', - 'Cache' => 'Illuminate\\Support\\Facades\\Cache', - 'Config' => 'Illuminate\\Support\\Facades\\Config', - 'Cookie' => 'Illuminate\\Support\\Facades\\Cookie', - 'Crypt' => 'Illuminate\\Support\\Facades\\Crypt', - 'DB' => 'Illuminate\\Support\\Facades\\DB', - 'Eloquent' => 'Illuminate\\Database\\Eloquent\\Model', - 'Event' => 'Illuminate\\Support\\Facades\\Event', - 'File' => 'Illuminate\\Support\\Facades\\File', - 'Gate' => 'Illuminate\\Support\\Facades\\Gate', - 'Hash' => 'Illuminate\\Support\\Facades\\Hash', - 'Http' => 'Illuminate\\Support\\Facades\\Http', - 'Lang' => 'Illuminate\\Support\\Facades\\Lang', - 'Log' => 'Illuminate\\Support\\Facades\\Log', - 'Mail' => 'Illuminate\\Support\\Facades\\Mail', - 'Notification' => 'Illuminate\\Support\\Facades\\Notification', - 'Password' => 'Illuminate\\Support\\Facades\\Password', - 'Queue' => 'Illuminate\\Support\\Facades\\Queue', - 'Redirect' => 'Illuminate\\Support\\Facades\\Redirect', - 'Redis' => 'Illuminate\\Support\\Facades\\Redis', - 'Request' => 'Illuminate\\Support\\Facades\\Request', - 'Response' => 'Illuminate\\Support\\Facades\\Response', - 'Route' => 'Illuminate\\Support\\Facades\\Route', - 'Schema' => 'Illuminate\\Support\\Facades\\Schema', - 'Session' => 'Illuminate\\Support\\Facades\\Session', - 'Storage' => 'Illuminate\\Support\\Facades\\Storage', - 'Str' => 'Illuminate\\Support\\Str', - 'URL' => 'Illuminate\\Support\\Facades\\URL', - 'Validator' => 'Illuminate\\Support\\Facades\\Validator', - 'View' => 'Illuminate\\Support\\Facades\\View', - ), - ), - 'auth' => - array ( - 'defaults' => - array ( - 'guard' => 'web', - 'passwords' => 'users', - ), - 'guards' => - array ( - 'web' => - array ( - 'driver' => 'session', - 'provider' => 'users', - ), - ), - 'providers' => - array ( - 'users' => - array ( - 'driver' => 'doctrine', - 'model' => 'Domain\\Entities\\User', - ), - ), - 'passwords' => - array ( - 'users' => - array ( - 'provider' => 'users', - 'table' => 'password_resets', - 'expire' => 60, - ), - ), - ), - 'broadcasting' => - array ( - 'default' => 'log', - 'connections' => - array ( - 'pusher' => - array ( - 'driver' => 'pusher', - 'key' => '', - 'secret' => '', - 'app_id' => '', - 'options' => - array ( - 'cluster' => 'mt1', - 'useTLS' => true, - ), - ), - 'redis' => - array ( - 'driver' => 'redis', - 'connection' => 'default', - ), - 'log' => - array ( - 'driver' => 'log', - ), - 'null' => - array ( - 'driver' => 'null', - ), - ), - ), - 'cache' => - array ( - 'default' => 'file', - 'stores' => - array ( - 'apc' => - array ( - 'driver' => 'apc', - ), - 'array' => - array ( - 'driver' => 'array', - ), - 'database' => - array ( - 'driver' => 'database', - 'table' => 'cache', - 'connection' => NULL, - ), - 'file' => - array ( - 'driver' => 'file', - 'path' => '/var/www/storage/framework/cache/data', - ), - 'memcached' => - array ( - 'driver' => 'memcached', - 'persistent_id' => NULL, - 'sasl' => - array ( - 0 => NULL, - 1 => NULL, - ), - 'options' => - array ( - ), - 'servers' => - array ( - 0 => - array ( - 'host' => '127.0.0.1', - 'port' => 11211, - 'weight' => 100, - ), - ), - ), - 'redis' => - array ( - 'driver' => 'redis', - 'connection' => 'cache', - ), - 'dynamodb' => - array ( - 'driver' => 'dynamodb', - 'key' => '', - 'secret' => '', - 'region' => 'us-east-1', - 'table' => 'cache', - 'endpoint' => NULL, - ), - ), - 'prefix' => 'zeep_commerce_cache', - ), - 'cors' => - array ( - 'paths' => - array ( - 0 => 'api/*', - ), - 'allowed_methods' => - array ( - 0 => '*', - ), - 'allowed_origins' => - array ( - 0 => '*', - ), - 'allowed_origins_patterns' => - array ( - ), - 'allowed_headers' => - array ( - 0 => '*', - ), - 'exposed_headers' => false, - 'max_age' => false, - 'supports_credentials' => false, - ), - 'database' => - array ( - 'default' => 'mysql', - 'connections' => - array ( - 'sqlite_testing' => - array ( - 'driver' => 'sqlite', - 'url' => NULL, - 'database' => 'apizeep', - 'prefix' => '', - 'foreign_key_constraints' => true, - ), - 'mysql' => - array ( - 'driver' => 'mysql', - 'url' => NULL, - 'host' => 'mysql', - 'port' => '3306', - 'database' => 'apizeep', - 'username' => 'test', - 'password' => 'test', - 'unix_socket' => '', - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => NULL, - 'options' => - array ( - ), - ), - 'pgsql' => - array ( - 'driver' => 'pgsql', - 'url' => NULL, - 'host' => 'mysql', - 'port' => '3306', - 'database' => 'apizeep', - 'username' => 'test', - 'password' => 'test', - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'schema' => 'public', - 'sslmode' => 'prefer', - ), - 'sqlsrv' => - array ( - 'driver' => 'sqlsrv', - 'url' => NULL, - 'host' => 'mysql', - 'port' => '3306', - 'database' => 'apizeep', - 'username' => 'test', - 'password' => 'test', - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ), - ), - 'migrations' => 'migrations', - 'redis' => - array ( - 'client' => 'phpredis', - 'options' => - array ( - 'cluster' => 'redis', - 'prefix' => 'zeep_commerce_database_', - ), - 'default' => - array ( - 'url' => NULL, - 'host' => 'redis', - 'password' => '', - 'port' => '6379', - 'database' => '0', - ), - 'cache' => - array ( - 'url' => NULL, - 'host' => 'redis', - 'password' => '', - 'port' => '6379', - 'database' => '1', - ), - ), - ), - 'debug-server' => - array ( - 'host' => 'tcp://127.0.0.1:9912', - ), - 'doctrine' => - array ( - 'managers' => - array ( - 'default' => - array ( - 'dev' => true, - 'meta' => 'php', - 'connection' => 'mysql', - 'namespaces' => - array ( - 0 => 'Domain\\Entities', - ), - 'paths' => - array ( - 0 => '/var/www/infrastructure/Persistence/Mappings', - ), - 'repository' => 'Doctrine\\ORM\\EntityRepository', - 'proxies' => - array ( - 'namespace' => false, - 'path' => '/var/www/storage/proxies', - 'auto_generate' => true, - ), - 'events' => - array ( - 'listeners' => - array ( - ), - 'subscribers' => - array ( - ), - ), - 'filters' => - array ( - ), - 'mapping_types' => - array ( - ), - ), - ), - 'extensions' => - array ( - ), - 'custom_types' => - array ( - 'json' => 'LaravelDoctrine\\ORM\\Types\\Json', - ), - 'custom_datetime_functions' => - array ( - ), - 'custom_numeric_functions' => - array ( - ), - 'custom_string_functions' => - array ( - ), - 'custom_hydration_modes' => - array ( - ), - 'logger' => false, - 'cache' => - array ( - 'second_level' => true, - 'default' => 'array', - 'namespace' => NULL, - 'metadata' => - array ( - 'driver' => 'file', - 'namespace' => NULL, - ), - 'query' => - array ( - 'driver' => 'array', - 'namespace' => NULL, - ), - 'result' => - array ( - 'driver' => 'array', - 'namespace' => NULL, - ), - ), - 'gedmo' => - array ( - 'all_mappings' => false, - ), - 'doctrine_presence_verifier' => true, - 'notifications' => - array ( - 'channel' => 'database', - ), - ), - 'filesystems' => - array ( - 'default' => 'local', - 'cloud' => 's3', - 'disks' => - array ( - 'local' => - array ( - 'driver' => 'local', - 'root' => '/var/www/storage/app', - ), - 'public' => - array ( - 'driver' => 'local', - 'root' => '/var/www/storage/app/public', - 'url' => 'http://zeepcommerce.com/storage', - 'visibility' => 'public', - ), - 's3' => - array ( - 'driver' => 's3', - 'key' => '', - 'secret' => '', - 'region' => 'us-east-1', - 'bucket' => '', - 'url' => NULL, - ), - ), - 'links' => - array ( - '/var/www/public/storage' => '/var/www/storage/app/public', - ), - ), - 'hashing' => - array ( - 'driver' => 'bcrypt', - 'bcrypt' => - array ( - 'rounds' => 10, - ), - 'argon' => - array ( - 'memory' => 1024, - 'threads' => 2, - 'time' => 2, - ), - ), - 'jwt' => - array ( - 'secret' => 'gasgawgawgawgsgawga', - 'keys' => - array ( - 'public' => NULL, - 'private' => NULL, - 'passphrase' => NULL, - ), - 'ttl' => 60, - 'refresh_ttl' => 20160, - 'algo' => 'HS256', - 'required_claims' => - array ( - 0 => 'iss', - 1 => 'iat', - 2 => 'exp', - 3 => 'nbf', - 4 => 'sub', - 5 => 'jti', - ), - 'persistent_claims' => - array ( - ), - 'lock_subject' => true, - 'leeway' => 0, - 'blacklist_enabled' => true, - 'blacklist_grace_period' => 0, - 'decrypt_cookies' => false, - 'providers' => - array ( - 'jwt' => 'Tymon\\JWTAuth\\Providers\\JWT\\Lcobucci', - 'auth' => 'Tymon\\JWTAuth\\Providers\\Auth\\Illuminate', - 'storage' => 'Tymon\\JWTAuth\\Providers\\Storage\\Illuminate', - ), - ), - 'l5-swagger' => - array ( - 'api' => - array ( - 'title' => 'L5 Swagger UI', - ), - 'routes' => - array ( - 'api' => 'api/documentation', - 'docs' => 'docs', - 'oauth2_callback' => 'api/oauth2-callback', - 'middleware' => - array ( - 'api' => - array ( - ), - 'asset' => - array ( - ), - 'docs' => - array ( - ), - 'oauth2_callback' => - array ( - ), - ), - ), - 'paths' => - array ( - 'docs' => '/var/www/storage/api-docs', - 'docs_json' => 'api-docs.json', - 'docs_yaml' => 'api-docs.yaml', - 'annotations' => - array ( - 0 => '/var/www/presentation/Http/Actions', - ), - 'views' => '/var/www/resources/views/vendor/l5-swagger', - 'base' => NULL, - 'swagger_ui_assets_path' => 'vendor/swagger-api/swagger-ui/dist/', - 'excludes' => - array ( - ), - ), - 'security' => - array ( - ), - 'generate_always' => false, - 'generate_yaml_copy' => false, - 'swagger_version' => '3.0', - 'proxy' => false, - 'additional_config_url' => NULL, - 'operations_sort' => NULL, - 'validator_url' => NULL, - 'constants' => - array ( - 'L5_SWAGGER_CONST_HOST' => 'http://my-default-host.com', - ), - ), - 'logging' => - array ( - 'default' => 'stack', - 'channels' => - array ( - 'stack' => - array ( - 'driver' => 'stack', - 'channels' => - array ( - 0 => 'single', - ), - 'ignore_exceptions' => false, - ), - 'single' => - array ( - 'driver' => 'single', - 'path' => '/var/www/storage/logs/laravel.log', - 'level' => 'debug', - ), - 'daily' => - array ( - 'driver' => 'daily', - 'path' => '/var/www/storage/logs/laravel.log', - 'level' => 'debug', - 'days' => 14, - ), - 'slack' => - array ( - 'driver' => 'slack', - 'url' => NULL, - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => 'critical', - ), - 'papertrail' => - array ( - 'driver' => 'monolog', - 'level' => 'debug', - 'handler' => 'Monolog\\Handler\\SyslogUdpHandler', - 'handler_with' => - array ( - 'host' => NULL, - 'port' => NULL, - ), - ), - 'stderr' => - array ( - 'driver' => 'monolog', - 'handler' => 'Monolog\\Handler\\StreamHandler', - 'formatter' => NULL, - 'with' => - array ( - 'stream' => 'php://stderr', - ), - ), - 'syslog' => - array ( - 'driver' => 'syslog', - 'level' => 'debug', - ), - 'errorlog' => - array ( - 'driver' => 'errorlog', - 'level' => 'debug', - ), - 'null' => - array ( - 'driver' => 'monolog', - 'handler' => 'Monolog\\Handler\\NullHandler', - ), - 'emergency' => - array ( - 'path' => '/var/www/storage/logs/laravel.log', - ), - ), - ), - 'mail' => - array ( - 'driver' => 'smtp', - 'host' => 'smtp.sendgrid.net', - 'port' => '587', - 'encryption' => 'tls', - 'username' => 'zeeporg', - 'password' => 'Zeeporganization2020', - 'mailers' => - array ( - 'smtp' => - array ( - 'transport' => 'smtp', - 'host' => 'smtp.sendgrid.net', - 'port' => '587', - 'encryption' => 'tls', - 'username' => 'zeeporg', - 'password' => 'Zeeporganization2020', - ), - 'ses' => - array ( - 'transport' => 'ses', - ), - 'sendmail' => - array ( - 'transport' => 'sendmail', - 'path' => '/usr/sbin/sendmail -bs', - ), - 'log' => - array ( - 'transport' => 'log', - 'channel' => NULL, - ), - 'array' => - array ( - 'transport' => 'array', - ), - ), - 'from' => - array ( - 'address' => 'zeeporganization@gmail.com', - 'name' => 'Zeep Commerce', - ), - 'markdown' => - array ( - 'theme' => 'default', - 'paths' => - array ( - 0 => '/var/www/resources/views/vendor/mail', - ), - ), - ), - 'queue' => - array ( - 'default' => 'beanstalkd', - 'connections' => - array ( - 'sync' => - array ( - 'driver' => 'sync', - ), - 'database' => - array ( - 'driver' => 'database', - 'table' => 'jobs', - 'queue' => 'default', - 'retry_after' => 90, - ), - 'beanstalkd' => - array ( - 'driver' => 'beanstalkd', - 'host' => 'beanstalkd', - 'queue' => 'default', - 'retry_after' => 90, - 'block_for' => 0, - ), - 'sqs' => - array ( - 'driver' => 'sqs', - 'key' => '', - 'secret' => '', - 'prefix' => 'https://sqs.us-east-1.amazonaws.com/your-account-id', - 'queue' => 'your-queue-name', - 'region' => 'us-east-1', - ), - 'redis' => - array ( - 'driver' => 'redis', - 'connection' => 'default', - 'queue' => 'default', - 'retry_after' => 90, - 'block_for' => NULL, - ), - ), - 'failed' => - array ( - 'driver' => 'database', - 'database' => 'mysql', - 'table' => 'failed_jobs', - ), - ), - 'services' => - array ( - 'mailgun' => - array ( - 'domain' => NULL, - 'secret' => NULL, - 'endpoint' => 'api.mailgun.net', - ), - 'postmark' => - array ( - 'token' => NULL, - ), - 'sendgrid' => - array ( - 'api_key' => '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', - ), - 'ses' => - array ( - 'key' => '', - 'secret' => '', - 'region' => 'us-east-1', - ), - ), - 'session' => - array ( - 'driver' => 'file', - 'lifetime' => '120', - 'expire_on_close' => false, - 'encrypt' => false, - 'files' => '/var/www/storage/framework/sessions', - 'connection' => NULL, - 'table' => 'sessions', - 'store' => NULL, - 'lottery' => - array ( - 0 => 2, - 1 => 100, - ), - 'cookie' => 'zeep_commerce_session', - 'path' => '/', - 'domain' => NULL, - 'secure' => NULL, - 'http_only' => true, - 'same_site' => 'lax', - ), - 'view' => - array ( - 'paths' => - array ( - 0 => '/var/www/resources/views', - ), - 'compiled' => '/var/www/storage/framework/views', - 'expires' => true, - ), - 'flare' => - array ( - 'key' => NULL, - 'reporting' => - array ( - 'anonymize_ips' => true, - 'collect_git_information' => true, - 'report_queries' => true, - 'maximum_number_of_collected_queries' => 200, - 'report_query_bindings' => true, - 'report_view_data' => true, - 'grouping_type' => NULL, - ), - 'send_logs_as_events' => true, - ), - 'ignition' => - array ( - 'editor' => 'phpstorm', - 'theme' => 'light', - 'enable_share_button' => true, - 'register_commands' => false, - 'ignored_solution_providers' => - array ( - ), - 'enable_runnable_solutions' => NULL, - 'remote_sites_path' => '', - 'local_sites_path' => '', - 'housekeeping_endpoint_prefix' => '_ignition', - ), - 'laravel-tactician' => - array ( - 'locator' => 'Joselfonseca\\LaravelTactician\\Locator\\LaravelLazyLocator', - 'inflector' => 'League\\Tactician\\Handler\\MethodNameInflector\\HandleInflector', - 'extractor' => 'League\\Tactician\\Handler\\CommandNameExtractor\\ClassNameExtractor', - 'bus' => 'Joselfonseca\\LaravelTactician\\Bus', - ), - 'migrations' => - array ( - 'default' => - array ( - 'table' => 'migrations', - 'directory' => '/var/www/database/migrations', - 'organize_migrations' => false, - 'namespace' => 'Database\\Migrations', - 'schema' => - array ( - 'filter' => '/^(?!password_resets|failed_jobs).*$/', - ), - ), - ), - 'trustedproxy' => - array ( - 'proxies' => NULL, - 'headers' => 30, - ), - 'tinker' => - array ( - 'commands' => - array ( - ), - 'alias' => - array ( - ), - 'dont_alias' => - array ( - 0 => 'App\\Nova', - ), - ), -); diff --git a/bootstrap/cache/routes.php b/bootstrap/cache/routes.php deleted file mode 100644 index 0389c24..0000000 --- a/bootstrap/cache/routes.php +++ /dev/null @@ -1,16 +0,0 @@ -setRoutes( - unserialize(base64_decode('TzozNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlQ29sbGVjdGlvbiI6NDp7czo5OiIAKgByb3V0ZXMiO2E6Nzp7czozOiJHRVQiO2E6MTk6e3M6MTc6ImFwaS9kb2N1bWVudGF0aW9uIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNzoiYXBpL2RvY3VtZW50YXRpb24iO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjI6ImFzIjtzOjE0OiJsNS1zd2FnZ2VyLmFwaSI7czoxMDoibWlkZGxld2FyZSI7YTowOnt9czo0OiJ1c2VzIjtzOjQ5OiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAYXBpIjtzOjEwOiJjb250cm9sbGVyIjtzOjQ5OiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAYXBpIjtzOjk6Im5hbWVzcGFjZSI7czo5OiJMNVN3YWdnZXIiO3M6NjoicHJlZml4IjtOO3M6NToid2hlcmUiO2E6MDp7fX1zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxODoiL2FwaS9kb2N1bWVudGF0aW9uIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjI1OiIjXi9hcGkvZG9jdW1lbnRhdGlvbiQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxODoiL2FwaS9kb2N1bWVudGF0aW9uIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE2OiJkb2NzL3tqc29uRmlsZT99IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNjoiZG9jcy97anNvbkZpbGU/fSI7czo3OiJtZXRob2RzIjthOjc6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7aToyO3M6NDoiUE9TVCI7aTozO3M6MzoiUFVUIjtpOjQ7czo1OiJQQVRDSCI7aTo1O3M6NjoiREVMRVRFIjtpOjY7czo3OiJPUFRJT05TIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoyOiJhcyI7czoxNToibDUtc3dhZ2dlci5kb2NzIjtzOjEwOiJtaWRkbGV3YXJlIjthOjA6e31zOjQ6InVzZXMiO3M6NTA6IlxMNVN3YWdnZXJcSHR0cFxDb250cm9sbGVyc1xTd2FnZ2VyQ29udHJvbGxlckBkb2NzIjtzOjEwOiJjb250cm9sbGVyIjtzOjUwOiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAZG9jcyI7czo5OiJuYW1lc3BhY2UiO3M6OToiTDVTd2FnZ2VyIjtzOjY6InByZWZpeCI7TjtzOjU6IndoZXJlIjthOjA6e319czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czo4OiJqc29uRmlsZSI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjU6Ii9kb2NzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM4OiIjXi9kb2NzKD86Lyg/UDxqc29uRmlsZT5bXi9dKyspKT8kI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6ODoianNvbkZpbGUiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjU6Ii9kb2NzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjg6Impzb25GaWxlIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxODoiZG9jcy9hc3NldC97YXNzZXR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxODoiZG9jcy9hc3NldC97YXNzZXR9IjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoyOiJhcyI7czoxNjoibDUtc3dhZ2dlci5hc3NldCI7czoxMDoibWlkZGxld2FyZSI7YTowOnt9czo0OiJ1c2VzIjtzOjU2OiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckFzc2V0Q29udHJvbGxlckBpbmRleCI7czoxMDoiY29udHJvbGxlciI7czo1NjoiXEw1U3dhZ2dlclxIdHRwXENvbnRyb2xsZXJzXFN3YWdnZXJBc3NldENvbnRyb2xsZXJAaW5kZXgiO3M6OToibmFtZXNwYWNlIjtzOjk6Ikw1U3dhZ2dlciI7czo2OiJwcmVmaXgiO047czo1OiJ3aGVyZSI7YTowOnt9fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6NToiYXNzZXQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMToiL2RvY3MvYXNzZXQiO3M6MTA6InBhdGhfcmVnZXgiO3M6MzY6IiNeL2RvY3MvYXNzZXQvKD9QPGFzc2V0PlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6NToiYXNzZXQiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjExOiIvZG9jcy9hc3NldCI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czo1OiJhc3NldCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTk6ImFwaS9vYXV0aDItY2FsbGJhY2siO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE5OiJhcGkvb2F1dGgyLWNhbGxiYWNrIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoyOiJhcyI7czoyNjoibDUtc3dhZ2dlci5vYXV0aDJfY2FsbGJhY2siO3M6MTA6Im1pZGRsZXdhcmUiO2E6MDp7fXM6NDoidXNlcyI7czo2MDoiXEw1U3dhZ2dlclxIdHRwXENvbnRyb2xsZXJzXFN3YWdnZXJDb250cm9sbGVyQG9hdXRoMkNhbGxiYWNrIjtzOjEwOiJjb250cm9sbGVyIjtzOjYwOiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAb2F1dGgyQ2FsbGJhY2siO3M6OToibmFtZXNwYWNlIjtzOjk6Ikw1U3dhZ2dlciI7czo2OiJwcmVmaXgiO047czo1OiJ3aGVyZSI7YTowOnt9fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjIwOiIvYXBpL29hdXRoMi1jYWxsYmFjayI7czoxMDoicGF0aF9yZWdleCI7czoyODoiI14vYXBpL29hdXRoMlwtY2FsbGJhY2skI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MjA6Ii9hcGkvb2F1dGgyLWNhbGxiYWNrIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE0OiJhcGkvc2VuZF9lbWFpbCI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTQ6ImFwaS9zZW5kX2VtYWlsIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Njp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NDU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFNlbmRFbWFpbEBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czozNjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU2VuZEVtYWlsIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjM6ImFwaSI7czo1OiJ3aGVyZSI7YTowOnt9fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE1OiIvYXBpL3NlbmRfZW1haWwiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjI6IiNeL2FwaS9zZW5kX2VtYWlsJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE1OiIvYXBpL3NlbmRfZW1haWwiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MjE6ImFwaS91c2Vycy97aWR9L2VuYWJsZSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MjE6ImFwaS91c2Vycy97aWR9L2VuYWJsZSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjU4OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xFbmFibGVVc2VyQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjQ5OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xFbmFibGVVc2VyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjk6ImFwaS91c2VycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMDoiZW5hYmxlVXNlciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMDoiL2FwaS91c2VycyI7czoxMDoicGF0aF9yZWdleCI7czozOToiI14vYXBpL3VzZXJzLyg/UDxpZD5bXi9dKyspL2VuYWJsZSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YTozOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czo3OiIvZW5hYmxlIjt9aToxO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MjthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEwOiIvYXBpL3VzZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoyMjoiYXBpL3VzZXJzL3tpZH0vZGlzYWJsZSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MjI6ImFwaS91c2Vycy97aWR9L2Rpc2FibGUiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1OToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcRGlzYWJsZVVzZXJBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTA6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXERpc2FibGVVc2VyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjk6ImFwaS91c2VycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMToiZGlzYWJsZVVzZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTA6Ii9hcGkvdXNlcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6NDA6IiNeL2FwaS91c2Vycy8oP1A8aWQ+W14vXSsrKS9kaXNhYmxlJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjM6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjg6Ii9kaXNhYmxlIjt9aToxO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MjthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEwOiIvYXBpL3VzZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNDoiYXBpL3VzZXJzL3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE0OiJhcGkvdXNlcnMve2lkfSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjU2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xTaG93VXNlckFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo0NzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcU2hvd1VzZXJBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6OToiYXBpL3VzZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjExOiJzaG93T25lVXNlciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMDoiL2FwaS91c2VycyI7czoxMDoicGF0aF9yZWdleCI7czozMjoiI14vYXBpL3VzZXJzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMDoiL2FwaS91c2VycyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTM6ImFwaS9lbXBsb3llZXMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEzOiJhcGkvZW1wbG95ZWVzIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xGaW5kRW1wbG95ZWVBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xGaW5kRW1wbG95ZWVBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTM6ImFwaS9lbXBsb3llZXMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTI6Imxpc3RFbXBsb3llZSI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE0OiIvYXBpL2VtcGxveWVlcyI7czoxMDoicGF0aF9yZWdleCI7czoyMToiI14vYXBpL2VtcGxveWVlcyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9lbXBsb3llZXMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTg6ImFwaS9jdXN0b21lcnMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTg6ImFwaS9jdXN0b21lcnMve2lkfSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY0OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcRmluZEN1c3RvbWVyQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU1OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcRmluZEN1c3RvbWVyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEzOiJhcGkvY3VzdG9tZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjEyOiJmaW5kQ3VzdG9tZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTQ6Ii9hcGkvY3VzdG9tZXJzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM2OiIjXi9hcGkvY3VzdG9tZXJzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9jdXN0b21lcnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjEzOiJhcGkvY3VzdG9tZXJzIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxMzoiYXBpL2N1c3RvbWVycyI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY1OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcSW5kZXhDdXN0b21lckFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ3VzdG9tZXJzXEluZGV4Q3VzdG9tZXJBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTM6ImFwaS9jdXN0b21lcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTM6Imxpc3RDdXN0b21lcnMiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNDoiL2FwaS9jdXN0b21lcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjE6IiNeL2FwaS9jdXN0b21lcnMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTQ6Ii9hcGkvY3VzdG9tZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE5OiJhcGkvcHJvZHVjdHMve3V1aWR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxOToiYXBpL3Byb2R1Y3RzL3t1dWlkfSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjYyOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xGaW5kUHJvZHVjdEFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1MzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcRmluZFByb2R1Y3RBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTI6ImFwaS9wcm9kdWN0cyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMToiZmluZFByb2R1Y3QiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjQ6InV1aWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMzoiL2FwaS9wcm9kdWN0cyI7czoxMDoicGF0aF9yZWdleCI7czozNzoiI14vYXBpL3Byb2R1Y3RzLyg/UDx1dWlkPlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6NDoidXVpZCI7aTo0O2I6MTt9aToxO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTM6Ii9hcGkvcHJvZHVjdHMiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6NDoidXVpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTA6ImFwaS9zZWFyY2giO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEwOiJhcGkvc2VhcmNoIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFNlYXJjaFByb2R1Y3RzQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xTZWFyY2hQcm9kdWN0c0FjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMDoiYXBpL3NlYXJjaCI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNDoic2VhcmNoUHJvZHVjdHMiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxMToiL2FwaS9zZWFyY2giO3M6MTA6InBhdGhfcmVnZXgiO3M6MTg6IiNeL2FwaS9zZWFyY2gkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTE6Ii9hcGkvc2VhcmNoIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE1OiJhcGkvc2VhcmNoL2hvbWUiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE1OiJhcGkvc2VhcmNoL2hvbWUiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo3MjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcU2VhcmNoUHJvZHVjdHNGb3JIb21lQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjYzOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xTZWFyY2hQcm9kdWN0c0ZvckhvbWVBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTA6ImFwaS9zZWFyY2giO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTQ6InNlYXJjaFByb2R1Y3RzIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTY6Ii9hcGkvc2VhcmNoL2hvbWUiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjM6IiNeL2FwaS9zZWFyY2gvaG9tZSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNjoiL2FwaS9zZWFyY2gvaG9tZSI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxMzoiYXBpL2ludmVudG9yeSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTM6ImFwaS9pbnZlbnRvcnkiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1OToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcSW5kZXhQcm9kdWN0U3RvY2tAX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTA6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFN0b2NrXEluZGV4UHJvZHVjdFN0b2NrIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEzOiJhcGkvaW52ZW50b3J5IjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE4OiJpbmRleFByb2R1Y3RzU3RvY2siO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNDoiL2FwaS9pbnZlbnRvcnkiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjE6IiNeL2FwaS9pbnZlbnRvcnkkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTQ6Ii9hcGkvaW52ZW50b3J5Ijt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE4OiJhcGkvaW52ZW50b3J5L3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE4OiJhcGkvaW52ZW50b3J5L3tpZH0iO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1ODoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcRmluZFByb2R1Y3RTdG9ja0BfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo0OToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcRmluZFByb2R1Y3RTdG9jayI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMzoiYXBpL2ludmVudG9yeSI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNzoiZmluZFByb2R1Y3RzU3RvY2siO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTQ6Ii9hcGkvaW52ZW50b3J5IjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM2OiIjXi9hcGkvaW52ZW50b3J5Lyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9pbnZlbnRvcnkiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjExOiJhcGkvZmlsdGVycyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTE6ImFwaS9maWx0ZXJzIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjI6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEZpbHRlcnNcSW5kZXhGaWx0ZXJzQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjUzOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXEluZGV4RmlsdGVyc0FjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMToiYXBpL2ZpbHRlcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTI6ImluZGV4RmlsdGVycyI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjEyOiIvYXBpL2ZpbHRlcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MTk6IiNeL2FwaS9maWx0ZXJzJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEyOiIvYXBpL2ZpbHRlcnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTQ6ImFwaS9jYXRlZ29yaWVzIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNDoiYXBpL2NhdGVnb3JpZXMiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2NjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xJbmRleENhdGVnb3J5QWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU3OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDYXRlZ29yaWVzXEluZGV4Q2F0ZWdvcnlBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTQ6ImFwaS9jYXRlZ29yaWVzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjEzOiJpbmRleENhdGVnb3J5Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTU6Ii9hcGkvY2F0ZWdvcmllcyI7czoxMDoicGF0aF9yZWdleCI7czoyMjoiI14vYXBpL2NhdGVnb3JpZXMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTU6Ii9hcGkvY2F0ZWdvcmllcyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxMDoiYXBpL29yZGVycyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTA6ImFwaS9vcmRlcnMiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2MDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcT3JkZXJzXEluZGV4T3JkZXJzQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjUxOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xPcmRlcnNcSW5kZXhPcmRlcnNBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTA6ImFwaS9vcmRlcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6OToiZ2V0T3JkZXJzIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTE6Ii9hcGkvb3JkZXJzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjE4OiIjXi9hcGkvb3JkZXJzJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjExOiIvYXBpL29yZGVycyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19fXM6NDoiSEVBRCI7YToxOTp7czoxNzoiYXBpL2RvY3VtZW50YXRpb24iO3I6NDtzOjE2OiJkb2NzL3tqc29uRmlsZT99IjtyOjM3O3M6MTg6ImRvY3MvYXNzZXQve2Fzc2V0fSI7cjo4MztzOjE5OiJhcGkvb2F1dGgyLWNhbGxiYWNrIjtyOjEyNDtzOjE0OiJhcGkvc2VuZF9lbWFpbCI7cjoxNTc7czoyMToiYXBpL3VzZXJzL3tpZH0vZW5hYmxlIjtyOjE5MDtzOjIyOiJhcGkvdXNlcnMve2lkfS9kaXNhYmxlIjtyOjIzNTtzOjE0OiJhcGkvdXNlcnMve2lkfSI7cjoyODA7czoxMzoiYXBpL2VtcGxveWVlcyI7cjozMjI7czoxODoiYXBpL2N1c3RvbWVycy97aWR9IjtyOjM1NjtzOjEzOiJhcGkvY3VzdG9tZXJzIjtyOjM5ODtzOjE5OiJhcGkvcHJvZHVjdHMve3V1aWR9IjtyOjQzMjtzOjEwOiJhcGkvc2VhcmNoIjtyOjQ3NDtzOjE1OiJhcGkvc2VhcmNoL2hvbWUiO3I6NTA4O3M6MTM6ImFwaS9pbnZlbnRvcnkiO3I6NTQyO3M6MTg6ImFwaS9pbnZlbnRvcnkve2lkfSI7cjo1NzY7czoxMToiYXBpL2ZpbHRlcnMiO3I6NjE4O3M6MTQ6ImFwaS9jYXRlZ29yaWVzIjtyOjY1MjtzOjEwOiJhcGkvb3JkZXJzIjtyOjY4Njt9czo0OiJQT1NUIjthOjE2OntzOjE2OiJkb2NzL3tqc29uRmlsZT99IjtyOjM3O3M6MTg6ImFwaS91c2Vycy9yZWNvdmVyeSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTg6ImFwaS91c2Vycy9yZWNvdmVyeSI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2NDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcUmVjb3ZlcnlQYXNzd29yZEFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcUmVjb3ZlcnlQYXNzd29yZEFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czo5OiJhcGkvdXNlcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTY6InJlY292ZXJ5UGFzc3dvcmQiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxOToiL2FwaS91c2Vycy9yZWNvdmVyeSI7czoxMDoicGF0aF9yZWdleCI7czoyNjoiI14vYXBpL3VzZXJzL3JlY292ZXJ5JCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE5OiIvYXBpL3VzZXJzL3JlY292ZXJ5Ijt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE2OiJhcGkvdXNlcnMvZm9yZ290IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNjoiYXBpL3VzZXJzL2ZvcmdvdCI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo3NDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcQ2hhbmdlUGFzc3dvcmRGcm9tUmVjb3ZlcnlBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NjU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXENoYW5nZVBhc3N3b3JkRnJvbVJlY292ZXJ5QWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjk6ImFwaS91c2VycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoyNjoiY2hhbmdlUGFzc3dvcmRGcm9tUmVjb3ZlcnkiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNzoiL2FwaS91c2Vycy9mb3Jnb3QiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjQ6IiNeL2FwaS91c2Vycy9mb3Jnb3QkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTc6Ii9hcGkvdXNlcnMvZm9yZ290Ijt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE0OiJhcGkvYXV0aC9sb2dpbiI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTQ6ImFwaS9hdXRoL2xvZ2luIjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjUyOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xBdXRoXExvZ2luQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjQzOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xBdXRoXExvZ2luQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjg6ImFwaS9hdXRoIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjU6ImxvZ2luIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTU6Ii9hcGkvYXV0aC9sb2dpbiI7czoxMDoicGF0aF9yZWdleCI7czoyMjoiI14vYXBpL2F1dGgvbG9naW4kI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTU6Ii9hcGkvYXV0aC9sb2dpbiI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoyMDoiYXBpL2F1dGgvcmVuZXctdG9rZW4iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjIwOiJhcGkvYXV0aC9yZW5ldy10b2tlbiI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1NzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQXV0aFxSZW5ld1Rva2VuQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjQ4OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xBdXRoXFJlbmV3VG9rZW5BY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6ODoiYXBpL2F1dGgiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTE6InJlbmV3LXRva2VuIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MjE6Ii9hcGkvYXV0aC9yZW5ldy10b2tlbiI7czoxMDoicGF0aF9yZWdleCI7czoyOToiI14vYXBpL2F1dGgvcmVuZXdcLXRva2VuJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjIxOiIvYXBpL2F1dGgvcmVuZXctdG9rZW4iO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTU6ImFwaS9hdXRoL3NpZ251cCI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTU6ImFwaS9hdXRoL3NpZ251cCI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2ODoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ3VzdG9tZXJzXFN0b3JlV2ViQ3VzdG9tZXJBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTk6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xTdG9yZVdlYkN1c3RvbWVyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjg6ImFwaS9hdXRoIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE3OiJjcmVhdGVXZWJDdXN0b21lciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE2OiIvYXBpL2F1dGgvc2lnbnVwIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjIzOiIjXi9hcGkvYXV0aC9zaWdudXAkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTY6Ii9hcGkvYXV0aC9zaWdudXAiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MjQ6ImFwaS9hdXRoL2NoYW5nZS1wYXNzd29yZCI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MjQ6ImFwaS9hdXRoL2NoYW5nZS1wYXNzd29yZCI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2MToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQXV0aFxDaGFuZ2VQYXNzd29yZEFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1MjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQXV0aFxDaGFuZ2VQYXNzd29yZEFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czo4OiJhcGkvYXV0aCI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNToiY2hhbmdlLXBhc3N3b3JkIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MjU6Ii9hcGkvYXV0aC9jaGFuZ2UtcGFzc3dvcmQiO3M6MTA6InBhdGhfcmVnZXgiO3M6MzM6IiNeL2FwaS9hdXRoL2NoYW5nZVwtcGFzc3dvcmQkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MjU6Ii9hcGkvYXV0aC9jaGFuZ2UtcGFzc3dvcmQiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTM6ImFwaS9lbXBsb3llZXMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEzOiJhcGkvZW1wbG95ZWVzIjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY1OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xFbXBsb3llZXNcU3RvcmVFbXBsb3llZUFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRW1wbG95ZWVzXFN0b3JlRW1wbG95ZWVBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTM6ImFwaS9lbXBsb3llZXMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTQ6ImNyZWF0ZUVtcGxveWVlIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTQ6Ii9hcGkvZW1wbG95ZWVzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjIxOiIjXi9hcGkvZW1wbG95ZWVzJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE0OiIvYXBpL2VtcGxveWVlcyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxMzoiYXBpL2N1c3RvbWVycyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTM6ImFwaS9jdXN0b21lcnMiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xTdG9yZUN1c3RvbWVyQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcU3RvcmVDdXN0b21lckFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMzoiYXBpL2N1c3RvbWVycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNDoiY3JlYXRlQ3VzdG9tZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNDoiL2FwaS9jdXN0b21lcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjE6IiNeL2FwaS9jdXN0b21lcnMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTQ6Ii9hcGkvY3VzdG9tZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjEwOiJhcGkvYWRtaW5zIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxMDoiYXBpL2FkbWlucyI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1OToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQWRtaW5zXFN0b3JlQWRtaW5BY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTA6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEFkbWluc1xTdG9yZUFkbWluQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEwOiJhcGkvYWRtaW5zIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjExOiJjcmVhdGVBZG1pbiI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjExOiIvYXBpL2FkbWlucyI7czoxMDoicGF0aF9yZWdleCI7czoxODoiI14vYXBpL2FkbWlucyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMToiL2FwaS9hZG1pbnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTI6ImFwaS9wcm9kdWN0cyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTI6ImFwaS9wcm9kdWN0cyI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2MzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcU3RvcmVQcm9kdWN0QWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU0OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xTdG9yZVByb2R1Y3RBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTI6ImFwaS9wcm9kdWN0cyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMzoiY3JlYXRlUHJvZHVjdCI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjEzOiIvYXBpL3Byb2R1Y3RzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjIwOiIjXi9hcGkvcHJvZHVjdHMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTM6Ii9hcGkvcHJvZHVjdHMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTg6ImFwaS9pbnZlbnRvcnkve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTg6ImFwaS9pbnZlbnRvcnkve2lkfSI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2MDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcVXBkYXRlSW52ZW50b3J5QF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjUxOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xVcGRhdGVJbnZlbnRvcnkiO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTM6ImFwaS9pbnZlbnRvcnkiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MjI6InVwZGF0ZUludmVudG9yeVByb2R1Y3QiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTQ6Ii9hcGkvaW52ZW50b3J5IjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM2OiIjXi9hcGkvaW52ZW50b3J5Lyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9pbnZlbnRvcnkiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjExOiJhcGkvZmlsdGVycyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTE6ImFwaS9maWx0ZXJzIjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjYyOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXFN0b3JlRmlsdGVyc0FjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1MzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xTdG9yZUZpbHRlcnNBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTE6ImFwaS9maWx0ZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjk6ImFkZEZpbHRlciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjEyOiIvYXBpL2ZpbHRlcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MTk6IiNeL2FwaS9maWx0ZXJzJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEyOiIvYXBpL2ZpbHRlcnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTQ6ImFwaS9jYXRlZ29yaWVzIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNDoiYXBpL2NhdGVnb3JpZXMiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjY6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcU3RvcmVDYXRlZ29yeUFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xTdG9yZUNhdGVnb3J5QWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjE0OiJhcGkvY2F0ZWdvcmllcyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMzoic3RvcmVDYXRlZ29yeSI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE1OiIvYXBpL2NhdGVnb3JpZXMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjI6IiNeL2FwaS9jYXRlZ29yaWVzJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE1OiIvYXBpL2NhdGVnb3JpZXMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MjQ6ImFwaS9wYXltZW50cy9tZXJjYWRvcGFnbyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MjQ6ImFwaS9wYXltZW50cy9tZXJjYWRvcGFnbyI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2MzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUGF5bWVudHNcTWVyY2Fkb1BhZ29FeGVjdXRlQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU0OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQYXltZW50c1xNZXJjYWRvUGFnb0V4ZWN1dGUiO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTI6ImFwaS9wYXltZW50cyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxODoicGF5bWVudE1lcmNhZG9QYWdvIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MjU6Ii9hcGkvcGF5bWVudHMvbWVyY2Fkb3BhZ28iO3M6MTA6InBhdGhfcmVnZXgiO3M6MzI6IiNeL2FwaS9wYXltZW50cy9tZXJjYWRvcGFnbyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoyNToiL2FwaS9wYXltZW50cy9tZXJjYWRvcGFnbyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNzoiYXBpL25vdGlmaWNhdGlvbnMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE3OiJhcGkvbm90aWZpY2F0aW9ucyI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo3MToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcTm90aWZpY2F0aW9uc1xDaGVja05vdGlmaWNhdGlvblVzZXJAX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NjI6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXE5vdGlmaWNhdGlvbnNcQ2hlY2tOb3RpZmljYXRpb25Vc2VyIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjE3OiJhcGkvbm90aWZpY2F0aW9ucyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoyMToiY2hlY2tOb3RpZmljYXRpb25Vc2VyIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTg6Ii9hcGkvbm90aWZpY2F0aW9ucyI7czoxMDoicGF0aF9yZWdleCI7czoyNToiI14vYXBpL25vdGlmaWNhdGlvbnMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTg6Ii9hcGkvbm90aWZpY2F0aW9ucyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19fXM6MzoiUFVUIjthOjU6e3M6MTY6ImRvY3Mve2pzb25GaWxlP30iO3I6Mzc7czoxODoiYXBpL2N1c3RvbWVycy97aWR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxODoiYXBpL2N1c3RvbWVycy97aWR9IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6MzoiUFVUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjY6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xVcGRhdGVDdXN0b21lckFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ3VzdG9tZXJzXFVwZGF0ZUN1c3RvbWVyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEzOiJhcGkvY3VzdG9tZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE0OiJ1cGRhdGVDdXN0b21lciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxNDoiL2FwaS9jdXN0b21lcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MzY6IiNeL2FwaS9jdXN0b21lcnMvKD9QPGlkPlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE0OiIvYXBpL2N1c3RvbWVycyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTc6ImFwaS9wcm9kdWN0cy97aWR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNzoiYXBpL3Byb2R1Y3RzL3tpZH0iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czozOiJQVVQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2NDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcVXBkYXRlUHJvZHVjdEFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcVXBkYXRlUHJvZHVjdEFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMjoiYXBpL3Byb2R1Y3RzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjEzOiJ1cGRhdGVQcm9kdWN0Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjEzOiIvYXBpL3Byb2R1Y3RzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM1OiIjXi9hcGkvcHJvZHVjdHMvKD9QPGlkPlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEzOiIvYXBpL3Byb2R1Y3RzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNjoiYXBpL2ZpbHRlcnMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTY6ImFwaS9maWx0ZXJzL3tpZH0iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czozOiJQVVQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2MzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xVcGRhdGVGaWx0ZXJzQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU0OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXFVwZGF0ZUZpbHRlcnNBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTE6ImFwaS9maWx0ZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjEyOiJ1cGRhdGVGaWx0ZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTI6Ii9hcGkvZmlsdGVycyI7czoxMDoicGF0aF9yZWdleCI7czozNDoiI14vYXBpL2ZpbHRlcnMvKD9QPGlkPlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEyOiIvYXBpL2ZpbHRlcnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE5OiJhcGkvY2F0ZWdvcmllcy97aWR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxOToiYXBpL2NhdGVnb3JpZXMve2lkfSI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjM6IlBVVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY3OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDYXRlZ29yaWVzXFVwZGF0ZUNhdGVnb3J5QWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU4OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDYXRlZ29yaWVzXFVwZGF0ZUNhdGVnb3J5QWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjE0OiJhcGkvY2F0ZWdvcmllcyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNDoidXBkYXRlQ2F0ZWdvcnkiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTU6Ii9hcGkvY2F0ZWdvcmllcyI7czoxMDoicGF0aF9yZWdleCI7czozNzoiI14vYXBpL2NhdGVnb3JpZXMvKD9QPGlkPlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE1OiIvYXBpL2NhdGVnb3JpZXMiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX19czo1OiJQQVRDSCI7YToxOntzOjE2OiJkb2NzL3tqc29uRmlsZT99IjtyOjM3O31zOjY6IkRFTEVURSI7YTo0OntzOjE2OiJkb2NzL3tqc29uRmlsZT99IjtyOjM3O3M6MTc6ImFwaS9wcm9kdWN0cy97aWR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNzoiYXBpL3Byb2R1Y3RzL3tpZH0iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo2OiJERUxFVEUiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2NToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcRGVzdHJveVByb2R1Y3RBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTY6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXERlc3Ryb3lQcm9kdWN0QWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEyOiJhcGkvcHJvZHVjdHMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTQ6ImRlc3Ryb3lQcm9kdWN0Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjEzOiIvYXBpL3Byb2R1Y3RzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM1OiIjXi9hcGkvcHJvZHVjdHMvKD9QPGlkPlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEzOiIvYXBpL3Byb2R1Y3RzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNjoiYXBpL2ZpbHRlcnMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTY6ImFwaS9maWx0ZXJzL3tpZH0iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo2OiJERUxFVEUiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2MzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xEZXN0cm95RmlsdGVyQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU0OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXERlc3Ryb3lGaWx0ZXJBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTE6ImFwaS9maWx0ZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjEzOiJkZXN0cm95RmlsdGVyIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjEyOiIvYXBpL2ZpbHRlcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MzQ6IiNeL2FwaS9maWx0ZXJzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMjoiL2FwaS9maWx0ZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxOToiYXBpL2NhdGVnb3JpZXMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTk6ImFwaS9jYXRlZ29yaWVzL3tpZH0iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo2OiJERUxFVEUiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2ODoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xEZXN0cm95Q2F0ZWdvcnlBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTk6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcRGVzdHJveUNhdGVnb3J5QWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjE0OiJhcGkvY2F0ZWdvcmllcyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNToiZGVzdHJveUNhdGVnb3J5Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE1OiIvYXBpL2NhdGVnb3JpZXMiO3M6MTA6InBhdGhfcmVnZXgiO3M6Mzc6IiNeL2FwaS9jYXRlZ29yaWVzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNToiL2FwaS9jYXRlZ29yaWVzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19fXM6NzoiT1BUSU9OUyI7YToxOntzOjE2OiJkb2NzL3tqc29uRmlsZT99IjtyOjM3O319czoxMjoiACoAYWxsUm91dGVzIjthOjQxOntzOjIxOiJIRUFEYXBpL2RvY3VtZW50YXRpb24iO3I6NDtzOjIzOiJPUFRJT05TZG9jcy97anNvbkZpbGU/fSI7cjozNztzOjIyOiJIRUFEZG9jcy9hc3NldC97YXNzZXR9IjtyOjgzO3M6MjM6IkhFQURhcGkvb2F1dGgyLWNhbGxiYWNrIjtyOjEyNDtzOjE4OiJIRUFEYXBpL3NlbmRfZW1haWwiO3I6MTU3O3M6MjI6IlBPU1RhcGkvdXNlcnMvcmVjb3ZlcnkiO3I6NzQyO3M6MjA6IlBPU1RhcGkvdXNlcnMvZm9yZ290IjtyOjc3NTtzOjI1OiJIRUFEYXBpL3VzZXJzL3tpZH0vZW5hYmxlIjtyOjE5MDtzOjI2OiJIRUFEYXBpL3VzZXJzL3tpZH0vZGlzYWJsZSI7cjoyMzU7czoxODoiSEVBRGFwaS91c2Vycy97aWR9IjtyOjI4MDtzOjE4OiJQT1NUYXBpL2F1dGgvbG9naW4iO3I6ODA4O3M6MjQ6IlBPU1RhcGkvYXV0aC9yZW5ldy10b2tlbiI7cjo4NDE7czoxOToiUE9TVGFwaS9hdXRoL3NpZ251cCI7cjo4NzQ7czoyODoiUE9TVGFwaS9hdXRoL2NoYW5nZS1wYXNzd29yZCI7cjo5MDc7czoxNzoiUE9TVGFwaS9lbXBsb3llZXMiO3I6OTQwO3M6MTc6IkhFQURhcGkvZW1wbG95ZWVzIjtyOjMyMjtzOjE3OiJQT1NUYXBpL2N1c3RvbWVycyI7cjo5NzM7czoyMjoiSEVBRGFwaS9jdXN0b21lcnMve2lkfSI7cjozNTY7czoyMToiUFVUYXBpL2N1c3RvbWVycy97aWR9IjtyOjEyNDc7czoxNzoiSEVBRGFwaS9jdXN0b21lcnMiO3I6Mzk4O3M6MTQ6IlBPU1RhcGkvYWRtaW5zIjtyOjEwMDY7czoyMDoiUFVUYXBpL3Byb2R1Y3RzL3tpZH0iO3I6MTI4ODtzOjIzOiJIRUFEYXBpL3Byb2R1Y3RzL3t1dWlkfSI7cjo0MzI7czoyMzoiREVMRVRFYXBpL3Byb2R1Y3RzL3tpZH0iO3I6MTQxNTtzOjE2OiJQT1NUYXBpL3Byb2R1Y3RzIjtyOjEwMzk7czoxNDoiSEVBRGFwaS9zZWFyY2giO3I6NDc0O3M6MTk6IkhFQURhcGkvc2VhcmNoL2hvbWUiO3I6NTA4O3M6MjI6IlBPU1RhcGkvaW52ZW50b3J5L3tpZH0iO3I6MTA3MjtzOjE3OiJIRUFEYXBpL2ludmVudG9yeSI7cjo1NDI7czoyMjoiSEVBRGFwaS9pbnZlbnRvcnkve2lkfSI7cjo1NzY7czoxNToiSEVBRGFwaS9maWx0ZXJzIjtyOjYxODtzOjE1OiJQT1NUYXBpL2ZpbHRlcnMiO3I6MTExMztzOjE5OiJQVVRhcGkvZmlsdGVycy97aWR9IjtyOjEzMjk7czoyMjoiREVMRVRFYXBpL2ZpbHRlcnMve2lkfSI7cjoxNDU2O3M6MTg6IlBPU1RhcGkvY2F0ZWdvcmllcyI7cjoxMTQ2O3M6MjI6IlBVVGFwaS9jYXRlZ29yaWVzL3tpZH0iO3I6MTM3MDtzOjE4OiJIRUFEYXBpL2NhdGVnb3JpZXMiO3I6NjUyO3M6MjU6IkRFTEVURWFwaS9jYXRlZ29yaWVzL3tpZH0iO3I6MTQ5NztzOjI4OiJQT1NUYXBpL3BheW1lbnRzL21lcmNhZG9wYWdvIjtyOjExNzk7czoyMToiUE9TVGFwaS9ub3RpZmljYXRpb25zIjtyOjEyMTI7czoxNDoiSEVBRGFwaS9vcmRlcnMiO3I6Njg2O31zOjExOiIAKgBuYW1lTGlzdCI7YTozOTp7czoxNDoibDUtc3dhZ2dlci5hcGkiO3I6NDtzOjE1OiJsNS1zd2FnZ2VyLmRvY3MiO3I6Mzc7czoxNjoibDUtc3dhZ2dlci5hc3NldCI7cjo4MztzOjI2OiJsNS1zd2FnZ2VyLm9hdXRoMl9jYWxsYmFjayI7cjoxMjQ7czoxNjoicmVjb3ZlcnlQYXNzd29yZCI7cjo3NDI7czoyNjoiY2hhbmdlUGFzc3dvcmRGcm9tUmVjb3ZlcnkiO3I6Nzc1O3M6MTA6ImVuYWJsZVVzZXIiO3I6MTkwO3M6MTE6ImRpc2FibGVVc2VyIjtyOjIzNTtzOjExOiJzaG93T25lVXNlciI7cjoyODA7czo1OiJsb2dpbiI7cjo4MDg7czoxMToicmVuZXctdG9rZW4iO3I6ODQxO3M6MTc6ImNyZWF0ZVdlYkN1c3RvbWVyIjtyOjg3NDtzOjE1OiJjaGFuZ2UtcGFzc3dvcmQiO3I6OTA3O3M6MTQ6ImNyZWF0ZUVtcGxveWVlIjtyOjk0MDtzOjEyOiJsaXN0RW1wbG95ZWUiO3I6MzIyO3M6MTQ6ImNyZWF0ZUN1c3RvbWVyIjtyOjk3MztzOjEyOiJmaW5kQ3VzdG9tZXIiO3I6MzU2O3M6MTQ6InVwZGF0ZUN1c3RvbWVyIjtyOjEyNDc7czoxMzoibGlzdEN1c3RvbWVycyI7cjozOTg7czoxMToiY3JlYXRlQWRtaW4iO3I6MTAwNjtzOjEzOiJ1cGRhdGVQcm9kdWN0IjtyOjEyODg7czoxMToiZmluZFByb2R1Y3QiO3I6NDMyO3M6MTQ6ImRlc3Ryb3lQcm9kdWN0IjtyOjE0MTU7czoxMzoiY3JlYXRlUHJvZHVjdCI7cjoxMDM5O3M6MTQ6InNlYXJjaFByb2R1Y3RzIjtyOjUwODtzOjIyOiJ1cGRhdGVJbnZlbnRvcnlQcm9kdWN0IjtyOjEwNzI7czoxODoiaW5kZXhQcm9kdWN0c1N0b2NrIjtyOjU0MjtzOjE3OiJmaW5kUHJvZHVjdHNTdG9jayI7cjo1NzY7czoxMjoiaW5kZXhGaWx0ZXJzIjtyOjYxODtzOjk6ImFkZEZpbHRlciI7cjoxMTEzO3M6MTI6InVwZGF0ZUZpbHRlciI7cjoxMzI5O3M6MTM6ImRlc3Ryb3lGaWx0ZXIiO3I6MTQ1NjtzOjEzOiJzdG9yZUNhdGVnb3J5IjtyOjExNDY7czoxNDoidXBkYXRlQ2F0ZWdvcnkiO3I6MTM3MDtzOjEzOiJpbmRleENhdGVnb3J5IjtyOjY1MjtzOjE1OiJkZXN0cm95Q2F0ZWdvcnkiO3I6MTQ5NztzOjE4OiJwYXltZW50TWVyY2Fkb1BhZ28iO3I6MTE3OTtzOjIxOiJjaGVja05vdGlmaWNhdGlvblVzZXIiO3I6MTIxMjtzOjk6ImdldE9yZGVycyI7cjo2ODY7fXM6MTM6IgAqAGFjdGlvbkxpc3QiO2E6NDE6e3M6NDg6Ikw1U3dhZ2dlclxIdHRwXENvbnRyb2xsZXJzXFN3YWdnZXJDb250cm9sbGVyQGFwaSI7cjo0O3M6NDk6Ikw1U3dhZ2dlclxIdHRwXENvbnRyb2xsZXJzXFN3YWdnZXJDb250cm9sbGVyQGRvY3MiO3I6Mzc7czo1NToiTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckFzc2V0Q29udHJvbGxlckBpbmRleCI7cjo4MztzOjU5OiJMNVN3YWdnZXJcSHR0cFxDb250cm9sbGVyc1xTd2FnZ2VyQ29udHJvbGxlckBvYXV0aDJDYWxsYmFjayI7cjoxMjQ7czozNToiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xTZW5kRW1haWwiO3I6MTU3O3M6NTQ6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcUmVjb3ZlcnlQYXNzd29yZEFjdGlvbiI7cjo3NDI7czo2NDoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xDaGFuZ2VQYXNzd29yZEZyb21SZWNvdmVyeUFjdGlvbiI7cjo3NzU7czo0ODoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xFbmFibGVVc2VyQWN0aW9uIjtyOjE5MDtzOjQ5OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXERpc2FibGVVc2VyQWN0aW9uIjtyOjIzNTtzOjQ2OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXFNob3dVc2VyQWN0aW9uIjtyOjI4MDtzOjQyOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEF1dGhcTG9naW5BY3Rpb24iO3I6ODA4O3M6NDc6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQXV0aFxSZW5ld1Rva2VuQWN0aW9uIjtyOjg0MTtzOjU4OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xTdG9yZVdlYkN1c3RvbWVyQWN0aW9uIjtyOjg3NDtzOjUxOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEF1dGhcQ2hhbmdlUGFzc3dvcmRBY3Rpb24iO3I6OTA3O3M6NTU6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRW1wbG95ZWVzXFN0b3JlRW1wbG95ZWVBY3Rpb24iO3I6OTQwO3M6NTQ6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRW1wbG95ZWVzXEZpbmRFbXBsb3llZUFjdGlvbiI7cjozMjI7czo1NToiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcU3RvcmVDdXN0b21lckFjdGlvbiI7cjo5NzM7czo1NDoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcRmluZEN1c3RvbWVyQWN0aW9uIjtyOjM1NjtzOjU2OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xVcGRhdGVDdXN0b21lckFjdGlvbiI7cjoxMjQ3O3M6NTU6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ3VzdG9tZXJzXEluZGV4Q3VzdG9tZXJBY3Rpb24iO3I6Mzk4O3M6NDk6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQWRtaW5zXFN0b3JlQWRtaW5BY3Rpb24iO3I6MTAwNjtzOjU0OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFVwZGF0ZVByb2R1Y3RBY3Rpb24iO3I6MTI4ODtzOjUyOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXEZpbmRQcm9kdWN0QWN0aW9uIjtyOjQzMjtzOjU1OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXERlc3Ryb3lQcm9kdWN0QWN0aW9uIjtyOjE0MTU7czo1MzoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xTdG9yZVByb2R1Y3RBY3Rpb24iO3I6MTAzOTtzOjU1OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFNlYXJjaFByb2R1Y3RzQWN0aW9uIjtyOjQ3NDtzOjYyOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFNlYXJjaFByb2R1Y3RzRm9ySG9tZUFjdGlvbiI7cjo1MDg7czo1MDoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xVcGRhdGVJbnZlbnRvcnkiO3I6MTA3MjtzOjQ5OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFN0b2NrXEluZGV4UHJvZHVjdFN0b2NrIjtyOjU0MjtzOjQ4OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFN0b2NrXEZpbmRQcm9kdWN0U3RvY2siO3I6NTc2O3M6NTI6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xJbmRleEZpbHRlcnNBY3Rpb24iO3I6NjE4O3M6NTI6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xTdG9yZUZpbHRlcnNBY3Rpb24iO3I6MTExMztzOjUzOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEZpbHRlcnNcVXBkYXRlRmlsdGVyc0FjdGlvbiI7cjoxMzI5O3M6NTM6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xEZXN0cm95RmlsdGVyQWN0aW9uIjtyOjE0NTY7czo1NjoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDYXRlZ29yaWVzXFN0b3JlQ2F0ZWdvcnlBY3Rpb24iO3I6MTE0NjtzOjU3OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcVXBkYXRlQ2F0ZWdvcnlBY3Rpb24iO3I6MTM3MDtzOjU2OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcSW5kZXhDYXRlZ29yeUFjdGlvbiI7cjo2NTI7czo1ODoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDYXRlZ29yaWVzXERlc3Ryb3lDYXRlZ29yeUFjdGlvbiI7cjoxNDk3O3M6NTM6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUGF5bWVudHNcTWVyY2Fkb1BhZ29FeGVjdXRlIjtyOjExNzk7czo2MToiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xOb3RpZmljYXRpb25zXENoZWNrTm90aWZpY2F0aW9uVXNlciI7cjoxMjEyO3M6NTA6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcT3JkZXJzXEluZGV4T3JkZXJzQWN0aW9uIjtyOjY4Njt9fQ==')) -); diff --git a/composer.json b/composer.json index fddb52e..53c3553 100644 --- a/composer.json +++ b/composer.json @@ -10,19 +10,20 @@ "require": { "php": "^7.4", "ext-json": "*", + "ext-redis": "*", "darkaonline/l5-swagger": "6.*", "fideloper/proxy": "^4.2", + "firebase/php-jwt": "^5.1", "fruitcake/laravel-cors": "^1.0", "guzzlehttp/guzzle": "^6.3", "joselfonseca/laravel-tactician": "^1.0", - "laravel-doctrine/orm": "1.5.*", "laravel-doctrine/migrations": "^1.3", + "laravel-doctrine/orm": "1.5.*", "laravel/framework": "6.0", - "firebase/php-jwt": "^5.1", - "pda/pheanstalk": "4.0", "laravel/tinker": "^2.0", "league/tactician": "^1.0", - "ext-redis": "*", + "moneyphp/money": "^3.3", + "pda/pheanstalk": "4.0", "predis/predis": "^1.1", "psr/cache": "1.0.0", "sendgrid/sendgrid": "~7" diff --git a/composer.lock b/composer.lock index aacebd1..e608122 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "76b624093d27addcaeba2871df847b13", + "content-hash": "31ec0855dfc90923f6275a53f070f853", "packages": [ { "name": "asm89/stack-cors", @@ -2498,6 +2498,88 @@ ], "time": "2017-11-30T09:17:20+00:00" }, + { + "name": "moneyphp/money", + "version": "v3.3.1", + "source": { + "type": "git", + "url": "https://github.com/moneyphp/money.git", + "reference": "122664c2621a95180a13c1ac81fea1d2ef20781e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/moneyphp/money/zipball/122664c2621a95180a13c1ac81fea1d2ef20781e", + "reference": "122664c2621a95180a13c1ac81fea1d2ef20781e", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": ">=5.6" + }, + "require-dev": { + "cache/taggable-cache": "^0.4.0", + "doctrine/instantiator": "^1.0.5", + "ext-bcmath": "*", + "ext-gmp": "*", + "ext-intl": "*", + "florianv/exchanger": "^1.0", + "florianv/swap": "^3.0", + "friends-of-phpspec/phpspec-code-coverage": "^3.1.1 || ^4.3", + "moneyphp/iso-currencies": "^3.2.1", + "php-http/message": "^1.4", + "php-http/mock-client": "^1.0.0", + "phpspec/phpspec": "^3.4.3", + "phpunit/phpunit": "^5.7.27 || ^6.5.14 || ^7.5.18 || ^8.5", + "psr/cache": "^1.0", + "symfony/phpunit-bridge": "^4" + }, + "suggest": { + "ext-bcmath": "Calculate without integer limits", + "ext-gmp": "Calculate without integer limits", + "ext-intl": "Format Money objects with intl", + "florianv/exchanger": "Exchange rates library for PHP", + "florianv/swap": "Exchange rates library for PHP", + "psr/cache-implementation": "Used for Currency caching" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Money\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mathias Verraes", + "email": "mathias@verraes.net", + "homepage": "http://verraes.net" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + }, + { + "name": "Frederik Bosch", + "email": "f.bosch@genkgo.nl" + } + ], + "description": "PHP implementation of Fowler's Money pattern", + "homepage": "http://moneyphp.org", + "keywords": [ + "Value Object", + "money", + "vo" + ], + "time": "2020-03-18T17:49:59+00:00" + }, { "name": "monolog/monolog", "version": "2.1.0", diff --git a/domain/Entities/Customer.php b/domain/Entities/Customer.php index 9715083..eb0100c 100644 --- a/domain/Entities/Customer.php +++ b/domain/Entities/Customer.php @@ -86,7 +86,7 @@ class Customer public function __construct() { - $this->uuid = Uuid::uuid4(); + //$this->uuid = Uuid::uuid4(); } public function getId(): int diff --git a/domain/Entities/Order.php b/domain/Entities/Order.php new file mode 100644 index 0000000..a4a2e59 --- /dev/null +++ b/domain/Entities/Order.php @@ -0,0 +1,126 @@ +id; + } + + /** + * @return User + */ + public function getUser(): User + { + return $this->customer; + } + + /** + * @param User $user + */ + public function setUser(User $user): void + { + $this->customer = $user; + } + + /** + * @return mixed + */ + public function getAmount() + { + return $this->amount; + } + + /** + * @param mixed $amount + */ + public function setAmount($amount): void + { + $this->amount = $amount; + } + + /** + * @return mixed + */ + public function getNumberSell() + { + return $this->numberSell; + } + + /** + * @param mixed $numberSell + */ + public function setNumberSell($numberSell): void + { + $this->numberSell = $numberSell; + } + + /** + * @return User + */ + public function getEmployee(): User + { + return $this->employee; + } + + /** + * @param User $employee + */ + public function setEmployee(User $employee): void + { + $this->employee = $employee; + } + + /** + * @return Product[] + */ + public function getProducts() + { + return $this->products; + } + + /** + * @param Product[] $products + */ + public function setProducts(array $products): void + { + $this->products = $products; + } +} diff --git a/domain/Interfaces/Repositories/OrderRepositoryInterface.php b/domain/Interfaces/Repositories/OrderRepositoryInterface.php new file mode 100644 index 0000000..06ac2a8 --- /dev/null +++ b/domain/Interfaces/Repositories/OrderRepositoryInterface.php @@ -0,0 +1,10 @@ +setTable('customers'); @@ -11,7 +12,9 @@ ->generatedValue() ->build(); -$builder->addField('uuid', Type::GUID); +$builder->createField('uuid', Type::GUID) + ->generatedValue() + ->build(); $builder->addField('email', Type::STRING); @@ -34,3 +37,9 @@ $builder->addField('vatCondition', Type::STRING); $builder->addField('grossIncome', Type::STRING); + +$builder->createOneToMany('orders', Order::class) + ->cascadePersist() + ->cascadeRemove() + ->mappedBy('customer') + ->build(); diff --git a/infrastructure/Persistence/Mappings/Domain.Entities.Employee.php b/infrastructure/Persistence/Mappings/Domain.Entities.Employee.php index c66932c..2dc183a 100644 --- a/infrastructure/Persistence/Mappings/Domain.Entities.Employee.php +++ b/infrastructure/Persistence/Mappings/Domain.Entities.Employee.php @@ -2,6 +2,7 @@ use Doctrine\DBAL\Types\Type; use Doctrine\ORM\Mapping\Builder\ClassMetadataBuilder; +use Domain\Entities\Order; $builder = new ClassMetadataBuilder($metadata); $builder->setTable('employees'); @@ -11,3 +12,9 @@ ->build(); $builder->addField('role', Type::STRING); + +$builder->createOneToMany('orders', Order::class) + ->cascadePersist() + ->cascadeRemove() + ->mappedBy('employee') + ->build(); diff --git a/infrastructure/Persistence/Mappings/Domain.Entities.Order.php b/infrastructure/Persistence/Mappings/Domain.Entities.Order.php new file mode 100644 index 0000000..013b2a0 --- /dev/null +++ b/infrastructure/Persistence/Mappings/Domain.Entities.Order.php @@ -0,0 +1,25 @@ +setTable('orders'); +$builder->createField('id', Type::INTEGER) + ->makePrimaryKey() + ->generatedValue() + ->build(); + +$builder->addField('amount', Type::INTEGER); + +$builder->addField('numberSell', Type::STRING); + +$builder->addManyToOne('employee', Employee::class); + +$builder->addManyToOne('customer', Customer::class); + +$builder->addInverseManyToMany('products', Product::class, 'orders'); diff --git a/infrastructure/Persistence/Mappings/Domain.Entities.Product.php b/infrastructure/Persistence/Mappings/Domain.Entities.Product.php index c3efa1a..c3d048b 100644 --- a/infrastructure/Persistence/Mappings/Domain.Entities.Product.php +++ b/infrastructure/Persistence/Mappings/Domain.Entities.Product.php @@ -2,11 +2,9 @@ use Doctrine\DBAL\Types\Types as Type; use Doctrine\ORM\Mapping\Builder\ClassMetadataBuilder; -use Doctrine\ORM\Mapping\ClassMetadata; use Domain\Entities\Category; use Domain\Entities\Characteristic; use Domain\Entities\Order; -use Domain\Entities\Product; use Domain\Entities\Stock; $builder = new ClassMetadataBuilder($metadata); @@ -32,9 +30,8 @@ ->cascadePersist() ->build(); -//$builder->createOneToMany('orders', Order::class) -// ->inversedBy('products') -// ->mappedBy('orders') -// ->build(); +$builder->createManyToMany('orders', Order::class) + ->inversedBy('products') + ->build(); $builder->addOneToMany('characteristics', Characteristic::class, 'product'); diff --git a/infrastructure/Persistence/Repositories/OrderRepository.php b/infrastructure/Persistence/Repositories/OrderRepository.php index d4b146b..6599052 100644 --- a/infrastructure/Persistence/Repositories/OrderRepository.php +++ b/infrastructure/Persistence/Repositories/OrderRepository.php @@ -7,12 +7,48 @@ use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityRepository; use Doctrine\ORM\Mapping\ClassMetadata; +use Doctrine\ORM\Tools\Pagination\Paginator; use Domain\Entities\Order; +use Domain\Entities\User; +use Domain\Interfaces\Repositories\OrderRepositoryInterface; -class OrderRepository extends EntityRepository +class OrderRepository extends EntityRepository implements OrderRepositoryInterface { public function __construct(EntityManagerInterface $em) { parent::__construct($em, new ClassMetadata(Order::class)); } + + public function indexAndFiltered(int $page, int $size, int $userId): array + { + // get entity manager + $em = $this->getEntityManager(); + + // get the user repository + $orders = $em->getRepository(Order::class); + + // build the query for the doctrine paginator + $query = $orders->createQueryBuilder('o') + ->where('o.customer = :customer') + ->setParameter('customer', $userId) + //->orderBy('u.id', 'DESC') + ->getQuery(); + + // load doctrine Paginator + $paginator = new Paginator($query); + + // now get one page's items: + $paginator + ->getQuery() + ->setFirstResult($size * ($page-1)) // set the offset + ->setMaxResults($size); // set the limit + + $customersList = []; + + foreach ($paginator as $item) { + array_push($customersList, $item); + } + + return $customersList; + } } diff --git a/infrastructure/Providers/AppServiceProvider.php b/infrastructure/Providers/AppServiceProvider.php index f74872e..f68ed27 100644 --- a/infrastructure/Providers/AppServiceProvider.php +++ b/infrastructure/Providers/AppServiceProvider.php @@ -13,6 +13,7 @@ use Application\Services\Notification\NotifiableService; use Application\Services\Notification\NotifiableServiceInterface; +use Application\Services\Orders\OrderService; use Application\Services\Token\TokenLoginService; use Application\Services\Token\TokenLoginServiceInterface; @@ -21,6 +22,7 @@ use Domain\Interfaces\Services\GetUserTypeServiceInterface; use Domain\Interfaces\Services\Notifications\NotifiableInterface; +use Domain\Interfaces\Services\Orders\OrderServiceInterface; use Domain\Services\Users\GetUserTypeService; use Domain\ValueObjects\Notification; @@ -76,6 +78,8 @@ public function register() $this->app->bind(NotifiableInterface::class, Notification::class); $this->app->bind(ValidatorServiceInterface::class, ValidatorService::class); + + $this->app->bind(OrderServiceInterface::class,OrderService::class); } /** diff --git a/infrastructure/Providers/DoctrineRepositoriesServiceProvider.php b/infrastructure/Providers/DoctrineRepositoriesServiceProvider.php index a8d18b8..1d8035c 100644 --- a/infrastructure/Providers/DoctrineRepositoriesServiceProvider.php +++ b/infrastructure/Providers/DoctrineRepositoriesServiceProvider.php @@ -8,6 +8,7 @@ use Domain\Interfaces\Repositories\CustomerRepositoryInterface; use Domain\Interfaces\Repositories\EmployeeRepositoryInterface; use Domain\Interfaces\Repositories\FilterRepositoryInterface; +use Domain\Interfaces\Repositories\OrderRepositoryInterface; use Domain\Interfaces\Repositories\TokenRepositoryInterface; use Domain\Interfaces\Repositories\UserRepositoryInterface; use Illuminate\Support\ServiceProvider; @@ -15,6 +16,7 @@ use Infrastructure\Persistence\Repositories\CustomerRepository; use Infrastructure\Persistence\Repositories\EmployeeRepository; use Infrastructure\Persistence\Repositories\FilterRepository; +use Infrastructure\Persistence\Repositories\OrderRepository; use Infrastructure\Persistence\Repositories\TokenRepository; use Infrastructure\Persistence\Repositories\UserRepository; @@ -33,5 +35,6 @@ public function boot() $this->app->bind(EmployeeRepositoryInterface::class, EmployeeRepository::class); $this->app->bind(CategoryRepositoryInterface::class, CategoryRepository::class); $this->app->bind(FilterRepositoryInterface::class, FilterRepository::class); + $this->app->bind(OrderRepositoryInterface::class, OrderRepository::class); } } diff --git a/presentation/Http/Actions/Auth/ChangePasswordAction.php b/presentation/Http/Actions/Auth/ChangePasswordAction.php index 1f38687..2cc99ad 100644 --- a/presentation/Http/Actions/Auth/ChangePasswordAction.php +++ b/presentation/Http/Actions/Auth/ChangePasswordAction.php @@ -15,6 +15,6 @@ public function __construct() public function __invoke(Request $request) { - + //TODO: implement } } diff --git a/presentation/Http/Actions/Employees/FindEmployeeAction.php b/presentation/Http/Actions/Employees/FindEmployeeAction.php index 35f9c68..df90cf2 100644 --- a/presentation/Http/Actions/Employees/FindEmployeeAction.php +++ b/presentation/Http/Actions/Employees/FindEmployeeAction.php @@ -10,7 +10,7 @@ use Infrastructure\QueryBus\QueryBusInterface; use Presentation\Http\Adapters\Employees\FindEmployeeAdapter; use Presentation\Http\Enums\HttpCodes; -use Presentation\Http\Presenters\Employee\FindEmployeePresenter; +use Presentation\Http\Presenters\Employees\FindEmployeePresenter; class FindEmployeeAction { diff --git a/presentation/Http/Actions/Employees/FindOneEmployeeAction.php b/presentation/Http/Actions/Employees/FindOneEmployeeAction.php index 636dac6..0068346 100644 --- a/presentation/Http/Actions/Employees/FindOneEmployeeAction.php +++ b/presentation/Http/Actions/Employees/FindOneEmployeeAction.php @@ -9,7 +9,7 @@ use Infrastructure\QueryBus\QueryBusInterface; use Presentation\Http\Adapters\Employees\FindOneEmployeeAdapter; use Presentation\Http\Enums\HttpCodes; -use Presentation\Http\Presenters\Employee\FindOneEmployeePresenter; +use Presentation\Http\Presenters\Employees\FindOneEmployeePresenter; class FindOneEmployeeAction { diff --git a/presentation/Http/Actions/Orders/IndexOrdersAction.php b/presentation/Http/Actions/Orders/IndexOrdersAction.php index ada8aa2..cbe3d55 100644 --- a/presentation/Http/Actions/Orders/IndexOrdersAction.php +++ b/presentation/Http/Actions/Orders/IndexOrdersAction.php @@ -6,18 +6,38 @@ use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; +use Infrastructure\QueryBus\QueryBusInterface; +use Presentation\Http\Adapters\Orders\IndexOrdersAdapter; +use Presentation\Http\Enums\HttpCodes; +use Presentation\Http\Presenters\Orders\IndexOrdersPresenter; class IndexOrdersAction { + private IndexOrdersAdapter $adapter; + + private QueryBusInterface $queryBus; + + private IndexOrdersPresenter $presenter; + + public function __construct( + IndexOrdersAdapter $adapter, + QueryBusInterface $queryBus, + IndexOrdersPresenter $presenter + ) + { + $this->adapter = $adapter; + $this->queryBus = $queryBus; + $this->presenter = $presenter; + } + public function __invoke(Request $request) { + $query = $this->adapter->from($request); + + $result = $this->queryBus->handle($query); + return new JsonResponse([ - 'data' => [ - [ - 'name' => 'azucar', - 'price' => '20' - ] - ] - ]); + 'data' => $this->presenter->fromResult($result)->getData(), + ], HttpCodes::OK); } } diff --git a/presentation/Http/Adapters/Orders/IndexOrdersAdapter.php b/presentation/Http/Adapters/Orders/IndexOrdersAdapter.php new file mode 100644 index 0000000..a1655a3 --- /dev/null +++ b/presentation/Http/Adapters/Orders/IndexOrdersAdapter.php @@ -0,0 +1,36 @@ +validatorService = $validatorService; + } + + public function from(Request $request) { + $this->validatorService->make($request->all(), []); + + if (!$this->validatorService->isValid()) { + throw new InvalidBodyException($this->validatorService->getErrors()); + } + + return new IndexOrdersQuery( + $request->query('page'), + $request->query('size'), + $request->query('userId'), + ); + } +} diff --git a/presentation/Http/Presenters/Auth/LoginPresenter.php b/presentation/Http/Presenters/Auth/LoginPresenter.php index a183340..aee636f 100644 --- a/presentation/Http/Presenters/Auth/LoginPresenter.php +++ b/presentation/Http/Presenters/Auth/LoginPresenter.php @@ -54,10 +54,4 @@ public function getData(): array { 'token' => $this->tokenLoginService->createTokenJWT($userArray) ]; } - - public function toJWT($payload) - { - $key = "key";//todo: definir key - - } } diff --git a/presentation/Http/Presenters/Employee/FindEmployeePresenter.php b/presentation/Http/Presenters/Employees/FindEmployeePresenter.php similarity index 94% rename from presentation/Http/Presenters/Employee/FindEmployeePresenter.php rename to presentation/Http/Presenters/Employees/FindEmployeePresenter.php index 11c01b1..bdf8e32 100644 --- a/presentation/Http/Presenters/Employee/FindEmployeePresenter.php +++ b/presentation/Http/Presenters/Employees/FindEmployeePresenter.php @@ -1,7 +1,7 @@ result = $result; + return $this; + } + + public function getData(): array { + $ordersList = []; + $orders = $this->result->getOrders(); + + foreach ($orders as $order) { + array_push($ordersList, [ + 'id' => $order->getId(), + 'products' => $this->getProducts($order->getProducts()), + 'amount' => $order->getAmount(), + 'numberSell' => $order->getNumberSell(), + ]); + } + + return $ordersList; + } + + private function getProducts($products) { + $productsList = []; + + foreach ($products as $product) { + array_push($productsList, [ + 'id' => $product->getId(), + 'title' => $product->getTitle(), + 'price' => $product->getPrice(), + ]); + } + + return $productsList; + } +} From 8ff8f98d4500e2e898f70b19558e5f089b453a3e Mon Sep 17 00:00:00 2001 From: cristianvena18 Date: Tue, 7 Jul 2020 18:56:43 -0300 Subject: [PATCH 17/38] added index all orders by dashboard endpoint and init with get detail order endpoint --- .../Handler/Orders/IndexAllOrdersHandler.php | 40 +++++++++++++++++ .../Query/Orders/IndexAllOrdersQuery.php | 35 +++++++++++++++ application/Services/Orders/OrderService.php | 8 ++++ bootstrap/cache/routes.php | 16 +++++++ .../Repositories/OrderRepositoryInterface.php | 2 + .../Services/Orders/OrderServiceInterface.php | 2 + .../Repositories/OrderRepository.php | 32 ++++++++++++++ .../Actions/Orders/IndexAllOrdersAction.php | 43 +++++++++++++++++++ .../Adapters/Orders/IndexAllOrdersAdapter.php | 33 ++++++++++++++ presentation/Http/routes/api.php | 1 + 10 files changed, 212 insertions(+) create mode 100644 application/Queries/Handler/Orders/IndexAllOrdersHandler.php create mode 100644 application/Queries/Query/Orders/IndexAllOrdersQuery.php create mode 100644 bootstrap/cache/routes.php create mode 100644 presentation/Http/Actions/Orders/IndexAllOrdersAction.php create mode 100644 presentation/Http/Adapters/Orders/IndexAllOrdersAdapter.php diff --git a/application/Queries/Handler/Orders/IndexAllOrdersHandler.php b/application/Queries/Handler/Orders/IndexAllOrdersHandler.php new file mode 100644 index 0000000..ea46554 --- /dev/null +++ b/application/Queries/Handler/Orders/IndexAllOrdersHandler.php @@ -0,0 +1,40 @@ +orderService = $orderService; + } + + /** + * @param IndexAllOrdersQuery $query + * @return ResultInterface + */ + public function handle($query): ResultInterface + { + $orders = $this->orderService->indexAll($query->getPage(), $query->getSize()); + + $result = new IndexOrdersResult(); + $result->setOrders($orders); + return $result; + } +} diff --git a/application/Queries/Query/Orders/IndexAllOrdersQuery.php b/application/Queries/Query/Orders/IndexAllOrdersQuery.php new file mode 100644 index 0000000..066bbf4 --- /dev/null +++ b/application/Queries/Query/Orders/IndexAllOrdersQuery.php @@ -0,0 +1,35 @@ +page = $page; + $this->size = $size; + } + + /** + * @return mixed + */ + public function getPage() + { + return $this->page; + } + + /** + * @return mixed + */ + public function getSize() + { + return $this->size; + } +} diff --git a/application/Services/Orders/OrderService.php b/application/Services/Orders/OrderService.php index fea9863..0b3f5ce 100644 --- a/application/Services/Orders/OrderService.php +++ b/application/Services/Orders/OrderService.php @@ -24,4 +24,12 @@ public function indexAndFiltered($page, $size, $userId): array return $this->repository->indexAndFiltered($page, $size, $userId); } + + public function indexAll($page, $size): array + { + $page = $page ? $page : 1; + $size = $size ? $size : 10; + + return $this->repository->indexAll($page, $size); + } } diff --git a/bootstrap/cache/routes.php b/bootstrap/cache/routes.php new file mode 100644 index 0000000..0b5b879 --- /dev/null +++ b/bootstrap/cache/routes.php @@ -0,0 +1,16 @@ +setRoutes( + unserialize(base64_decode('TzozNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlQ29sbGVjdGlvbiI6NDp7czo5OiIAKgByb3V0ZXMiO2E6Nzp7czozOiJHRVQiO2E6MjA6e3M6MTc6ImFwaS9kb2N1bWVudGF0aW9uIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNzoiYXBpL2RvY3VtZW50YXRpb24iO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjI6ImFzIjtzOjE0OiJsNS1zd2FnZ2VyLmFwaSI7czoxMDoibWlkZGxld2FyZSI7YTowOnt9czo0OiJ1c2VzIjtzOjQ5OiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAYXBpIjtzOjEwOiJjb250cm9sbGVyIjtzOjQ5OiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAYXBpIjtzOjk6Im5hbWVzcGFjZSI7czo5OiJMNVN3YWdnZXIiO3M6NjoicHJlZml4IjtOO3M6NToid2hlcmUiO2E6MDp7fX1zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxODoiL2FwaS9kb2N1bWVudGF0aW9uIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjI1OiIjXi9hcGkvZG9jdW1lbnRhdGlvbiQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxODoiL2FwaS9kb2N1bWVudGF0aW9uIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE2OiJkb2NzL3tqc29uRmlsZT99IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNjoiZG9jcy97anNvbkZpbGU/fSI7czo3OiJtZXRob2RzIjthOjc6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7aToyO3M6NDoiUE9TVCI7aTozO3M6MzoiUFVUIjtpOjQ7czo1OiJQQVRDSCI7aTo1O3M6NjoiREVMRVRFIjtpOjY7czo3OiJPUFRJT05TIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoyOiJhcyI7czoxNToibDUtc3dhZ2dlci5kb2NzIjtzOjEwOiJtaWRkbGV3YXJlIjthOjA6e31zOjQ6InVzZXMiO3M6NTA6IlxMNVN3YWdnZXJcSHR0cFxDb250cm9sbGVyc1xTd2FnZ2VyQ29udHJvbGxlckBkb2NzIjtzOjEwOiJjb250cm9sbGVyIjtzOjUwOiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAZG9jcyI7czo5OiJuYW1lc3BhY2UiO3M6OToiTDVTd2FnZ2VyIjtzOjY6InByZWZpeCI7TjtzOjU6IndoZXJlIjthOjA6e319czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czo4OiJqc29uRmlsZSI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjU6Ii9kb2NzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM4OiIjXi9kb2NzKD86Lyg/UDxqc29uRmlsZT5bXi9dKyspKT8kI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6ODoianNvbkZpbGUiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjU6Ii9kb2NzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjg6Impzb25GaWxlIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxODoiZG9jcy9hc3NldC97YXNzZXR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxODoiZG9jcy9hc3NldC97YXNzZXR9IjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoyOiJhcyI7czoxNjoibDUtc3dhZ2dlci5hc3NldCI7czoxMDoibWlkZGxld2FyZSI7YTowOnt9czo0OiJ1c2VzIjtzOjU2OiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckFzc2V0Q29udHJvbGxlckBpbmRleCI7czoxMDoiY29udHJvbGxlciI7czo1NjoiXEw1U3dhZ2dlclxIdHRwXENvbnRyb2xsZXJzXFN3YWdnZXJBc3NldENvbnRyb2xsZXJAaW5kZXgiO3M6OToibmFtZXNwYWNlIjtzOjk6Ikw1U3dhZ2dlciI7czo2OiJwcmVmaXgiO047czo1OiJ3aGVyZSI7YTowOnt9fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6NToiYXNzZXQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMToiL2RvY3MvYXNzZXQiO3M6MTA6InBhdGhfcmVnZXgiO3M6MzY6IiNeL2RvY3MvYXNzZXQvKD9QPGFzc2V0PlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6NToiYXNzZXQiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjExOiIvZG9jcy9hc3NldCI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czo1OiJhc3NldCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTk6ImFwaS9vYXV0aDItY2FsbGJhY2siO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE5OiJhcGkvb2F1dGgyLWNhbGxiYWNrIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoyOiJhcyI7czoyNjoibDUtc3dhZ2dlci5vYXV0aDJfY2FsbGJhY2siO3M6MTA6Im1pZGRsZXdhcmUiO2E6MDp7fXM6NDoidXNlcyI7czo2MDoiXEw1U3dhZ2dlclxIdHRwXENvbnRyb2xsZXJzXFN3YWdnZXJDb250cm9sbGVyQG9hdXRoMkNhbGxiYWNrIjtzOjEwOiJjb250cm9sbGVyIjtzOjYwOiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAb2F1dGgyQ2FsbGJhY2siO3M6OToibmFtZXNwYWNlIjtzOjk6Ikw1U3dhZ2dlciI7czo2OiJwcmVmaXgiO047czo1OiJ3aGVyZSI7YTowOnt9fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjIwOiIvYXBpL29hdXRoMi1jYWxsYmFjayI7czoxMDoicGF0aF9yZWdleCI7czoyODoiI14vYXBpL29hdXRoMlwtY2FsbGJhY2skI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MjA6Ii9hcGkvb2F1dGgyLWNhbGxiYWNrIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE0OiJhcGkvc2VuZF9lbWFpbCI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTQ6ImFwaS9zZW5kX2VtYWlsIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Njp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NDU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFNlbmRFbWFpbEBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czozNjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU2VuZEVtYWlsIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjM6ImFwaSI7czo1OiJ3aGVyZSI7YTowOnt9fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE1OiIvYXBpL3NlbmRfZW1haWwiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjI6IiNeL2FwaS9zZW5kX2VtYWlsJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE1OiIvYXBpL3NlbmRfZW1haWwiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MjE6ImFwaS91c2Vycy97aWR9L2VuYWJsZSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MjE6ImFwaS91c2Vycy97aWR9L2VuYWJsZSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjU4OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xFbmFibGVVc2VyQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjQ5OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xFbmFibGVVc2VyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjk6ImFwaS91c2VycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMDoiZW5hYmxlVXNlciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMDoiL2FwaS91c2VycyI7czoxMDoicGF0aF9yZWdleCI7czozOToiI14vYXBpL3VzZXJzLyg/UDxpZD5bXi9dKyspL2VuYWJsZSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YTozOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czo3OiIvZW5hYmxlIjt9aToxO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MjthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEwOiIvYXBpL3VzZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoyMjoiYXBpL3VzZXJzL3tpZH0vZGlzYWJsZSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MjI6ImFwaS91c2Vycy97aWR9L2Rpc2FibGUiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1OToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcRGlzYWJsZVVzZXJBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTA6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXERpc2FibGVVc2VyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjk6ImFwaS91c2VycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMToiZGlzYWJsZVVzZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTA6Ii9hcGkvdXNlcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6NDA6IiNeL2FwaS91c2Vycy8oP1A8aWQ+W14vXSsrKS9kaXNhYmxlJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjM6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjg6Ii9kaXNhYmxlIjt9aToxO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MjthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEwOiIvYXBpL3VzZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNDoiYXBpL3VzZXJzL3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE0OiJhcGkvdXNlcnMve2lkfSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjU2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xTaG93VXNlckFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo0NzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcU2hvd1VzZXJBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6OToiYXBpL3VzZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjExOiJzaG93T25lVXNlciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMDoiL2FwaS91c2VycyI7czoxMDoicGF0aF9yZWdleCI7czozMjoiI14vYXBpL3VzZXJzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMDoiL2FwaS91c2VycyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTM6ImFwaS9lbXBsb3llZXMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEzOiJhcGkvZW1wbG95ZWVzIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xGaW5kRW1wbG95ZWVBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xGaW5kRW1wbG95ZWVBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTM6ImFwaS9lbXBsb3llZXMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTI6Imxpc3RFbXBsb3llZSI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE0OiIvYXBpL2VtcGxveWVlcyI7czoxMDoicGF0aF9yZWdleCI7czoyMToiI14vYXBpL2VtcGxveWVlcyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9lbXBsb3llZXMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTg6ImFwaS9jdXN0b21lcnMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTg6ImFwaS9jdXN0b21lcnMve2lkfSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY0OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcRmluZEN1c3RvbWVyQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU1OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcRmluZEN1c3RvbWVyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEzOiJhcGkvY3VzdG9tZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjEyOiJmaW5kQ3VzdG9tZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTQ6Ii9hcGkvY3VzdG9tZXJzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM2OiIjXi9hcGkvY3VzdG9tZXJzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9jdXN0b21lcnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjEzOiJhcGkvY3VzdG9tZXJzIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxMzoiYXBpL2N1c3RvbWVycyI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY1OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcSW5kZXhDdXN0b21lckFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ3VzdG9tZXJzXEluZGV4Q3VzdG9tZXJBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTM6ImFwaS9jdXN0b21lcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTM6Imxpc3RDdXN0b21lcnMiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNDoiL2FwaS9jdXN0b21lcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjE6IiNeL2FwaS9jdXN0b21lcnMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTQ6Ii9hcGkvY3VzdG9tZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE5OiJhcGkvcHJvZHVjdHMve3V1aWR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxOToiYXBpL3Byb2R1Y3RzL3t1dWlkfSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjYyOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xGaW5kUHJvZHVjdEFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1MzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcRmluZFByb2R1Y3RBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTI6ImFwaS9wcm9kdWN0cyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMToiZmluZFByb2R1Y3QiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjQ6InV1aWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMzoiL2FwaS9wcm9kdWN0cyI7czoxMDoicGF0aF9yZWdleCI7czozNzoiI14vYXBpL3Byb2R1Y3RzLyg/UDx1dWlkPlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6NDoidXVpZCI7aTo0O2I6MTt9aToxO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTM6Ii9hcGkvcHJvZHVjdHMiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6NDoidXVpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTA6ImFwaS9zZWFyY2giO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEwOiJhcGkvc2VhcmNoIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFNlYXJjaFByb2R1Y3RzQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xTZWFyY2hQcm9kdWN0c0FjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMDoiYXBpL3NlYXJjaCI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNDoic2VhcmNoUHJvZHVjdHMiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxMToiL2FwaS9zZWFyY2giO3M6MTA6InBhdGhfcmVnZXgiO3M6MTg6IiNeL2FwaS9zZWFyY2gkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTE6Ii9hcGkvc2VhcmNoIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE1OiJhcGkvc2VhcmNoL2hvbWUiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE1OiJhcGkvc2VhcmNoL2hvbWUiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo3MjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcU2VhcmNoUHJvZHVjdHNGb3JIb21lQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjYzOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xTZWFyY2hQcm9kdWN0c0ZvckhvbWVBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTA6ImFwaS9zZWFyY2giO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTQ6InNlYXJjaFByb2R1Y3RzIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTY6Ii9hcGkvc2VhcmNoL2hvbWUiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjM6IiNeL2FwaS9zZWFyY2gvaG9tZSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNjoiL2FwaS9zZWFyY2gvaG9tZSI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxMzoiYXBpL2ludmVudG9yeSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTM6ImFwaS9pbnZlbnRvcnkiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1OToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcSW5kZXhQcm9kdWN0U3RvY2tAX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTA6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFN0b2NrXEluZGV4UHJvZHVjdFN0b2NrIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEzOiJhcGkvaW52ZW50b3J5IjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE4OiJpbmRleFByb2R1Y3RzU3RvY2siO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNDoiL2FwaS9pbnZlbnRvcnkiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjE6IiNeL2FwaS9pbnZlbnRvcnkkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTQ6Ii9hcGkvaW52ZW50b3J5Ijt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE4OiJhcGkvaW52ZW50b3J5L3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE4OiJhcGkvaW52ZW50b3J5L3tpZH0iO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1ODoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcRmluZFByb2R1Y3RTdG9ja0BfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo0OToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcRmluZFByb2R1Y3RTdG9jayI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMzoiYXBpL2ludmVudG9yeSI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNzoiZmluZFByb2R1Y3RzU3RvY2siO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTQ6Ii9hcGkvaW52ZW50b3J5IjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM2OiIjXi9hcGkvaW52ZW50b3J5Lyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9pbnZlbnRvcnkiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjExOiJhcGkvZmlsdGVycyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTE6ImFwaS9maWx0ZXJzIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjI6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEZpbHRlcnNcSW5kZXhGaWx0ZXJzQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjUzOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXEluZGV4RmlsdGVyc0FjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMToiYXBpL2ZpbHRlcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTI6ImluZGV4RmlsdGVycyI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjEyOiIvYXBpL2ZpbHRlcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MTk6IiNeL2FwaS9maWx0ZXJzJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEyOiIvYXBpL2ZpbHRlcnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTQ6ImFwaS9jYXRlZ29yaWVzIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNDoiYXBpL2NhdGVnb3JpZXMiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2NjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xJbmRleENhdGVnb3J5QWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU3OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDYXRlZ29yaWVzXEluZGV4Q2F0ZWdvcnlBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTQ6ImFwaS9jYXRlZ29yaWVzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjEzOiJpbmRleENhdGVnb3J5Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTU6Ii9hcGkvY2F0ZWdvcmllcyI7czoxMDoicGF0aF9yZWdleCI7czoyMjoiI14vYXBpL2NhdGVnb3JpZXMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTU6Ii9hcGkvY2F0ZWdvcmllcyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxMDoiYXBpL29yZGVycyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTA6ImFwaS9vcmRlcnMiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2MDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcT3JkZXJzXEluZGV4T3JkZXJzQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjUxOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xPcmRlcnNcSW5kZXhPcmRlcnNBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTA6ImFwaS9vcmRlcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6OToiZ2V0T3JkZXJzIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTE6Ii9hcGkvb3JkZXJzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjE4OiIjXi9hcGkvb3JkZXJzJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjExOiIvYXBpL29yZGVycyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNDoiYXBpL29yZGVycy9hbGwiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE0OiJhcGkvb3JkZXJzL2FsbCI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjYzOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xPcmRlcnNcSW5kZXhBbGxPcmRlcnNBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXE9yZGVyc1xJbmRleEFsbE9yZGVyc0FjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMDoiYXBpL29yZGVycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMjoiZ2V0QWxsT3JkZXJzIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTU6Ii9hcGkvb3JkZXJzL2FsbCI7czoxMDoicGF0aF9yZWdleCI7czoyMjoiI14vYXBpL29yZGVycy9hbGwkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTU6Ii9hcGkvb3JkZXJzL2FsbCI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19fXM6NDoiSEVBRCI7YToyMDp7czoxNzoiYXBpL2RvY3VtZW50YXRpb24iO3I6NDtzOjE2OiJkb2NzL3tqc29uRmlsZT99IjtyOjM3O3M6MTg6ImRvY3MvYXNzZXQve2Fzc2V0fSI7cjo4MztzOjE5OiJhcGkvb2F1dGgyLWNhbGxiYWNrIjtyOjEyNDtzOjE0OiJhcGkvc2VuZF9lbWFpbCI7cjoxNTc7czoyMToiYXBpL3VzZXJzL3tpZH0vZW5hYmxlIjtyOjE5MDtzOjIyOiJhcGkvdXNlcnMve2lkfS9kaXNhYmxlIjtyOjIzNTtzOjE0OiJhcGkvdXNlcnMve2lkfSI7cjoyODA7czoxMzoiYXBpL2VtcGxveWVlcyI7cjozMjI7czoxODoiYXBpL2N1c3RvbWVycy97aWR9IjtyOjM1NjtzOjEzOiJhcGkvY3VzdG9tZXJzIjtyOjM5ODtzOjE5OiJhcGkvcHJvZHVjdHMve3V1aWR9IjtyOjQzMjtzOjEwOiJhcGkvc2VhcmNoIjtyOjQ3NDtzOjE1OiJhcGkvc2VhcmNoL2hvbWUiO3I6NTA4O3M6MTM6ImFwaS9pbnZlbnRvcnkiO3I6NTQyO3M6MTg6ImFwaS9pbnZlbnRvcnkve2lkfSI7cjo1NzY7czoxMToiYXBpL2ZpbHRlcnMiO3I6NjE4O3M6MTQ6ImFwaS9jYXRlZ29yaWVzIjtyOjY1MjtzOjEwOiJhcGkvb3JkZXJzIjtyOjY4NjtzOjE0OiJhcGkvb3JkZXJzL2FsbCI7cjo3MjA7fXM6NDoiUE9TVCI7YToxNjp7czoxNjoiZG9jcy97anNvbkZpbGU/fSI7cjozNztzOjE4OiJhcGkvdXNlcnMvcmVjb3ZlcnkiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE4OiJhcGkvdXNlcnMvcmVjb3ZlcnkiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXFJlY292ZXJ5UGFzc3dvcmRBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXFJlY292ZXJ5UGFzc3dvcmRBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6OToiYXBpL3VzZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE2OiJyZWNvdmVyeVBhc3N3b3JkIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTk6Ii9hcGkvdXNlcnMvcmVjb3ZlcnkiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjY6IiNeL2FwaS91c2Vycy9yZWNvdmVyeSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxOToiL2FwaS91c2Vycy9yZWNvdmVyeSI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNjoiYXBpL3VzZXJzL2ZvcmdvdCI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTY6ImFwaS91c2Vycy9mb3Jnb3QiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NzQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXENoYW5nZVBhc3N3b3JkRnJvbVJlY292ZXJ5QWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjY1OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xDaGFuZ2VQYXNzd29yZEZyb21SZWNvdmVyeUFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czo5OiJhcGkvdXNlcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MjY6ImNoYW5nZVBhc3N3b3JkRnJvbVJlY292ZXJ5Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTc6Ii9hcGkvdXNlcnMvZm9yZ290IjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjI0OiIjXi9hcGkvdXNlcnMvZm9yZ290JCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE3OiIvYXBpL3VzZXJzL2ZvcmdvdCI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNDoiYXBpL2F1dGgvbG9naW4iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE0OiJhcGkvYXV0aC9sb2dpbiI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1MjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQXV0aFxMb2dpbkFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo0MzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQXV0aFxMb2dpbkFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czo4OiJhcGkvYXV0aCI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czo1OiJsb2dpbiI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE1OiIvYXBpL2F1dGgvbG9naW4iO3M6MTA6InBhdGhfcmVnZXgiO3M6MjI6IiNeL2FwaS9hdXRoL2xvZ2luJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE1OiIvYXBpL2F1dGgvbG9naW4iO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MjA6ImFwaS9hdXRoL3JlbmV3LXRva2VuIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoyMDoiYXBpL2F1dGgvcmVuZXctdG9rZW4iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NTc6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEF1dGhcUmVuZXdUb2tlbkFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo0ODoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQXV0aFxSZW5ld1Rva2VuQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjg6ImFwaS9hdXRoIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjExOiJyZW5ldy10b2tlbiI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjIxOiIvYXBpL2F1dGgvcmVuZXctdG9rZW4iO3M6MTA6InBhdGhfcmVnZXgiO3M6Mjk6IiNeL2FwaS9hdXRoL3JlbmV3XC10b2tlbiQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoyMToiL2FwaS9hdXRoL3JlbmV3LXRva2VuIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE1OiJhcGkvYXV0aC9zaWdudXAiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE1OiJhcGkvYXV0aC9zaWdudXAiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6Njg6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xTdG9yZVdlYkN1c3RvbWVyQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU5OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcU3RvcmVXZWJDdXN0b21lckFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czo4OiJhcGkvYXV0aCI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNzoiY3JlYXRlV2ViQ3VzdG9tZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNjoiL2FwaS9hdXRoL3NpZ251cCI7czoxMDoicGF0aF9yZWdleCI7czoyMzoiI14vYXBpL2F1dGgvc2lnbnVwJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE2OiIvYXBpL2F1dGgvc2lnbnVwIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjI0OiJhcGkvYXV0aC9jaGFuZ2UtcGFzc3dvcmQiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjI0OiJhcGkvYXV0aC9jaGFuZ2UtcGFzc3dvcmQiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjE6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEF1dGhcQ2hhbmdlUGFzc3dvcmRBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTI6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEF1dGhcQ2hhbmdlUGFzc3dvcmRBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6ODoiYXBpL2F1dGgiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTU6ImNoYW5nZS1wYXNzd29yZCI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjI1OiIvYXBpL2F1dGgvY2hhbmdlLXBhc3N3b3JkIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjMzOiIjXi9hcGkvYXV0aC9jaGFuZ2VcLXBhc3N3b3JkJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjI1OiIvYXBpL2F1dGgvY2hhbmdlLXBhc3N3b3JkIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjEzOiJhcGkvZW1wbG95ZWVzIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxMzoiYXBpL2VtcGxveWVlcyI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2NToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRW1wbG95ZWVzXFN0b3JlRW1wbG95ZWVBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTY6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xTdG9yZUVtcGxveWVlQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEzOiJhcGkvZW1wbG95ZWVzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE0OiJjcmVhdGVFbXBsb3llZSI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE0OiIvYXBpL2VtcGxveWVlcyI7czoxMDoicGF0aF9yZWdleCI7czoyMToiI14vYXBpL2VtcGxveWVlcyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9lbXBsb3llZXMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTM6ImFwaS9jdXN0b21lcnMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEzOiJhcGkvY3VzdG9tZXJzIjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY1OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcU3RvcmVDdXN0b21lckFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ3VzdG9tZXJzXFN0b3JlQ3VzdG9tZXJBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTM6ImFwaS9jdXN0b21lcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTQ6ImNyZWF0ZUN1c3RvbWVyIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTQ6Ii9hcGkvY3VzdG9tZXJzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjIxOiIjXi9hcGkvY3VzdG9tZXJzJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE0OiIvYXBpL2N1c3RvbWVycyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxMDoiYXBpL2FkbWlucyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTA6ImFwaS9hZG1pbnMiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NTk6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEFkbWluc1xTdG9yZUFkbWluQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjUwOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xBZG1pbnNcU3RvcmVBZG1pbkFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMDoiYXBpL2FkbWlucyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMToiY3JlYXRlQWRtaW4iO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxMToiL2FwaS9hZG1pbnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MTg6IiNeL2FwaS9hZG1pbnMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTE6Ii9hcGkvYWRtaW5zIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjEyOiJhcGkvcHJvZHVjdHMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEyOiJhcGkvcHJvZHVjdHMiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjM6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFN0b3JlUHJvZHVjdEFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcU3RvcmVQcm9kdWN0QWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEyOiJhcGkvcHJvZHVjdHMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTM6ImNyZWF0ZVByb2R1Y3QiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxMzoiL2FwaS9wcm9kdWN0cyI7czoxMDoicGF0aF9yZWdleCI7czoyMDoiI14vYXBpL3Byb2R1Y3RzJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEzOiIvYXBpL3Byb2R1Y3RzIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE4OiJhcGkvaW52ZW50b3J5L3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE4OiJhcGkvaW52ZW50b3J5L3tpZH0iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjA6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFVwZGF0ZUludmVudG9yeUBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1MToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcVXBkYXRlSW52ZW50b3J5IjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEzOiJhcGkvaW52ZW50b3J5IjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjIyOiJ1cGRhdGVJbnZlbnRvcnlQcm9kdWN0Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE0OiIvYXBpL2ludmVudG9yeSI7czoxMDoicGF0aF9yZWdleCI7czozNjoiI14vYXBpL2ludmVudG9yeS8oP1A8aWQ+W14vXSsrKSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToyOntpOjA7YTo1OntpOjA7czo4OiJ2YXJpYWJsZSI7aToxO3M6MToiLyI7aToyO3M6NjoiW14vXSsrIjtpOjM7czoyOiJpZCI7aTo0O2I6MTt9aToxO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTQ6Ii9hcGkvaW52ZW50b3J5Ijt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxMToiYXBpL2ZpbHRlcnMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjExOiJhcGkvZmlsdGVycyI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2MjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xTdG9yZUZpbHRlcnNBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTM6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEZpbHRlcnNcU3RvcmVGaWx0ZXJzQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjExOiJhcGkvZmlsdGVycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czo5OiJhZGRGaWx0ZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxMjoiL2FwaS9maWx0ZXJzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjE5OiIjXi9hcGkvZmlsdGVycyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMjoiL2FwaS9maWx0ZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE0OiJhcGkvY2F0ZWdvcmllcyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTQ6ImFwaS9jYXRlZ29yaWVzIjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDYXRlZ29yaWVzXFN0b3JlQ2F0ZWdvcnlBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTc6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcU3RvcmVDYXRlZ29yeUFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxNDoiYXBpL2NhdGVnb3JpZXMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTM6InN0b3JlQ2F0ZWdvcnkiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNToiL2FwaS9jYXRlZ29yaWVzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjIyOiIjXi9hcGkvY2F0ZWdvcmllcyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNToiL2FwaS9jYXRlZ29yaWVzIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjI0OiJhcGkvcGF5bWVudHMvbWVyY2Fkb3BhZ28iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjI0OiJhcGkvcGF5bWVudHMvbWVyY2Fkb3BhZ28iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjM6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFBheW1lbnRzXE1lcmNhZG9QYWdvRXhlY3V0ZUBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUGF5bWVudHNcTWVyY2Fkb1BhZ29FeGVjdXRlIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEyOiJhcGkvcGF5bWVudHMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTg6InBheW1lbnRNZXJjYWRvUGFnbyI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjI1OiIvYXBpL3BheW1lbnRzL21lcmNhZG9wYWdvIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjMyOiIjXi9hcGkvcGF5bWVudHMvbWVyY2Fkb3BhZ28kI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MjU6Ii9hcGkvcGF5bWVudHMvbWVyY2Fkb3BhZ28iO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTc6ImFwaS9ub3RpZmljYXRpb25zIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNzoiYXBpL25vdGlmaWNhdGlvbnMiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NzE6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXE5vdGlmaWNhdGlvbnNcQ2hlY2tOb3RpZmljYXRpb25Vc2VyQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjYyOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xOb3RpZmljYXRpb25zXENoZWNrTm90aWZpY2F0aW9uVXNlciI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxNzoiYXBpL25vdGlmaWNhdGlvbnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MjE6ImNoZWNrTm90aWZpY2F0aW9uVXNlciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE4OiIvYXBpL25vdGlmaWNhdGlvbnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjU6IiNeL2FwaS9ub3RpZmljYXRpb25zJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE4OiIvYXBpL25vdGlmaWNhdGlvbnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fX1zOjM6IlBVVCI7YTo1OntzOjE2OiJkb2NzL3tqc29uRmlsZT99IjtyOjM3O3M6MTg6ImFwaS9jdXN0b21lcnMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTg6ImFwaS9jdXN0b21lcnMve2lkfSI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjM6IlBVVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcVXBkYXRlQ3VzdG9tZXJBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTc6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xVcGRhdGVDdXN0b21lckFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMzoiYXBpL2N1c3RvbWVycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNDoidXBkYXRlQ3VzdG9tZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTQ6Ii9hcGkvY3VzdG9tZXJzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM2OiIjXi9hcGkvY3VzdG9tZXJzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9jdXN0b21lcnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE3OiJhcGkvcHJvZHVjdHMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTc6ImFwaS9wcm9kdWN0cy97aWR9IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6MzoiUFVUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFVwZGF0ZVByb2R1Y3RBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFVwZGF0ZVByb2R1Y3RBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTI6ImFwaS9wcm9kdWN0cyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMzoidXBkYXRlUHJvZHVjdCI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMzoiL2FwaS9wcm9kdWN0cyI7czoxMDoicGF0aF9yZWdleCI7czozNToiI14vYXBpL3Byb2R1Y3RzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMzoiL2FwaS9wcm9kdWN0cyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTY6ImFwaS9maWx0ZXJzL3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE2OiJhcGkvZmlsdGVycy97aWR9IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6MzoiUFVUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjM6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEZpbHRlcnNcVXBkYXRlRmlsdGVyc0FjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xVcGRhdGVGaWx0ZXJzQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjExOiJhcGkvZmlsdGVycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMjoidXBkYXRlRmlsdGVyIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjEyOiIvYXBpL2ZpbHRlcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MzQ6IiNeL2FwaS9maWx0ZXJzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMjoiL2FwaS9maWx0ZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxOToiYXBpL2NhdGVnb3JpZXMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTk6ImFwaS9jYXRlZ29yaWVzL3tpZH0iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czozOiJQVVQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2NzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xVcGRhdGVDYXRlZ29yeUFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1ODoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xVcGRhdGVDYXRlZ29yeUFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxNDoiYXBpL2NhdGVnb3JpZXMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTQ6InVwZGF0ZUNhdGVnb3J5Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE1OiIvYXBpL2NhdGVnb3JpZXMiO3M6MTA6InBhdGhfcmVnZXgiO3M6Mzc6IiNeL2FwaS9jYXRlZ29yaWVzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNToiL2FwaS9jYXRlZ29yaWVzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19fXM6NToiUEFUQ0giO2E6MTp7czoxNjoiZG9jcy97anNvbkZpbGU/fSI7cjozNzt9czo2OiJERUxFVEUiO2E6NDp7czoxNjoiZG9jcy97anNvbkZpbGU/fSI7cjozNztzOjE3OiJhcGkvcHJvZHVjdHMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTc6ImFwaS9wcm9kdWN0cy97aWR9IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NjoiREVMRVRFIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXERlc3Ryb3lQcm9kdWN0QWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xEZXN0cm95UHJvZHVjdEFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMjoiYXBpL3Byb2R1Y3RzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE0OiJkZXN0cm95UHJvZHVjdCI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMzoiL2FwaS9wcm9kdWN0cyI7czoxMDoicGF0aF9yZWdleCI7czozNToiI14vYXBpL3Byb2R1Y3RzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMzoiL2FwaS9wcm9kdWN0cyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTY6ImFwaS9maWx0ZXJzL3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE2OiJhcGkvZmlsdGVycy97aWR9IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NjoiREVMRVRFIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjM6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEZpbHRlcnNcRGVzdHJveUZpbHRlckFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xEZXN0cm95RmlsdGVyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjExOiJhcGkvZmlsdGVycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMzoiZGVzdHJveUZpbHRlciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMjoiL2FwaS9maWx0ZXJzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM0OiIjXi9hcGkvZmlsdGVycy8oP1A8aWQ+W14vXSsrKSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToyOntpOjA7YTo1OntpOjA7czo4OiJ2YXJpYWJsZSI7aToxO3M6MToiLyI7aToyO3M6NjoiW14vXSsrIjtpOjM7czoyOiJpZCI7aTo0O2I6MTt9aToxO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTI6Ii9hcGkvZmlsdGVycyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTk6ImFwaS9jYXRlZ29yaWVzL3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE5OiJhcGkvY2F0ZWdvcmllcy97aWR9IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NjoiREVMRVRFIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6Njg6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcRGVzdHJveUNhdGVnb3J5QWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU5OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDYXRlZ29yaWVzXERlc3Ryb3lDYXRlZ29yeUFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxNDoiYXBpL2NhdGVnb3JpZXMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTU6ImRlc3Ryb3lDYXRlZ29yeSI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxNToiL2FwaS9jYXRlZ29yaWVzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM3OiIjXi9hcGkvY2F0ZWdvcmllcy8oP1A8aWQ+W14vXSsrKSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToyOntpOjA7YTo1OntpOjA7czo4OiJ2YXJpYWJsZSI7aToxO3M6MToiLyI7aToyO3M6NjoiW14vXSsrIjtpOjM7czoyOiJpZCI7aTo0O2I6MTt9aToxO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTU6Ii9hcGkvY2F0ZWdvcmllcyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fX1zOjc6Ik9QVElPTlMiO2E6MTp7czoxNjoiZG9jcy97anNvbkZpbGU/fSI7cjozNzt9fXM6MTI6IgAqAGFsbFJvdXRlcyI7YTo0Mjp7czoyMToiSEVBRGFwaS9kb2N1bWVudGF0aW9uIjtyOjQ7czoyMzoiT1BUSU9OU2RvY3Mve2pzb25GaWxlP30iO3I6Mzc7czoyMjoiSEVBRGRvY3MvYXNzZXQve2Fzc2V0fSI7cjo4MztzOjIzOiJIRUFEYXBpL29hdXRoMi1jYWxsYmFjayI7cjoxMjQ7czoxODoiSEVBRGFwaS9zZW5kX2VtYWlsIjtyOjE1NztzOjIyOiJQT1NUYXBpL3VzZXJzL3JlY292ZXJ5IjtyOjc3NztzOjIwOiJQT1NUYXBpL3VzZXJzL2ZvcmdvdCI7cjo4MTA7czoyNToiSEVBRGFwaS91c2Vycy97aWR9L2VuYWJsZSI7cjoxOTA7czoyNjoiSEVBRGFwaS91c2Vycy97aWR9L2Rpc2FibGUiO3I6MjM1O3M6MTg6IkhFQURhcGkvdXNlcnMve2lkfSI7cjoyODA7czoxODoiUE9TVGFwaS9hdXRoL2xvZ2luIjtyOjg0MztzOjI0OiJQT1NUYXBpL2F1dGgvcmVuZXctdG9rZW4iO3I6ODc2O3M6MTk6IlBPU1RhcGkvYXV0aC9zaWdudXAiO3I6OTA5O3M6Mjg6IlBPU1RhcGkvYXV0aC9jaGFuZ2UtcGFzc3dvcmQiO3I6OTQyO3M6MTc6IlBPU1RhcGkvZW1wbG95ZWVzIjtyOjk3NTtzOjE3OiJIRUFEYXBpL2VtcGxveWVlcyI7cjozMjI7czoxNzoiUE9TVGFwaS9jdXN0b21lcnMiO3I6MTAwODtzOjIyOiJIRUFEYXBpL2N1c3RvbWVycy97aWR9IjtyOjM1NjtzOjIxOiJQVVRhcGkvY3VzdG9tZXJzL3tpZH0iO3I6MTI4MjtzOjE3OiJIRUFEYXBpL2N1c3RvbWVycyI7cjozOTg7czoxNDoiUE9TVGFwaS9hZG1pbnMiO3I6MTA0MTtzOjIwOiJQVVRhcGkvcHJvZHVjdHMve2lkfSI7cjoxMzIzO3M6MjM6IkhFQURhcGkvcHJvZHVjdHMve3V1aWR9IjtyOjQzMjtzOjIzOiJERUxFVEVhcGkvcHJvZHVjdHMve2lkfSI7cjoxNDUwO3M6MTY6IlBPU1RhcGkvcHJvZHVjdHMiO3I6MTA3NDtzOjE0OiJIRUFEYXBpL3NlYXJjaCI7cjo0NzQ7czoxOToiSEVBRGFwaS9zZWFyY2gvaG9tZSI7cjo1MDg7czoyMjoiUE9TVGFwaS9pbnZlbnRvcnkve2lkfSI7cjoxMTA3O3M6MTc6IkhFQURhcGkvaW52ZW50b3J5IjtyOjU0MjtzOjIyOiJIRUFEYXBpL2ludmVudG9yeS97aWR9IjtyOjU3NjtzOjE1OiJIRUFEYXBpL2ZpbHRlcnMiO3I6NjE4O3M6MTU6IlBPU1RhcGkvZmlsdGVycyI7cjoxMTQ4O3M6MTk6IlBVVGFwaS9maWx0ZXJzL3tpZH0iO3I6MTM2NDtzOjIyOiJERUxFVEVhcGkvZmlsdGVycy97aWR9IjtyOjE0OTE7czoxODoiUE9TVGFwaS9jYXRlZ29yaWVzIjtyOjExODE7czoyMjoiUFVUYXBpL2NhdGVnb3JpZXMve2lkfSI7cjoxNDA1O3M6MTg6IkhFQURhcGkvY2F0ZWdvcmllcyI7cjo2NTI7czoyNToiREVMRVRFYXBpL2NhdGVnb3JpZXMve2lkfSI7cjoxNTMyO3M6Mjg6IlBPU1RhcGkvcGF5bWVudHMvbWVyY2Fkb3BhZ28iO3I6MTIxNDtzOjIxOiJQT1NUYXBpL25vdGlmaWNhdGlvbnMiO3I6MTI0NztzOjE0OiJIRUFEYXBpL29yZGVycyI7cjo2ODY7czoxODoiSEVBRGFwaS9vcmRlcnMvYWxsIjtyOjcyMDt9czoxMToiACoAbmFtZUxpc3QiO2E6NDA6e3M6MTQ6Imw1LXN3YWdnZXIuYXBpIjtyOjQ7czoxNToibDUtc3dhZ2dlci5kb2NzIjtyOjM3O3M6MTY6Imw1LXN3YWdnZXIuYXNzZXQiO3I6ODM7czoyNjoibDUtc3dhZ2dlci5vYXV0aDJfY2FsbGJhY2siO3I6MTI0O3M6MTY6InJlY292ZXJ5UGFzc3dvcmQiO3I6Nzc3O3M6MjY6ImNoYW5nZVBhc3N3b3JkRnJvbVJlY292ZXJ5IjtyOjgxMDtzOjEwOiJlbmFibGVVc2VyIjtyOjE5MDtzOjExOiJkaXNhYmxlVXNlciI7cjoyMzU7czoxMToic2hvd09uZVVzZXIiO3I6MjgwO3M6NToibG9naW4iO3I6ODQzO3M6MTE6InJlbmV3LXRva2VuIjtyOjg3NjtzOjE3OiJjcmVhdGVXZWJDdXN0b21lciI7cjo5MDk7czoxNToiY2hhbmdlLXBhc3N3b3JkIjtyOjk0MjtzOjE0OiJjcmVhdGVFbXBsb3llZSI7cjo5NzU7czoxMjoibGlzdEVtcGxveWVlIjtyOjMyMjtzOjE0OiJjcmVhdGVDdXN0b21lciI7cjoxMDA4O3M6MTI6ImZpbmRDdXN0b21lciI7cjozNTY7czoxNDoidXBkYXRlQ3VzdG9tZXIiO3I6MTI4MjtzOjEzOiJsaXN0Q3VzdG9tZXJzIjtyOjM5ODtzOjExOiJjcmVhdGVBZG1pbiI7cjoxMDQxO3M6MTM6InVwZGF0ZVByb2R1Y3QiO3I6MTMyMztzOjExOiJmaW5kUHJvZHVjdCI7cjo0MzI7czoxNDoiZGVzdHJveVByb2R1Y3QiO3I6MTQ1MDtzOjEzOiJjcmVhdGVQcm9kdWN0IjtyOjEwNzQ7czoxNDoic2VhcmNoUHJvZHVjdHMiO3I6NTA4O3M6MjI6InVwZGF0ZUludmVudG9yeVByb2R1Y3QiO3I6MTEwNztzOjE4OiJpbmRleFByb2R1Y3RzU3RvY2siO3I6NTQyO3M6MTc6ImZpbmRQcm9kdWN0c1N0b2NrIjtyOjU3NjtzOjEyOiJpbmRleEZpbHRlcnMiO3I6NjE4O3M6OToiYWRkRmlsdGVyIjtyOjExNDg7czoxMjoidXBkYXRlRmlsdGVyIjtyOjEzNjQ7czoxMzoiZGVzdHJveUZpbHRlciI7cjoxNDkxO3M6MTM6InN0b3JlQ2F0ZWdvcnkiO3I6MTE4MTtzOjE0OiJ1cGRhdGVDYXRlZ29yeSI7cjoxNDA1O3M6MTM6ImluZGV4Q2F0ZWdvcnkiO3I6NjUyO3M6MTU6ImRlc3Ryb3lDYXRlZ29yeSI7cjoxNTMyO3M6MTg6InBheW1lbnRNZXJjYWRvUGFnbyI7cjoxMjE0O3M6MjE6ImNoZWNrTm90aWZpY2F0aW9uVXNlciI7cjoxMjQ3O3M6OToiZ2V0T3JkZXJzIjtyOjY4NjtzOjEyOiJnZXRBbGxPcmRlcnMiO3I6NzIwO31zOjEzOiIAKgBhY3Rpb25MaXN0IjthOjQyOntzOjQ4OiJMNVN3YWdnZXJcSHR0cFxDb250cm9sbGVyc1xTd2FnZ2VyQ29udHJvbGxlckBhcGkiO3I6NDtzOjQ5OiJMNVN3YWdnZXJcSHR0cFxDb250cm9sbGVyc1xTd2FnZ2VyQ29udHJvbGxlckBkb2NzIjtyOjM3O3M6NTU6Ikw1U3dhZ2dlclxIdHRwXENvbnRyb2xsZXJzXFN3YWdnZXJBc3NldENvbnRyb2xsZXJAaW5kZXgiO3I6ODM7czo1OToiTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAb2F1dGgyQ2FsbGJhY2siO3I6MTI0O3M6MzU6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU2VuZEVtYWlsIjtyOjE1NztzOjU0OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXFJlY292ZXJ5UGFzc3dvcmRBY3Rpb24iO3I6Nzc3O3M6NjQ6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcQ2hhbmdlUGFzc3dvcmRGcm9tUmVjb3ZlcnlBY3Rpb24iO3I6ODEwO3M6NDg6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcRW5hYmxlVXNlckFjdGlvbiI7cjoxOTA7czo0OToiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xEaXNhYmxlVXNlckFjdGlvbiI7cjoyMzU7czo0NjoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xTaG93VXNlckFjdGlvbiI7cjoyODA7czo0MjoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xBdXRoXExvZ2luQWN0aW9uIjtyOjg0MztzOjQ3OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEF1dGhcUmVuZXdUb2tlbkFjdGlvbiI7cjo4NzY7czo1ODoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcU3RvcmVXZWJDdXN0b21lckFjdGlvbiI7cjo5MDk7czo1MToiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xBdXRoXENoYW5nZVBhc3N3b3JkQWN0aW9uIjtyOjk0MjtzOjU1OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xTdG9yZUVtcGxveWVlQWN0aW9uIjtyOjk3NTtzOjU0OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xGaW5kRW1wbG95ZWVBY3Rpb24iO3I6MzIyO3M6NTU6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ3VzdG9tZXJzXFN0b3JlQ3VzdG9tZXJBY3Rpb24iO3I6MTAwODtzOjU0OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xGaW5kQ3VzdG9tZXJBY3Rpb24iO3I6MzU2O3M6NTY6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ3VzdG9tZXJzXFVwZGF0ZUN1c3RvbWVyQWN0aW9uIjtyOjEyODI7czo1NToiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcSW5kZXhDdXN0b21lckFjdGlvbiI7cjozOTg7czo0OToiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xBZG1pbnNcU3RvcmVBZG1pbkFjdGlvbiI7cjoxMDQxO3M6NTQ6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcVXBkYXRlUHJvZHVjdEFjdGlvbiI7cjoxMzIzO3M6NTI6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcRmluZFByb2R1Y3RBY3Rpb24iO3I6NDMyO3M6NTU6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcRGVzdHJveVByb2R1Y3RBY3Rpb24iO3I6MTQ1MDtzOjUzOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFN0b3JlUHJvZHVjdEFjdGlvbiI7cjoxMDc0O3M6NTU6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcU2VhcmNoUHJvZHVjdHNBY3Rpb24iO3I6NDc0O3M6NjI6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcU2VhcmNoUHJvZHVjdHNGb3JIb21lQWN0aW9uIjtyOjUwODtzOjUwOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFVwZGF0ZUludmVudG9yeSI7cjoxMTA3O3M6NDk6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcSW5kZXhQcm9kdWN0U3RvY2siO3I6NTQyO3M6NDg6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcRmluZFByb2R1Y3RTdG9jayI7cjo1NzY7czo1MjoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXEluZGV4RmlsdGVyc0FjdGlvbiI7cjo2MTg7czo1MjoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXFN0b3JlRmlsdGVyc0FjdGlvbiI7cjoxMTQ4O3M6NTM6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xVcGRhdGVGaWx0ZXJzQWN0aW9uIjtyOjEzNjQ7czo1MzoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXERlc3Ryb3lGaWx0ZXJBY3Rpb24iO3I6MTQ5MTtzOjU2OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcU3RvcmVDYXRlZ29yeUFjdGlvbiI7cjoxMTgxO3M6NTc6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xVcGRhdGVDYXRlZ29yeUFjdGlvbiI7cjoxNDA1O3M6NTY6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xJbmRleENhdGVnb3J5QWN0aW9uIjtyOjY1MjtzOjU4OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcRGVzdHJveUNhdGVnb3J5QWN0aW9uIjtyOjE1MzI7czo1MzoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQYXltZW50c1xNZXJjYWRvUGFnb0V4ZWN1dGUiO3I6MTIxNDtzOjYxOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXE5vdGlmaWNhdGlvbnNcQ2hlY2tOb3RpZmljYXRpb25Vc2VyIjtyOjEyNDc7czo1MDoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xPcmRlcnNcSW5kZXhPcmRlcnNBY3Rpb24iO3I6Njg2O3M6NTM6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcT3JkZXJzXEluZGV4QWxsT3JkZXJzQWN0aW9uIjtyOjcyMDt9fQ==')) +); diff --git a/domain/Interfaces/Repositories/OrderRepositoryInterface.php b/domain/Interfaces/Repositories/OrderRepositoryInterface.php index 06ac2a8..325a682 100644 --- a/domain/Interfaces/Repositories/OrderRepositoryInterface.php +++ b/domain/Interfaces/Repositories/OrderRepositoryInterface.php @@ -7,4 +7,6 @@ interface OrderRepositoryInterface { public function indexAndFiltered(int $page, int $size, int $userId): array; + + public function indexAll(int $page, int $size); } diff --git a/domain/Interfaces/Services/Orders/OrderServiceInterface.php b/domain/Interfaces/Services/Orders/OrderServiceInterface.php index 4b29b4e..fe0bffb 100644 --- a/domain/Interfaces/Services/Orders/OrderServiceInterface.php +++ b/domain/Interfaces/Services/Orders/OrderServiceInterface.php @@ -7,4 +7,6 @@ interface OrderServiceInterface { public function indexAndFiltered($page, $size, $userId): array; + + public function indexAll($page, $size): array; } diff --git a/infrastructure/Persistence/Repositories/OrderRepository.php b/infrastructure/Persistence/Repositories/OrderRepository.php index 6599052..38d47d9 100644 --- a/infrastructure/Persistence/Repositories/OrderRepository.php +++ b/infrastructure/Persistence/Repositories/OrderRepository.php @@ -51,4 +51,36 @@ public function indexAndFiltered(int $page, int $size, int $userId): array return $customersList; } + + public function indexAll(int $page, int $size) + { + // get entity manager + $em = $this->getEntityManager(); + + // get the user repository + $orders = $em->getRepository(Order::class); + + // build the query for the doctrine paginator + $query = $orders->createQueryBuilder('o') + //->where('o.customer = :customer') + ->orderBy('o.id', 'DESC') + ->getQuery(); + + // load doctrine Paginator + $paginator = new Paginator($query); + + // now get one page's items: + $paginator + ->getQuery() + ->setFirstResult($size * ($page-1)) // set the offset + ->setMaxResults($size); // set the limit + + $customersList = []; + + foreach ($paginator as $item) { + array_push($customersList, $item); + } + + return $customersList; + } } diff --git a/presentation/Http/Actions/Orders/IndexAllOrdersAction.php b/presentation/Http/Actions/Orders/IndexAllOrdersAction.php new file mode 100644 index 0000000..2fc6702 --- /dev/null +++ b/presentation/Http/Actions/Orders/IndexAllOrdersAction.php @@ -0,0 +1,43 @@ +adapter = $adapter; + $this->queryBus = $queryBus; + $this->presenter = $presenter; + } + + public function __invoke(Request $request) + { + $query = $this->adapter->from($request); + + $result = $this->queryBus->handle($query); + + return new JsonResponse([ + 'data' => $this->presenter->fromResult($result)->getData(), + ], HttpCodes::OK); + } +} diff --git a/presentation/Http/Adapters/Orders/IndexAllOrdersAdapter.php b/presentation/Http/Adapters/Orders/IndexAllOrdersAdapter.php new file mode 100644 index 0000000..3d8db6e --- /dev/null +++ b/presentation/Http/Adapters/Orders/IndexAllOrdersAdapter.php @@ -0,0 +1,33 @@ +validatorService = $validatorService; + } + + public function from(Request $request) { + $this->validatorService->make($request->all(), []); + + if (!$this->validatorService->isValid()) { + throw new InvalidBodyException($this->validatorService->getErrors()); + } + + return new IndexAllOrdersQuery( + $request->query('page'), + $request->query('size') + ); + } +} diff --git a/presentation/Http/routes/api.php b/presentation/Http/routes/api.php index 4374885..361c854 100644 --- a/presentation/Http/routes/api.php +++ b/presentation/Http/routes/api.php @@ -100,4 +100,5 @@ Route::prefix('orders')->group(function () { Route::get('/', Actions\Orders\IndexOrdersAction::class)->name('getOrders'); + Route::get('all', Actions\Orders\IndexAllOrdersAction::class)->name('getAllOrders'); }); From 0edffae7b337baa5f3877f4f81c17c94f18e3f80 Mon Sep 17 00:00:00 2001 From: cristianvena18 Date: Tue, 7 Jul 2020 19:16:16 -0300 Subject: [PATCH 18/38] added find order by uuid endpoint --- .../Handler/Orders/FindOrderByUuidHandler.php | 35 +++++++++++++++ .../Query/Orders/FindOrderByUuidQuery.php | 25 +++++++++++ .../Results/Orders/FindOrderByUuidResult.php | 21 +++++++++ application/Services/Orders/OrderService.php | 18 ++++++++ bootstrap/cache/routes.php | 2 +- .../Repositories/OrderRepositoryInterface.php | 2 + .../Services/Orders/OrderServiceInterface.php | 4 ++ .../Repositories/OrderRepository.php | 9 ++++ .../Actions/Orders/FindOrderByUuidAction.php | 43 +++++++++++++++++++ .../Orders/FindOrderByUuidAdapter.php | 37 ++++++++++++++++ .../Presenters/Orders/FullOrderPresenter.php | 41 ++++++++++++++++++ presentation/Http/routes/api.php | 1 + 12 files changed, 237 insertions(+), 1 deletion(-) create mode 100644 application/Queries/Handler/Orders/FindOrderByUuidHandler.php create mode 100644 application/Queries/Query/Orders/FindOrderByUuidQuery.php create mode 100644 application/Queries/Results/Orders/FindOrderByUuidResult.php create mode 100644 presentation/Http/Actions/Orders/FindOrderByUuidAction.php create mode 100644 presentation/Http/Adapters/Orders/FindOrderByUuidAdapter.php create mode 100644 presentation/Http/Presenters/Orders/FullOrderPresenter.php diff --git a/application/Queries/Handler/Orders/FindOrderByUuidHandler.php b/application/Queries/Handler/Orders/FindOrderByUuidHandler.php new file mode 100644 index 0000000..617ca2d --- /dev/null +++ b/application/Queries/Handler/Orders/FindOrderByUuidHandler.php @@ -0,0 +1,35 @@ +orderService = $orderService; + } + + /** + * @param FindOrderByUuidQuery $query + * @return ResultInterface + */ + public function handle($query): ResultInterface + { + $order = $this->orderService->findByUuidOrFail($query->getUuid()); + + $result = new FindOrderByUuidResult(); + $result->setOrder($order); + return $result; + } +} diff --git a/application/Queries/Query/Orders/FindOrderByUuidQuery.php b/application/Queries/Query/Orders/FindOrderByUuidQuery.php new file mode 100644 index 0000000..a888364 --- /dev/null +++ b/application/Queries/Query/Orders/FindOrderByUuidQuery.php @@ -0,0 +1,25 @@ +uuid = $uuid; + } + + /** + * @return string + */ + public function getUuid(): string + { + return $this->uuid; + } +} diff --git a/application/Queries/Results/Orders/FindOrderByUuidResult.php b/application/Queries/Results/Orders/FindOrderByUuidResult.php new file mode 100644 index 0000000..902f6ae --- /dev/null +++ b/application/Queries/Results/Orders/FindOrderByUuidResult.php @@ -0,0 +1,21 @@ +order = $order; + } + + public function getOrder() { + return $this->order; + } +} diff --git a/application/Services/Orders/OrderService.php b/application/Services/Orders/OrderService.php index 0b3f5ce..e2ab4ac 100644 --- a/application/Services/Orders/OrderService.php +++ b/application/Services/Orders/OrderService.php @@ -5,6 +5,8 @@ use App\Exceptions\InvalidBodyException; +use Application\Exceptions\EntityNotFoundException; +use Domain\Entities\Order; use Domain\Interfaces\Repositories\OrderRepositoryInterface; use Domain\Interfaces\Services\Orders\OrderServiceInterface; @@ -32,4 +34,20 @@ public function indexAll($page, $size): array return $this->repository->indexAll($page, $size); } + + /** + * @param string $uuid + * @return Order + * @throws EntityNotFoundException + */ + public function findByUuidOrFail(string $uuid): Order + { + $order = $this->repository->findByUuid($uuid); + + if(!$order) { + throw new EntityNotFoundException("Order not exist!"); + } + + return $order; + } } diff --git a/bootstrap/cache/routes.php b/bootstrap/cache/routes.php index 0b5b879..dd4d0ea 100644 --- a/bootstrap/cache/routes.php +++ b/bootstrap/cache/routes.php @@ -12,5 +12,5 @@ */ app('router')->setRoutes( - unserialize(base64_decode('TzozNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlQ29sbGVjdGlvbiI6NDp7czo5OiIAKgByb3V0ZXMiO2E6Nzp7czozOiJHRVQiO2E6MjA6e3M6MTc6ImFwaS9kb2N1bWVudGF0aW9uIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNzoiYXBpL2RvY3VtZW50YXRpb24iO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjI6ImFzIjtzOjE0OiJsNS1zd2FnZ2VyLmFwaSI7czoxMDoibWlkZGxld2FyZSI7YTowOnt9czo0OiJ1c2VzIjtzOjQ5OiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAYXBpIjtzOjEwOiJjb250cm9sbGVyIjtzOjQ5OiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAYXBpIjtzOjk6Im5hbWVzcGFjZSI7czo5OiJMNVN3YWdnZXIiO3M6NjoicHJlZml4IjtOO3M6NToid2hlcmUiO2E6MDp7fX1zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxODoiL2FwaS9kb2N1bWVudGF0aW9uIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjI1OiIjXi9hcGkvZG9jdW1lbnRhdGlvbiQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxODoiL2FwaS9kb2N1bWVudGF0aW9uIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE2OiJkb2NzL3tqc29uRmlsZT99IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNjoiZG9jcy97anNvbkZpbGU/fSI7czo3OiJtZXRob2RzIjthOjc6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7aToyO3M6NDoiUE9TVCI7aTozO3M6MzoiUFVUIjtpOjQ7czo1OiJQQVRDSCI7aTo1O3M6NjoiREVMRVRFIjtpOjY7czo3OiJPUFRJT05TIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoyOiJhcyI7czoxNToibDUtc3dhZ2dlci5kb2NzIjtzOjEwOiJtaWRkbGV3YXJlIjthOjA6e31zOjQ6InVzZXMiO3M6NTA6IlxMNVN3YWdnZXJcSHR0cFxDb250cm9sbGVyc1xTd2FnZ2VyQ29udHJvbGxlckBkb2NzIjtzOjEwOiJjb250cm9sbGVyIjtzOjUwOiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAZG9jcyI7czo5OiJuYW1lc3BhY2UiO3M6OToiTDVTd2FnZ2VyIjtzOjY6InByZWZpeCI7TjtzOjU6IndoZXJlIjthOjA6e319czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czo4OiJqc29uRmlsZSI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjU6Ii9kb2NzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM4OiIjXi9kb2NzKD86Lyg/UDxqc29uRmlsZT5bXi9dKyspKT8kI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6ODoianNvbkZpbGUiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjU6Ii9kb2NzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjg6Impzb25GaWxlIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxODoiZG9jcy9hc3NldC97YXNzZXR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxODoiZG9jcy9hc3NldC97YXNzZXR9IjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoyOiJhcyI7czoxNjoibDUtc3dhZ2dlci5hc3NldCI7czoxMDoibWlkZGxld2FyZSI7YTowOnt9czo0OiJ1c2VzIjtzOjU2OiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckFzc2V0Q29udHJvbGxlckBpbmRleCI7czoxMDoiY29udHJvbGxlciI7czo1NjoiXEw1U3dhZ2dlclxIdHRwXENvbnRyb2xsZXJzXFN3YWdnZXJBc3NldENvbnRyb2xsZXJAaW5kZXgiO3M6OToibmFtZXNwYWNlIjtzOjk6Ikw1U3dhZ2dlciI7czo2OiJwcmVmaXgiO047czo1OiJ3aGVyZSI7YTowOnt9fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6NToiYXNzZXQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMToiL2RvY3MvYXNzZXQiO3M6MTA6InBhdGhfcmVnZXgiO3M6MzY6IiNeL2RvY3MvYXNzZXQvKD9QPGFzc2V0PlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6NToiYXNzZXQiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjExOiIvZG9jcy9hc3NldCI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czo1OiJhc3NldCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTk6ImFwaS9vYXV0aDItY2FsbGJhY2siO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE5OiJhcGkvb2F1dGgyLWNhbGxiYWNrIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoyOiJhcyI7czoyNjoibDUtc3dhZ2dlci5vYXV0aDJfY2FsbGJhY2siO3M6MTA6Im1pZGRsZXdhcmUiO2E6MDp7fXM6NDoidXNlcyI7czo2MDoiXEw1U3dhZ2dlclxIdHRwXENvbnRyb2xsZXJzXFN3YWdnZXJDb250cm9sbGVyQG9hdXRoMkNhbGxiYWNrIjtzOjEwOiJjb250cm9sbGVyIjtzOjYwOiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAb2F1dGgyQ2FsbGJhY2siO3M6OToibmFtZXNwYWNlIjtzOjk6Ikw1U3dhZ2dlciI7czo2OiJwcmVmaXgiO047czo1OiJ3aGVyZSI7YTowOnt9fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjIwOiIvYXBpL29hdXRoMi1jYWxsYmFjayI7czoxMDoicGF0aF9yZWdleCI7czoyODoiI14vYXBpL29hdXRoMlwtY2FsbGJhY2skI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MjA6Ii9hcGkvb2F1dGgyLWNhbGxiYWNrIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE0OiJhcGkvc2VuZF9lbWFpbCI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTQ6ImFwaS9zZW5kX2VtYWlsIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Njp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NDU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFNlbmRFbWFpbEBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czozNjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU2VuZEVtYWlsIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjM6ImFwaSI7czo1OiJ3aGVyZSI7YTowOnt9fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE1OiIvYXBpL3NlbmRfZW1haWwiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjI6IiNeL2FwaS9zZW5kX2VtYWlsJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE1OiIvYXBpL3NlbmRfZW1haWwiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MjE6ImFwaS91c2Vycy97aWR9L2VuYWJsZSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MjE6ImFwaS91c2Vycy97aWR9L2VuYWJsZSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjU4OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xFbmFibGVVc2VyQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjQ5OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xFbmFibGVVc2VyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjk6ImFwaS91c2VycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMDoiZW5hYmxlVXNlciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMDoiL2FwaS91c2VycyI7czoxMDoicGF0aF9yZWdleCI7czozOToiI14vYXBpL3VzZXJzLyg/UDxpZD5bXi9dKyspL2VuYWJsZSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YTozOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czo3OiIvZW5hYmxlIjt9aToxO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MjthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEwOiIvYXBpL3VzZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoyMjoiYXBpL3VzZXJzL3tpZH0vZGlzYWJsZSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MjI6ImFwaS91c2Vycy97aWR9L2Rpc2FibGUiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1OToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcRGlzYWJsZVVzZXJBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTA6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXERpc2FibGVVc2VyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjk6ImFwaS91c2VycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMToiZGlzYWJsZVVzZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTA6Ii9hcGkvdXNlcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6NDA6IiNeL2FwaS91c2Vycy8oP1A8aWQ+W14vXSsrKS9kaXNhYmxlJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjM6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjg6Ii9kaXNhYmxlIjt9aToxO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MjthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEwOiIvYXBpL3VzZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNDoiYXBpL3VzZXJzL3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE0OiJhcGkvdXNlcnMve2lkfSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjU2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xTaG93VXNlckFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo0NzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcU2hvd1VzZXJBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6OToiYXBpL3VzZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjExOiJzaG93T25lVXNlciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMDoiL2FwaS91c2VycyI7czoxMDoicGF0aF9yZWdleCI7czozMjoiI14vYXBpL3VzZXJzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMDoiL2FwaS91c2VycyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTM6ImFwaS9lbXBsb3llZXMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEzOiJhcGkvZW1wbG95ZWVzIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xGaW5kRW1wbG95ZWVBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xGaW5kRW1wbG95ZWVBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTM6ImFwaS9lbXBsb3llZXMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTI6Imxpc3RFbXBsb3llZSI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE0OiIvYXBpL2VtcGxveWVlcyI7czoxMDoicGF0aF9yZWdleCI7czoyMToiI14vYXBpL2VtcGxveWVlcyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9lbXBsb3llZXMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTg6ImFwaS9jdXN0b21lcnMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTg6ImFwaS9jdXN0b21lcnMve2lkfSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY0OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcRmluZEN1c3RvbWVyQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU1OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcRmluZEN1c3RvbWVyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEzOiJhcGkvY3VzdG9tZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjEyOiJmaW5kQ3VzdG9tZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTQ6Ii9hcGkvY3VzdG9tZXJzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM2OiIjXi9hcGkvY3VzdG9tZXJzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9jdXN0b21lcnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjEzOiJhcGkvY3VzdG9tZXJzIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxMzoiYXBpL2N1c3RvbWVycyI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY1OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcSW5kZXhDdXN0b21lckFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ3VzdG9tZXJzXEluZGV4Q3VzdG9tZXJBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTM6ImFwaS9jdXN0b21lcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTM6Imxpc3RDdXN0b21lcnMiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNDoiL2FwaS9jdXN0b21lcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjE6IiNeL2FwaS9jdXN0b21lcnMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTQ6Ii9hcGkvY3VzdG9tZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE5OiJhcGkvcHJvZHVjdHMve3V1aWR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxOToiYXBpL3Byb2R1Y3RzL3t1dWlkfSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjYyOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xGaW5kUHJvZHVjdEFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1MzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcRmluZFByb2R1Y3RBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTI6ImFwaS9wcm9kdWN0cyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMToiZmluZFByb2R1Y3QiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjQ6InV1aWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMzoiL2FwaS9wcm9kdWN0cyI7czoxMDoicGF0aF9yZWdleCI7czozNzoiI14vYXBpL3Byb2R1Y3RzLyg/UDx1dWlkPlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6NDoidXVpZCI7aTo0O2I6MTt9aToxO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTM6Ii9hcGkvcHJvZHVjdHMiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6NDoidXVpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTA6ImFwaS9zZWFyY2giO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEwOiJhcGkvc2VhcmNoIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFNlYXJjaFByb2R1Y3RzQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xTZWFyY2hQcm9kdWN0c0FjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMDoiYXBpL3NlYXJjaCI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNDoic2VhcmNoUHJvZHVjdHMiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxMToiL2FwaS9zZWFyY2giO3M6MTA6InBhdGhfcmVnZXgiO3M6MTg6IiNeL2FwaS9zZWFyY2gkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTE6Ii9hcGkvc2VhcmNoIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE1OiJhcGkvc2VhcmNoL2hvbWUiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE1OiJhcGkvc2VhcmNoL2hvbWUiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo3MjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcU2VhcmNoUHJvZHVjdHNGb3JIb21lQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjYzOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xTZWFyY2hQcm9kdWN0c0ZvckhvbWVBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTA6ImFwaS9zZWFyY2giO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTQ6InNlYXJjaFByb2R1Y3RzIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTY6Ii9hcGkvc2VhcmNoL2hvbWUiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjM6IiNeL2FwaS9zZWFyY2gvaG9tZSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNjoiL2FwaS9zZWFyY2gvaG9tZSI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxMzoiYXBpL2ludmVudG9yeSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTM6ImFwaS9pbnZlbnRvcnkiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1OToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcSW5kZXhQcm9kdWN0U3RvY2tAX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTA6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFN0b2NrXEluZGV4UHJvZHVjdFN0b2NrIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEzOiJhcGkvaW52ZW50b3J5IjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE4OiJpbmRleFByb2R1Y3RzU3RvY2siO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNDoiL2FwaS9pbnZlbnRvcnkiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjE6IiNeL2FwaS9pbnZlbnRvcnkkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTQ6Ii9hcGkvaW52ZW50b3J5Ijt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE4OiJhcGkvaW52ZW50b3J5L3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE4OiJhcGkvaW52ZW50b3J5L3tpZH0iO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1ODoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcRmluZFByb2R1Y3RTdG9ja0BfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo0OToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcRmluZFByb2R1Y3RTdG9jayI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMzoiYXBpL2ludmVudG9yeSI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNzoiZmluZFByb2R1Y3RzU3RvY2siO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTQ6Ii9hcGkvaW52ZW50b3J5IjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM2OiIjXi9hcGkvaW52ZW50b3J5Lyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9pbnZlbnRvcnkiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjExOiJhcGkvZmlsdGVycyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTE6ImFwaS9maWx0ZXJzIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjI6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEZpbHRlcnNcSW5kZXhGaWx0ZXJzQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjUzOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXEluZGV4RmlsdGVyc0FjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMToiYXBpL2ZpbHRlcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTI6ImluZGV4RmlsdGVycyI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjEyOiIvYXBpL2ZpbHRlcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MTk6IiNeL2FwaS9maWx0ZXJzJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEyOiIvYXBpL2ZpbHRlcnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTQ6ImFwaS9jYXRlZ29yaWVzIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNDoiYXBpL2NhdGVnb3JpZXMiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2NjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xJbmRleENhdGVnb3J5QWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU3OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDYXRlZ29yaWVzXEluZGV4Q2F0ZWdvcnlBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTQ6ImFwaS9jYXRlZ29yaWVzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjEzOiJpbmRleENhdGVnb3J5Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTU6Ii9hcGkvY2F0ZWdvcmllcyI7czoxMDoicGF0aF9yZWdleCI7czoyMjoiI14vYXBpL2NhdGVnb3JpZXMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTU6Ii9hcGkvY2F0ZWdvcmllcyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxMDoiYXBpL29yZGVycyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTA6ImFwaS9vcmRlcnMiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2MDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcT3JkZXJzXEluZGV4T3JkZXJzQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjUxOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xPcmRlcnNcSW5kZXhPcmRlcnNBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTA6ImFwaS9vcmRlcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6OToiZ2V0T3JkZXJzIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTE6Ii9hcGkvb3JkZXJzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjE4OiIjXi9hcGkvb3JkZXJzJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjExOiIvYXBpL29yZGVycyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNDoiYXBpL29yZGVycy9hbGwiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE0OiJhcGkvb3JkZXJzL2FsbCI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjYzOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xPcmRlcnNcSW5kZXhBbGxPcmRlcnNBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXE9yZGVyc1xJbmRleEFsbE9yZGVyc0FjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMDoiYXBpL29yZGVycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMjoiZ2V0QWxsT3JkZXJzIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTU6Ii9hcGkvb3JkZXJzL2FsbCI7czoxMDoicGF0aF9yZWdleCI7czoyMjoiI14vYXBpL29yZGVycy9hbGwkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTU6Ii9hcGkvb3JkZXJzL2FsbCI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19fXM6NDoiSEVBRCI7YToyMDp7czoxNzoiYXBpL2RvY3VtZW50YXRpb24iO3I6NDtzOjE2OiJkb2NzL3tqc29uRmlsZT99IjtyOjM3O3M6MTg6ImRvY3MvYXNzZXQve2Fzc2V0fSI7cjo4MztzOjE5OiJhcGkvb2F1dGgyLWNhbGxiYWNrIjtyOjEyNDtzOjE0OiJhcGkvc2VuZF9lbWFpbCI7cjoxNTc7czoyMToiYXBpL3VzZXJzL3tpZH0vZW5hYmxlIjtyOjE5MDtzOjIyOiJhcGkvdXNlcnMve2lkfS9kaXNhYmxlIjtyOjIzNTtzOjE0OiJhcGkvdXNlcnMve2lkfSI7cjoyODA7czoxMzoiYXBpL2VtcGxveWVlcyI7cjozMjI7czoxODoiYXBpL2N1c3RvbWVycy97aWR9IjtyOjM1NjtzOjEzOiJhcGkvY3VzdG9tZXJzIjtyOjM5ODtzOjE5OiJhcGkvcHJvZHVjdHMve3V1aWR9IjtyOjQzMjtzOjEwOiJhcGkvc2VhcmNoIjtyOjQ3NDtzOjE1OiJhcGkvc2VhcmNoL2hvbWUiO3I6NTA4O3M6MTM6ImFwaS9pbnZlbnRvcnkiO3I6NTQyO3M6MTg6ImFwaS9pbnZlbnRvcnkve2lkfSI7cjo1NzY7czoxMToiYXBpL2ZpbHRlcnMiO3I6NjE4O3M6MTQ6ImFwaS9jYXRlZ29yaWVzIjtyOjY1MjtzOjEwOiJhcGkvb3JkZXJzIjtyOjY4NjtzOjE0OiJhcGkvb3JkZXJzL2FsbCI7cjo3MjA7fXM6NDoiUE9TVCI7YToxNjp7czoxNjoiZG9jcy97anNvbkZpbGU/fSI7cjozNztzOjE4OiJhcGkvdXNlcnMvcmVjb3ZlcnkiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE4OiJhcGkvdXNlcnMvcmVjb3ZlcnkiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXFJlY292ZXJ5UGFzc3dvcmRBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXFJlY292ZXJ5UGFzc3dvcmRBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6OToiYXBpL3VzZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE2OiJyZWNvdmVyeVBhc3N3b3JkIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTk6Ii9hcGkvdXNlcnMvcmVjb3ZlcnkiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjY6IiNeL2FwaS91c2Vycy9yZWNvdmVyeSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxOToiL2FwaS91c2Vycy9yZWNvdmVyeSI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNjoiYXBpL3VzZXJzL2ZvcmdvdCI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTY6ImFwaS91c2Vycy9mb3Jnb3QiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NzQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXENoYW5nZVBhc3N3b3JkRnJvbVJlY292ZXJ5QWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjY1OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xDaGFuZ2VQYXNzd29yZEZyb21SZWNvdmVyeUFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czo5OiJhcGkvdXNlcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MjY6ImNoYW5nZVBhc3N3b3JkRnJvbVJlY292ZXJ5Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTc6Ii9hcGkvdXNlcnMvZm9yZ290IjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjI0OiIjXi9hcGkvdXNlcnMvZm9yZ290JCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE3OiIvYXBpL3VzZXJzL2ZvcmdvdCI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNDoiYXBpL2F1dGgvbG9naW4iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE0OiJhcGkvYXV0aC9sb2dpbiI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1MjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQXV0aFxMb2dpbkFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo0MzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQXV0aFxMb2dpbkFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czo4OiJhcGkvYXV0aCI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czo1OiJsb2dpbiI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE1OiIvYXBpL2F1dGgvbG9naW4iO3M6MTA6InBhdGhfcmVnZXgiO3M6MjI6IiNeL2FwaS9hdXRoL2xvZ2luJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE1OiIvYXBpL2F1dGgvbG9naW4iO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MjA6ImFwaS9hdXRoL3JlbmV3LXRva2VuIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoyMDoiYXBpL2F1dGgvcmVuZXctdG9rZW4iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NTc6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEF1dGhcUmVuZXdUb2tlbkFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo0ODoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQXV0aFxSZW5ld1Rva2VuQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjg6ImFwaS9hdXRoIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjExOiJyZW5ldy10b2tlbiI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjIxOiIvYXBpL2F1dGgvcmVuZXctdG9rZW4iO3M6MTA6InBhdGhfcmVnZXgiO3M6Mjk6IiNeL2FwaS9hdXRoL3JlbmV3XC10b2tlbiQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoyMToiL2FwaS9hdXRoL3JlbmV3LXRva2VuIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE1OiJhcGkvYXV0aC9zaWdudXAiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE1OiJhcGkvYXV0aC9zaWdudXAiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6Njg6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xTdG9yZVdlYkN1c3RvbWVyQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU5OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcU3RvcmVXZWJDdXN0b21lckFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czo4OiJhcGkvYXV0aCI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNzoiY3JlYXRlV2ViQ3VzdG9tZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNjoiL2FwaS9hdXRoL3NpZ251cCI7czoxMDoicGF0aF9yZWdleCI7czoyMzoiI14vYXBpL2F1dGgvc2lnbnVwJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE2OiIvYXBpL2F1dGgvc2lnbnVwIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjI0OiJhcGkvYXV0aC9jaGFuZ2UtcGFzc3dvcmQiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjI0OiJhcGkvYXV0aC9jaGFuZ2UtcGFzc3dvcmQiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjE6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEF1dGhcQ2hhbmdlUGFzc3dvcmRBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTI6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEF1dGhcQ2hhbmdlUGFzc3dvcmRBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6ODoiYXBpL2F1dGgiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTU6ImNoYW5nZS1wYXNzd29yZCI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjI1OiIvYXBpL2F1dGgvY2hhbmdlLXBhc3N3b3JkIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjMzOiIjXi9hcGkvYXV0aC9jaGFuZ2VcLXBhc3N3b3JkJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjI1OiIvYXBpL2F1dGgvY2hhbmdlLXBhc3N3b3JkIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjEzOiJhcGkvZW1wbG95ZWVzIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxMzoiYXBpL2VtcGxveWVlcyI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2NToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRW1wbG95ZWVzXFN0b3JlRW1wbG95ZWVBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTY6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xTdG9yZUVtcGxveWVlQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEzOiJhcGkvZW1wbG95ZWVzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE0OiJjcmVhdGVFbXBsb3llZSI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE0OiIvYXBpL2VtcGxveWVlcyI7czoxMDoicGF0aF9yZWdleCI7czoyMToiI14vYXBpL2VtcGxveWVlcyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9lbXBsb3llZXMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTM6ImFwaS9jdXN0b21lcnMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEzOiJhcGkvY3VzdG9tZXJzIjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY1OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcU3RvcmVDdXN0b21lckFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ3VzdG9tZXJzXFN0b3JlQ3VzdG9tZXJBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTM6ImFwaS9jdXN0b21lcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTQ6ImNyZWF0ZUN1c3RvbWVyIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTQ6Ii9hcGkvY3VzdG9tZXJzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjIxOiIjXi9hcGkvY3VzdG9tZXJzJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE0OiIvYXBpL2N1c3RvbWVycyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxMDoiYXBpL2FkbWlucyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTA6ImFwaS9hZG1pbnMiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NTk6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEFkbWluc1xTdG9yZUFkbWluQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjUwOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xBZG1pbnNcU3RvcmVBZG1pbkFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMDoiYXBpL2FkbWlucyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMToiY3JlYXRlQWRtaW4iO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxMToiL2FwaS9hZG1pbnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MTg6IiNeL2FwaS9hZG1pbnMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTE6Ii9hcGkvYWRtaW5zIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjEyOiJhcGkvcHJvZHVjdHMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEyOiJhcGkvcHJvZHVjdHMiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjM6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFN0b3JlUHJvZHVjdEFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcU3RvcmVQcm9kdWN0QWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEyOiJhcGkvcHJvZHVjdHMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTM6ImNyZWF0ZVByb2R1Y3QiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxMzoiL2FwaS9wcm9kdWN0cyI7czoxMDoicGF0aF9yZWdleCI7czoyMDoiI14vYXBpL3Byb2R1Y3RzJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEzOiIvYXBpL3Byb2R1Y3RzIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE4OiJhcGkvaW52ZW50b3J5L3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE4OiJhcGkvaW52ZW50b3J5L3tpZH0iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjA6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFVwZGF0ZUludmVudG9yeUBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1MToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcVXBkYXRlSW52ZW50b3J5IjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEzOiJhcGkvaW52ZW50b3J5IjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjIyOiJ1cGRhdGVJbnZlbnRvcnlQcm9kdWN0Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE0OiIvYXBpL2ludmVudG9yeSI7czoxMDoicGF0aF9yZWdleCI7czozNjoiI14vYXBpL2ludmVudG9yeS8oP1A8aWQ+W14vXSsrKSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToyOntpOjA7YTo1OntpOjA7czo4OiJ2YXJpYWJsZSI7aToxO3M6MToiLyI7aToyO3M6NjoiW14vXSsrIjtpOjM7czoyOiJpZCI7aTo0O2I6MTt9aToxO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTQ6Ii9hcGkvaW52ZW50b3J5Ijt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxMToiYXBpL2ZpbHRlcnMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjExOiJhcGkvZmlsdGVycyI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2MjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xTdG9yZUZpbHRlcnNBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTM6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEZpbHRlcnNcU3RvcmVGaWx0ZXJzQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjExOiJhcGkvZmlsdGVycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czo5OiJhZGRGaWx0ZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxMjoiL2FwaS9maWx0ZXJzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjE5OiIjXi9hcGkvZmlsdGVycyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMjoiL2FwaS9maWx0ZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE0OiJhcGkvY2F0ZWdvcmllcyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTQ6ImFwaS9jYXRlZ29yaWVzIjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDYXRlZ29yaWVzXFN0b3JlQ2F0ZWdvcnlBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTc6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcU3RvcmVDYXRlZ29yeUFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxNDoiYXBpL2NhdGVnb3JpZXMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTM6InN0b3JlQ2F0ZWdvcnkiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNToiL2FwaS9jYXRlZ29yaWVzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjIyOiIjXi9hcGkvY2F0ZWdvcmllcyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNToiL2FwaS9jYXRlZ29yaWVzIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjI0OiJhcGkvcGF5bWVudHMvbWVyY2Fkb3BhZ28iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjI0OiJhcGkvcGF5bWVudHMvbWVyY2Fkb3BhZ28iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjM6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFBheW1lbnRzXE1lcmNhZG9QYWdvRXhlY3V0ZUBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUGF5bWVudHNcTWVyY2Fkb1BhZ29FeGVjdXRlIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEyOiJhcGkvcGF5bWVudHMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTg6InBheW1lbnRNZXJjYWRvUGFnbyI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjI1OiIvYXBpL3BheW1lbnRzL21lcmNhZG9wYWdvIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjMyOiIjXi9hcGkvcGF5bWVudHMvbWVyY2Fkb3BhZ28kI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MjU6Ii9hcGkvcGF5bWVudHMvbWVyY2Fkb3BhZ28iO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTc6ImFwaS9ub3RpZmljYXRpb25zIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNzoiYXBpL25vdGlmaWNhdGlvbnMiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NzE6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXE5vdGlmaWNhdGlvbnNcQ2hlY2tOb3RpZmljYXRpb25Vc2VyQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjYyOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xOb3RpZmljYXRpb25zXENoZWNrTm90aWZpY2F0aW9uVXNlciI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxNzoiYXBpL25vdGlmaWNhdGlvbnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MjE6ImNoZWNrTm90aWZpY2F0aW9uVXNlciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE4OiIvYXBpL25vdGlmaWNhdGlvbnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjU6IiNeL2FwaS9ub3RpZmljYXRpb25zJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE4OiIvYXBpL25vdGlmaWNhdGlvbnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fX1zOjM6IlBVVCI7YTo1OntzOjE2OiJkb2NzL3tqc29uRmlsZT99IjtyOjM3O3M6MTg6ImFwaS9jdXN0b21lcnMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTg6ImFwaS9jdXN0b21lcnMve2lkfSI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjM6IlBVVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcVXBkYXRlQ3VzdG9tZXJBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTc6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xVcGRhdGVDdXN0b21lckFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMzoiYXBpL2N1c3RvbWVycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNDoidXBkYXRlQ3VzdG9tZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTQ6Ii9hcGkvY3VzdG9tZXJzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM2OiIjXi9hcGkvY3VzdG9tZXJzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9jdXN0b21lcnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE3OiJhcGkvcHJvZHVjdHMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTc6ImFwaS9wcm9kdWN0cy97aWR9IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6MzoiUFVUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFVwZGF0ZVByb2R1Y3RBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFVwZGF0ZVByb2R1Y3RBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTI6ImFwaS9wcm9kdWN0cyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMzoidXBkYXRlUHJvZHVjdCI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMzoiL2FwaS9wcm9kdWN0cyI7czoxMDoicGF0aF9yZWdleCI7czozNToiI14vYXBpL3Byb2R1Y3RzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMzoiL2FwaS9wcm9kdWN0cyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTY6ImFwaS9maWx0ZXJzL3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE2OiJhcGkvZmlsdGVycy97aWR9IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6MzoiUFVUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjM6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEZpbHRlcnNcVXBkYXRlRmlsdGVyc0FjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xVcGRhdGVGaWx0ZXJzQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjExOiJhcGkvZmlsdGVycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMjoidXBkYXRlRmlsdGVyIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjEyOiIvYXBpL2ZpbHRlcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MzQ6IiNeL2FwaS9maWx0ZXJzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMjoiL2FwaS9maWx0ZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxOToiYXBpL2NhdGVnb3JpZXMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTk6ImFwaS9jYXRlZ29yaWVzL3tpZH0iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czozOiJQVVQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2NzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xVcGRhdGVDYXRlZ29yeUFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1ODoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xVcGRhdGVDYXRlZ29yeUFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxNDoiYXBpL2NhdGVnb3JpZXMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTQ6InVwZGF0ZUNhdGVnb3J5Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE1OiIvYXBpL2NhdGVnb3JpZXMiO3M6MTA6InBhdGhfcmVnZXgiO3M6Mzc6IiNeL2FwaS9jYXRlZ29yaWVzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNToiL2FwaS9jYXRlZ29yaWVzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19fXM6NToiUEFUQ0giO2E6MTp7czoxNjoiZG9jcy97anNvbkZpbGU/fSI7cjozNzt9czo2OiJERUxFVEUiO2E6NDp7czoxNjoiZG9jcy97anNvbkZpbGU/fSI7cjozNztzOjE3OiJhcGkvcHJvZHVjdHMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTc6ImFwaS9wcm9kdWN0cy97aWR9IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NjoiREVMRVRFIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXERlc3Ryb3lQcm9kdWN0QWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xEZXN0cm95UHJvZHVjdEFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMjoiYXBpL3Byb2R1Y3RzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE0OiJkZXN0cm95UHJvZHVjdCI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMzoiL2FwaS9wcm9kdWN0cyI7czoxMDoicGF0aF9yZWdleCI7czozNToiI14vYXBpL3Byb2R1Y3RzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMzoiL2FwaS9wcm9kdWN0cyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTY6ImFwaS9maWx0ZXJzL3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE2OiJhcGkvZmlsdGVycy97aWR9IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NjoiREVMRVRFIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjM6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEZpbHRlcnNcRGVzdHJveUZpbHRlckFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xEZXN0cm95RmlsdGVyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjExOiJhcGkvZmlsdGVycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMzoiZGVzdHJveUZpbHRlciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMjoiL2FwaS9maWx0ZXJzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM0OiIjXi9hcGkvZmlsdGVycy8oP1A8aWQ+W14vXSsrKSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToyOntpOjA7YTo1OntpOjA7czo4OiJ2YXJpYWJsZSI7aToxO3M6MToiLyI7aToyO3M6NjoiW14vXSsrIjtpOjM7czoyOiJpZCI7aTo0O2I6MTt9aToxO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTI6Ii9hcGkvZmlsdGVycyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTk6ImFwaS9jYXRlZ29yaWVzL3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE5OiJhcGkvY2F0ZWdvcmllcy97aWR9IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NjoiREVMRVRFIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6Njg6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcRGVzdHJveUNhdGVnb3J5QWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU5OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDYXRlZ29yaWVzXERlc3Ryb3lDYXRlZ29yeUFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxNDoiYXBpL2NhdGVnb3JpZXMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTU6ImRlc3Ryb3lDYXRlZ29yeSI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxNToiL2FwaS9jYXRlZ29yaWVzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM3OiIjXi9hcGkvY2F0ZWdvcmllcy8oP1A8aWQ+W14vXSsrKSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToyOntpOjA7YTo1OntpOjA7czo4OiJ2YXJpYWJsZSI7aToxO3M6MToiLyI7aToyO3M6NjoiW14vXSsrIjtpOjM7czoyOiJpZCI7aTo0O2I6MTt9aToxO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTU6Ii9hcGkvY2F0ZWdvcmllcyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fX1zOjc6Ik9QVElPTlMiO2E6MTp7czoxNjoiZG9jcy97anNvbkZpbGU/fSI7cjozNzt9fXM6MTI6IgAqAGFsbFJvdXRlcyI7YTo0Mjp7czoyMToiSEVBRGFwaS9kb2N1bWVudGF0aW9uIjtyOjQ7czoyMzoiT1BUSU9OU2RvY3Mve2pzb25GaWxlP30iO3I6Mzc7czoyMjoiSEVBRGRvY3MvYXNzZXQve2Fzc2V0fSI7cjo4MztzOjIzOiJIRUFEYXBpL29hdXRoMi1jYWxsYmFjayI7cjoxMjQ7czoxODoiSEVBRGFwaS9zZW5kX2VtYWlsIjtyOjE1NztzOjIyOiJQT1NUYXBpL3VzZXJzL3JlY292ZXJ5IjtyOjc3NztzOjIwOiJQT1NUYXBpL3VzZXJzL2ZvcmdvdCI7cjo4MTA7czoyNToiSEVBRGFwaS91c2Vycy97aWR9L2VuYWJsZSI7cjoxOTA7czoyNjoiSEVBRGFwaS91c2Vycy97aWR9L2Rpc2FibGUiO3I6MjM1O3M6MTg6IkhFQURhcGkvdXNlcnMve2lkfSI7cjoyODA7czoxODoiUE9TVGFwaS9hdXRoL2xvZ2luIjtyOjg0MztzOjI0OiJQT1NUYXBpL2F1dGgvcmVuZXctdG9rZW4iO3I6ODc2O3M6MTk6IlBPU1RhcGkvYXV0aC9zaWdudXAiO3I6OTA5O3M6Mjg6IlBPU1RhcGkvYXV0aC9jaGFuZ2UtcGFzc3dvcmQiO3I6OTQyO3M6MTc6IlBPU1RhcGkvZW1wbG95ZWVzIjtyOjk3NTtzOjE3OiJIRUFEYXBpL2VtcGxveWVlcyI7cjozMjI7czoxNzoiUE9TVGFwaS9jdXN0b21lcnMiO3I6MTAwODtzOjIyOiJIRUFEYXBpL2N1c3RvbWVycy97aWR9IjtyOjM1NjtzOjIxOiJQVVRhcGkvY3VzdG9tZXJzL3tpZH0iO3I6MTI4MjtzOjE3OiJIRUFEYXBpL2N1c3RvbWVycyI7cjozOTg7czoxNDoiUE9TVGFwaS9hZG1pbnMiO3I6MTA0MTtzOjIwOiJQVVRhcGkvcHJvZHVjdHMve2lkfSI7cjoxMzIzO3M6MjM6IkhFQURhcGkvcHJvZHVjdHMve3V1aWR9IjtyOjQzMjtzOjIzOiJERUxFVEVhcGkvcHJvZHVjdHMve2lkfSI7cjoxNDUwO3M6MTY6IlBPU1RhcGkvcHJvZHVjdHMiO3I6MTA3NDtzOjE0OiJIRUFEYXBpL3NlYXJjaCI7cjo0NzQ7czoxOToiSEVBRGFwaS9zZWFyY2gvaG9tZSI7cjo1MDg7czoyMjoiUE9TVGFwaS9pbnZlbnRvcnkve2lkfSI7cjoxMTA3O3M6MTc6IkhFQURhcGkvaW52ZW50b3J5IjtyOjU0MjtzOjIyOiJIRUFEYXBpL2ludmVudG9yeS97aWR9IjtyOjU3NjtzOjE1OiJIRUFEYXBpL2ZpbHRlcnMiO3I6NjE4O3M6MTU6IlBPU1RhcGkvZmlsdGVycyI7cjoxMTQ4O3M6MTk6IlBVVGFwaS9maWx0ZXJzL3tpZH0iO3I6MTM2NDtzOjIyOiJERUxFVEVhcGkvZmlsdGVycy97aWR9IjtyOjE0OTE7czoxODoiUE9TVGFwaS9jYXRlZ29yaWVzIjtyOjExODE7czoyMjoiUFVUYXBpL2NhdGVnb3JpZXMve2lkfSI7cjoxNDA1O3M6MTg6IkhFQURhcGkvY2F0ZWdvcmllcyI7cjo2NTI7czoyNToiREVMRVRFYXBpL2NhdGVnb3JpZXMve2lkfSI7cjoxNTMyO3M6Mjg6IlBPU1RhcGkvcGF5bWVudHMvbWVyY2Fkb3BhZ28iO3I6MTIxNDtzOjIxOiJQT1NUYXBpL25vdGlmaWNhdGlvbnMiO3I6MTI0NztzOjE0OiJIRUFEYXBpL29yZGVycyI7cjo2ODY7czoxODoiSEVBRGFwaS9vcmRlcnMvYWxsIjtyOjcyMDt9czoxMToiACoAbmFtZUxpc3QiO2E6NDA6e3M6MTQ6Imw1LXN3YWdnZXIuYXBpIjtyOjQ7czoxNToibDUtc3dhZ2dlci5kb2NzIjtyOjM3O3M6MTY6Imw1LXN3YWdnZXIuYXNzZXQiO3I6ODM7czoyNjoibDUtc3dhZ2dlci5vYXV0aDJfY2FsbGJhY2siO3I6MTI0O3M6MTY6InJlY292ZXJ5UGFzc3dvcmQiO3I6Nzc3O3M6MjY6ImNoYW5nZVBhc3N3b3JkRnJvbVJlY292ZXJ5IjtyOjgxMDtzOjEwOiJlbmFibGVVc2VyIjtyOjE5MDtzOjExOiJkaXNhYmxlVXNlciI7cjoyMzU7czoxMToic2hvd09uZVVzZXIiO3I6MjgwO3M6NToibG9naW4iO3I6ODQzO3M6MTE6InJlbmV3LXRva2VuIjtyOjg3NjtzOjE3OiJjcmVhdGVXZWJDdXN0b21lciI7cjo5MDk7czoxNToiY2hhbmdlLXBhc3N3b3JkIjtyOjk0MjtzOjE0OiJjcmVhdGVFbXBsb3llZSI7cjo5NzU7czoxMjoibGlzdEVtcGxveWVlIjtyOjMyMjtzOjE0OiJjcmVhdGVDdXN0b21lciI7cjoxMDA4O3M6MTI6ImZpbmRDdXN0b21lciI7cjozNTY7czoxNDoidXBkYXRlQ3VzdG9tZXIiO3I6MTI4MjtzOjEzOiJsaXN0Q3VzdG9tZXJzIjtyOjM5ODtzOjExOiJjcmVhdGVBZG1pbiI7cjoxMDQxO3M6MTM6InVwZGF0ZVByb2R1Y3QiO3I6MTMyMztzOjExOiJmaW5kUHJvZHVjdCI7cjo0MzI7czoxNDoiZGVzdHJveVByb2R1Y3QiO3I6MTQ1MDtzOjEzOiJjcmVhdGVQcm9kdWN0IjtyOjEwNzQ7czoxNDoic2VhcmNoUHJvZHVjdHMiO3I6NTA4O3M6MjI6InVwZGF0ZUludmVudG9yeVByb2R1Y3QiO3I6MTEwNztzOjE4OiJpbmRleFByb2R1Y3RzU3RvY2siO3I6NTQyO3M6MTc6ImZpbmRQcm9kdWN0c1N0b2NrIjtyOjU3NjtzOjEyOiJpbmRleEZpbHRlcnMiO3I6NjE4O3M6OToiYWRkRmlsdGVyIjtyOjExNDg7czoxMjoidXBkYXRlRmlsdGVyIjtyOjEzNjQ7czoxMzoiZGVzdHJveUZpbHRlciI7cjoxNDkxO3M6MTM6InN0b3JlQ2F0ZWdvcnkiO3I6MTE4MTtzOjE0OiJ1cGRhdGVDYXRlZ29yeSI7cjoxNDA1O3M6MTM6ImluZGV4Q2F0ZWdvcnkiO3I6NjUyO3M6MTU6ImRlc3Ryb3lDYXRlZ29yeSI7cjoxNTMyO3M6MTg6InBheW1lbnRNZXJjYWRvUGFnbyI7cjoxMjE0O3M6MjE6ImNoZWNrTm90aWZpY2F0aW9uVXNlciI7cjoxMjQ3O3M6OToiZ2V0T3JkZXJzIjtyOjY4NjtzOjEyOiJnZXRBbGxPcmRlcnMiO3I6NzIwO31zOjEzOiIAKgBhY3Rpb25MaXN0IjthOjQyOntzOjQ4OiJMNVN3YWdnZXJcSHR0cFxDb250cm9sbGVyc1xTd2FnZ2VyQ29udHJvbGxlckBhcGkiO3I6NDtzOjQ5OiJMNVN3YWdnZXJcSHR0cFxDb250cm9sbGVyc1xTd2FnZ2VyQ29udHJvbGxlckBkb2NzIjtyOjM3O3M6NTU6Ikw1U3dhZ2dlclxIdHRwXENvbnRyb2xsZXJzXFN3YWdnZXJBc3NldENvbnRyb2xsZXJAaW5kZXgiO3I6ODM7czo1OToiTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAb2F1dGgyQ2FsbGJhY2siO3I6MTI0O3M6MzU6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU2VuZEVtYWlsIjtyOjE1NztzOjU0OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXFJlY292ZXJ5UGFzc3dvcmRBY3Rpb24iO3I6Nzc3O3M6NjQ6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcQ2hhbmdlUGFzc3dvcmRGcm9tUmVjb3ZlcnlBY3Rpb24iO3I6ODEwO3M6NDg6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcRW5hYmxlVXNlckFjdGlvbiI7cjoxOTA7czo0OToiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xEaXNhYmxlVXNlckFjdGlvbiI7cjoyMzU7czo0NjoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xTaG93VXNlckFjdGlvbiI7cjoyODA7czo0MjoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xBdXRoXExvZ2luQWN0aW9uIjtyOjg0MztzOjQ3OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEF1dGhcUmVuZXdUb2tlbkFjdGlvbiI7cjo4NzY7czo1ODoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcU3RvcmVXZWJDdXN0b21lckFjdGlvbiI7cjo5MDk7czo1MToiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xBdXRoXENoYW5nZVBhc3N3b3JkQWN0aW9uIjtyOjk0MjtzOjU1OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xTdG9yZUVtcGxveWVlQWN0aW9uIjtyOjk3NTtzOjU0OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xGaW5kRW1wbG95ZWVBY3Rpb24iO3I6MzIyO3M6NTU6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ3VzdG9tZXJzXFN0b3JlQ3VzdG9tZXJBY3Rpb24iO3I6MTAwODtzOjU0OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xGaW5kQ3VzdG9tZXJBY3Rpb24iO3I6MzU2O3M6NTY6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ3VzdG9tZXJzXFVwZGF0ZUN1c3RvbWVyQWN0aW9uIjtyOjEyODI7czo1NToiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcSW5kZXhDdXN0b21lckFjdGlvbiI7cjozOTg7czo0OToiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xBZG1pbnNcU3RvcmVBZG1pbkFjdGlvbiI7cjoxMDQxO3M6NTQ6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcVXBkYXRlUHJvZHVjdEFjdGlvbiI7cjoxMzIzO3M6NTI6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcRmluZFByb2R1Y3RBY3Rpb24iO3I6NDMyO3M6NTU6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcRGVzdHJveVByb2R1Y3RBY3Rpb24iO3I6MTQ1MDtzOjUzOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFN0b3JlUHJvZHVjdEFjdGlvbiI7cjoxMDc0O3M6NTU6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcU2VhcmNoUHJvZHVjdHNBY3Rpb24iO3I6NDc0O3M6NjI6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcU2VhcmNoUHJvZHVjdHNGb3JIb21lQWN0aW9uIjtyOjUwODtzOjUwOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFVwZGF0ZUludmVudG9yeSI7cjoxMTA3O3M6NDk6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcSW5kZXhQcm9kdWN0U3RvY2siO3I6NTQyO3M6NDg6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcRmluZFByb2R1Y3RTdG9jayI7cjo1NzY7czo1MjoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXEluZGV4RmlsdGVyc0FjdGlvbiI7cjo2MTg7czo1MjoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXFN0b3JlRmlsdGVyc0FjdGlvbiI7cjoxMTQ4O3M6NTM6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xVcGRhdGVGaWx0ZXJzQWN0aW9uIjtyOjEzNjQ7czo1MzoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXERlc3Ryb3lGaWx0ZXJBY3Rpb24iO3I6MTQ5MTtzOjU2OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcU3RvcmVDYXRlZ29yeUFjdGlvbiI7cjoxMTgxO3M6NTc6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xVcGRhdGVDYXRlZ29yeUFjdGlvbiI7cjoxNDA1O3M6NTY6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xJbmRleENhdGVnb3J5QWN0aW9uIjtyOjY1MjtzOjU4OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcRGVzdHJveUNhdGVnb3J5QWN0aW9uIjtyOjE1MzI7czo1MzoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQYXltZW50c1xNZXJjYWRvUGFnb0V4ZWN1dGUiO3I6MTIxNDtzOjYxOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXE5vdGlmaWNhdGlvbnNcQ2hlY2tOb3RpZmljYXRpb25Vc2VyIjtyOjEyNDc7czo1MDoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xPcmRlcnNcSW5kZXhPcmRlcnNBY3Rpb24iO3I6Njg2O3M6NTM6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcT3JkZXJzXEluZGV4QWxsT3JkZXJzQWN0aW9uIjtyOjcyMDt9fQ==')) + unserialize(base64_decode('TzozNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlQ29sbGVjdGlvbiI6NDp7czo5OiIAKgByb3V0ZXMiO2E6Nzp7czozOiJHRVQiO2E6MjE6e3M6MTc6ImFwaS9kb2N1bWVudGF0aW9uIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNzoiYXBpL2RvY3VtZW50YXRpb24iO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjI6ImFzIjtzOjE0OiJsNS1zd2FnZ2VyLmFwaSI7czoxMDoibWlkZGxld2FyZSI7YTowOnt9czo0OiJ1c2VzIjtzOjQ5OiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAYXBpIjtzOjEwOiJjb250cm9sbGVyIjtzOjQ5OiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAYXBpIjtzOjk6Im5hbWVzcGFjZSI7czo5OiJMNVN3YWdnZXIiO3M6NjoicHJlZml4IjtOO3M6NToid2hlcmUiO2E6MDp7fX1zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxODoiL2FwaS9kb2N1bWVudGF0aW9uIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjI1OiIjXi9hcGkvZG9jdW1lbnRhdGlvbiQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxODoiL2FwaS9kb2N1bWVudGF0aW9uIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE2OiJkb2NzL3tqc29uRmlsZT99IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNjoiZG9jcy97anNvbkZpbGU/fSI7czo3OiJtZXRob2RzIjthOjc6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7aToyO3M6NDoiUE9TVCI7aTozO3M6MzoiUFVUIjtpOjQ7czo1OiJQQVRDSCI7aTo1O3M6NjoiREVMRVRFIjtpOjY7czo3OiJPUFRJT05TIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoyOiJhcyI7czoxNToibDUtc3dhZ2dlci5kb2NzIjtzOjEwOiJtaWRkbGV3YXJlIjthOjA6e31zOjQ6InVzZXMiO3M6NTA6IlxMNVN3YWdnZXJcSHR0cFxDb250cm9sbGVyc1xTd2FnZ2VyQ29udHJvbGxlckBkb2NzIjtzOjEwOiJjb250cm9sbGVyIjtzOjUwOiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAZG9jcyI7czo5OiJuYW1lc3BhY2UiO3M6OToiTDVTd2FnZ2VyIjtzOjY6InByZWZpeCI7TjtzOjU6IndoZXJlIjthOjA6e319czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czo4OiJqc29uRmlsZSI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjU6Ii9kb2NzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM4OiIjXi9kb2NzKD86Lyg/UDxqc29uRmlsZT5bXi9dKyspKT8kI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6ODoianNvbkZpbGUiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjU6Ii9kb2NzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjg6Impzb25GaWxlIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxODoiZG9jcy9hc3NldC97YXNzZXR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxODoiZG9jcy9hc3NldC97YXNzZXR9IjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoyOiJhcyI7czoxNjoibDUtc3dhZ2dlci5hc3NldCI7czoxMDoibWlkZGxld2FyZSI7YTowOnt9czo0OiJ1c2VzIjtzOjU2OiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckFzc2V0Q29udHJvbGxlckBpbmRleCI7czoxMDoiY29udHJvbGxlciI7czo1NjoiXEw1U3dhZ2dlclxIdHRwXENvbnRyb2xsZXJzXFN3YWdnZXJBc3NldENvbnRyb2xsZXJAaW5kZXgiO3M6OToibmFtZXNwYWNlIjtzOjk6Ikw1U3dhZ2dlciI7czo2OiJwcmVmaXgiO047czo1OiJ3aGVyZSI7YTowOnt9fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6NToiYXNzZXQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMToiL2RvY3MvYXNzZXQiO3M6MTA6InBhdGhfcmVnZXgiO3M6MzY6IiNeL2RvY3MvYXNzZXQvKD9QPGFzc2V0PlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6NToiYXNzZXQiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjExOiIvZG9jcy9hc3NldCI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czo1OiJhc3NldCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTk6ImFwaS9vYXV0aDItY2FsbGJhY2siO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE5OiJhcGkvb2F1dGgyLWNhbGxiYWNrIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoyOiJhcyI7czoyNjoibDUtc3dhZ2dlci5vYXV0aDJfY2FsbGJhY2siO3M6MTA6Im1pZGRsZXdhcmUiO2E6MDp7fXM6NDoidXNlcyI7czo2MDoiXEw1U3dhZ2dlclxIdHRwXENvbnRyb2xsZXJzXFN3YWdnZXJDb250cm9sbGVyQG9hdXRoMkNhbGxiYWNrIjtzOjEwOiJjb250cm9sbGVyIjtzOjYwOiJcTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckNvbnRyb2xsZXJAb2F1dGgyQ2FsbGJhY2siO3M6OToibmFtZXNwYWNlIjtzOjk6Ikw1U3dhZ2dlciI7czo2OiJwcmVmaXgiO047czo1OiJ3aGVyZSI7YTowOnt9fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjIwOiIvYXBpL29hdXRoMi1jYWxsYmFjayI7czoxMDoicGF0aF9yZWdleCI7czoyODoiI14vYXBpL29hdXRoMlwtY2FsbGJhY2skI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MjA6Ii9hcGkvb2F1dGgyLWNhbGxiYWNrIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE0OiJhcGkvc2VuZF9lbWFpbCI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTQ6ImFwaS9zZW5kX2VtYWlsIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Njp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NDU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFNlbmRFbWFpbEBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czozNjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU2VuZEVtYWlsIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjM6ImFwaSI7czo1OiJ3aGVyZSI7YTowOnt9fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE1OiIvYXBpL3NlbmRfZW1haWwiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjI6IiNeL2FwaS9zZW5kX2VtYWlsJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE1OiIvYXBpL3NlbmRfZW1haWwiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MjE6ImFwaS91c2Vycy97aWR9L2VuYWJsZSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MjE6ImFwaS91c2Vycy97aWR9L2VuYWJsZSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjU4OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xFbmFibGVVc2VyQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjQ5OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xFbmFibGVVc2VyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjk6ImFwaS91c2VycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMDoiZW5hYmxlVXNlciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMDoiL2FwaS91c2VycyI7czoxMDoicGF0aF9yZWdleCI7czozOToiI14vYXBpL3VzZXJzLyg/UDxpZD5bXi9dKyspL2VuYWJsZSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YTozOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czo3OiIvZW5hYmxlIjt9aToxO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MjthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEwOiIvYXBpL3VzZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoyMjoiYXBpL3VzZXJzL3tpZH0vZGlzYWJsZSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MjI6ImFwaS91c2Vycy97aWR9L2Rpc2FibGUiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1OToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcRGlzYWJsZVVzZXJBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTA6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXERpc2FibGVVc2VyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjk6ImFwaS91c2VycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMToiZGlzYWJsZVVzZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTA6Ii9hcGkvdXNlcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6NDA6IiNeL2FwaS91c2Vycy8oP1A8aWQ+W14vXSsrKS9kaXNhYmxlJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjM6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjg6Ii9kaXNhYmxlIjt9aToxO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MjthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEwOiIvYXBpL3VzZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNDoiYXBpL3VzZXJzL3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE0OiJhcGkvdXNlcnMve2lkfSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjU2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xTaG93VXNlckFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo0NzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcU2hvd1VzZXJBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6OToiYXBpL3VzZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjExOiJzaG93T25lVXNlciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMDoiL2FwaS91c2VycyI7czoxMDoicGF0aF9yZWdleCI7czozMjoiI14vYXBpL3VzZXJzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMDoiL2FwaS91c2VycyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTM6ImFwaS9lbXBsb3llZXMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEzOiJhcGkvZW1wbG95ZWVzIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xGaW5kRW1wbG95ZWVBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xGaW5kRW1wbG95ZWVBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTM6ImFwaS9lbXBsb3llZXMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTI6Imxpc3RFbXBsb3llZSI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE0OiIvYXBpL2VtcGxveWVlcyI7czoxMDoicGF0aF9yZWdleCI7czoyMToiI14vYXBpL2VtcGxveWVlcyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9lbXBsb3llZXMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTg6ImFwaS9jdXN0b21lcnMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTg6ImFwaS9jdXN0b21lcnMve2lkfSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY0OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcRmluZEN1c3RvbWVyQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU1OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcRmluZEN1c3RvbWVyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEzOiJhcGkvY3VzdG9tZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjEyOiJmaW5kQ3VzdG9tZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTQ6Ii9hcGkvY3VzdG9tZXJzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM2OiIjXi9hcGkvY3VzdG9tZXJzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9jdXN0b21lcnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjEzOiJhcGkvY3VzdG9tZXJzIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxMzoiYXBpL2N1c3RvbWVycyI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY1OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcSW5kZXhDdXN0b21lckFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ3VzdG9tZXJzXEluZGV4Q3VzdG9tZXJBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTM6ImFwaS9jdXN0b21lcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTM6Imxpc3RDdXN0b21lcnMiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNDoiL2FwaS9jdXN0b21lcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjE6IiNeL2FwaS9jdXN0b21lcnMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTQ6Ii9hcGkvY3VzdG9tZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE5OiJhcGkvcHJvZHVjdHMve3V1aWR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxOToiYXBpL3Byb2R1Y3RzL3t1dWlkfSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjYyOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xGaW5kUHJvZHVjdEFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1MzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcRmluZFByb2R1Y3RBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTI6ImFwaS9wcm9kdWN0cyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMToiZmluZFByb2R1Y3QiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjQ6InV1aWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMzoiL2FwaS9wcm9kdWN0cyI7czoxMDoicGF0aF9yZWdleCI7czozNzoiI14vYXBpL3Byb2R1Y3RzLyg/UDx1dWlkPlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6NDoidXVpZCI7aTo0O2I6MTt9aToxO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTM6Ii9hcGkvcHJvZHVjdHMiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6NDoidXVpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTA6ImFwaS9zZWFyY2giO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEwOiJhcGkvc2VhcmNoIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFNlYXJjaFByb2R1Y3RzQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xTZWFyY2hQcm9kdWN0c0FjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMDoiYXBpL3NlYXJjaCI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNDoic2VhcmNoUHJvZHVjdHMiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxMToiL2FwaS9zZWFyY2giO3M6MTA6InBhdGhfcmVnZXgiO3M6MTg6IiNeL2FwaS9zZWFyY2gkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTE6Ii9hcGkvc2VhcmNoIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE1OiJhcGkvc2VhcmNoL2hvbWUiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE1OiJhcGkvc2VhcmNoL2hvbWUiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo3MjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcU2VhcmNoUHJvZHVjdHNGb3JIb21lQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjYzOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xTZWFyY2hQcm9kdWN0c0ZvckhvbWVBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTA6ImFwaS9zZWFyY2giO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTQ6InNlYXJjaFByb2R1Y3RzIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTY6Ii9hcGkvc2VhcmNoL2hvbWUiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjM6IiNeL2FwaS9zZWFyY2gvaG9tZSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNjoiL2FwaS9zZWFyY2gvaG9tZSI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxMzoiYXBpL2ludmVudG9yeSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTM6ImFwaS9pbnZlbnRvcnkiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1OToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcSW5kZXhQcm9kdWN0U3RvY2tAX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTA6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFN0b2NrXEluZGV4UHJvZHVjdFN0b2NrIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEzOiJhcGkvaW52ZW50b3J5IjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE4OiJpbmRleFByb2R1Y3RzU3RvY2siO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNDoiL2FwaS9pbnZlbnRvcnkiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjE6IiNeL2FwaS9pbnZlbnRvcnkkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTQ6Ii9hcGkvaW52ZW50b3J5Ijt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE4OiJhcGkvaW52ZW50b3J5L3tpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE4OiJhcGkvaW52ZW50b3J5L3tpZH0iO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1ODoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcRmluZFByb2R1Y3RTdG9ja0BfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo0OToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcRmluZFByb2R1Y3RTdG9jayI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMzoiYXBpL2ludmVudG9yeSI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNzoiZmluZFByb2R1Y3RzU3RvY2siO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTQ6Ii9hcGkvaW52ZW50b3J5IjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM2OiIjXi9hcGkvaW52ZW50b3J5Lyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9pbnZlbnRvcnkiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjExOiJhcGkvZmlsdGVycyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTE6ImFwaS9maWx0ZXJzIjtzOjc6Im1ldGhvZHMiO2E6Mjp7aTowO3M6MzoiR0VUIjtpOjE7czo0OiJIRUFEIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjI6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEZpbHRlcnNcSW5kZXhGaWx0ZXJzQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjUzOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXEluZGV4RmlsdGVyc0FjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMToiYXBpL2ZpbHRlcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTI6ImluZGV4RmlsdGVycyI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjEyOiIvYXBpL2ZpbHRlcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MTk6IiNeL2FwaS9maWx0ZXJzJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEyOiIvYXBpL2ZpbHRlcnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTQ6ImFwaS9jYXRlZ29yaWVzIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNDoiYXBpL2NhdGVnb3JpZXMiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2NjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xJbmRleENhdGVnb3J5QWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU3OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDYXRlZ29yaWVzXEluZGV4Q2F0ZWdvcnlBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTQ6ImFwaS9jYXRlZ29yaWVzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjEzOiJpbmRleENhdGVnb3J5Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTU6Ii9hcGkvY2F0ZWdvcmllcyI7czoxMDoicGF0aF9yZWdleCI7czoyMjoiI14vYXBpL2NhdGVnb3JpZXMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTU6Ii9hcGkvY2F0ZWdvcmllcyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxMDoiYXBpL29yZGVycyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTA6ImFwaS9vcmRlcnMiO3M6NzoibWV0aG9kcyI7YToyOntpOjA7czozOiJHRVQiO2k6MTtzOjQ6IkhFQUQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2MDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcT3JkZXJzXEluZGV4T3JkZXJzQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjUxOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xPcmRlcnNcSW5kZXhPcmRlcnNBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTA6ImFwaS9vcmRlcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6OToiZ2V0T3JkZXJzIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTE6Ii9hcGkvb3JkZXJzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjE4OiIjXi9hcGkvb3JkZXJzJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjExOiIvYXBpL29yZGVycyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNDoiYXBpL29yZGVycy9hbGwiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE0OiJhcGkvb3JkZXJzL2FsbCI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjYzOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xPcmRlcnNcSW5kZXhBbGxPcmRlcnNBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTQ6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXE9yZGVyc1xJbmRleEFsbE9yZGVyc0FjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMDoiYXBpL29yZGVycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMjoiZ2V0QWxsT3JkZXJzIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTU6Ii9hcGkvb3JkZXJzL2FsbCI7czoxMDoicGF0aF9yZWdleCI7czoyMjoiI14vYXBpL29yZGVycy9hbGwkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTU6Ii9hcGkvb3JkZXJzL2FsbCI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNzoiYXBpL29yZGVycy97dXVpZH0iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE3OiJhcGkvb3JkZXJzL3t1dWlkfSI7czo3OiJtZXRob2RzIjthOjI6e2k6MDtzOjM6IkdFVCI7aToxO3M6NDoiSEVBRCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY0OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xPcmRlcnNcRmluZE9yZGVyQnlVdWlkQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU1OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xPcmRlcnNcRmluZE9yZGVyQnlVdWlkQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEwOiJhcGkvb3JkZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE1OiJmaW5kT3JkZXJCeVV1aWQiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjQ6InV1aWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxMToiL2FwaS9vcmRlcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MzU6IiNeL2FwaS9vcmRlcnMvKD9QPHV1aWQ+W14vXSsrKSQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToyOntpOjA7YTo1OntpOjA7czo4OiJ2YXJpYWJsZSI7aToxO3M6MToiLyI7aToyO3M6NjoiW14vXSsrIjtpOjM7czo0OiJ1dWlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMToiL2FwaS9vcmRlcnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6NDoidXVpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fX1zOjQ6IkhFQUQiO2E6MjE6e3M6MTc6ImFwaS9kb2N1bWVudGF0aW9uIjtyOjQ7czoxNjoiZG9jcy97anNvbkZpbGU/fSI7cjozNztzOjE4OiJkb2NzL2Fzc2V0L3thc3NldH0iO3I6ODM7czoxOToiYXBpL29hdXRoMi1jYWxsYmFjayI7cjoxMjQ7czoxNDoiYXBpL3NlbmRfZW1haWwiO3I6MTU3O3M6MjE6ImFwaS91c2Vycy97aWR9L2VuYWJsZSI7cjoxOTA7czoyMjoiYXBpL3VzZXJzL3tpZH0vZGlzYWJsZSI7cjoyMzU7czoxNDoiYXBpL3VzZXJzL3tpZH0iO3I6MjgwO3M6MTM6ImFwaS9lbXBsb3llZXMiO3I6MzIyO3M6MTg6ImFwaS9jdXN0b21lcnMve2lkfSI7cjozNTY7czoxMzoiYXBpL2N1c3RvbWVycyI7cjozOTg7czoxOToiYXBpL3Byb2R1Y3RzL3t1dWlkfSI7cjo0MzI7czoxMDoiYXBpL3NlYXJjaCI7cjo0NzQ7czoxNToiYXBpL3NlYXJjaC9ob21lIjtyOjUwODtzOjEzOiJhcGkvaW52ZW50b3J5IjtyOjU0MjtzOjE4OiJhcGkvaW52ZW50b3J5L3tpZH0iO3I6NTc2O3M6MTE6ImFwaS9maWx0ZXJzIjtyOjYxODtzOjE0OiJhcGkvY2F0ZWdvcmllcyI7cjo2NTI7czoxMDoiYXBpL29yZGVycyI7cjo2ODY7czoxNDoiYXBpL29yZGVycy9hbGwiO3I6NzIwO3M6MTc6ImFwaS9vcmRlcnMve3V1aWR9IjtyOjc1NDt9czo0OiJQT1NUIjthOjE2OntzOjE2OiJkb2NzL3tqc29uRmlsZT99IjtyOjM3O3M6MTg6ImFwaS91c2Vycy9yZWNvdmVyeSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTg6ImFwaS91c2Vycy9yZWNvdmVyeSI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2NDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcUmVjb3ZlcnlQYXNzd29yZEFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcUmVjb3ZlcnlQYXNzd29yZEFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czo5OiJhcGkvdXNlcnMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTY6InJlY292ZXJ5UGFzc3dvcmQiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxOToiL2FwaS91c2Vycy9yZWNvdmVyeSI7czoxMDoicGF0aF9yZWdleCI7czoyNjoiI14vYXBpL3VzZXJzL3JlY292ZXJ5JCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE5OiIvYXBpL3VzZXJzL3JlY292ZXJ5Ijt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE2OiJhcGkvdXNlcnMvZm9yZ290IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNjoiYXBpL3VzZXJzL2ZvcmdvdCI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo3NDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcQ2hhbmdlUGFzc3dvcmRGcm9tUmVjb3ZlcnlBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NjU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXENoYW5nZVBhc3N3b3JkRnJvbVJlY292ZXJ5QWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjk6ImFwaS91c2VycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoyNjoiY2hhbmdlUGFzc3dvcmRGcm9tUmVjb3ZlcnkiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNzoiL2FwaS91c2Vycy9mb3Jnb3QiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjQ6IiNeL2FwaS91c2Vycy9mb3Jnb3QkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTc6Ii9hcGkvdXNlcnMvZm9yZ290Ijt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE0OiJhcGkvYXV0aC9sb2dpbiI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTQ6ImFwaS9hdXRoL2xvZ2luIjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjUyOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xBdXRoXExvZ2luQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjQzOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xBdXRoXExvZ2luQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjg6ImFwaS9hdXRoIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjU6ImxvZ2luIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTU6Ii9hcGkvYXV0aC9sb2dpbiI7czoxMDoicGF0aF9yZWdleCI7czoyMjoiI14vYXBpL2F1dGgvbG9naW4kI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTU6Ii9hcGkvYXV0aC9sb2dpbiI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoyMDoiYXBpL2F1dGgvcmVuZXctdG9rZW4iO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjIwOiJhcGkvYXV0aC9yZW5ldy10b2tlbiI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1NzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQXV0aFxSZW5ld1Rva2VuQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjQ4OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xBdXRoXFJlbmV3VG9rZW5BY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6ODoiYXBpL2F1dGgiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTE6InJlbmV3LXRva2VuIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MjE6Ii9hcGkvYXV0aC9yZW5ldy10b2tlbiI7czoxMDoicGF0aF9yZWdleCI7czoyOToiI14vYXBpL2F1dGgvcmVuZXdcLXRva2VuJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjIxOiIvYXBpL2F1dGgvcmVuZXctdG9rZW4iO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTU6ImFwaS9hdXRoL3NpZ251cCI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTU6ImFwaS9hdXRoL3NpZ251cCI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2ODoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ3VzdG9tZXJzXFN0b3JlV2ViQ3VzdG9tZXJBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTk6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xTdG9yZVdlYkN1c3RvbWVyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjg6ImFwaS9hdXRoIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE3OiJjcmVhdGVXZWJDdXN0b21lciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE2OiIvYXBpL2F1dGgvc2lnbnVwIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjIzOiIjXi9hcGkvYXV0aC9zaWdudXAkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTY6Ii9hcGkvYXV0aC9zaWdudXAiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MjQ6ImFwaS9hdXRoL2NoYW5nZS1wYXNzd29yZCI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MjQ6ImFwaS9hdXRoL2NoYW5nZS1wYXNzd29yZCI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2MToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQXV0aFxDaGFuZ2VQYXNzd29yZEFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1MjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQXV0aFxDaGFuZ2VQYXNzd29yZEFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czo4OiJhcGkvYXV0aCI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNToiY2hhbmdlLXBhc3N3b3JkIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MjU6Ii9hcGkvYXV0aC9jaGFuZ2UtcGFzc3dvcmQiO3M6MTA6InBhdGhfcmVnZXgiO3M6MzM6IiNeL2FwaS9hdXRoL2NoYW5nZVwtcGFzc3dvcmQkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MjU6Ii9hcGkvYXV0aC9jaGFuZ2UtcGFzc3dvcmQiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTM6ImFwaS9lbXBsb3llZXMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjEzOiJhcGkvZW1wbG95ZWVzIjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY1OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xFbXBsb3llZXNcU3RvcmVFbXBsb3llZUFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NjoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRW1wbG95ZWVzXFN0b3JlRW1wbG95ZWVBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTM6ImFwaS9lbXBsb3llZXMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTQ6ImNyZWF0ZUVtcGxveWVlIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTQ6Ii9hcGkvZW1wbG95ZWVzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjIxOiIjXi9hcGkvZW1wbG95ZWVzJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE0OiIvYXBpL2VtcGxveWVlcyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxMzoiYXBpL2N1c3RvbWVycyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTM6ImFwaS9jdXN0b21lcnMiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjU6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xTdG9yZUN1c3RvbWVyQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU2OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcU3RvcmVDdXN0b21lckFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMzoiYXBpL2N1c3RvbWVycyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNDoiY3JlYXRlQ3VzdG9tZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjA6e31zOjExOiJwYXRoX3ByZWZpeCI7czoxNDoiL2FwaS9jdXN0b21lcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjE6IiNeL2FwaS9jdXN0b21lcnMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTQ6Ii9hcGkvY3VzdG9tZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjA6e31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjEwOiJhcGkvYWRtaW5zIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxMDoiYXBpL2FkbWlucyI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo1OToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQWRtaW5zXFN0b3JlQWRtaW5BY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTA6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEFkbWluc1xTdG9yZUFkbWluQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEwOiJhcGkvYWRtaW5zIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjExOiJjcmVhdGVBZG1pbiI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjExOiIvYXBpL2FkbWlucyI7czoxMDoicGF0aF9yZWdleCI7czoxODoiI14vYXBpL2FkbWlucyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMToiL2FwaS9hZG1pbnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTI6ImFwaS9wcm9kdWN0cyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTI6ImFwaS9wcm9kdWN0cyI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2MzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcU3RvcmVQcm9kdWN0QWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU0OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xTdG9yZVByb2R1Y3RBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTI6ImFwaS9wcm9kdWN0cyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMzoiY3JlYXRlUHJvZHVjdCI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjEzOiIvYXBpL3Byb2R1Y3RzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjIwOiIjXi9hcGkvcHJvZHVjdHMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTM6Ii9hcGkvcHJvZHVjdHMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTg6ImFwaS9pbnZlbnRvcnkve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTg6ImFwaS9pbnZlbnRvcnkve2lkfSI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2MDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcVXBkYXRlSW52ZW50b3J5QF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjUxOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQcm9kdWN0c1xVcGRhdGVJbnZlbnRvcnkiO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTM6ImFwaS9pbnZlbnRvcnkiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MjI6InVwZGF0ZUludmVudG9yeVByb2R1Y3QiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTQ6Ii9hcGkvaW52ZW50b3J5IjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM2OiIjXi9hcGkvaW52ZW50b3J5Lyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNDoiL2FwaS9pbnZlbnRvcnkiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjExOiJhcGkvZmlsdGVycyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTE6ImFwaS9maWx0ZXJzIjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6NDoiUE9TVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjYyOiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXFN0b3JlRmlsdGVyc0FjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1MzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xTdG9yZUZpbHRlcnNBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTE6ImFwaS9maWx0ZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjk6ImFkZEZpbHRlciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjEyOiIvYXBpL2ZpbHRlcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MTk6IiNeL2FwaS9maWx0ZXJzJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEyOiIvYXBpL2ZpbHRlcnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTQ6ImFwaS9jYXRlZ29yaWVzIjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNDoiYXBpL2NhdGVnb3JpZXMiO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo0OiJQT1NUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjY6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcU3RvcmVDYXRlZ29yeUFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xTdG9yZUNhdGVnb3J5QWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjE0OiJhcGkvY2F0ZWdvcmllcyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxMzoic3RvcmVDYXRlZ29yeSI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MDp7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE1OiIvYXBpL2NhdGVnb3JpZXMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MjI6IiNeL2FwaS9jYXRlZ29yaWVzJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjE6e2k6MDthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE1OiIvYXBpL2NhdGVnb3JpZXMiO319czo5OiJwYXRoX3ZhcnMiO2E6MDp7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MjQ6ImFwaS9wYXltZW50cy9tZXJjYWRvcGFnbyI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MjQ6ImFwaS9wYXltZW50cy9tZXJjYWRvcGFnbyI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2MzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUGF5bWVudHNcTWVyY2Fkb1BhZ29FeGVjdXRlQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU0OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQYXltZW50c1xNZXJjYWRvUGFnb0V4ZWN1dGUiO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTI6ImFwaS9wYXltZW50cyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxODoicGF5bWVudE1lcmNhZG9QYWdvIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MjU6Ii9hcGkvcGF5bWVudHMvbWVyY2Fkb3BhZ28iO3M6MTA6InBhdGhfcmVnZXgiO3M6MzI6IiNeL2FwaS9wYXltZW50cy9tZXJjYWRvcGFnbyQjc0R1IjtzOjExOiJwYXRoX3Rva2VucyI7YToxOntpOjA7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoyNToiL2FwaS9wYXltZW50cy9tZXJjYWRvcGFnbyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNzoiYXBpL25vdGlmaWNhdGlvbnMiO086MjQ6IklsbHVtaW5hdGVcUm91dGluZ1xSb3V0ZSI6MTI6e3M6MzoidXJpIjtzOjE3OiJhcGkvbm90aWZpY2F0aW9ucyI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjQ6IlBPU1QiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo3MToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcTm90aWZpY2F0aW9uc1xDaGVja05vdGlmaWNhdGlvblVzZXJAX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NjI6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXE5vdGlmaWNhdGlvbnNcQ2hlY2tOb3RpZmljYXRpb25Vc2VyIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjE3OiJhcGkvbm90aWZpY2F0aW9ucyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoyMToiY2hlY2tOb3RpZmljYXRpb25Vc2VyIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YTowOnt9czoxMToicGF0aF9wcmVmaXgiO3M6MTg6Ii9hcGkvbm90aWZpY2F0aW9ucyI7czoxMDoicGF0aF9yZWdleCI7czoyNToiI14vYXBpL25vdGlmaWNhdGlvbnMkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6MTp7aTowO2E6Mjp7aTowO3M6NDoidGV4dCI7aToxO3M6MTg6Ii9hcGkvbm90aWZpY2F0aW9ucyI7fX1zOjk6InBhdGhfdmFycyI7YTowOnt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19fXM6MzoiUFVUIjthOjU6e3M6MTY6ImRvY3Mve2pzb25GaWxlP30iO3I6Mzc7czoxODoiYXBpL2N1c3RvbWVycy97aWR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxODoiYXBpL2N1c3RvbWVycy97aWR9IjtzOjc6Im1ldGhvZHMiO2E6MTp7aTowO3M6MzoiUFVUIjt9czo2OiJhY3Rpb24iO2E6Nzp7czoxMDoibWlkZGxld2FyZSI7YToxOntpOjA7czozOiJhcGkiO31zOjQ6InVzZXMiO3M6NjY6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xVcGRhdGVDdXN0b21lckFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ3VzdG9tZXJzXFVwZGF0ZUN1c3RvbWVyQWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEzOiJhcGkvY3VzdG9tZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjE0OiJ1cGRhdGVDdXN0b21lciI7fXM6MTA6ImlzRmFsbGJhY2siO2I6MDtzOjEwOiJjb250cm9sbGVyIjtOO3M6ODoiZGVmYXVsdHMiO2E6MDp7fXM6Njoid2hlcmVzIjthOjA6e31zOjEwOiJwYXJhbWV0ZXJzIjtOO3M6MTQ6InBhcmFtZXRlck5hbWVzIjtOO3M6MjE6IgAqAG9yaWdpbmFsUGFyYW1ldGVycyI7TjtzOjE4OiJjb21wdXRlZE1pZGRsZXdhcmUiO047czo4OiJjb21waWxlZCI7TzozOToiU3ltZm9ueVxDb21wb25lbnRcUm91dGluZ1xDb21waWxlZFJvdXRlIjo4OntzOjQ6InZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjExOiJwYXRoX3ByZWZpeCI7czoxNDoiL2FwaS9jdXN0b21lcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MzY6IiNeL2FwaS9jdXN0b21lcnMvKD9QPGlkPlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE0OiIvYXBpL2N1c3RvbWVycyI7fX1zOjk6InBhdGhfdmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTA6Imhvc3RfcmVnZXgiO047czoxMToiaG9zdF90b2tlbnMiO2E6MDp7fXM6OToiaG9zdF92YXJzIjthOjA6e319fXM6MTc6ImFwaS9wcm9kdWN0cy97aWR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNzoiYXBpL3Byb2R1Y3RzL3tpZH0iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czozOiJQVVQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2NDoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcVXBkYXRlUHJvZHVjdEFjdGlvbkBfX2ludm9rZSI7czoxMDoiY29udHJvbGxlciI7czo1NToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcVXBkYXRlUHJvZHVjdEFjdGlvbiI7czo5OiJuYW1lc3BhY2UiO3M6MDoiIjtzOjY6InByZWZpeCI7czoxMjoiYXBpL3Byb2R1Y3RzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjEzOiJ1cGRhdGVQcm9kdWN0Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjEzOiIvYXBpL3Byb2R1Y3RzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM1OiIjXi9hcGkvcHJvZHVjdHMvKD9QPGlkPlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEzOiIvYXBpL3Byb2R1Y3RzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNjoiYXBpL2ZpbHRlcnMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTY6ImFwaS9maWx0ZXJzL3tpZH0iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czozOiJQVVQiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2MzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xVcGRhdGVGaWx0ZXJzQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU0OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXFVwZGF0ZUZpbHRlcnNBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTE6ImFwaS9maWx0ZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjEyOiJ1cGRhdGVGaWx0ZXIiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTI6Ii9hcGkvZmlsdGVycyI7czoxMDoicGF0aF9yZWdleCI7czozNDoiI14vYXBpL2ZpbHRlcnMvKD9QPGlkPlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEyOiIvYXBpL2ZpbHRlcnMiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX1zOjE5OiJhcGkvY2F0ZWdvcmllcy97aWR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxOToiYXBpL2NhdGVnb3JpZXMve2lkfSI7czo3OiJtZXRob2RzIjthOjE6e2k6MDtzOjM6IlBVVCI7fXM6NjoiYWN0aW9uIjthOjc6e3M6MTA6Im1pZGRsZXdhcmUiO2E6MTp7aTowO3M6MzoiYXBpIjt9czo0OiJ1c2VzIjtzOjY3OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDYXRlZ29yaWVzXFVwZGF0ZUNhdGVnb3J5QWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU4OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDYXRlZ29yaWVzXFVwZGF0ZUNhdGVnb3J5QWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjE0OiJhcGkvY2F0ZWdvcmllcyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNDoidXBkYXRlQ2F0ZWdvcnkiO31zOjEwOiJpc0ZhbGxiYWNrIjtiOjA7czoxMDoiY29udHJvbGxlciI7TjtzOjg6ImRlZmF1bHRzIjthOjA6e31zOjY6IndoZXJlcyI7YTowOnt9czoxMDoicGFyYW1ldGVycyI7TjtzOjE0OiJwYXJhbWV0ZXJOYW1lcyI7TjtzOjIxOiIAKgBvcmlnaW5hbFBhcmFtZXRlcnMiO047czoxODoiY29tcHV0ZWRNaWRkbGV3YXJlIjtOO3M6ODoiY29tcGlsZWQiO086Mzk6IlN5bWZvbnlcQ29tcG9uZW50XFJvdXRpbmdcQ29tcGlsZWRSb3V0ZSI6ODp7czo0OiJ2YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMToicGF0aF9wcmVmaXgiO3M6MTU6Ii9hcGkvY2F0ZWdvcmllcyI7czoxMDoicGF0aF9yZWdleCI7czozNzoiI14vYXBpL2NhdGVnb3JpZXMvKD9QPGlkPlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjE1OiIvYXBpL2NhdGVnb3JpZXMiO319czo5OiJwYXRoX3ZhcnMiO2E6MTp7aTowO3M6MjoiaWQiO31zOjEwOiJob3N0X3JlZ2V4IjtOO3M6MTE6Imhvc3RfdG9rZW5zIjthOjA6e31zOjk6Imhvc3RfdmFycyI7YTowOnt9fX19czo1OiJQQVRDSCI7YToxOntzOjE2OiJkb2NzL3tqc29uRmlsZT99IjtyOjM3O31zOjY6IkRFTEVURSI7YTo0OntzOjE2OiJkb2NzL3tqc29uRmlsZT99IjtyOjM3O3M6MTc6ImFwaS9wcm9kdWN0cy97aWR9IjtPOjI0OiJJbGx1bWluYXRlXFJvdXRpbmdcUm91dGUiOjEyOntzOjM6InVyaSI7czoxNzoiYXBpL3Byb2R1Y3RzL3tpZH0iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo2OiJERUxFVEUiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2NToiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcRGVzdHJveVByb2R1Y3RBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTY6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXERlc3Ryb3lQcm9kdWN0QWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjEyOiJhcGkvcHJvZHVjdHMiO3M6NToid2hlcmUiO2E6MDp7fXM6MjoiYXMiO3M6MTQ6ImRlc3Ryb3lQcm9kdWN0Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjEzOiIvYXBpL3Byb2R1Y3RzIjtzOjEwOiJwYXRoX3JlZ2V4IjtzOjM1OiIjXi9hcGkvcHJvZHVjdHMvKD9QPGlkPlteL10rKykkI3NEdSI7czoxMToicGF0aF90b2tlbnMiO2E6Mjp7aTowO2E6NTp7aTowO3M6ODoidmFyaWFibGUiO2k6MTtzOjE6Ii8iO2k6MjtzOjY6IlteL10rKyI7aTozO3M6MjoiaWQiO2k6NDtiOjE7fWk6MTthOjI6e2k6MDtzOjQ6InRleHQiO2k6MTtzOjEzOiIvYXBpL3Byb2R1Y3RzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxNjoiYXBpL2ZpbHRlcnMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTY6ImFwaS9maWx0ZXJzL3tpZH0iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo2OiJERUxFVEUiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2MzoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xEZXN0cm95RmlsdGVyQWN0aW9uQF9faW52b2tlIjtzOjEwOiJjb250cm9sbGVyIjtzOjU0OiJcUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXERlc3Ryb3lGaWx0ZXJBY3Rpb24iO3M6OToibmFtZXNwYWNlIjtzOjA6IiI7czo2OiJwcmVmaXgiO3M6MTE6ImFwaS9maWx0ZXJzIjtzOjU6IndoZXJlIjthOjA6e31zOjI6ImFzIjtzOjEzOiJkZXN0cm95RmlsdGVyIjt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjEyOiIvYXBpL2ZpbHRlcnMiO3M6MTA6InBhdGhfcmVnZXgiO3M6MzQ6IiNeL2FwaS9maWx0ZXJzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxMjoiL2FwaS9maWx0ZXJzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19czoxOToiYXBpL2NhdGVnb3JpZXMve2lkfSI7TzoyNDoiSWxsdW1pbmF0ZVxSb3V0aW5nXFJvdXRlIjoxMjp7czozOiJ1cmkiO3M6MTk6ImFwaS9jYXRlZ29yaWVzL3tpZH0iO3M6NzoibWV0aG9kcyI7YToxOntpOjA7czo2OiJERUxFVEUiO31zOjY6ImFjdGlvbiI7YTo3OntzOjEwOiJtaWRkbGV3YXJlIjthOjE6e2k6MDtzOjM6ImFwaSI7fXM6NDoidXNlcyI7czo2ODoiXFByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xEZXN0cm95Q2F0ZWdvcnlBY3Rpb25AX19pbnZva2UiO3M6MTA6ImNvbnRyb2xsZXIiO3M6NTk6IlxQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcRGVzdHJveUNhdGVnb3J5QWN0aW9uIjtzOjk6Im5hbWVzcGFjZSI7czowOiIiO3M6NjoicHJlZml4IjtzOjE0OiJhcGkvY2F0ZWdvcmllcyI7czo1OiJ3aGVyZSI7YTowOnt9czoyOiJhcyI7czoxNToiZGVzdHJveUNhdGVnb3J5Ijt9czoxMDoiaXNGYWxsYmFjayI7YjowO3M6MTA6ImNvbnRyb2xsZXIiO047czo4OiJkZWZhdWx0cyI7YTowOnt9czo2OiJ3aGVyZXMiO2E6MDp7fXM6MTA6InBhcmFtZXRlcnMiO047czoxNDoicGFyYW1ldGVyTmFtZXMiO047czoyMToiACoAb3JpZ2luYWxQYXJhbWV0ZXJzIjtOO3M6MTg6ImNvbXB1dGVkTWlkZGxld2FyZSI7TjtzOjg6ImNvbXBpbGVkIjtPOjM5OiJTeW1mb255XENvbXBvbmVudFxSb3V0aW5nXENvbXBpbGVkUm91dGUiOjg6e3M6NDoidmFycyI7YToxOntpOjA7czoyOiJpZCI7fXM6MTE6InBhdGhfcHJlZml4IjtzOjE1OiIvYXBpL2NhdGVnb3JpZXMiO3M6MTA6InBhdGhfcmVnZXgiO3M6Mzc6IiNeL2FwaS9jYXRlZ29yaWVzLyg/UDxpZD5bXi9dKyspJCNzRHUiO3M6MTE6InBhdGhfdG9rZW5zIjthOjI6e2k6MDthOjU6e2k6MDtzOjg6InZhcmlhYmxlIjtpOjE7czoxOiIvIjtpOjI7czo2OiJbXi9dKysiO2k6MztzOjI6ImlkIjtpOjQ7YjoxO31pOjE7YToyOntpOjA7czo0OiJ0ZXh0IjtpOjE7czoxNToiL2FwaS9jYXRlZ29yaWVzIjt9fXM6OToicGF0aF92YXJzIjthOjE6e2k6MDtzOjI6ImlkIjt9czoxMDoiaG9zdF9yZWdleCI7TjtzOjExOiJob3N0X3Rva2VucyI7YTowOnt9czo5OiJob3N0X3ZhcnMiO2E6MDp7fX19fXM6NzoiT1BUSU9OUyI7YToxOntzOjE2OiJkb2NzL3tqc29uRmlsZT99IjtyOjM3O319czoxMjoiACoAYWxsUm91dGVzIjthOjQzOntzOjIxOiJIRUFEYXBpL2RvY3VtZW50YXRpb24iO3I6NDtzOjIzOiJPUFRJT05TZG9jcy97anNvbkZpbGU/fSI7cjozNztzOjIyOiJIRUFEZG9jcy9hc3NldC97YXNzZXR9IjtyOjgzO3M6MjM6IkhFQURhcGkvb2F1dGgyLWNhbGxiYWNrIjtyOjEyNDtzOjE4OiJIRUFEYXBpL3NlbmRfZW1haWwiO3I6MTU3O3M6MjI6IlBPU1RhcGkvdXNlcnMvcmVjb3ZlcnkiO3I6ODIwO3M6MjA6IlBPU1RhcGkvdXNlcnMvZm9yZ290IjtyOjg1MztzOjI1OiJIRUFEYXBpL3VzZXJzL3tpZH0vZW5hYmxlIjtyOjE5MDtzOjI2OiJIRUFEYXBpL3VzZXJzL3tpZH0vZGlzYWJsZSI7cjoyMzU7czoxODoiSEVBRGFwaS91c2Vycy97aWR9IjtyOjI4MDtzOjE4OiJQT1NUYXBpL2F1dGgvbG9naW4iO3I6ODg2O3M6MjQ6IlBPU1RhcGkvYXV0aC9yZW5ldy10b2tlbiI7cjo5MTk7czoxOToiUE9TVGFwaS9hdXRoL3NpZ251cCI7cjo5NTI7czoyODoiUE9TVGFwaS9hdXRoL2NoYW5nZS1wYXNzd29yZCI7cjo5ODU7czoxNzoiUE9TVGFwaS9lbXBsb3llZXMiO3I6MTAxODtzOjE3OiJIRUFEYXBpL2VtcGxveWVlcyI7cjozMjI7czoxNzoiUE9TVGFwaS9jdXN0b21lcnMiO3I6MTA1MTtzOjIyOiJIRUFEYXBpL2N1c3RvbWVycy97aWR9IjtyOjM1NjtzOjIxOiJQVVRhcGkvY3VzdG9tZXJzL3tpZH0iO3I6MTMyNTtzOjE3OiJIRUFEYXBpL2N1c3RvbWVycyI7cjozOTg7czoxNDoiUE9TVGFwaS9hZG1pbnMiO3I6MTA4NDtzOjIwOiJQVVRhcGkvcHJvZHVjdHMve2lkfSI7cjoxMzY2O3M6MjM6IkhFQURhcGkvcHJvZHVjdHMve3V1aWR9IjtyOjQzMjtzOjIzOiJERUxFVEVhcGkvcHJvZHVjdHMve2lkfSI7cjoxNDkzO3M6MTY6IlBPU1RhcGkvcHJvZHVjdHMiO3I6MTExNztzOjE0OiJIRUFEYXBpL3NlYXJjaCI7cjo0NzQ7czoxOToiSEVBRGFwaS9zZWFyY2gvaG9tZSI7cjo1MDg7czoyMjoiUE9TVGFwaS9pbnZlbnRvcnkve2lkfSI7cjoxMTUwO3M6MTc6IkhFQURhcGkvaW52ZW50b3J5IjtyOjU0MjtzOjIyOiJIRUFEYXBpL2ludmVudG9yeS97aWR9IjtyOjU3NjtzOjE1OiJIRUFEYXBpL2ZpbHRlcnMiO3I6NjE4O3M6MTU6IlBPU1RhcGkvZmlsdGVycyI7cjoxMTkxO3M6MTk6IlBVVGFwaS9maWx0ZXJzL3tpZH0iO3I6MTQwNztzOjIyOiJERUxFVEVhcGkvZmlsdGVycy97aWR9IjtyOjE1MzQ7czoxODoiUE9TVGFwaS9jYXRlZ29yaWVzIjtyOjEyMjQ7czoyMjoiUFVUYXBpL2NhdGVnb3JpZXMve2lkfSI7cjoxNDQ4O3M6MTg6IkhFQURhcGkvY2F0ZWdvcmllcyI7cjo2NTI7czoyNToiREVMRVRFYXBpL2NhdGVnb3JpZXMve2lkfSI7cjoxNTc1O3M6Mjg6IlBPU1RhcGkvcGF5bWVudHMvbWVyY2Fkb3BhZ28iO3I6MTI1NztzOjIxOiJQT1NUYXBpL25vdGlmaWNhdGlvbnMiO3I6MTI5MDtzOjE0OiJIRUFEYXBpL29yZGVycyI7cjo2ODY7czoxODoiSEVBRGFwaS9vcmRlcnMvYWxsIjtyOjcyMDtzOjIxOiJIRUFEYXBpL29yZGVycy97dXVpZH0iO3I6NzU0O31zOjExOiIAKgBuYW1lTGlzdCI7YTo0MTp7czoxNDoibDUtc3dhZ2dlci5hcGkiO3I6NDtzOjE1OiJsNS1zd2FnZ2VyLmRvY3MiO3I6Mzc7czoxNjoibDUtc3dhZ2dlci5hc3NldCI7cjo4MztzOjI2OiJsNS1zd2FnZ2VyLm9hdXRoMl9jYWxsYmFjayI7cjoxMjQ7czoxNjoicmVjb3ZlcnlQYXNzd29yZCI7cjo4MjA7czoyNjoiY2hhbmdlUGFzc3dvcmRGcm9tUmVjb3ZlcnkiO3I6ODUzO3M6MTA6ImVuYWJsZVVzZXIiO3I6MTkwO3M6MTE6ImRpc2FibGVVc2VyIjtyOjIzNTtzOjExOiJzaG93T25lVXNlciI7cjoyODA7czo1OiJsb2dpbiI7cjo4ODY7czoxMToicmVuZXctdG9rZW4iO3I6OTE5O3M6MTc6ImNyZWF0ZVdlYkN1c3RvbWVyIjtyOjk1MjtzOjE1OiJjaGFuZ2UtcGFzc3dvcmQiO3I6OTg1O3M6MTQ6ImNyZWF0ZUVtcGxveWVlIjtyOjEwMTg7czoxMjoibGlzdEVtcGxveWVlIjtyOjMyMjtzOjE0OiJjcmVhdGVDdXN0b21lciI7cjoxMDUxO3M6MTI6ImZpbmRDdXN0b21lciI7cjozNTY7czoxNDoidXBkYXRlQ3VzdG9tZXIiO3I6MTMyNTtzOjEzOiJsaXN0Q3VzdG9tZXJzIjtyOjM5ODtzOjExOiJjcmVhdGVBZG1pbiI7cjoxMDg0O3M6MTM6InVwZGF0ZVByb2R1Y3QiO3I6MTM2NjtzOjExOiJmaW5kUHJvZHVjdCI7cjo0MzI7czoxNDoiZGVzdHJveVByb2R1Y3QiO3I6MTQ5MztzOjEzOiJjcmVhdGVQcm9kdWN0IjtyOjExMTc7czoxNDoic2VhcmNoUHJvZHVjdHMiO3I6NTA4O3M6MjI6InVwZGF0ZUludmVudG9yeVByb2R1Y3QiO3I6MTE1MDtzOjE4OiJpbmRleFByb2R1Y3RzU3RvY2siO3I6NTQyO3M6MTc6ImZpbmRQcm9kdWN0c1N0b2NrIjtyOjU3NjtzOjEyOiJpbmRleEZpbHRlcnMiO3I6NjE4O3M6OToiYWRkRmlsdGVyIjtyOjExOTE7czoxMjoidXBkYXRlRmlsdGVyIjtyOjE0MDc7czoxMzoiZGVzdHJveUZpbHRlciI7cjoxNTM0O3M6MTM6InN0b3JlQ2F0ZWdvcnkiO3I6MTIyNDtzOjE0OiJ1cGRhdGVDYXRlZ29yeSI7cjoxNDQ4O3M6MTM6ImluZGV4Q2F0ZWdvcnkiO3I6NjUyO3M6MTU6ImRlc3Ryb3lDYXRlZ29yeSI7cjoxNTc1O3M6MTg6InBheW1lbnRNZXJjYWRvUGFnbyI7cjoxMjU3O3M6MjE6ImNoZWNrTm90aWZpY2F0aW9uVXNlciI7cjoxMjkwO3M6OToiZ2V0T3JkZXJzIjtyOjY4NjtzOjEyOiJnZXRBbGxPcmRlcnMiO3I6NzIwO3M6MTU6ImZpbmRPcmRlckJ5VXVpZCI7cjo3NTQ7fXM6MTM6IgAqAGFjdGlvbkxpc3QiO2E6NDM6e3M6NDg6Ikw1U3dhZ2dlclxIdHRwXENvbnRyb2xsZXJzXFN3YWdnZXJDb250cm9sbGVyQGFwaSI7cjo0O3M6NDk6Ikw1U3dhZ2dlclxIdHRwXENvbnRyb2xsZXJzXFN3YWdnZXJDb250cm9sbGVyQGRvY3MiO3I6Mzc7czo1NToiTDVTd2FnZ2VyXEh0dHBcQ29udHJvbGxlcnNcU3dhZ2dlckFzc2V0Q29udHJvbGxlckBpbmRleCI7cjo4MztzOjU5OiJMNVN3YWdnZXJcSHR0cFxDb250cm9sbGVyc1xTd2FnZ2VyQ29udHJvbGxlckBvYXV0aDJDYWxsYmFjayI7cjoxMjQ7czozNToiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xTZW5kRW1haWwiO3I6MTU3O3M6NTQ6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcVXNlcnNcUmVjb3ZlcnlQYXNzd29yZEFjdGlvbiI7cjo4MjA7czo2NDoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xDaGFuZ2VQYXNzd29yZEZyb21SZWNvdmVyeUFjdGlvbiI7cjo4NTM7czo0ODoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xVc2Vyc1xFbmFibGVVc2VyQWN0aW9uIjtyOjE5MDtzOjQ5OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXERpc2FibGVVc2VyQWN0aW9uIjtyOjIzNTtzOjQ2OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFVzZXJzXFNob3dVc2VyQWN0aW9uIjtyOjI4MDtzOjQyOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEF1dGhcTG9naW5BY3Rpb24iO3I6ODg2O3M6NDc6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQXV0aFxSZW5ld1Rva2VuQWN0aW9uIjtyOjkxOTtzOjU4OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xTdG9yZVdlYkN1c3RvbWVyQWN0aW9uIjtyOjk1MjtzOjUxOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEF1dGhcQ2hhbmdlUGFzc3dvcmRBY3Rpb24iO3I6OTg1O3M6NTU6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRW1wbG95ZWVzXFN0b3JlRW1wbG95ZWVBY3Rpb24iO3I6MTAxODtzOjU0OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEVtcGxveWVlc1xGaW5kRW1wbG95ZWVBY3Rpb24iO3I6MzIyO3M6NTU6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ3VzdG9tZXJzXFN0b3JlQ3VzdG9tZXJBY3Rpb24iO3I6MTA1MTtzOjU0OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXEN1c3RvbWVyc1xGaW5kQ3VzdG9tZXJBY3Rpb24iO3I6MzU2O3M6NTY6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ3VzdG9tZXJzXFVwZGF0ZUN1c3RvbWVyQWN0aW9uIjtyOjEzMjU7czo1NToiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xDdXN0b21lcnNcSW5kZXhDdXN0b21lckFjdGlvbiI7cjozOTg7czo0OToiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xBZG1pbnNcU3RvcmVBZG1pbkFjdGlvbiI7cjoxMDg0O3M6NTQ6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcVXBkYXRlUHJvZHVjdEFjdGlvbiI7cjoxMzY2O3M6NTI6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcRmluZFByb2R1Y3RBY3Rpb24iO3I6NDMyO3M6NTU6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcRGVzdHJveVByb2R1Y3RBY3Rpb24iO3I6MTQ5MztzOjUzOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFN0b3JlUHJvZHVjdEFjdGlvbiI7cjoxMTE3O3M6NTU6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcU2VhcmNoUHJvZHVjdHNBY3Rpb24iO3I6NDc0O3M6NjI6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcUHJvZHVjdHNcU2VhcmNoUHJvZHVjdHNGb3JIb21lQWN0aW9uIjtyOjUwODtzOjUwOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXFByb2R1Y3RzXFVwZGF0ZUludmVudG9yeSI7cjoxMTUwO3M6NDk6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcSW5kZXhQcm9kdWN0U3RvY2siO3I6NTQyO3M6NDg6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcU3RvY2tcRmluZFByb2R1Y3RTdG9jayI7cjo1NzY7czo1MjoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXEluZGV4RmlsdGVyc0FjdGlvbiI7cjo2MTg7czo1MjoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXFN0b3JlRmlsdGVyc0FjdGlvbiI7cjoxMTkxO3M6NTM6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcRmlsdGVyc1xVcGRhdGVGaWx0ZXJzQWN0aW9uIjtyOjE0MDc7czo1MzoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xGaWx0ZXJzXERlc3Ryb3lGaWx0ZXJBY3Rpb24iO3I6MTUzNDtzOjU2OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcU3RvcmVDYXRlZ29yeUFjdGlvbiI7cjoxMjI0O3M6NTc6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xVcGRhdGVDYXRlZ29yeUFjdGlvbiI7cjoxNDQ4O3M6NTY6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcQ2F0ZWdvcmllc1xJbmRleENhdGVnb3J5QWN0aW9uIjtyOjY1MjtzOjU4OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXENhdGVnb3JpZXNcRGVzdHJveUNhdGVnb3J5QWN0aW9uIjtyOjE1NzU7czo1MzoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xQYXltZW50c1xNZXJjYWRvUGFnb0V4ZWN1dGUiO3I6MTI1NztzOjYxOiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXE5vdGlmaWNhdGlvbnNcQ2hlY2tOb3RpZmljYXRpb25Vc2VyIjtyOjEyOTA7czo1MDoiUHJlc2VudGF0aW9uXEh0dHBcQWN0aW9uc1xPcmRlcnNcSW5kZXhPcmRlcnNBY3Rpb24iO3I6Njg2O3M6NTM6IlByZXNlbnRhdGlvblxIdHRwXEFjdGlvbnNcT3JkZXJzXEluZGV4QWxsT3JkZXJzQWN0aW9uIjtyOjcyMDtzOjU0OiJQcmVzZW50YXRpb25cSHR0cFxBY3Rpb25zXE9yZGVyc1xGaW5kT3JkZXJCeVV1aWRBY3Rpb24iO3I6NzU0O319')) ); diff --git a/domain/Interfaces/Repositories/OrderRepositoryInterface.php b/domain/Interfaces/Repositories/OrderRepositoryInterface.php index 325a682..3fb835d 100644 --- a/domain/Interfaces/Repositories/OrderRepositoryInterface.php +++ b/domain/Interfaces/Repositories/OrderRepositoryInterface.php @@ -9,4 +9,6 @@ interface OrderRepositoryInterface public function indexAndFiltered(int $page, int $size, int $userId): array; public function indexAll(int $page, int $size); + + public function findByUuid(string $uuid); } diff --git a/domain/Interfaces/Services/Orders/OrderServiceInterface.php b/domain/Interfaces/Services/Orders/OrderServiceInterface.php index fe0bffb..1e19f4f 100644 --- a/domain/Interfaces/Services/Orders/OrderServiceInterface.php +++ b/domain/Interfaces/Services/Orders/OrderServiceInterface.php @@ -4,9 +4,13 @@ namespace Domain\Interfaces\Services\Orders; +use Domain\Entities\Order; + interface OrderServiceInterface { public function indexAndFiltered($page, $size, $userId): array; public function indexAll($page, $size): array; + + public function findByUuidOrFail(string $uuid): Order; } diff --git a/infrastructure/Persistence/Repositories/OrderRepository.php b/infrastructure/Persistence/Repositories/OrderRepository.php index 38d47d9..5b4d772 100644 --- a/infrastructure/Persistence/Repositories/OrderRepository.php +++ b/infrastructure/Persistence/Repositories/OrderRepository.php @@ -83,4 +83,13 @@ public function indexAll(int $page, int $size) return $customersList; } + + /** + * @param string $uuid + * @return Order|null + */ + public function findByUuid(string $uuid): ?Order + { + return $this->findOneBy(['numberSell' => $uuid]); + } } diff --git a/presentation/Http/Actions/Orders/FindOrderByUuidAction.php b/presentation/Http/Actions/Orders/FindOrderByUuidAction.php new file mode 100644 index 0000000..a99f920 --- /dev/null +++ b/presentation/Http/Actions/Orders/FindOrderByUuidAction.php @@ -0,0 +1,43 @@ +adapter = $adapter; + $this->queryBus = $queryBus; + $this->presenter = $presenter; + } + + public function __invoke(Request $request) + { + $query = $this->adapter->from($request); + + $result = $this->queryBus->handle($query); + + return new JsonResponse([ + 'data' => $this->presenter->fromResult($result)->getData() + ], HttpCodes::OK); + } +} diff --git a/presentation/Http/Adapters/Orders/FindOrderByUuidAdapter.php b/presentation/Http/Adapters/Orders/FindOrderByUuidAdapter.php new file mode 100644 index 0000000..8c9abe8 --- /dev/null +++ b/presentation/Http/Adapters/Orders/FindOrderByUuidAdapter.php @@ -0,0 +1,37 @@ +validatorService = $validatorService; + } + + /** + * @param Request $request + * @return FindOrderByUuidQuery + * @throws InvalidBodyException + */ + public function from(Request $request) { + $this->validatorService->make([ 'uuid' => $request->route('uuid') ], []); + + if (!$this->validatorService->isValid()) { + throw new InvalidBodyException($this->validatorService->getErrors()); + } + + return new FindOrderByUuidQuery( + $request->route('uuid') + ); + } +} diff --git a/presentation/Http/Presenters/Orders/FullOrderPresenter.php b/presentation/Http/Presenters/Orders/FullOrderPresenter.php new file mode 100644 index 0000000..8907cad --- /dev/null +++ b/presentation/Http/Presenters/Orders/FullOrderPresenter.php @@ -0,0 +1,41 @@ +result = $result; + return $this; + } + + public function getData(): array { + $order = $this->result->getOrder(); + return [ + 'id' => $order->getId(), + 'products' => $this->getProducts($order->getProducts()), + 'amount' => $order->getAmount(), + 'numberSell' => $order->getNumberSell(), + ]; + } + + private function getProducts($products) { + $productsList = []; + + foreach ($products as $product) { + array_push($productsList, [ + 'id' => $product->getId(), + 'title' => $product->getTitle(), + 'price' => $product->getPrice(), + ]); + } + + return $productsList; + } +} diff --git a/presentation/Http/routes/api.php b/presentation/Http/routes/api.php index 361c854..4b1eb80 100644 --- a/presentation/Http/routes/api.php +++ b/presentation/Http/routes/api.php @@ -101,4 +101,5 @@ Route::prefix('orders')->group(function () { Route::get('/', Actions\Orders\IndexOrdersAction::class)->name('getOrders'); Route::get('all', Actions\Orders\IndexAllOrdersAction::class)->name('getAllOrders'); + Route::get('/{uuid}', Actions\Orders\FindOrderByUuidAction::class)->name('findOrderByUuid'); }); From 1377a441e9373dfd131fcbfa5b677c1fbf97b233 Mon Sep 17 00:00:00 2001 From: cristianvena18 Date: Tue, 7 Jul 2020 19:30:47 -0300 Subject: [PATCH 19/38] added rules from endpoints to has make --- .../Customers/IndexCustomerAdapter.php | 3 ++- .../Customers/StoreCustomerAdapter.php | 8 ++++++- .../Employees/FindEmployeeAdapter.php | 3 ++- .../Orders/FindOrderByUuidAdapter.php | 2 +- .../Adapters/Orders/IndexAllOrdersAdapter.php | 3 ++- .../Adapters/Orders/IndexOrdersAdapter.php | 3 ++- .../Schemas/Orders/IndexOrdersSchema.php | 23 +++++++++++++++++++ .../Validations/Schemas/PageSizeSchema.php | 15 ++++++++++++ 8 files changed, 54 insertions(+), 6 deletions(-) create mode 100644 presentation/Http/Validations/Schemas/Orders/IndexOrdersSchema.php create mode 100644 presentation/Http/Validations/Schemas/PageSizeSchema.php diff --git a/presentation/Http/Adapters/Customers/IndexCustomerAdapter.php b/presentation/Http/Adapters/Customers/IndexCustomerAdapter.php index c3c16ee..70d6b38 100644 --- a/presentation/Http/Adapters/Customers/IndexCustomerAdapter.php +++ b/presentation/Http/Adapters/Customers/IndexCustomerAdapter.php @@ -7,6 +7,7 @@ use App\Exceptions\InvalidBodyException; use Application\Queries\Query\Customers\IndexCustomerQuery; use Illuminate\Http\Request; +use Presentation\Http\Validations\Schemas\PageSizeSchema; use Presentation\Http\Validations\Utils\ValidatorServiceInterface; class IndexCustomerAdapter @@ -22,7 +23,7 @@ public function __construct( public function from(Request $request) { - $this->validatorService->make($request->all(), []); + $this->validatorService->make($request->all(), PageSizeSchema::getRules()); if (!$this->validatorService->isValid()) { throw new InvalidBodyException($this->validatorService->getErrors()); diff --git a/presentation/Http/Adapters/Customers/StoreCustomerAdapter.php b/presentation/Http/Adapters/Customers/StoreCustomerAdapter.php index 135b327..a8c435f 100644 --- a/presentation/Http/Adapters/Customers/StoreCustomerAdapter.php +++ b/presentation/Http/Adapters/Customers/StoreCustomerAdapter.php @@ -7,6 +7,7 @@ use App\Exceptions\InvalidBodyException; use Application\Commands\Command\Customers\StoreCustomerCommand; use DateTime; +use Exception; use Illuminate\Http\Request; use Presentation\Http\Validations\Utils\ValidatorServiceInterface; @@ -25,6 +26,7 @@ public function __construct( * @param Request $request * @return StoreCustomerCommand * @throws InvalidBodyException + * @throws Exception */ public function from(Request $request) { @@ -36,7 +38,11 @@ public function from(Request $request) } return new StoreCustomerCommand( + $request->input('name'), + $request->input('surname'), + $request->input('email'), $request->input('vat_condition'), + $request->input('age'), new Datetime($request->input('birthday')), $request->input('country'), $request->input('state'), @@ -45,7 +51,7 @@ public function from(Request $request) $request->input('cell_phone'), $request->input('dni'), $request->input('taxation_key'), - $request->input('gross_income') + $request->input('gross_income'), ); } } diff --git a/presentation/Http/Adapters/Employees/FindEmployeeAdapter.php b/presentation/Http/Adapters/Employees/FindEmployeeAdapter.php index 7d8c83d..a162a41 100644 --- a/presentation/Http/Adapters/Employees/FindEmployeeAdapter.php +++ b/presentation/Http/Adapters/Employees/FindEmployeeAdapter.php @@ -7,6 +7,7 @@ use App\Exceptions\InvalidBodyException; use Application\Queries\Query\Employees\FindEmployeeQuery; use Illuminate\Http\Request; +use Presentation\Http\Validations\Schemas\PageSizeSchema; use Presentation\Http\Validations\Utils\ValidatorServiceInterface; class FindEmployeeAdapter @@ -25,7 +26,7 @@ public function __construct(ValidatorServiceInterface $validatorService) */ public function from(Request $request) { - $this->validatorService->make($request->all(), []); + $this->validatorService->make($request->all(), PageSizeSchema::getRules()); if(!$this->validatorService->isValid()) { throw new InvalidBodyException($this->validatorService->getErrors()); diff --git a/presentation/Http/Adapters/Orders/FindOrderByUuidAdapter.php b/presentation/Http/Adapters/Orders/FindOrderByUuidAdapter.php index 8c9abe8..e8d5331 100644 --- a/presentation/Http/Adapters/Orders/FindOrderByUuidAdapter.php +++ b/presentation/Http/Adapters/Orders/FindOrderByUuidAdapter.php @@ -24,7 +24,7 @@ public function __construct(ValidatorServiceInterface $validatorService) * @throws InvalidBodyException */ public function from(Request $request) { - $this->validatorService->make([ 'uuid' => $request->route('uuid') ], []); + $this->validatorService->make([ 'uuid' => $request->route('uuid') ], [ 'uuid' => 'bail|required|alpha_dash']); if (!$this->validatorService->isValid()) { throw new InvalidBodyException($this->validatorService->getErrors()); diff --git a/presentation/Http/Adapters/Orders/IndexAllOrdersAdapter.php b/presentation/Http/Adapters/Orders/IndexAllOrdersAdapter.php index 3d8db6e..2498ea8 100644 --- a/presentation/Http/Adapters/Orders/IndexAllOrdersAdapter.php +++ b/presentation/Http/Adapters/Orders/IndexAllOrdersAdapter.php @@ -7,6 +7,7 @@ use App\Exceptions\InvalidBodyException; use Application\Queries\Query\Orders\IndexAllOrdersQuery; use Illuminate\Http\Request; +use Presentation\Http\Validations\Schemas\Orders\IndexOrdersSchema; use Presentation\Http\Validations\Utils\ValidatorServiceInterface; class IndexAllOrdersAdapter @@ -19,7 +20,7 @@ public function __construct(ValidatorServiceInterface $validatorService) } public function from(Request $request) { - $this->validatorService->make($request->all(), []); + $this->validatorService->make($request->all(), IndexOrdersSchema::getAll()); if (!$this->validatorService->isValid()) { throw new InvalidBodyException($this->validatorService->getErrors()); diff --git a/presentation/Http/Adapters/Orders/IndexOrdersAdapter.php b/presentation/Http/Adapters/Orders/IndexOrdersAdapter.php index a1655a3..c6baad0 100644 --- a/presentation/Http/Adapters/Orders/IndexOrdersAdapter.php +++ b/presentation/Http/Adapters/Orders/IndexOrdersAdapter.php @@ -7,6 +7,7 @@ use App\Exceptions\InvalidBodyException; use Application\Queries\Query\Orders\IndexOrdersQuery; use Illuminate\Http\Request; +use Presentation\Http\Validations\Schemas\Orders\IndexOrdersSchema; use Presentation\Http\Validations\Utils\ValidatorServiceInterface; class IndexOrdersAdapter @@ -21,7 +22,7 @@ public function __construct( } public function from(Request $request) { - $this->validatorService->make($request->all(), []); + $this->validatorService->make($request->all(), IndexOrdersSchema::getFiltered()); if (!$this->validatorService->isValid()) { throw new InvalidBodyException($this->validatorService->getErrors()); diff --git a/presentation/Http/Validations/Schemas/Orders/IndexOrdersSchema.php b/presentation/Http/Validations/Schemas/Orders/IndexOrdersSchema.php new file mode 100644 index 0000000..54974b2 --- /dev/null +++ b/presentation/Http/Validations/Schemas/Orders/IndexOrdersSchema.php @@ -0,0 +1,23 @@ + 'bail|integer|min:1', + 'size' => 'bail|integer', + 'userId' => 'bail|required|integer|min:1' + ]; + } + + public static function getAll() { + return [ + 'page' => 'bail|integer|min:1', + 'size' => 'bail|integer', + ]; + } +} diff --git a/presentation/Http/Validations/Schemas/PageSizeSchema.php b/presentation/Http/Validations/Schemas/PageSizeSchema.php new file mode 100644 index 0000000..3a8308f --- /dev/null +++ b/presentation/Http/Validations/Schemas/PageSizeSchema.php @@ -0,0 +1,15 @@ + 'bail|integer|min:1', + 'size' => 'bail|integer', + ]; + } +} From e9e6676d9a3bc1b8882a8bcbd6f13f3d21baa6ce Mon Sep 17 00:00:00 2001 From: cristianvena18 Date: Wed, 8 Jul 2020 11:02:59 -0300 Subject: [PATCH 20/38] added change password endpoint --- .../Command/Auth/ChangePasswordCommand.php | 28 +++++++------ .../ChangePasswordFromRecoveryCommand.php | 39 +++++++++++++++++++ .../ChangePasswordFromRecoveryHandler.php | 38 ++++++++++++++++++ .../Handler/Auth/ChangePasswordHandler.php | 18 +++++++-- .../Actions/Auth/ChangePasswordAction.php | 31 +++++++++++++-- .../Adapters/Auth/ChangePasswordAdapter.php | 33 ++++++++++++++++ .../ChangePasswordFromRecoveryAdapter.php | 6 +-- 7 files changed, 173 insertions(+), 20 deletions(-) create mode 100644 application/Commands/Command/Auth/ChangePasswordFromRecoveryCommand.php create mode 100644 application/Commands/Handler/Auth/ChangePasswordFromRecoveryHandler.php create mode 100644 presentation/Http/Adapters/Auth/ChangePasswordAdapter.php diff --git a/application/Commands/Command/Auth/ChangePasswordCommand.php b/application/Commands/Command/Auth/ChangePasswordCommand.php index 9d46e51..04d489f 100644 --- a/application/Commands/Command/Auth/ChangePasswordCommand.php +++ b/application/Commands/Command/Auth/ChangePasswordCommand.php @@ -8,32 +8,38 @@ class ChangePasswordCommand implements CommandInterface { - private string $password; - private string $email; + private int $id; + private string $oldPassword; + private string $newPassword; + + public function __construct($id, $oldPassword, $newPassword) + { + $this->id = $id; + $this->oldPassword = $oldPassword; + $this->newPassword = $newPassword; + } /** - * ChangePasswordCommand constructor. - * @param string $email - * @param string $password + * @return int */ - public function __construct(string $email, string $password) + public function getId(): int { - $this->password = $password; + return $this->id; } /** * @return string */ - public function getEmail(): string + public function getOldPassword(): string { - return $this->email; + return $this->oldPassword; } /** * @return string */ - public function getPassword(): string + public function getNewPassword(): string { - return $this->password; + return $this->newPassword; } } diff --git a/application/Commands/Command/Auth/ChangePasswordFromRecoveryCommand.php b/application/Commands/Command/Auth/ChangePasswordFromRecoveryCommand.php new file mode 100644 index 0000000..a233d54 --- /dev/null +++ b/application/Commands/Command/Auth/ChangePasswordFromRecoveryCommand.php @@ -0,0 +1,39 @@ +password = $password; + } + + /** + * @return string + */ + public function getEmail(): string + { + return $this->email; + } + + /** + * @return string + */ + public function getPassword(): string + { + return $this->password; + } +} diff --git a/application/Commands/Handler/Auth/ChangePasswordFromRecoveryHandler.php b/application/Commands/Handler/Auth/ChangePasswordFromRecoveryHandler.php new file mode 100644 index 0000000..1340696 --- /dev/null +++ b/application/Commands/Handler/Auth/ChangePasswordFromRecoveryHandler.php @@ -0,0 +1,38 @@ +userService = $userService; + $this->hashService = $hashService; + } + + /** + * @param ChangePasswordFromRecoveryCommand $command + */ + public function handle($command): void + { + $user = $this->userService->findOneByEmailOrFail($command->getEmail()); + + $user->setPassword($this->hashService->make($command->getPassword())); + + $this->userService->persist($user); + } +} diff --git a/application/Commands/Handler/Auth/ChangePasswordHandler.php b/application/Commands/Handler/Auth/ChangePasswordHandler.php index 28a899a..ed1104c 100644 --- a/application/Commands/Handler/Auth/ChangePasswordHandler.php +++ b/application/Commands/Handler/Auth/ChangePasswordHandler.php @@ -5,14 +5,21 @@ use Application\Commands\Command\Auth\ChangePasswordCommand; +use Application\Exceptions\PasswordNotMatch; use Application\Services\Hash\HashServiceInterface; use Application\Services\Users\UserServiceInterface; +use Infrastructure\CommandBus\Command\CommandInterface; use Infrastructure\CommandBus\Handler\HandlerInterface; class ChangePasswordHandler implements HandlerInterface { + /** + * @var UserServiceInterface + */ private UserServiceInterface $userService; - + /** + * @var HashServiceInterface + */ private HashServiceInterface $hashService; public function __construct( @@ -26,12 +33,17 @@ public function __construct( /** * @param ChangePasswordCommand $command + * @throws PasswordNotMatch */ public function handle($command): void { - $user = $this->userService->findOneByEmailOrFail($command->getEmail()); + $user = $this->userService->findOneByIdOrFail($command->getId()); + + if(!$this->hashService->check($command->getOldPassword(), $user->getPassword())) { + throw new PasswordNotMatch(); + } - $user->setPassword($this->hashService->make($command->getPassword())); + $user->setPassword($this->hashService->make($command->getNewPassword())); $this->userService->persist($user); } diff --git a/presentation/Http/Actions/Auth/ChangePasswordAction.php b/presentation/Http/Actions/Auth/ChangePasswordAction.php index 2cc99ad..5b248e9 100644 --- a/presentation/Http/Actions/Auth/ChangePasswordAction.php +++ b/presentation/Http/Actions/Auth/ChangePasswordAction.php @@ -4,17 +4,42 @@ namespace Presentation\Http\Actions\Auth; +use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; +use Infrastructure\CommandBus\CommandBusInterface; +use Presentation\Http\Adapters\Auth\ChangePasswordAdapter; +use Presentation\Http\Enums\HttpCodes; class ChangePasswordAction { - public function __construct() - { + + /** + * @var ChangePasswordAdapter + */ + private ChangePasswordAdapter $adapter; + /** + * @var CommandBusInterface + */ + private CommandBusInterface $commandBus; + + public function __construct( + ChangePasswordAdapter $adapter, + CommandBusInterface $commandBus + ) + { + $this->adapter = $adapter; + $this->commandBus = $commandBus; } public function __invoke(Request $request) { - //TODO: implement + $command = $this->adapter->from($request); + + $this->commandBus->handle($command); + + return new JsonResponse([ + 'message' => 'Password changed successfully', + ], HttpCodes::NO_CONTENT); } } diff --git a/presentation/Http/Adapters/Auth/ChangePasswordAdapter.php b/presentation/Http/Adapters/Auth/ChangePasswordAdapter.php new file mode 100644 index 0000000..b10ec37 --- /dev/null +++ b/presentation/Http/Adapters/Auth/ChangePasswordAdapter.php @@ -0,0 +1,33 @@ +validatorService = $validatorService; + } + + public function from(Request $request) { + $this->validatorService->make($request->all(), []); + + if (!$this->validatorService->isValid()) { + throw new InvalidBodyException($this->validatorService->getErrors()); + } + + return new ChangePasswordCommand( + $request->input('id'), + $request->input('oldPassword'), + $request->input('newPassword'), + ); + } +} diff --git a/presentation/Http/Adapters/Users/ChangePasswordFromRecoveryAdapter.php b/presentation/Http/Adapters/Users/ChangePasswordFromRecoveryAdapter.php index beb7f90..6172576 100644 --- a/presentation/Http/Adapters/Users/ChangePasswordFromRecoveryAdapter.php +++ b/presentation/Http/Adapters/Users/ChangePasswordFromRecoveryAdapter.php @@ -5,7 +5,7 @@ use App\Exceptions\InvalidBodyException; -use Application\Commands\Command\Auth\ChangePasswordCommand; +use Application\Commands\Command\Auth\ChangePasswordFromRecoveryCommand; use Application\Services\Token\TokenLoginServiceInterface; use Illuminate\Http\Request; use Presentation\Http\Validations\Utils\ValidatorServiceInterface; @@ -27,7 +27,7 @@ public function __construct( /** * @param Request $request - * @return ChangePasswordCommand + * @return ChangePasswordFromRecoveryCommand * @throws InvalidBodyException */ public function from(Request $request) @@ -42,7 +42,7 @@ public function from(Request $request) $hash = $this->tokenLoginService->decryptTokenJWT($request->input('token')); $token = $this->tokenLoginService->findOneByHashOrFail($hash); - return new ChangePasswordCommand( + return new ChangePasswordFromRecoveryCommand( $token->getUser()->getEmail(), $request->input('password') ); From 8e18376ef563b9b8ab6ae9003d8c6c0a227a584c Mon Sep 17 00:00:00 2001 From: cristianvena18 Date: Wed, 8 Jul 2020 18:48:50 -0300 Subject: [PATCH 21/38] added search endpoint with query builder --- .../Products/SearchProductsHandler.php | 68 ++++++++ .../Query/Products/SearchProductsQuery.php | 93 +++++++++++ .../Results/Products/ProductListResult.php | 25 +++ .../Services/Products/ProductService.php | 34 ++++ domain/Entities/Product.php | 26 ++-- domain/Enums/SQLOrderEnum.php | 11 ++ .../ProductRepositoryInterface.php | 12 ++ .../Services/Brands/BrandServiceInterface.php | 10 ++ .../Products/ProductServiceInterface.php | 12 ++ .../Queries/CourseQueryBuilder.php | 129 ---------------- .../Queries/ProductQueryBuilder.php | 145 ++++++++++++++++++ .../Repositories/ProductRepository.php | 71 ++++++++- .../Providers/AppServiceProvider.php | 4 + .../DoctrineRepositoriesServiceProvider.php | 3 + .../Actions/Products/SearchProductsAction.php | 28 +++- .../Product/SearchProductsAdapter.php | 43 ++++++ .../Adapters/Product/StoreProductAdapter.php | 3 +- 17 files changed, 570 insertions(+), 147 deletions(-) create mode 100644 application/Queries/Handler/Products/SearchProductsHandler.php create mode 100644 application/Queries/Query/Products/SearchProductsQuery.php create mode 100644 application/Queries/Results/Products/ProductListResult.php create mode 100644 application/Services/Products/ProductService.php create mode 100644 domain/Enums/SQLOrderEnum.php create mode 100644 domain/Interfaces/Repositories/ProductRepositoryInterface.php create mode 100644 domain/Interfaces/Services/Brands/BrandServiceInterface.php create mode 100644 domain/Interfaces/Services/Products/ProductServiceInterface.php delete mode 100644 infrastructure/Persistence/Queries/CourseQueryBuilder.php create mode 100644 infrastructure/Persistence/Queries/ProductQueryBuilder.php create mode 100644 presentation/Http/Adapters/Product/SearchProductsAdapter.php diff --git a/application/Queries/Handler/Products/SearchProductsHandler.php b/application/Queries/Handler/Products/SearchProductsHandler.php new file mode 100644 index 0000000..596ed57 --- /dev/null +++ b/application/Queries/Handler/Products/SearchProductsHandler.php @@ -0,0 +1,68 @@ +productService = $productService; + $this->categoryService = $categoryService; + $this->brandService = $brandService; + } + + /** + * @param SearchProductsQuery $query + * @return ResultInterface + */ + public function handle($query): ResultInterface + { + if (!$query->getQuery() && !$query->getCategories() && !$query->getBrands() && !$query->getProviders()) { + $products = $this->productService->findAll($query->getPage(), $query->getSize()); + return new ProductListResult($products); + } + + $queryInput = null; + $brandIds = []; + $categoriesIds = []; + + if (!empty($query->getQuery())) { + $queryInput = $query->getQuery(); + } + + foreach ($query->getBrands() as $brandId) { + $brand = $this->brandService->findOneByIdOrFail($brandId); + $brandIds[] = $brand->getId(); + } + + foreach ($query->getCategories() as $categoryId) { + $category = $this->categoryService->findOneByIdOrFail($categoryId); + $categoriesIds[] = $category->getId(); + } + + $products = $this->productService->findByQuery($queryInput, $categoriesIds, $brandIds, [], $query->getPage(), $query->getSize(), $query->getOrderBy()); + + return new ProductListResult($products); + } +} diff --git a/application/Queries/Query/Products/SearchProductsQuery.php b/application/Queries/Query/Products/SearchProductsQuery.php new file mode 100644 index 0000000..0ce364a --- /dev/null +++ b/application/Queries/Query/Products/SearchProductsQuery.php @@ -0,0 +1,93 @@ +query = $query; + $this->categories = $categories; + $this->brands = $brands; + $this->providers = $providers; + $this->page = $page; + $this->size = $size; + $this->orderBy = $orderBy; + } + + /** + * @return string + */ + public function getQuery(): string + { + return $this->query; + } + + /** + * @return array + */ + public function getCategories(): array + { + return $this->categories; + } + + /** + * @return array + */ + public function getBrands(): array + { + return $this->brands; + } + + /** + * @return array + */ + public function getProviders(): array + { + return $this->providers; + } + + /** + * @return int|null + */ + public function getPage(): ?int + { + return $this->page; + } + + /** + * @return int|null + */ + public function getSize(): ?int + { + return $this->size; + } + + /** + * @return string + */ + public function getOrderBy(): string + { + return $this->orderBy; + } +} diff --git a/application/Queries/Results/Products/ProductListResult.php b/application/Queries/Results/Products/ProductListResult.php new file mode 100644 index 0000000..4c174c6 --- /dev/null +++ b/application/Queries/Results/Products/ProductListResult.php @@ -0,0 +1,25 @@ +products = $products; + } + + /** + * @return array + */ + public function getProducts(): array + { + return $this->products; + } +} diff --git a/application/Services/Products/ProductService.php b/application/Services/Products/ProductService.php new file mode 100644 index 0000000..32079cb --- /dev/null +++ b/application/Services/Products/ProductService.php @@ -0,0 +1,34 @@ +repository = $repository; + } + + public function findAll($page, $size): array + { + $page = $page ? $page : 1; + $size = $size ? $size : 10; + + return $this->repository->findAllPaginated($page, $size); + } + + public function findByQuery($query, $categories, $brands, $provider, $page, $size, $orderBy): array + { + $page = $page ? $page : 1; + $size = $size ? $size : 10; + + return $this->repository->findByQuery($query, $categories, $brands, $provider, $page, $size, $orderBy); + } +} diff --git a/domain/Entities/Product.php b/domain/Entities/Product.php index ca0f25e..1186c0f 100644 --- a/domain/Entities/Product.php +++ b/domain/Entities/Product.php @@ -41,12 +41,12 @@ class Product /** * @var array */ - private array $categoriesId; + private array $categories; /** * @var array */ - private array $brandsId; + private array $brands; /** * @var int @@ -61,12 +61,12 @@ class Product /** * @var array */ - private array $ordersId; + private array $orders; /** * @var array . */ - private array $providersId; + private array $providers; /** * Product constructor. @@ -153,15 +153,15 @@ public function setIva(float $iva): void */ public function getCategories(): array { - return $this->categoriesId; + return $this->categories; } /** * @param Category $categories */ - public function setCategories(Category $categories): void + public function addCategories(Category $categories): void { - $this->categoriesId[] = $categories; + $this->categories[] = $categories; } /** @@ -217,7 +217,7 @@ public function setNotAvailable(bool $notAvailable) : void */ public function getOrders() : array { - return $this->ordersId; + return $this->orders; } /** @@ -225,7 +225,7 @@ public function getOrders() : array */ public function setOrder(Order $newOrder) : void { - $this->ordersId [] =$newOrder; + $this->orders[] = $newOrder; } /** @@ -233,7 +233,7 @@ public function setOrder(Order $newOrder) : void */ public function getProviders() : array { - return $this->providersId; + return $this->providers; } /** @@ -241,7 +241,7 @@ public function getProviders() : array */ public function setProvider(Provider $newProvider) : void { - $this->providersId [] = $newProvider; + $this->providers[] = $newProvider; } /** @@ -249,7 +249,7 @@ public function setProvider(Provider $newProvider) : void */ public function getBrands() : array { - return $this->brandsId; + return $this->brands; } /** @@ -257,6 +257,6 @@ public function getBrands() : array */ public function setBrand(Brand $newBrand) : void { - $this->brandsId[] = $newBrand; + $this->brands[] = $newBrand; } } diff --git a/domain/Enums/SQLOrderEnum.php b/domain/Enums/SQLOrderEnum.php new file mode 100644 index 0000000..b35f4df --- /dev/null +++ b/domain/Enums/SQLOrderEnum.php @@ -0,0 +1,11 @@ +init(); - } - - /** - * @param string $query - * @return CourseQueryBuilder - */ - public function byQuery(string $query): CourseQueryBuilder - { - $this->dqlQuery->where('c.name LIKE :query') - ->orWhere('c.description LIKE :query') - ->setParameter('query', '%' . $query . '%'); - - $this->filteredCourses = $this->dqlQuery->getQuery()->getResult(); - - return $this; - } - - /** - * @param Collection $tags - * @return CourseQueryBuilder - */ - public function byTags(Collection $tags): CourseQueryBuilder - { - $this->courses = $this->filteredCourses; - $this->filteredCourses = []; - - if (!$this->courses) { - $this->courses = $this->dqlQuery->getQuery()->getResult(); - } - - foreach ($this->courses as $course) { - $courseTags = $course->getTags()->getValues(); - $courseTagsNames = array_map(function ($courseTag) { - return $courseTag->getName(); - }, $courseTags); - - $hasAllTag = true; - - foreach ($tags as $tag) { - if (!in_array($tag, $courseTagsNames)) { - $hasAllTag = false; - } - } - - if ($hasAllTag) { - $this->filteredCourses[] = $course; - } - } - return $this; - } - - /** - * @param Collection $categories - * @return CourseQueryBuilder - */ - public function byCategories(Collection $categories): CourseQueryBuilder - { - $this->courses = $this->filteredCourses; - $this->filteredCourses = []; - - if (!$this->courses) { - $this->courses = $this->dqlQuery->getQuery()->getResult(); - } - - foreach ($this->courses as $course) { - $courseCategories = $course->getCategories()->getValues(); - $courseCategoriesNames = array_map(function ($courseCategory) { - return $courseCategory->getName(); - }, $courseCategories); - - $hasAllCategories = true; - - foreach ($categories as $category) { - if (!in_array($category, $courseCategoriesNames)) { - $hasAllCategories = false; - } - } - - if ($hasAllCategories) { - $this->filteredCourses[] = $course; - } - } - return $this; - } - - /** - * @return void - */ - public function init() - { - $this->dqlQuery = $this->createQueryBuilder('c'); - } - - /** - * @return array - */ - public function executeQueryBuilder(): array - { - return $this->filteredCourses; - } -} diff --git a/infrastructure/Persistence/Queries/ProductQueryBuilder.php b/infrastructure/Persistence/Queries/ProductQueryBuilder.php new file mode 100644 index 0000000..0eaf456 --- /dev/null +++ b/infrastructure/Persistence/Queries/ProductQueryBuilder.php @@ -0,0 +1,145 @@ +init(); + } + + /** + * @param string $query + * @return ProductQueryBuilder + */ + public function byQuery(string $query): ProductQueryBuilder + { + $this->dqlQuery->where('p.name LIKE :query') + ->orWhere('p.description LIKE :query') + ->setParameter('query', '%' . $query . '%'); + + $this->filteredProducts = $this->dqlQuery->getQuery()->getResult(); + + return $this; + } + + /** + * @param array $brands + * @return ProductQueryBuilder + */ + public function byBrand(array $brands): ProductQueryBuilder + { + $this->products = $this->filteredProducts; + $this->filteredProducts = []; + + if (!$this->products) { + $this->products = $this->dqlQuery->getQuery()->getResult(); + } + + foreach ($this->products as $product) { + $productBrands = $product->getBrand()->getName(); + + $productBrandsNames = array_map(function ($productBrand) { + return $productBrand->getName(); + }, $productBrands); + + $hasAllBrand = true; + + foreach ($brands as $brand) { + if (!in_array($brand, $productBrandsNames)) { + $hasAllBrand = false; + } + } + + if ($hasAllBrand) { + $this->filteredProducts[] = $product; + } + } + return $this; + } + + /** + * @param array $categories + * @return ProductQueryBuilder + */ + public function byCategories(array $categories): ProductQueryBuilder + { + $this->products = $this->filteredProducts; + $this->filteredProducts = []; + + if (!$this->products) { + $this->filteredProducts = $this->dqlQuery->getQuery()->getResult(); + } + + foreach ($this->products as $product) { + $productCategories = $product->getCategories(); + $productCategoriesNames = array_map(function ($productCategory) { + return $productCategory->getName(); + }, $productCategories); + + $hasAllCategories = true; + + foreach ($categories as $category) { + if (!in_array($category, $productCategoriesNames)) { + $hasAllCategories = false; + } + } + + if ($hasAllCategories) { + $this->filteredProducts[] = $product; + } + } + return $this; + } + + /** + * @return void + */ + public function init() + { + $this->dqlQuery = $this->createQueryBuilder('p'); + } + + /** + * @return array + */ + public function executeQueryBuilder(): array + { + return $this->filteredProducts; + } + + public function addOrderBy(string $order) + { + $this->order = $order; + } + + public function addPageAndLimitBy(int $page, int $limit) + { + $this->page = $page; + $this->limit = $limit; + } +} diff --git a/infrastructure/Persistence/Repositories/ProductRepository.php b/infrastructure/Persistence/Repositories/ProductRepository.php index 052c81d..3fb7a3b 100644 --- a/infrastructure/Persistence/Repositories/ProductRepository.php +++ b/infrastructure/Persistence/Repositories/ProductRepository.php @@ -7,13 +7,82 @@ use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityRepository; use Doctrine\ORM\Mapping; +use Doctrine\ORM\Tools\Pagination\Paginator; use Domain\Entities\Product; +use Domain\Interfaces\Repositories\ProductRepositoryInterface; +use Infrastructure\Persistence\Queries\ProductQueryBuilder; -class ProductRepository extends EntityRepository +class ProductRepository extends EntityRepository implements ProductRepositoryInterface { public function __construct(EntityManagerInterface $em) { parent::__construct($em, new Mapping\ClassMetadata(Product::class)); //TODO WTF? REPOSITORY?? DOOOOCTRINE } + + public function findByQuery( + string $query = null, + array $categories = null, + array $brands = null, + array $providers = null, + int $page = null, + int $limit = null, + string $order = null + ): array { + $productQueryBuilder = new ProductQueryBuilder($this->getEntityManager()); + if ($query) { + $productQueryBuilder->byQuery($query); + } + if ($brands) { + $productQueryBuilder->byBrand($brands); + } + if ($categories) { + $productQueryBuilder->byCategories($categories); + } + if ($order) { + $productQueryBuilder->addOrderBy($order); + } + if ($page && $limit) { + $productQueryBuilder->addPageAndLimitBy($page, $limit); + } + + $productIds = $productQueryBuilder->executeQueryBuilder(); + $products = []; + foreach ($productIds as $productId) { + $products[] = $this->findOneBy(['id' => (int)$productId['id']]); + } + + return $products; + } + + public function findAllPaginated($page, $size): array + { + // get entity manager + $em = $this->getEntityManager(); + + // get the user repository + $products = $em->getRepository(Product::class); + + // build the query for the doctrine paginator + $query = $products->createQueryBuilder('p') + ->orderBy('p.id', 'DESC') + ->getQuery(); + + // load doctrine Paginator + $paginator = new Paginator($query); + + // now get one page's items: + $paginator + ->getQuery() + ->setFirstResult($size * ($page-1)) // set the offset + ->setMaxResults($size); // set the limit + + $employeesList = []; + + foreach ($paginator as $item) { + array_push($employeesList, $item); + } + + return $employeesList; + } } diff --git a/infrastructure/Providers/AppServiceProvider.php b/infrastructure/Providers/AppServiceProvider.php index f68ed27..7c63829 100644 --- a/infrastructure/Providers/AppServiceProvider.php +++ b/infrastructure/Providers/AppServiceProvider.php @@ -14,6 +14,7 @@ use Application\Services\Notification\NotifiableService; use Application\Services\Notification\NotifiableServiceInterface; use Application\Services\Orders\OrderService; +use Application\Services\Products\ProductService; use Application\Services\Token\TokenLoginService; use Application\Services\Token\TokenLoginServiceInterface; @@ -23,6 +24,7 @@ use Domain\Interfaces\Services\GetUserTypeServiceInterface; use Domain\Interfaces\Services\Notifications\NotifiableInterface; use Domain\Interfaces\Services\Orders\OrderServiceInterface; +use Domain\Interfaces\Services\Products\ProductServiceInterface; use Domain\Services\Users\GetUserTypeService; use Domain\ValueObjects\Notification; @@ -80,6 +82,8 @@ public function register() $this->app->bind(ValidatorServiceInterface::class, ValidatorService::class); $this->app->bind(OrderServiceInterface::class,OrderService::class); + + $this->app->bind(ProductServiceInterface::class, ProductService::class); } /** diff --git a/infrastructure/Providers/DoctrineRepositoriesServiceProvider.php b/infrastructure/Providers/DoctrineRepositoriesServiceProvider.php index 1d8035c..3b4964c 100644 --- a/infrastructure/Providers/DoctrineRepositoriesServiceProvider.php +++ b/infrastructure/Providers/DoctrineRepositoriesServiceProvider.php @@ -9,6 +9,7 @@ use Domain\Interfaces\Repositories\EmployeeRepositoryInterface; use Domain\Interfaces\Repositories\FilterRepositoryInterface; use Domain\Interfaces\Repositories\OrderRepositoryInterface; +use Domain\Interfaces\Repositories\ProductRepositoryInterface; use Domain\Interfaces\Repositories\TokenRepositoryInterface; use Domain\Interfaces\Repositories\UserRepositoryInterface; use Illuminate\Support\ServiceProvider; @@ -17,6 +18,7 @@ use Infrastructure\Persistence\Repositories\EmployeeRepository; use Infrastructure\Persistence\Repositories\FilterRepository; use Infrastructure\Persistence\Repositories\OrderRepository; +use Infrastructure\Persistence\Repositories\ProductRepository; use Infrastructure\Persistence\Repositories\TokenRepository; use Infrastructure\Persistence\Repositories\UserRepository; @@ -36,5 +38,6 @@ public function boot() $this->app->bind(CategoryRepositoryInterface::class, CategoryRepository::class); $this->app->bind(FilterRepositoryInterface::class, FilterRepository::class); $this->app->bind(OrderRepositoryInterface::class, OrderRepository::class); + $this->app->bind(ProductRepositoryInterface::class, ProductRepository::class); } } diff --git a/presentation/Http/Actions/Products/SearchProductsAction.php b/presentation/Http/Actions/Products/SearchProductsAction.php index 3f309a4..548d8db 100644 --- a/presentation/Http/Actions/Products/SearchProductsAction.php +++ b/presentation/Http/Actions/Products/SearchProductsAction.php @@ -4,23 +4,45 @@ namespace Presentation\Http\Actions\Products; +use App\Exceptions\InvalidBodyException; use Illuminate\Http\JsonResponse; +use Illuminate\Http\Request; +use Infrastructure\QueryBus\QueryBusInterface; +use Presentation\Http\Adapters\Product\SearchProductsAdapter; use Presentation\Http\Enums\HttpCodes; use Presentation\Http\Presenters\Products\IndexProductsPresenter; class SearchProductsAction { + private SearchProductsAdapter $adapter; + + private QueryBusInterface $queryBus; + private IndexProductsPresenter $presenter; - public function __construct(IndexProductsPresenter $presenter) + public function __construct( + SearchProductsAdapter $adapter, + QueryBusInterface $queryBus, + IndexProductsPresenter $presenter + ) { + $this->queryBus = $queryBus; $this->presenter = $presenter; } - public function __invoke() + /** + * @param Request $request + * @return JsonResponse + * @throws InvalidBodyException + */ + public function __invoke(Request $request) { + $query = $this->adapter->from($request); + + $result = $this->queryBus->handle($query); + return new JsonResponse( - $this->presenter->getData(), + $this->presenter->fromResult($result)->getData(), HttpCodes::OK ); } diff --git a/presentation/Http/Adapters/Product/SearchProductsAdapter.php b/presentation/Http/Adapters/Product/SearchProductsAdapter.php new file mode 100644 index 0000000..64c6c40 --- /dev/null +++ b/presentation/Http/Adapters/Product/SearchProductsAdapter.php @@ -0,0 +1,43 @@ +validatorService = $validatorService; + } + + /** + * @param Request $request + * @return SearchProductsQuery + * @throws InvalidBodyException + */ + public function from(Request $request) { + $this->validatorService->make($request->all(), []); + + if (!$this->validatorService->isValid()) { + throw new InvalidBodyException($this->validatorService->getErrors()); + } + + return new SearchProductsQuery( + $request->query('query'), + $request->query('categories'), + $request->query('brands'), + $request->query('providers'), + $request->query('page'), + $request->query('size'), + $request->query('orderBy'), + ); + } + +} diff --git a/presentation/Http/Adapters/Product/StoreProductAdapter.php b/presentation/Http/Adapters/Product/StoreProductAdapter.php index 453041a..f71b6a5 100644 --- a/presentation/Http/Adapters/Product/StoreProductAdapter.php +++ b/presentation/Http/Adapters/Product/StoreProductAdapter.php @@ -56,8 +56,9 @@ public function adapt(Request $request) $request->input('description'), $request->input('price'), $request->input('categories'), - $request->input('brands'), $request->input('stock'), + $request->input('iva'), + $request->input('brands'), $request->input('characteristics'), $request->input('order'), $request->input('provider') From c896d9f326b8c5eb9f31f165bc58ea3597330254 Mon Sep 17 00:00:00 2001 From: cristianvena18 Date: Wed, 8 Jul 2020 19:54:09 -0300 Subject: [PATCH 22/38] added rules in search --- .../Product/SearchProductsAdapter.php | 4 +++- .../Schemas/Products/SearchProductsSchema.php | 24 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 presentation/Http/Validations/Schemas/Products/SearchProductsSchema.php diff --git a/presentation/Http/Adapters/Product/SearchProductsAdapter.php b/presentation/Http/Adapters/Product/SearchProductsAdapter.php index 64c6c40..b58b31b 100644 --- a/presentation/Http/Adapters/Product/SearchProductsAdapter.php +++ b/presentation/Http/Adapters/Product/SearchProductsAdapter.php @@ -5,7 +5,9 @@ use App\Exceptions\InvalidBodyException; +use Application\Queries\Query\Products\SearchProductsQuery; use Illuminate\Http\Request; +use Presentation\Http\Validations\Schemas\Products\SearchProductsSchema; use Presentation\Http\Validations\Utils\ValidatorServiceInterface; class SearchProductsAdapter @@ -23,7 +25,7 @@ public function __construct(ValidatorServiceInterface $validatorService) * @throws InvalidBodyException */ public function from(Request $request) { - $this->validatorService->make($request->all(), []); + $this->validatorService->make($request->all(), SearchProductsSchema::getRules(), []); if (!$this->validatorService->isValid()) { throw new InvalidBodyException($this->validatorService->getErrors()); diff --git a/presentation/Http/Validations/Schemas/Products/SearchProductsSchema.php b/presentation/Http/Validations/Schemas/Products/SearchProductsSchema.php new file mode 100644 index 0000000..8959409 --- /dev/null +++ b/presentation/Http/Validations/Schemas/Products/SearchProductsSchema.php @@ -0,0 +1,24 @@ + 'bail|alpha_dash', + 'categories' => 'bail|array', + 'categories.*' => 'bail|integer', + 'brands' => 'bail|array', + 'brands.*' => 'bail|integer', + 'providers' => 'bail|array', + 'providers.*' => 'bail|integer', + ...PageSizeSchema::getRules(), + 'orderBy' => 'bail|alpha|length:3' + ]; + } +} From 14df915f92b16dc3a98b9b66948fac152cff9188 Mon Sep 17 00:00:00 2001 From: cristianvena18 Date: Wed, 8 Jul 2020 21:04:16 -0300 Subject: [PATCH 23/38] finalizated query builder --- .../Products/SearchProductsHandler.php | 24 +- .../Query/Products/SearchProductsQuery.php | 40 +- .../Results/Products/ProductListResult.php | 13 +- application/Services/Brands/BrandService.php | 17 + .../Services/Products/ProductService.php | 5 + bootstrap/cache/config.php | 867 ++++++++++++++++++ domain/Entities/Product.php | 40 +- .../ProductRepositoryInterface.php | 2 + .../Products/ProductServiceInterface.php | 2 + .../Queries/ProductQueryBuilder.php | 3 +- .../Repositories/ProductRepository.php | 15 +- .../Providers/AppServiceProvider.php | 4 + .../Actions/Products/SearchProductsAction.php | 1 + .../Products/IndexProductsPresenter.php | 94 +- .../Schemas/Products/SearchProductsSchema.php | 9 +- .../Validations/Utils/ValidatorService.php | 4 +- 16 files changed, 1053 insertions(+), 87 deletions(-) create mode 100644 application/Services/Brands/BrandService.php create mode 100644 bootstrap/cache/config.php diff --git a/application/Queries/Handler/Products/SearchProductsHandler.php b/application/Queries/Handler/Products/SearchProductsHandler.php index 596ed57..d8b4514 100644 --- a/application/Queries/Handler/Products/SearchProductsHandler.php +++ b/application/Queries/Handler/Products/SearchProductsHandler.php @@ -40,7 +40,8 @@ public function handle($query): ResultInterface { if (!$query->getQuery() && !$query->getCategories() && !$query->getBrands() && !$query->getProviders()) { $products = $this->productService->findAll($query->getPage(), $query->getSize()); - return new ProductListResult($products); + $totalCount = $this->productService->count(); + return new ProductListResult($products, $totalCount); } $queryInput = null; @@ -51,18 +52,23 @@ public function handle($query): ResultInterface $queryInput = $query->getQuery(); } - foreach ($query->getBrands() as $brandId) { - $brand = $this->brandService->findOneByIdOrFail($brandId); - $brandIds[] = $brand->getId(); + if($query->getBrands()) { + foreach ($query->getBrands() as $brandId) { + $brand = $this->brandService->findOneByIdOrFail($brandId); + $brandIds[] = $brand->getId(); + } } - - foreach ($query->getCategories() as $categoryId) { - $category = $this->categoryService->findOneByIdOrFail($categoryId); - $categoriesIds[] = $category->getId(); + + if($query->getCategories()) { + foreach ($query->getCategories() as $categoryId) { + $category = $this->categoryService->findOneByIdOrFail($categoryId); + $categoriesIds[] = $category->getId(); + } } $products = $this->productService->findByQuery($queryInput, $categoriesIds, $brandIds, [], $query->getPage(), $query->getSize(), $query->getOrderBy()); + $totalCount = $this->productService->count(); - return new ProductListResult($products); + return new ProductListResult($products, $totalCount); } } diff --git a/application/Queries/Query/Products/SearchProductsQuery.php b/application/Queries/Query/Products/SearchProductsQuery.php index 0ce364a..75c5cee 100644 --- a/application/Queries/Query/Products/SearchProductsQuery.php +++ b/application/Queries/Query/Products/SearchProductsQuery.php @@ -8,22 +8,22 @@ class SearchProductsQuery implements QueryInterface { - private string $query; - private array $categories; - private array $brands; - private array $providers; + private ?string $query; + private ?array $categories; + private ?array $brands; + private ?array $providers; private ?int $page; private ?int $size; - private string $orderBy; + private ?string $orderBy; public function __construct( - string $query, - array $categories, - array $brands, - array $providers, + ?string $query, + ?array $categories, + ?array $brands, + ?array $providers, ?int $page, ?int $size, - string $orderBy + ?string $orderBy ) { $this->query = $query; @@ -36,33 +36,33 @@ public function __construct( } /** - * @return string + * @return string|null */ - public function getQuery(): string + public function getQuery(): ?string { return $this->query; } /** - * @return array + * @return array|null */ - public function getCategories(): array + public function getCategories(): ?array { return $this->categories; } /** - * @return array + * @return array|null */ - public function getBrands(): array + public function getBrands(): ?array { return $this->brands; } /** - * @return array + * @return array|null */ - public function getProviders(): array + public function getProviders(): ?array { return $this->providers; } @@ -84,9 +84,9 @@ public function getSize(): ?int } /** - * @return string + * @return string|null */ - public function getOrderBy(): string + public function getOrderBy(): ?string { return $this->orderBy; } diff --git a/application/Queries/Results/Products/ProductListResult.php b/application/Queries/Results/Products/ProductListResult.php index 4c174c6..1ee59ca 100644 --- a/application/Queries/Results/Products/ProductListResult.php +++ b/application/Queries/Results/Products/ProductListResult.php @@ -10,9 +10,12 @@ class ProductListResult implements ResultInterface { private array $products; - public function __construct(array $products) + private int $totalQuantity; + + public function __construct(array $products, int $totalQuantity) { $this->products = $products; + $this->totalQuantity = $totalQuantity; } /** @@ -22,4 +25,12 @@ public function getProducts(): array { return $this->products; } + + /** + * @return int + */ + public function getTotalQuantity(): int + { + return $this->totalQuantity; + } } diff --git a/application/Services/Brands/BrandService.php b/application/Services/Brands/BrandService.php new file mode 100644 index 0000000..e9d2176 --- /dev/null +++ b/application/Services/Brands/BrandService.php @@ -0,0 +1,17 @@ +repository->findByQuery($query, $categories, $brands, $provider, $page, $size, $orderBy); } + + public function count(): int + { + return $this->repository->count([]); + } } diff --git a/bootstrap/cache/config.php b/bootstrap/cache/config.php new file mode 100644 index 0000000..9bcb844 --- /dev/null +++ b/bootstrap/cache/config.php @@ -0,0 +1,867 @@ + + array ( + 'name' => 'Zeep Commerce', + 'env' => 'local', + 'debug' => true, + 'url' => 'http://zeepcommerce.com', + 'asset_url' => NULL, + 'timezone' => 'UTC', + 'locale' => 'en', + 'fallback_locale' => 'en', + 'faker_locale' => 'en_US', + 'key' => '', + 'cipher' => 'AES-256-CBC', + 'providers' => + array ( + 0 => 'Illuminate\\Auth\\AuthServiceProvider', + 1 => 'Illuminate\\Broadcasting\\BroadcastServiceProvider', + 2 => 'Illuminate\\Bus\\BusServiceProvider', + 3 => 'Illuminate\\Cache\\CacheServiceProvider', + 4 => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 5 => 'Illuminate\\Cookie\\CookieServiceProvider', + 6 => 'Illuminate\\Database\\DatabaseServiceProvider', + 7 => 'Illuminate\\Encryption\\EncryptionServiceProvider', + 8 => 'Illuminate\\Filesystem\\FilesystemServiceProvider', + 9 => 'Illuminate\\Foundation\\Providers\\FoundationServiceProvider', + 10 => 'Illuminate\\Hashing\\HashServiceProvider', + 11 => 'Illuminate\\Mail\\MailServiceProvider', + 12 => 'Illuminate\\Notifications\\NotificationServiceProvider', + 13 => 'Illuminate\\Pagination\\PaginationServiceProvider', + 14 => 'Illuminate\\Pipeline\\PipelineServiceProvider', + 15 => 'Illuminate\\Queue\\QueueServiceProvider', + 16 => 'Illuminate\\Redis\\RedisServiceProvider', + 17 => 'Illuminate\\Auth\\Passwords\\PasswordResetServiceProvider', + 18 => 'Illuminate\\Session\\SessionServiceProvider', + 19 => 'Illuminate\\Translation\\TranslationServiceProvider', + 20 => 'Illuminate\\Validation\\ValidationServiceProvider', + 21 => 'Illuminate\\View\\ViewServiceProvider', + 22 => 'LaravelDoctrine\\ORM\\DoctrineServiceProvider', + 23 => 'Infrastructure\\Providers\\AppServiceProvider', + 24 => 'Infrastructure\\Providers\\CommandBusServiceProvider', + 25 => 'Infrastructure\\Providers\\QueryBusServiceProvider', + 26 => 'Infrastructure\\Providers\\AuthServiceProvider', + 27 => 'Infrastructure\\Providers\\EventServiceProvider', + 28 => 'Infrastructure\\Providers\\RouteServiceProvider', + 29 => 'Infrastructure\\Providers\\DoctrineRepositoriesServiceProvider', + ), + 'aliases' => + array ( + 'App' => 'Illuminate\\Support\\Facades\\App', + 'Arr' => 'Illuminate\\Support\\Arr', + 'Artisan' => 'Illuminate\\Support\\Facades\\Artisan', + 'Auth' => 'Illuminate\\Support\\Facades\\Auth', + 'Blade' => 'Illuminate\\Support\\Facades\\Blade', + 'Broadcast' => 'Illuminate\\Support\\Facades\\Broadcast', + 'Bus' => 'Illuminate\\Support\\Facades\\Bus', + 'Cache' => 'Illuminate\\Support\\Facades\\Cache', + 'Config' => 'Illuminate\\Support\\Facades\\Config', + 'Cookie' => 'Illuminate\\Support\\Facades\\Cookie', + 'Crypt' => 'Illuminate\\Support\\Facades\\Crypt', + 'DB' => 'Illuminate\\Support\\Facades\\DB', + 'Eloquent' => 'Illuminate\\Database\\Eloquent\\Model', + 'Event' => 'Illuminate\\Support\\Facades\\Event', + 'File' => 'Illuminate\\Support\\Facades\\File', + 'Gate' => 'Illuminate\\Support\\Facades\\Gate', + 'Hash' => 'Illuminate\\Support\\Facades\\Hash', + 'Http' => 'Illuminate\\Support\\Facades\\Http', + 'Lang' => 'Illuminate\\Support\\Facades\\Lang', + 'Log' => 'Illuminate\\Support\\Facades\\Log', + 'Mail' => 'Illuminate\\Support\\Facades\\Mail', + 'Notification' => 'Illuminate\\Support\\Facades\\Notification', + 'Password' => 'Illuminate\\Support\\Facades\\Password', + 'Queue' => 'Illuminate\\Support\\Facades\\Queue', + 'Redirect' => 'Illuminate\\Support\\Facades\\Redirect', + 'Redis' => 'Illuminate\\Support\\Facades\\Redis', + 'Request' => 'Illuminate\\Support\\Facades\\Request', + 'Response' => 'Illuminate\\Support\\Facades\\Response', + 'Route' => 'Illuminate\\Support\\Facades\\Route', + 'Schema' => 'Illuminate\\Support\\Facades\\Schema', + 'Session' => 'Illuminate\\Support\\Facades\\Session', + 'Storage' => 'Illuminate\\Support\\Facades\\Storage', + 'Str' => 'Illuminate\\Support\\Str', + 'URL' => 'Illuminate\\Support\\Facades\\URL', + 'Validator' => 'Illuminate\\Support\\Facades\\Validator', + 'View' => 'Illuminate\\Support\\Facades\\View', + ), + ), + 'auth' => + array ( + 'defaults' => + array ( + 'guard' => 'web', + 'passwords' => 'users', + ), + 'guards' => + array ( + 'web' => + array ( + 'driver' => 'session', + 'provider' => 'users', + ), + ), + 'providers' => + array ( + 'users' => + array ( + 'driver' => 'doctrine', + 'model' => 'Domain\\Entities\\User', + ), + ), + 'passwords' => + array ( + 'users' => + array ( + 'provider' => 'users', + 'table' => 'password_resets', + 'expire' => 60, + ), + ), + ), + 'broadcasting' => + array ( + 'default' => 'log', + 'connections' => + array ( + 'pusher' => + array ( + 'driver' => 'pusher', + 'key' => '', + 'secret' => '', + 'app_id' => '', + 'options' => + array ( + 'cluster' => 'mt1', + 'useTLS' => true, + ), + ), + 'redis' => + array ( + 'driver' => 'redis', + 'connection' => 'default', + ), + 'log' => + array ( + 'driver' => 'log', + ), + 'null' => + array ( + 'driver' => 'null', + ), + ), + ), + 'cache' => + array ( + 'default' => 'file', + 'stores' => + array ( + 'apc' => + array ( + 'driver' => 'apc', + ), + 'array' => + array ( + 'driver' => 'array', + ), + 'database' => + array ( + 'driver' => 'database', + 'table' => 'cache', + 'connection' => NULL, + ), + 'file' => + array ( + 'driver' => 'file', + 'path' => '/var/www/storage/framework/cache/data', + ), + 'memcached' => + array ( + 'driver' => 'memcached', + 'persistent_id' => NULL, + 'sasl' => + array ( + 0 => NULL, + 1 => NULL, + ), + 'options' => + array ( + ), + 'servers' => + array ( + 0 => + array ( + 'host' => '127.0.0.1', + 'port' => 11211, + 'weight' => 100, + ), + ), + ), + 'redis' => + array ( + 'driver' => 'redis', + 'connection' => 'cache', + ), + 'dynamodb' => + array ( + 'driver' => 'dynamodb', + 'key' => '', + 'secret' => '', + 'region' => 'us-east-1', + 'table' => 'cache', + 'endpoint' => NULL, + ), + ), + 'prefix' => 'zeep_commerce_cache', + ), + 'cors' => + array ( + 'paths' => + array ( + 0 => 'api/*', + ), + 'allowed_methods' => + array ( + 0 => '*', + ), + 'allowed_origins' => + array ( + 0 => '*', + ), + 'allowed_origins_patterns' => + array ( + ), + 'allowed_headers' => + array ( + 0 => '*', + ), + 'exposed_headers' => false, + 'max_age' => false, + 'supports_credentials' => false, + ), + 'database' => + array ( + 'default' => 'mysql', + 'connections' => + array ( + 'sqlite_testing' => + array ( + 'driver' => 'sqlite', + 'url' => NULL, + 'database' => 'apizeep', + 'prefix' => '', + 'foreign_key_constraints' => true, + ), + 'mysql' => + array ( + 'driver' => 'mysql', + 'url' => NULL, + 'host' => 'mysql', + 'port' => '3306', + 'database' => 'apizeep', + 'username' => 'test', + 'password' => 'test', + 'unix_socket' => '', + 'charset' => 'utf8mb4', + 'collation' => 'utf8mb4_unicode_ci', + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => NULL, + 'options' => + array ( + ), + ), + 'pgsql' => + array ( + 'driver' => 'pgsql', + 'url' => NULL, + 'host' => 'mysql', + 'port' => '3306', + 'database' => 'apizeep', + 'username' => 'test', + 'password' => 'test', + 'charset' => 'utf8', + 'prefix' => '', + 'prefix_indexes' => true, + 'schema' => 'public', + 'sslmode' => 'prefer', + ), + 'sqlsrv' => + array ( + 'driver' => 'sqlsrv', + 'url' => NULL, + 'host' => 'mysql', + 'port' => '3306', + 'database' => 'apizeep', + 'username' => 'test', + 'password' => 'test', + 'charset' => 'utf8', + 'prefix' => '', + 'prefix_indexes' => true, + ), + ), + 'migrations' => 'migrations', + 'redis' => + array ( + 'client' => 'phpredis', + 'options' => + array ( + 'cluster' => 'redis', + 'prefix' => 'zeep_commerce_database_', + ), + 'default' => + array ( + 'url' => NULL, + 'host' => 'redis', + 'password' => '', + 'port' => '6379', + 'database' => '0', + ), + 'cache' => + array ( + 'url' => NULL, + 'host' => 'redis', + 'password' => '', + 'port' => '6379', + 'database' => '1', + ), + ), + ), + 'debug-server' => + array ( + 'host' => 'tcp://127.0.0.1:9912', + ), + 'doctrine' => + array ( + 'managers' => + array ( + 'default' => + array ( + 'dev' => true, + 'meta' => 'php', + 'connection' => 'mysql', + 'namespaces' => + array ( + 0 => 'Domain\\Entities', + ), + 'paths' => + array ( + 0 => '/var/www/infrastructure/Persistence/Mappings', + ), + 'repository' => 'Doctrine\\ORM\\EntityRepository', + 'proxies' => + array ( + 'namespace' => false, + 'path' => '/var/www/storage/proxies', + 'auto_generate' => true, + ), + 'events' => + array ( + 'listeners' => + array ( + ), + 'subscribers' => + array ( + ), + ), + 'filters' => + array ( + ), + 'mapping_types' => + array ( + ), + ), + ), + 'extensions' => + array ( + ), + 'custom_types' => + array ( + 'json' => 'LaravelDoctrine\\ORM\\Types\\Json', + ), + 'custom_datetime_functions' => + array ( + ), + 'custom_numeric_functions' => + array ( + ), + 'custom_string_functions' => + array ( + ), + 'custom_hydration_modes' => + array ( + ), + 'logger' => false, + 'cache' => + array ( + 'second_level' => true, + 'default' => 'array', + 'namespace' => NULL, + 'metadata' => + array ( + 'driver' => 'file', + 'namespace' => NULL, + ), + 'query' => + array ( + 'driver' => 'array', + 'namespace' => NULL, + ), + 'result' => + array ( + 'driver' => 'array', + 'namespace' => NULL, + ), + ), + 'gedmo' => + array ( + 'all_mappings' => false, + ), + 'doctrine_presence_verifier' => true, + 'notifications' => + array ( + 'channel' => 'database', + ), + ), + 'filesystems' => + array ( + 'default' => 'local', + 'cloud' => 's3', + 'disks' => + array ( + 'local' => + array ( + 'driver' => 'local', + 'root' => '/var/www/storage/app', + ), + 'public' => + array ( + 'driver' => 'local', + 'root' => '/var/www/storage/app/public', + 'url' => 'http://zeepcommerce.com/storage', + 'visibility' => 'public', + ), + 's3' => + array ( + 'driver' => 's3', + 'key' => '', + 'secret' => '', + 'region' => 'us-east-1', + 'bucket' => '', + 'url' => NULL, + ), + ), + 'links' => + array ( + '/var/www/public/storage' => '/var/www/storage/app/public', + ), + ), + 'hashing' => + array ( + 'driver' => 'bcrypt', + 'bcrypt' => + array ( + 'rounds' => 10, + ), + 'argon' => + array ( + 'memory' => 1024, + 'threads' => 2, + 'time' => 2, + ), + ), + 'jwt' => + array ( + 'secret' => 'gasgawgawgawgsgawga', + 'keys' => + array ( + 'public' => NULL, + 'private' => NULL, + 'passphrase' => NULL, + ), + 'ttl' => 60, + 'refresh_ttl' => 20160, + 'algo' => 'HS256', + 'required_claims' => + array ( + 0 => 'iss', + 1 => 'iat', + 2 => 'exp', + 3 => 'nbf', + 4 => 'sub', + 5 => 'jti', + ), + 'persistent_claims' => + array ( + ), + 'lock_subject' => true, + 'leeway' => 0, + 'blacklist_enabled' => true, + 'blacklist_grace_period' => 0, + 'decrypt_cookies' => false, + 'providers' => + array ( + 'jwt' => 'Tymon\\JWTAuth\\Providers\\JWT\\Lcobucci', + 'auth' => 'Tymon\\JWTAuth\\Providers\\Auth\\Illuminate', + 'storage' => 'Tymon\\JWTAuth\\Providers\\Storage\\Illuminate', + ), + ), + 'l5-swagger' => + array ( + 'api' => + array ( + 'title' => 'L5 Swagger UI', + ), + 'routes' => + array ( + 'api' => 'api/documentation', + 'docs' => 'docs', + 'oauth2_callback' => 'api/oauth2-callback', + 'middleware' => + array ( + 'api' => + array ( + ), + 'asset' => + array ( + ), + 'docs' => + array ( + ), + 'oauth2_callback' => + array ( + ), + ), + ), + 'paths' => + array ( + 'docs' => '/var/www/storage/api-docs', + 'docs_json' => 'api-docs.json', + 'docs_yaml' => 'api-docs.yaml', + 'annotations' => + array ( + 0 => '/var/www/presentation/Http/Actions', + ), + 'views' => '/var/www/resources/views/vendor/l5-swagger', + 'base' => NULL, + 'swagger_ui_assets_path' => 'vendor/swagger-api/swagger-ui/dist/', + 'excludes' => + array ( + ), + ), + 'security' => + array ( + ), + 'generate_always' => false, + 'generate_yaml_copy' => false, + 'swagger_version' => '3.0', + 'proxy' => false, + 'additional_config_url' => NULL, + 'operations_sort' => NULL, + 'validator_url' => NULL, + 'constants' => + array ( + 'L5_SWAGGER_CONST_HOST' => 'http://my-default-host.com', + ), + ), + 'logging' => + array ( + 'default' => 'stack', + 'channels' => + array ( + 'stack' => + array ( + 'driver' => 'stack', + 'channels' => + array ( + 0 => 'single', + ), + 'ignore_exceptions' => false, + ), + 'single' => + array ( + 'driver' => 'single', + 'path' => '/var/www/storage/logs/laravel.log', + 'level' => 'debug', + ), + 'daily' => + array ( + 'driver' => 'daily', + 'path' => '/var/www/storage/logs/laravel.log', + 'level' => 'debug', + 'days' => 14, + ), + 'slack' => + array ( + 'driver' => 'slack', + 'url' => NULL, + 'username' => 'Laravel Log', + 'emoji' => ':boom:', + 'level' => 'critical', + ), + 'papertrail' => + array ( + 'driver' => 'monolog', + 'level' => 'debug', + 'handler' => 'Monolog\\Handler\\SyslogUdpHandler', + 'handler_with' => + array ( + 'host' => NULL, + 'port' => NULL, + ), + ), + 'stderr' => + array ( + 'driver' => 'monolog', + 'handler' => 'Monolog\\Handler\\StreamHandler', + 'formatter' => NULL, + 'with' => + array ( + 'stream' => 'php://stderr', + ), + ), + 'syslog' => + array ( + 'driver' => 'syslog', + 'level' => 'debug', + ), + 'errorlog' => + array ( + 'driver' => 'errorlog', + 'level' => 'debug', + ), + 'null' => + array ( + 'driver' => 'monolog', + 'handler' => 'Monolog\\Handler\\NullHandler', + ), + 'emergency' => + array ( + 'path' => '/var/www/storage/logs/laravel.log', + ), + ), + ), + 'mail' => + array ( + 'driver' => 'smtp', + 'host' => 'smtp.sendgrid.net', + 'port' => '587', + 'encryption' => 'tls', + 'username' => 'zeeporg', + 'password' => 'Zeeporganization2020', + 'mailers' => + array ( + 'smtp' => + array ( + 'transport' => 'smtp', + 'host' => 'smtp.sendgrid.net', + 'port' => '587', + 'encryption' => 'tls', + 'username' => 'zeeporg', + 'password' => 'Zeeporganization2020', + ), + 'ses' => + array ( + 'transport' => 'ses', + ), + 'sendmail' => + array ( + 'transport' => 'sendmail', + 'path' => '/usr/sbin/sendmail -bs', + ), + 'log' => + array ( + 'transport' => 'log', + 'channel' => NULL, + ), + 'array' => + array ( + 'transport' => 'array', + ), + ), + 'from' => + array ( + 'address' => 'zeeporganization@gmail.com', + 'name' => 'Zeep Commerce', + ), + 'markdown' => + array ( + 'theme' => 'default', + 'paths' => + array ( + 0 => '/var/www/resources/views/vendor/mail', + ), + ), + ), + 'queue' => + array ( + 'default' => 'beanstalkd', + 'connections' => + array ( + 'sync' => + array ( + 'driver' => 'sync', + ), + 'database' => + array ( + 'driver' => 'database', + 'table' => 'jobs', + 'queue' => 'default', + 'retry_after' => 90, + ), + 'beanstalkd' => + array ( + 'driver' => 'beanstalkd', + 'host' => 'beanstalkd', + 'queue' => 'default', + 'retry_after' => 90, + 'block_for' => 0, + ), + 'sqs' => + array ( + 'driver' => 'sqs', + 'key' => '', + 'secret' => '', + 'prefix' => 'https://sqs.us-east-1.amazonaws.com/your-account-id', + 'queue' => 'your-queue-name', + 'region' => 'us-east-1', + ), + 'redis' => + array ( + 'driver' => 'redis', + 'connection' => 'default', + 'queue' => 'default', + 'retry_after' => 90, + 'block_for' => NULL, + ), + ), + 'failed' => + array ( + 'driver' => 'database', + 'database' => 'mysql', + 'table' => 'failed_jobs', + ), + ), + 'services' => + array ( + 'mailgun' => + array ( + 'domain' => NULL, + 'secret' => NULL, + 'endpoint' => 'api.mailgun.net', + ), + 'postmark' => + array ( + 'token' => NULL, + ), + 'sendgrid' => + array ( + 'api_key' => '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', + ), + 'ses' => + array ( + 'key' => '', + 'secret' => '', + 'region' => 'us-east-1', + ), + ), + 'session' => + array ( + 'driver' => 'file', + 'lifetime' => '120', + 'expire_on_close' => false, + 'encrypt' => false, + 'files' => '/var/www/storage/framework/sessions', + 'connection' => NULL, + 'table' => 'sessions', + 'store' => NULL, + 'lottery' => + array ( + 0 => 2, + 1 => 100, + ), + 'cookie' => 'zeep_commerce_session', + 'path' => '/', + 'domain' => NULL, + 'secure' => NULL, + 'http_only' => true, + 'same_site' => 'lax', + ), + 'view' => + array ( + 'paths' => + array ( + 0 => '/var/www/resources/views', + ), + 'compiled' => '/var/www/storage/framework/views', + 'expires' => true, + ), + 'flare' => + array ( + 'key' => NULL, + 'reporting' => + array ( + 'anonymize_ips' => true, + 'collect_git_information' => true, + 'report_queries' => true, + 'maximum_number_of_collected_queries' => 200, + 'report_query_bindings' => true, + 'report_view_data' => true, + 'grouping_type' => NULL, + ), + 'send_logs_as_events' => true, + ), + 'ignition' => + array ( + 'editor' => 'phpstorm', + 'theme' => 'light', + 'enable_share_button' => true, + 'register_commands' => false, + 'ignored_solution_providers' => + array ( + ), + 'enable_runnable_solutions' => NULL, + 'remote_sites_path' => '', + 'local_sites_path' => '', + 'housekeeping_endpoint_prefix' => '_ignition', + ), + 'laravel-tactician' => + array ( + 'locator' => 'Joselfonseca\\LaravelTactician\\Locator\\LaravelLazyLocator', + 'inflector' => 'League\\Tactician\\Handler\\MethodNameInflector\\HandleInflector', + 'extractor' => 'League\\Tactician\\Handler\\CommandNameExtractor\\ClassNameExtractor', + 'bus' => 'Joselfonseca\\LaravelTactician\\Bus', + ), + 'migrations' => + array ( + 'default' => + array ( + 'table' => 'migrations', + 'directory' => '/var/www/database/migrations', + 'organize_migrations' => false, + 'namespace' => 'Database\\Migrations', + 'schema' => + array ( + 'filter' => '/^(?!password_resets|failed_jobs).*$/', + ), + ), + ), + 'trustedproxy' => + array ( + 'proxies' => NULL, + 'headers' => 30, + ), + 'tinker' => + array ( + 'commands' => + array ( + ), + 'alias' => + array ( + ), + 'dont_alias' => + array ( + 0 => 'App\\Nova', + ), + ), +); diff --git a/domain/Entities/Product.php b/domain/Entities/Product.php index 1186c0f..ea659a6 100644 --- a/domain/Entities/Product.php +++ b/domain/Entities/Product.php @@ -16,7 +16,7 @@ class Product /** * @var string */ - private string $name; + private string $title; /** * @var string @@ -36,17 +36,17 @@ class Product /** * @var float */ - private float $iva; + private float $taxes; /** * @var array */ - private array $categories; + private $categories; /** * @var array */ - private array $brands; + private $brands; /** * @var int @@ -56,17 +56,17 @@ class Product /** * @var array */ - private array $characteristics; + private $characteristics; /** * @var array */ - private array $orders; + private $orders; /** * @var array . */ - private array $providers; + private $providers; /** * Product constructor. @@ -87,17 +87,17 @@ public function getId(): int /** * @return string */ - public function getName(): string + public function getTitle(): string { - return $this->name; + return $this->title; } /** * @param string name */ - public function setTitle(string $name): void + public function setTitle(string $title): void { - $this->name = $name; + $this->title = $title; } /** @@ -135,23 +135,23 @@ public function setPrice(float $price): void /** * @return float */ - public function getIva(): float + public function getTaxes(): float { - return $this->iva; + return $this->taxes; } /** * @param float $iva */ - public function setIva(float $iva): void + public function setTaxes(float $iva): void { - $this->iva = $iva; + $this->taxes = $iva; } /** * @return array */ - public function getCategories(): array + public function getCategories() { return $this->categories; } @@ -183,7 +183,7 @@ public function setStock(int $stock): void /** * @return array */ - public function getCharacteristics(): array + public function getCharacteristics() { return $this->characteristics; } @@ -215,7 +215,7 @@ public function setNotAvailable(bool $notAvailable) : void /** * @return array */ - public function getOrders() : array + public function getOrders() { return $this->orders; } @@ -231,7 +231,7 @@ public function setOrder(Order $newOrder) : void /** * @return array */ - public function getProviders() : array + public function getProviders() { return $this->providers; } @@ -247,7 +247,7 @@ public function setProvider(Provider $newProvider) : void /** * @return array */ - public function getBrands() : array + public function getBrands() { return $this->brands; } diff --git a/domain/Interfaces/Repositories/ProductRepositoryInterface.php b/domain/Interfaces/Repositories/ProductRepositoryInterface.php index 96d1f5a..57e1f3f 100644 --- a/domain/Interfaces/Repositories/ProductRepositoryInterface.php +++ b/domain/Interfaces/Repositories/ProductRepositoryInterface.php @@ -9,4 +9,6 @@ interface ProductRepositoryInterface public function findAllPaginated($page, $size): array; public function findByQuery(string $query, array $categories, array $brands, array $provider, int $page, int $size, string $orderBy): array; + + public function count(array $criteria); } diff --git a/domain/Interfaces/Services/Products/ProductServiceInterface.php b/domain/Interfaces/Services/Products/ProductServiceInterface.php index 0ef1022..4e6c89a 100644 --- a/domain/Interfaces/Services/Products/ProductServiceInterface.php +++ b/domain/Interfaces/Services/Products/ProductServiceInterface.php @@ -9,4 +9,6 @@ interface ProductServiceInterface public function findAll($page, $size): array; public function findByQuery($query, $categories, $brands, $provider, $page, $size, $orderBy): array; + + public function count(): int; } diff --git a/infrastructure/Persistence/Queries/ProductQueryBuilder.php b/infrastructure/Persistence/Queries/ProductQueryBuilder.php index 0eaf456..0fd1776 100644 --- a/infrastructure/Persistence/Queries/ProductQueryBuilder.php +++ b/infrastructure/Persistence/Queries/ProductQueryBuilder.php @@ -4,7 +4,6 @@ namespace Infrastructure\Persistence\Queries; -use Doctrine\Common\Collections\Collection; use Doctrine\ORM\EntityManager; use Doctrine\ORM\EntityRepository; use Doctrine\ORM\Mapping; @@ -38,7 +37,7 @@ public function __construct(EntityManager $em) */ public function byQuery(string $query): ProductQueryBuilder { - $this->dqlQuery->where('p.name LIKE :query') + $this->dqlQuery->where('p.title LIKE :query') ->orWhere('p.description LIKE :query') ->setParameter('query', '%' . $query . '%'); diff --git a/infrastructure/Persistence/Repositories/ProductRepository.php b/infrastructure/Persistence/Repositories/ProductRepository.php index 3fb7a3b..dee2b26 100644 --- a/infrastructure/Persistence/Repositories/ProductRepository.php +++ b/infrastructure/Persistence/Repositories/ProductRepository.php @@ -46,13 +46,14 @@ public function findByQuery( $productQueryBuilder->addPageAndLimitBy($page, $limit); } - $productIds = $productQueryBuilder->executeQueryBuilder(); - $products = []; - foreach ($productIds as $productId) { - $products[] = $this->findOneBy(['id' => (int)$productId['id']]); - } - - return $products; + return $productQueryBuilder->executeQueryBuilder(); +// $products = []; +// foreach ($productIds as $productId) { +// dd($productId); +// $products[] = $this->findOneBy(['id' => (int)$productId['id']]); +// } +// +// return $products; } public function findAllPaginated($page, $size): array diff --git a/infrastructure/Providers/AppServiceProvider.php b/infrastructure/Providers/AppServiceProvider.php index 7c63829..8d68471 100644 --- a/infrastructure/Providers/AppServiceProvider.php +++ b/infrastructure/Providers/AppServiceProvider.php @@ -2,6 +2,7 @@ namespace Infrastructure\Providers; +use Application\Services\Brands\BrandService; use Application\Services\Category\CategoryService; use Application\Services\Category\CategoryServiceInterface; use Application\Services\Customers\CustomerService; @@ -21,6 +22,7 @@ use Application\Services\Users\UserService; use Application\Services\Users\UserServiceInterface; +use Domain\Interfaces\Services\Brands\BrandServiceInterface; use Domain\Interfaces\Services\GetUserTypeServiceInterface; use Domain\Interfaces\Services\Notifications\NotifiableInterface; use Domain\Interfaces\Services\Orders\OrderServiceInterface; @@ -84,6 +86,8 @@ public function register() $this->app->bind(OrderServiceInterface::class,OrderService::class); $this->app->bind(ProductServiceInterface::class, ProductService::class); + + $this->app->bind(BrandServiceInterface::class, BrandService::class); } /** diff --git a/presentation/Http/Actions/Products/SearchProductsAction.php b/presentation/Http/Actions/Products/SearchProductsAction.php index 548d8db..fd8c61a 100644 --- a/presentation/Http/Actions/Products/SearchProductsAction.php +++ b/presentation/Http/Actions/Products/SearchProductsAction.php @@ -26,6 +26,7 @@ public function __construct( IndexProductsPresenter $presenter ) { + $this->adapter = $adapter; $this->queryBus = $queryBus; $this->presenter = $presenter; } diff --git a/presentation/Http/Presenters/Products/IndexProductsPresenter.php b/presentation/Http/Presenters/Products/IndexProductsPresenter.php index ddbd33b..8e406ba 100644 --- a/presentation/Http/Presenters/Products/IndexProductsPresenter.php +++ b/presentation/Http/Presenters/Products/IndexProductsPresenter.php @@ -4,9 +4,11 @@ namespace Presentation\Http\Presenters\Products; +use Application\Queries\Results\Products\ProductListResult; + class IndexProductsPresenter { - private $result; + private ProductListResult $result; public function fromResult($result): IndexProductsPresenter { $this->result = $result; @@ -14,31 +16,79 @@ public function fromResult($result): IndexProductsPresenter { } public function getData(): array { - $items = [ - [ - 'name' => 'Notebook asus', - 'description' => 'notebook asus azul', - 'characteristics' => array( - - ), - 'price' => '900', - 'uuid' => 'uuid-number-one', - ], - [ - 'name' => 'Notebook asus', - 'description' => 'notebook asus roja', - 'characteristics' => array( - - ), - 'price' => '900', - 'uuid' => 'uuid-number-two', - ], - ]; + $items = []; + $products = $this->result->getProducts(); + foreach ($products as $product) { + array_push($items, [ + 'id' => $product->getId(), + 'title' => $product->getTitle(), + 'price' => $product->getPrice(), + 'taxes' => $product->getTaxes(), + 'characteristics' => $this->getCharacteristics($product->getCharacteristics()), + 'categories' => $this->getCategories($product->getCategories()), + 'brand' => $this->getBrands($product->getBrands()), + ]); + } return [ 'items' => $items, - 'pageCount' => 1, + 'pageCount' => $this->result->getTotalQuantity(), 'totalItems' => count($items), ]; } + + private function getCategories($categories):array { + $categoriesList = []; + + if(!$categories) { + return $categoriesList; + } + + + foreach ($categories as $category) { + array_push($categoriesList, [ + 'id' => $category->getId(), + 'name' => $category->getName(), + ]); + } + + return $categoriesList; + } + + private function getCharacteristics($characteristics) { + $characteristicsList = []; + + if(!$characteristics) { + return $characteristicsList; + } + + + foreach ($characteristics as $characteristic) { + array_push($characteristicsList, [ + 'id' => $characteristic->getId(), + 'name' => $characteristic->getName(), + 'value' => $characteristic->getValue(), + ]); + } + + return $characteristicsList; + } + + private function getBrands($brands) + { + $brandList = []; + + if (!$brands) { + return $brandList; + } + + foreach ($brands as $brand) { + array_push($brandList, [ + 'id' => $brand->getId(), + 'name' => $brand->getName(), + ]); + } + + return $brandList; + } } diff --git a/presentation/Http/Validations/Schemas/Products/SearchProductsSchema.php b/presentation/Http/Validations/Schemas/Products/SearchProductsSchema.php index 8959409..970dd7c 100644 --- a/presentation/Http/Validations/Schemas/Products/SearchProductsSchema.php +++ b/presentation/Http/Validations/Schemas/Products/SearchProductsSchema.php @@ -12,12 +12,13 @@ public static function getRules(): array { return [ 'query' => 'bail|alpha_dash', 'categories' => 'bail|array', - 'categories.*' => 'bail|integer', + 'categories.*' => 'bail|integer|min:0', 'brands' => 'bail|array', - 'brands.*' => 'bail|integer', + 'brands.*' => 'bail|integer|min:0', 'providers' => 'bail|array', - 'providers.*' => 'bail|integer', - ...PageSizeSchema::getRules(), + 'providers.*' => 'bail|integer|min:0', + 'page' => 'bail|integer|min:0', + 'size' => 'bail|integer|min:0', 'orderBy' => 'bail|alpha|length:3' ]; } diff --git a/presentation/Http/Validations/Utils/ValidatorService.php b/presentation/Http/Validations/Utils/ValidatorService.php index 15b7541..bc2429a 100644 --- a/presentation/Http/Validations/Utils/ValidatorService.php +++ b/presentation/Http/Validations/Utils/ValidatorService.php @@ -17,9 +17,9 @@ public function __construct(Factory $validatorFactory) $this->validatorFactory = $validatorFactory; } - public function make(array $options, array $rules) + public function make(array $options, array $rules, array $messages) { - $this->validated = $this->validatorFactory->make($options, $rules); + $this->validated = $this->validatorFactory->make($options, $rules, $messages); } From daf71cd9411e4d3d8e2abbff9a730e9cbd615d09 Mon Sep 17 00:00:00 2001 From: cristianvena18 Date: Wed, 8 Jul 2020 23:10:31 -0300 Subject: [PATCH 24/38] removed commented code --- .../Repositories/ProductRepository.php | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/infrastructure/Persistence/Repositories/ProductRepository.php b/infrastructure/Persistence/Repositories/ProductRepository.php index 052c81d..2496e34 100644 --- a/infrastructure/Persistence/Repositories/ProductRepository.php +++ b/infrastructure/Persistence/Repositories/ProductRepository.php @@ -16,4 +16,64 @@ public function __construct(EntityManagerInterface $em) parent::__construct($em, new Mapping\ClassMetadata(Product::class)); //TODO WTF? REPOSITORY?? DOOOOCTRINE } + + public function findByQuery( + string $query = null, + array $categories = null, + array $brands = null, + array $providers = null, + int $page = null, + int $limit = null, + string $order = null + ): array { + $productQueryBuilder = new ProductQueryBuilder($this->getEntityManager()); + if ($query) { + $productQueryBuilder->byQuery($query); + } + if ($brands) { + $productQueryBuilder->byBrand($brands); + } + if ($categories) { + $productQueryBuilder->byCategories($categories); + } + if ($order) { + $productQueryBuilder->addOrderBy($order); + } + if ($page && $limit) { + $productQueryBuilder->addPageAndLimitBy($page, $limit); + } + + return $productQueryBuilder->executeQueryBuilder(); + } + + public function findAllPaginated($page, $size): array + { + // get entity manager + $em = $this->getEntityManager(); + + // get the user repository + $products = $em->getRepository(Product::class); + + // build the query for the doctrine paginator + $query = $products->createQueryBuilder('p') + ->orderBy('p.id', 'DESC') + ->getQuery(); + + // load doctrine Paginator + $paginator = new Paginator($query); + + // now get one page's items: + $paginator + ->getQuery() + ->setFirstResult($size * ($page-1)) // set the offset + ->setMaxResults($size); // set the limit + + $employeesList = []; + + foreach ($paginator as $item) { + array_push($employeesList, $item); + } + + return $employeesList; + } } From 44addbc0dd23e5b70a9a5a2d9c93255e022dae2e Mon Sep 17 00:00:00 2001 From: cristianvena18 Date: Wed, 8 Jul 2020 23:52:35 -0300 Subject: [PATCH 25/38] added repositories --- .../Services/Products/ProductService.php | 61 ++++++++++++++++- domain/Entities/Brand.php | 62 +++++++++++++++++ .../Repositories/BrandRepositoryInterface.php | 18 +++++ .../ProductRepositoryInterface.php | 8 +++ .../Repositories/StockRepositoryInterface.php | 16 +++++ .../Products/ProductServiceInterface.php | 10 +++ .../Repositories/BrandRepository.php | 68 +++++++++++++++++++ .../Repositories/ProductRepository.php | 17 ++++- .../Repositories/StockRepository.php | 44 +++++++++++- .../DoctrineRepositoriesServiceProvider.php | 3 + 10 files changed, 304 insertions(+), 3 deletions(-) create mode 100644 domain/Entities/Brand.php create mode 100644 domain/Interfaces/Repositories/BrandRepositoryInterface.php create mode 100644 domain/Interfaces/Repositories/StockRepositoryInterface.php create mode 100644 infrastructure/Persistence/Repositories/BrandRepository.php diff --git a/application/Services/Products/ProductService.php b/application/Services/Products/ProductService.php index ca5084c..1ca89d6 100644 --- a/application/Services/Products/ProductService.php +++ b/application/Services/Products/ProductService.php @@ -4,15 +4,24 @@ namespace Application\Services\Products; +use Application\Exceptions\EntityNotFoundException; +use Domain\Entities\Product; use Domain\Interfaces\Repositories\ProductRepositoryInterface; +use Domain\Interfaces\Repositories\StockRepositoryInterface; use Domain\Interfaces\Services\Products\ProductServiceInterface; class ProductService implements ProductServiceInterface { private ProductRepositoryInterface $repository; - public function __construct(ProductRepositoryInterface $repository) + private StockRepositoryInterface $stockRepository; + + public function __construct( + ProductRepositoryInterface $repository, + StockRepositoryInterface $stockRepository + ) { + $this->stockRepository = $stockRepository; $this->repository = $repository; } @@ -36,4 +45,54 @@ public function count(): int { return $this->repository->count([]); } + + public function findWithLowerStock(?int $value): array + { + $value = $value ? $value : 5; + $stocks = $this->stockRepository->findWithLowerStock($value); + $products = []; + + foreach ($stocks as $stock) { + array_push($products, $stock->getProduct()); + } + + return $products; + } + + public function persist(Product $product): void + { + $this->repository->persist($product); + } + + /** + * @param int $id + * @return Product + * @throws EntityNotFoundException + */ + public function findOneByIdOrFail(int $id): Product + { + $product = $this->repository->findOneById($id); + + if(!$product) { + throw new EntityNotFoundException("Product with id: $id not found"); + } + + return $product; + } + + /** + * @param string $uuid + * @return Product + * @throws EntityNotFoundException + */ + public function findOneByUuidOrFail(string $uuid): Product + { + $product = $this->repository->findOneByUuid($uuid); + + if(!$product) { + throw new EntityNotFoundException("Product with uuid: $uuid not found"); + } + + return $product; + } } diff --git a/domain/Entities/Brand.php b/domain/Entities/Brand.php new file mode 100644 index 0000000..9b05267 --- /dev/null +++ b/domain/Entities/Brand.php @@ -0,0 +1,62 @@ +id; + } + + /** + * @return string + */ + public function getName(): string + { + return $this->name; + } + + /** + * @param string $name + */ + public function setName(string $name): void + { + $this->name = $name; + } + + /** + * @return array + */ + public function getProducts() + { + return $this->products; + } + + /** + * @param array $products + */ + public function setProducts($products): void + { + $this->products = $products; + } +} diff --git a/domain/Interfaces/Repositories/BrandRepositoryInterface.php b/domain/Interfaces/Repositories/BrandRepositoryInterface.php new file mode 100644 index 0000000..84ff07b --- /dev/null +++ b/domain/Interfaces/Repositories/BrandRepositoryInterface.php @@ -0,0 +1,18 @@ +getEntityManager()->persist($brand); + $this->getEntityManager()->flush(); + } + + public function findOneById(int $id): ?Brand + { + return $this->findOneBy(['id' => $id]); + } + + public function findOneByName(string $name): ?Brand + { + return $this->findOneBy(['name' => $name]); + } + + public function findAllPaginated(int $page, int $size): array + { + // get entity manager + $em = $this->getEntityManager(); + + // get the user repository + $brands = $em->getRepository(Brand::class); + + // build the query for the doctrine paginator + $query = $brands->createQueryBuilder('u') + ->orderBy('u.name', 'ASC') + ->getQuery(); + + // load doctrine Paginator + $paginator = new Paginator($query); + + // now get one page's items: + $paginator + ->getQuery() + ->setFirstResult($size * ($page-1)) // set the offset + ->setMaxResults($size); // set the limit + + $brandsList = []; + + foreach ($paginator as $item) { + array_push($brandsList, $item); + } + + return $brandsList; + } +} diff --git a/infrastructure/Persistence/Repositories/ProductRepository.php b/infrastructure/Persistence/Repositories/ProductRepository.php index e281008..e993970 100644 --- a/infrastructure/Persistence/Repositories/ProductRepository.php +++ b/infrastructure/Persistence/Repositories/ProductRepository.php @@ -17,7 +17,6 @@ class ProductRepository extends EntityRepository implements ProductRepositoryInt public function __construct(EntityManagerInterface $em) { parent::__construct($em, new Mapping\ClassMetadata(Product::class)); - //TODO WTF? REPOSITORY?? DOOOOCTRINE } public function findByQuery( @@ -79,4 +78,20 @@ public function findAllPaginated($page, $size): array return $employeesList; } + + public function persist(Product $product) + { + $this->getEntityManager()->persist($product); + $this->getEntityManager()->flush(); + } + + public function findOneById(int $id): ?Product + { + return $this->findOneBy(['id' => $id]); + } + + public function findOneByUuid(string $uuid): ?Product + { + return $this->findOneBy(['uuid' => $uuid]); + } } diff --git a/infrastructure/Persistence/Repositories/StockRepository.php b/infrastructure/Persistence/Repositories/StockRepository.php index 8d0e74d..2074d84 100644 --- a/infrastructure/Persistence/Repositories/StockRepository.php +++ b/infrastructure/Persistence/Repositories/StockRepository.php @@ -7,12 +7,54 @@ use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityRepository; use Doctrine\ORM\Mapping\ClassMetadata; +use Doctrine\ORM\Tools\Pagination\Paginator; use Domain\Entities\Stock; +use Domain\Interfaces\Repositories\StockRepositoryInterface; -class StockRepository extends EntityRepository +class StockRepository extends EntityRepository implements StockRepositoryInterface { public function __construct(EntityManagerInterface $em) { parent::__construct($em, new ClassMetadata(Stock::class)); } + + public function persist(Stock $stock): void + { + $this->getEntityManager()->persist($stock); + $this->getEntityManager()->flush(); + } + + public function findOneById(int $id): ?Stock { + return $this->findOneBy(['id' => $id]); + } + + public function findWithLowerStock(int $value): array + { + // get entity manager + $em = $this->getEntityManager(); + + // get the user repository + $stocks = $em->getRepository(Stock::class); + + // build the query for the doctrine paginator + $query = $stocks->createQueryBuilder('u') + ->where('u.quantity = :quantity') + ->setParameter('quantity', $value) + ->orderBy('u.id', 'ASC') + ->getQuery(); + + // load doctrine Paginator + $paginator = new Paginator($query); + + // now get one page's items: + $paginator->getQuery(); + + $stocksList = []; + + foreach ($paginator as $item) { + array_push($brandsList, $item); + } + + return $stocksList; + } } diff --git a/infrastructure/Providers/DoctrineRepositoriesServiceProvider.php b/infrastructure/Providers/DoctrineRepositoriesServiceProvider.php index 3b4964c..481e1bb 100644 --- a/infrastructure/Providers/DoctrineRepositoriesServiceProvider.php +++ b/infrastructure/Providers/DoctrineRepositoriesServiceProvider.php @@ -4,6 +4,7 @@ namespace Infrastructure\Providers; +use Domain\Interfaces\Repositories\BrandRepositoryInterface; use Domain\Interfaces\Repositories\CategoryRepositoryInterface; use Domain\Interfaces\Repositories\CustomerRepositoryInterface; use Domain\Interfaces\Repositories\EmployeeRepositoryInterface; @@ -13,6 +14,7 @@ use Domain\Interfaces\Repositories\TokenRepositoryInterface; use Domain\Interfaces\Repositories\UserRepositoryInterface; use Illuminate\Support\ServiceProvider; +use Infrastructure\Persistence\Repositories\BrandRepository; use Infrastructure\Persistence\Repositories\CategoryRepository; use Infrastructure\Persistence\Repositories\CustomerRepository; use Infrastructure\Persistence\Repositories\EmployeeRepository; @@ -39,5 +41,6 @@ public function boot() $this->app->bind(FilterRepositoryInterface::class, FilterRepository::class); $this->app->bind(OrderRepositoryInterface::class, OrderRepository::class); $this->app->bind(ProductRepositoryInterface::class, ProductRepository::class); + $this->app->bind(BrandRepositoryInterface::class, BrandRepository::class); } } From 9aa4c897ea8737bf725ada4fc29327426974c7ef Mon Sep 17 00:00:00 2001 From: Martin Date: Fri, 10 Jul 2020 11:32:07 -0300 Subject: [PATCH 26/38] It's doesn't shows Welcome view, I'm trying fix It --- .env.save | 48 +++++++++++++++++++++++++++++++ presentation/Http/routes/web.php | 6 ++-- resources/views/welcome.blade.php | 2 +- 3 files changed, 52 insertions(+), 4 deletions(-) create mode 100644 .env.save diff --git a/.env.save b/.env.save new file mode 100644 index 0000000..56f3418 --- /dev/null +++ b/.env.save @@ -0,0 +1,48 @@ +APP_NAME=Laravel +APP_ENV=local +APP_KEY= +APP_DEBUG=true +APP_URL=http://localhost + +LOG_CHANNEL=stack + +DB_CONNECTION=mysql +DB_HOST=DB_PORT=3306 +DB_DATABASE=apizeep +DB_USERNAME=test +DB_PASSWORD=test + +BROADCAST_DRIVER=log +CACHE_DRIVER=file +QUEUE_CONNECTION=sync +SESSION_DRIVER=file +SESSION_LIFETIME=120 + +REDIS_HOST=127.0.0.1 +REDIS_PASSWORD=null +REDIS_PORT=6379 + +MAIL_MAILER=smtp +MAIL_HOST=smtp.mailtrap.io +MAIL_PORT=2525 +MAIL_USERNAME=null +MAIL_PASSWORD=null +MAIL_ENCRYPTION=null +MAIL_FROM_ADDRESS=null +MAIL_FROM_NAME="${APP_NAME}" +SENDGRID_API_KEY= + +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +AWS_DEFAULT_REGION=us-east-1 +AWS_BUCKET= + +PUSHER_APP_ID= +PUSHER_APP_KEY= +PUSHER_APP_SECRET= +PUSHER_APP_CLUSTER=mt1 + +MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" +MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" + +JWT_SECRET= diff --git a/presentation/Http/routes/web.php b/presentation/Http/routes/web.php index e67b73d..873bb49 100644 --- a/presentation/Http/routes/web.php +++ b/presentation/Http/routes/web.php @@ -13,6 +13,6 @@ | */ -//Route::get('/home', function () { -// return view('welcome'); -//}); +Route::get('/home', function () { + return view('welcome'); +}); diff --git a/resources/views/welcome.blade.php b/resources/views/welcome.blade.php index af06c5f..34dd557 100644 --- a/resources/views/welcome.blade.php +++ b/resources/views/welcome.blade.php @@ -81,7 +81,7 @@
- ZeepCommerce Dashboard & API + ZeepCommerce API Service