tango-app-ui-analyse-trax 3.9.53 → 3.9.54

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -326,10 +326,10 @@ export class FlagsNewComponent {
326
326
  });
327
327
  }
328
328
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlagsNewComponent, deps: [{ token: i1.GlobalStateService }, { token: i0.ChangeDetectorRef }, { token: i2.TraxService }, { token: i3.Router }, { token: i1.PageInfoService }, { token: i3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
329
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FlagsNewComponent, selector: "lib-flags-new", ngImport: i0, template: "<div class=\"col-md-12\">\r\n <div class=\"row\">\r\n <!--allCards -->\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'allCards'\">\r\n <div class=\"w-95\">\r\n <div class=\"pt-2 h-100\">\r\n <div class=\"d-flex justify-content-between\">\r\n <div class=\"cursor-pointer pe-3\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'w-25' : 'w-50'\" (click)=\"selectTabs('all')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='all' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='all' ? 'active-header' : 'inactive-header'\">\r\n Total Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.totalFlag === 0 ||\r\n cardMetricsData?.flagCards?.totalFlag) ?\r\n cardMetricsData?.flagCards?.totalFlag?.toLocaleString('en-IN') : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"cursor-pointer pe-3\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'w-25' : 'w-50'\" (click)=\"selectTabs('question')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='question' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='question' ? 'active-header' : 'inactive-header'\">\r\n Question Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount my-2 me-3\">{{(cardMetricsData?.flagCards?.questionFlag?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.questionFlag?.count) ?\r\n cardMetricsData?.flagCards?.questionFlag?.count?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\"\r\n class=\"mt-2 me-1\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"w-25 cursor-pointer pe-3\" (click)=\"selectTabs('runAI')\" *ngIf=\"cardMetricsData?.flagCards?.runAIFlag\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='runAI' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='runAI' ? 'active-header' : 'inactive-header'\">\r\n Run AI Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.runAIFlag?.flagCount\r\n === 0 ||\r\n cardMetricsData?.flagCards?.runAIFlag?.flagCount) ?\r\n cardMetricsData?.flagCards?.runAIFlag?.flagCount?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"cursor-pointer pe-3\" (click)=\"selectTabs('time')\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'w-25' : 'w-50'\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='time' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='time' ? 'active-header' : 'inactive-header'\">\r\n Not Submitted\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.delayInSubmission?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.delayInSubmission?.count) ?\r\n cardMetricsData?.flagCards?.delayInSubmission?.count?.toLocaleString('en-IN')\r\n : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"cursor-pointer pe-3\" (click)=\"selectTabs('detection')\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'w-25' : 'w-50'\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='detection' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='detection' ? 'active-header' : 'inactive-header'\">\r\n Detection Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.detectionFlag?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.detectionFlag?.count) ?\r\n cardMetricsData?.flagCards?.detectionFlag?.count?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!-- customChecklistCount > 1 & aiChecklistCount > 0 show 3 cards -->\r\n <!-- customCards -->\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'customCards'\">\r\n <div class=\"w-95\">\r\n <div class=\"pt-2 h-100\">\r\n <div class=\"d-flex justify-content-between mt-3\">\r\n <div class=\"col-3 cursor-pointer pe-3\" (click)=\"selectTabs('all')\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'col-3' : 'col-4'\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='all' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='all' ? 'active-header' : 'inactive-header'\">\r\n Total Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.totalFlag === 0 ||\r\n cardMetricsData?.flagCards?.totalFlag) ?\r\n cardMetricsData?.flagCards?.totalFlag?.toLocaleString('en-IN') : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-3 cursor-pointer pe-3\" (click)=\"selectTabs('question')\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'col-3' : 'col-4'\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='question' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='question' ? 'active-header' : 'inactive-header'\">\r\n Question Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount my-2 me-3\">{{(cardMetricsData?.flagCards?.questionFlag?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.questionFlag?.count) ?\r\n cardMetricsData?.flagCards?.questionFlag?.count?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\"\r\n class=\"mt-2 me-1\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-3 cursor-pointer pe-3\" (click)=\"selectTabs('runAI')\" *ngIf=\"cardMetricsData?.flagCards?.runAIFlag\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='runAI' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='runAI' ? 'active-header' : 'inactive-header'\">\r\n Run AI Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.runAIFlag?.flagCount\r\n === 0 ||\r\n cardMetricsData?.flagCards?.runAIFlag?.flagCount) ?\r\n cardMetricsData?.flagCards?.runAIFlag?.flagCount?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-3 cursor-pointer pe-3\" (click)=\"selectTabs('time')\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'col-3' : 'col-4'\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='time' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='time' ? 'active-header' : 'inactive-header'\">\r\n Not Submitted\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.delayInSubmission?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.delayInSubmission?.count) ?\r\n cardMetricsData?.flagCards?.delayInSubmission?.count?.toLocaleString('en-IN')\r\n : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'allCards' || cardMetricsDataByType?.showCards === 'customCards'\">\r\n <div *ngIf=\"headerData?.client !== '11'\" class=\"w-5 d-flex align-items-center\">\r\n <div class=\"row\">\r\n <div class=\"col-6 mt-3\">\r\n <div class=\"d-flex flex-column text-center align-items-center justify-content-center me-5\">\r\n <div class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='daily' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('daily')\">1D</div>\r\n <div class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='weekly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('weekly')\">1W</div>\r\n <div *ngIf=\"traxMonthlyComparisonData\" class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='monthly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('monthly')\">1M</div>\r\n <!-- <div class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='monthly' ? 'text-primary' :''\" (click)=\"dateValue('monthly')\">1M</div> -->\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n </div>\r\n <!-- customChecklistCount > 0 & aiChecklistCount > 1 show single cards -->\r\n <!-- aiCards -->\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'aiCards'\">\r\n <div class=\"row \">\r\n <div class=\"col-12 mt-3 cursor-pointer pe-3\" (click)=\"selectTabs('detection')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='detection' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='detection' ? 'active-header' : 'inactive-header'\">\r\n Detection Flags\r\n </div>\r\n <div class=\"p-3 row\">\r\n <div class=\"mt-2 col-11\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.detectionFlag?.count === 0 ||\r\n cardMetricsData?.flagCards?.detectionFlag?.count) ?\r\n cardMetricsData?.flagCards?.detectionFlag?.count?.toLocaleString('en-IN') : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\" fill=\"none\">\r\n <path d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\r\n fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\"\r\n stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n <div *ngIf=\"headerData?.client !== '11'\" class=\"col-1 mt-3\">\r\n <span class=\"mt-1 cursor-pointer fs-5 mx-2\"\r\n [ngClass]=\"dateComparisonType ==='daily' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('daily')\">1D</span>\r\n <span class=\"mt-1 cursor-pointer fs-5 me-2\"\r\n [ngClass]=\"dateComparisonType ==='weekly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('weekly')\">1W</span>\r\n <span *ngIf=\"traxMonthlyComparisonData\" class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='monthly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('monthly')\">1M</span>\r\n <!-- <div class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='monthly' ? 'text-primary' :''\" (click)=\"dateValue('monthly')\">1M</div> -->\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div class=\"row mt-3\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-4 px-4\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\"><span *ngIf=\"!['time','all'].includes(selectedFlag)\"\r\n class=\"me-3\">{{selectedFlag !== 'runAI' ? (selectedFlag | titlecase) : 'RunAI'}} Flags</span> <span\r\n *ngIf=\"['time','all'].includes(selectedFlag)\" class=\"me-3\">{{selectedFlag === 'all' ?\r\n 'Total Flags' : 'Not Sumbitted'}}</span> <span *ngIf=\"totalItems\"\r\n class=\"badge badge-light-primary \">{{totalItems}}\r\n total</span></span>\r\n <span class=\"text-sub mb-2\"> Based on {{ headerData?.date?.startDate | date: 'MMM d' }} - {{\r\n headerData?.date?.endDate | date: 'MMM d, y' }}\r\n </span>\r\n </h3>\r\n <div *ngIf=\"(flagsTableApiState | async) === 'loaded'\" class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon footfallsearch svg-icon-1 position-absolute ms-8\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\">\r\n </rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input [formControl]=\"searchInput\" type=\"text\"\r\n class=\"form-control ps-14 ms-4 me-4 footfallsearch\" placeholder=\"Search\"\r\n autocomplete=\"off\" />\r\n <!-- <lib-reactive-select [formControl]=\"filterInput\" [idField]=\"'value'\"\r\n [nameField]=\"'label'\" [data]=\"filterValues\" class=\"w-100\">\r\n </lib-reactive-select> -->\r\n <button *ngIf=\"flagsTableData?.length\"\r\n [disabled]=\"(flagsTableApiState | async) === 'loading'\" type=\"button\"\r\n (click)=\"onFlagsTableExport()\" type=\"button\"\r\n class=\"btn-outline btn align-items-end text-nowrap invheader ms-4\">\r\n <!-- Export Icon -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </svg>\r\n <span class=\"ms-2\"></span> Export\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <ng-container *ngIf=\"(flagsTableApiState | async) === 'loaded' && flagsTableData?.length\">\r\n <div class=\"table-responsive px-4\">\r\n <table class=\"table text-nowrap bottom-border\">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('checkListName')\">Checklist Name\r\n <svg [ngClass]=\"sortColumName === 'checkListName' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'checkListName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('coverage')\">Coverage<svg\r\n [ngClass]=\"sortColumName === 'coverage' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'coverage' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('runAIQuestionCount')\" *ngIf=\"['runAI'].includes(selectedFlag)\">No of Questions<svg\r\n [ngClass]=\"sortColumName === 'runAIQuestionCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'runAIQuestionCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('assignedStores')\">Assigned\r\n Stores<svg\r\n [ngClass]=\"sortColumName === 'assignedStores' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'assignedStores' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <!-- *ngIf=\"!['runAI'].includes(selectedFlag)\" -->\r\n <th class=\"cursor-pointer\" (click)=\"sortData('flaggedStores')\">Flagged Stores\r\n <svg [ngClass]=\"sortColumName === 'flaggedStores' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'flaggedStores' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('flags')\" *ngIf=\"['runAI'].includes(selectedFlag)\">Flags\r\n <svg [ngClass]=\"sortColumName === 'flags' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'flags' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th *ngIf=\"['all','question'].includes(selectedFlag)\" class=\"cursor-pointer\"\r\n (click)=\"sortData('customQuestionFlagCount')\">{{selectedFlag === 'question'\r\n ? 'Flags' : 'Question Flags'}}<svg\r\n [ngClass]=\"sortColumName === 'customQuestionFlagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'customQuestionFlagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th *ngIf=\"['all'].includes(selectedFlag)\" class=\"cursor-pointer\"\r\n (click)=\"sortData('runAIFlag')\">Run AI Flags<svg\r\n [ngClass]=\"sortColumName === 'runAIFlag' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'runAIFlag' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th *ngIf=\"['all','time'].includes(selectedFlag)\" class=\"cursor-pointer\"\r\n (click)=\"sortData('customTimeFlagCount')\">{{selectedFlag === 'time' ?\r\n 'Flags' : 'Not Submitted Flags'}}<svg\r\n [ngClass]=\"sortColumName === 'customTimeFlagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'customTimeFlagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th *ngIf=\"['all','detection'].includes(selectedFlag)\" class=\"cursor-pointer\"\r\n (click)=\"sortData('flagCount')\">{{selectedFlag === 'detection' ? 'Detections' :\r\n 'Detection Flags'}}<svg\r\n [ngClass]=\"sortColumName === 'flagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'flagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <!-- <th style=\"width: 200px;\" class=\"cursor-pointer\" (click)=\"sortData('flagCount')\">Flagged<svg\r\n [ngClass]=\"sortColumName === 'flagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'flagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></th> -->\r\n <!-- <th *ngIf=\"selectedFlag === 'detection'\" class=\"cursor-pointer\" (click)=\"sortData('detectionCount')\">Detection Count<svg\r\n [ngClass]=\"sortColumName === 'detectionCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'detectionCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></th> -->\r\n <th class=\"cursor-pointer\" (click)=\"sortData('Compliance')\">Compliance %<svg\r\n [ngClass]=\"sortColumName === 'Compliance' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'Compliance' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <!-- *ngFor=\"let store of checklistPerformance\" -->\r\n <tr *ngFor=\"let data of flagsTableData\">\r\n <td>\r\n <div>\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n {{data?.checkListChar?.toUpperCase() || '--' }} </span>\r\n </div><span (click)=\"viewInDetail(data?.sourceCheckList_id)\"\r\n class=\"table-title-primary cursor-pointer\">{{data?.checkListName ?\r\n data?.checkListName : '--'}}</span> <span\r\n *ngIf=\"data?.checkListType !== 'custom'\" class=\"mx-2\">\u2728</span>\r\n </div>\r\n </td>\r\n \r\n <td class=\"table-title\">{{ data?.coverage ? data?.coverage : '--' }}</td>\r\n <td class=\"table-title\" *ngIf=\"['runAI'].includes(selectedFlag)\">{{ data?.runAIQuestionCount ? data?.runAIQuestionCount : 0 }}</td>\r\n <td class=\"table-title\">{{ data.checkListType === 'custom' ?\r\n ((data?.assignedStores || data?.assignedStores === 0) ? data?.assignedStores\r\n : '--') : ((data?.assignedStoresAi || data?.assignedStoresAi === 0) ?\r\n data?.assignedStoresAi : '--')}}</td>\r\n <td class=\"table-title\">{{ (data?.flaggedStores || data?.flaggedStores === 0) ?\r\n data?.flaggedStores : '--' }}</td>\r\n <td *ngIf=\"['all','question',''].includes(selectedFlag)\" class=\"table-title\" >{{\r\n data?.customQuestionFlagCount ?? '--' }}</td>\r\n <td *ngIf=\"['all'].includes(selectedFlag)\" class=\"table-title\">{{\r\n data?.runAIFlag ?? '--' }}</td>\r\n <td *ngIf=\"['all','time'].includes(selectedFlag)\" class=\"table-title\">{{\r\n data?.customTimeFlagCount ?? '--' }}</td>\r\n <!-- -->\r\n <td *ngIf=\"['all','detection', 'runAI'].includes(selectedFlag)\" class=\"table-title\">\r\n <!-- {{data?.checkListType === 'custom' ? 0 : (data?.flagCount ?? '--')}} -->\r\n {{data?.flagCount ?? '0'}}\r\n </td>\r\n \r\n \r\n <!-- <td class=\"table-title-primary\"> \r\n\r\n <ng-container *ngIf=\"data?.checkListType === 'custom'\" >\r\n <div *ngIf=\"filterInput.value === 'all' || filterInput.value === 'question'\" class=\"d-flex justify-content-between mb-2\">\r\n <span class=\"cursor-pointer\" (click)=\"viewInDetail(data?.sourceCheckList_id, 'question')\" >{{(data?.customQuestionFlagCount || data?.customQuestionFlagCount === 0) ? data?.customQuestionFlagCount?.toLocaleString('en-IN') : '--'}} </span> \r\n <span class=\"badge badge-light-default mx-3\" >Questions</span> \r\n </div>\r\n\r\n <div *ngIf=\"filterInput.value === 'all' || filterInput.value === 'time'\" class=\"d-flex justify-content-between\">\r\n <span class=\"cursor-pointer\" (click)=\"viewInDetail(data?.sourceCheckList_id, 'time')\" >{{(data?.customTimeFlagCount || data?.customTimeFlagCount === 0) ? data?.customTimeFlagCount?.toLocaleString('en-IN') : '--'}} </span> \r\n <span class=\"badge badge-light-default mx-3\" >Not Submitted</span> \r\n </div> \r\n </ng-container> \r\n\r\n <div *ngIf=\"data?.checkListType !== 'custom'\" class=\"d-flex justify-content-between\">\r\n <span class=\"cursor-pointer\" (click)=\"viewInDetail(data?.sourceCheckList_id)\" >{{(data?.flagCount || data?.flagCount === 0) ? data?.flagCount?.toLocaleString('en-IN') : '--'}} </span> \r\n <span class=\"badge badge-light-default mx-3\" >Detections</span> \r\n </div>\r\n \r\n </td> -->\r\n <td class=\"table-title\">\r\n <div class=\"d-flex\" *ngIf=\"data.checkListType !== 'activitymonitoring'\">\r\n <div class=\"h-5px w-100 bg-light mt-4\">\r\n <div role=\"progressbar\" aria-valuemin=\"20\" aria-valuemax=\"100\"\r\n class=\"bg-primary rounded h-5px \"\r\n [style.width]=\"data?.complianceRate + '%'\"> </div>\r\n </div>\r\n <div class=\"text-end table-title\"><span class=\"my-1 mx-1 text-end\">\r\n {{data?.complianceRate?.toLocaleString('en-US', {\r\n minimumFractionDigits: 0 })\r\n || '--'}}%</span></div>\r\n </div>\r\n <div>\r\n NA\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n <div (click)=\"viewInDetail(data?.sourceCheckList_id)\"\r\n class=\"table-title-primary cursor-pointer\">View</div>\r\n </div>\r\n </td>\r\n\r\n </tr>\r\n\r\n </tbody>\r\n </table>\r\n\r\n </div>\r\n <div *ngIf=\"(flagsTableApiState | async) === 'loaded' && flagsTableData?.length\">\r\n <lib-pagination [itemsPerPage]=\"itemsPerPage\" [currentPage]=\"currentPage\"\r\n [totalItems]=\"totalItems\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </ng-container>\r\n <ng-container\r\n *ngIf=\"(flagsTableApiState | async) === 'loading' || (flagsTableApiState | async) === 'initial'\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(flagsTableApiState | async) === 'loaded' && !flagsTableData?.length\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 my-6\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Flags Table</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".ellipse1{border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d}.cardcount{color:var(--Black, #101828);font-size:30px;font-style:normal;font-weight:600;line-height:38px}.cardtext{color:var(--Gray-700, #344054);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.cardsubcount{color:var(--Black, #101828);font-size:20px;font-style:normal;font-weight:700;line-height:30px}.card-border{padding:8px;border-radius:12px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF)}.percent-value{color:var(--Gray-500, #667085);text-align:center;font-size:16px;font-style:normal;font-weight:600;line-height:18px}.week-font{color:var(--Gray-800, #1D2939);font-size:12px;font-style:normal;font-weight:400;line-height:18px}.flagcard{padding:0 0 0 15%}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-size:14px;font-style:normal;font-weight:500!important;line-height:30px;text-decoration-line:underline}.table-title{color:var(--Gray-500, #667085);font-size:14px;font-style:normal;font-weight:500!important;line-height:20px}.rotate{rotate:180deg;transition:1s}td{vertical-align:middle}.inactive-card{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:#fff}.inactive-card .inactive-header{font-size:16px;font-weight:500;line-height:24px;border-radius:4px;padding:8px 16px;background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#10182808),#f9fafb}.active-card{border-radius:8px;border:1px solid var(--Primary-300, #6BCAFF);background:var(--Primary-25, #F6FCFF)}.active-card .active-header{font-size:16px;font-weight:500;line-height:24px;border-radius:4px;padding:8px 16px;background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f9fafb}.w-95{width:97%!important}.w-5{width:3%!important}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i4.DatePipe, name: "date" }] });
329
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FlagsNewComponent, selector: "lib-flags-new", ngImport: i0, template: "<div class=\"col-md-12\">\r\n <div class=\"row\">\r\n <!--allCards -->\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'allCards'\">\r\n <div class=\"w-95\">\r\n <div class=\"pt-2 h-100\">\r\n <div class=\"d-flex justify-content-between\">\r\n <div class=\"cursor-pointer pe-3\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'w-25' : 'w-50'\" (click)=\"selectTabs('all')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='all' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='all' ? 'active-header' : 'inactive-header'\">\r\n Total Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.totalFlag === 0 ||\r\n cardMetricsData?.flagCards?.totalFlag) ?\r\n cardMetricsData?.flagCards?.totalFlag?.toLocaleString('en-IN') : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"cursor-pointer pe-3\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'w-25' : 'w-50'\" (click)=\"selectTabs('question')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='question' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='question' ? 'active-header' : 'inactive-header'\">\r\n Question Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount my-2 me-3\">{{(cardMetricsData?.flagCards?.questionFlag?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.questionFlag?.count) ?\r\n cardMetricsData?.flagCards?.questionFlag?.count?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\"\r\n class=\"mt-2 me-1\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"w-25 cursor-pointer pe-3\" (click)=\"selectTabs('runAI')\" *ngIf=\"cardMetricsData?.flagCards?.runAIFlag\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='runAI' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='runAI' ? 'active-header' : 'inactive-header'\">\r\n Run AI Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.runAIFlag?.flagCount\r\n === 0 ||\r\n cardMetricsData?.flagCards?.runAIFlag?.flagCount) ?\r\n cardMetricsData?.flagCards?.runAIFlag?.flagCount?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"cursor-pointer pe-3\" (click)=\"selectTabs('time')\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'w-25' : 'w-50'\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='time' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='time' ? 'active-header' : 'inactive-header'\">\r\n Not Submitted\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.delayInSubmission?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.delayInSubmission?.count) ?\r\n cardMetricsData?.flagCards?.delayInSubmission?.count?.toLocaleString('en-IN')\r\n : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"cursor-pointer pe-3\" (click)=\"selectTabs('detection')\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'w-25' : 'w-50'\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='detection' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='detection' ? 'active-header' : 'inactive-header'\">\r\n Detection Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.detectionFlag?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.detectionFlag?.count) ?\r\n cardMetricsData?.flagCards?.detectionFlag?.count?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!-- customChecklistCount > 1 & aiChecklistCount > 0 show 3 cards -->\r\n <!-- customCards -->\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'customCards'\">\r\n <div class=\"w-95\">\r\n <div class=\"pt-2 h-100\">\r\n <div class=\"d-flex justify-content-between mt-3\">\r\n <div class=\"col-3 cursor-pointer pe-3\" (click)=\"selectTabs('all')\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'col-3' : 'col-4'\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='all' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='all' ? 'active-header' : 'inactive-header'\">\r\n Total Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.totalFlag === 0 ||\r\n cardMetricsData?.flagCards?.totalFlag) ?\r\n cardMetricsData?.flagCards?.totalFlag?.toLocaleString('en-IN') : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-3 cursor-pointer pe-3\" (click)=\"selectTabs('question')\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'col-3' : 'col-4'\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='question' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='question' ? 'active-header' : 'inactive-header'\">\r\n Question Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount my-2 me-3\">{{(cardMetricsData?.flagCards?.questionFlag?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.questionFlag?.count) ?\r\n cardMetricsData?.flagCards?.questionFlag?.count?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\"\r\n class=\"mt-2 me-1\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-3 cursor-pointer pe-3\" (click)=\"selectTabs('runAI')\" *ngIf=\"cardMetricsData?.flagCards?.runAIFlag\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='runAI' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='runAI' ? 'active-header' : 'inactive-header'\">\r\n Run AI Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.runAIFlag?.flagCount\r\n === 0 ||\r\n cardMetricsData?.flagCards?.runAIFlag?.flagCount) ?\r\n cardMetricsData?.flagCards?.runAIFlag?.flagCount?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-3 cursor-pointer pe-3\" (click)=\"selectTabs('time')\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'col-3' : 'col-4'\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='time' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='time' ? 'active-header' : 'inactive-header'\">\r\n Not Submitted\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.delayInSubmission?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.delayInSubmission?.count) ?\r\n cardMetricsData?.flagCards?.delayInSubmission?.count?.toLocaleString('en-IN')\r\n : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'allCards' || cardMetricsDataByType?.showCards === 'customCards'\">\r\n <div *ngIf=\"headerData?.client !== '11'\" class=\"w-5 d-flex align-items-center\">\r\n <div class=\"row\">\r\n <div class=\"col-6 mt-3\">\r\n <div class=\"d-flex flex-column text-center align-items-center justify-content-center me-5\">\r\n <div class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='daily' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('daily')\">1D</div>\r\n <div class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='weekly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('weekly')\">1W</div>\r\n <div *ngIf=\"traxMonthlyComparisonData\" class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='monthly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('monthly')\">1M</div>\r\n <!-- <div class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='monthly' ? 'text-primary' :''\" (click)=\"dateValue('monthly')\">1M</div> -->\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n </div>\r\n <!-- customChecklistCount > 0 & aiChecklistCount > 1 show single cards -->\r\n <!-- aiCards -->\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'aiCards'\">\r\n <div class=\"row \">\r\n <div class=\"col-12 mt-3 cursor-pointer pe-3\" (click)=\"selectTabs('detection')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='detection' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='detection' ? 'active-header' : 'inactive-header'\">\r\n Detection Flags\r\n </div>\r\n <div class=\"p-3 row\">\r\n <div class=\"mt-2 col-11\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.detectionFlag?.count === 0 ||\r\n cardMetricsData?.flagCards?.detectionFlag?.count) ?\r\n cardMetricsData?.flagCards?.detectionFlag?.count?.toLocaleString('en-IN') : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\" fill=\"none\">\r\n <path d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\r\n fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\"\r\n stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n <div *ngIf=\"headerData?.client !== '11'\" class=\"col-1 mt-3\">\r\n <span class=\"mt-1 cursor-pointer fs-5 mx-2\"\r\n [ngClass]=\"dateComparisonType ==='daily' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('daily')\">1D</span>\r\n <span class=\"mt-1 cursor-pointer fs-5 me-2\"\r\n [ngClass]=\"dateComparisonType ==='weekly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('weekly')\">1W</span>\r\n <span *ngIf=\"traxMonthlyComparisonData\" class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='monthly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('monthly')\">1M</span>\r\n <!-- <div class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='monthly' ? 'text-primary' :''\" (click)=\"dateValue('monthly')\">1M</div> -->\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div class=\"row mt-3\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-4 px-4\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\"><span *ngIf=\"!['time','all'].includes(selectedFlag)\"\r\n class=\"me-3\">{{selectedFlag !== 'runAI' ? (selectedFlag | titlecase) : 'RunAI'}} Flags</span> <span\r\n *ngIf=\"['time','all'].includes(selectedFlag)\" class=\"me-3\">{{selectedFlag === 'all' ?\r\n 'Total Flags' : 'Not Sumbitted'}}</span> <span *ngIf=\"totalItems\"\r\n class=\"badge badge-light-primary \">{{totalItems}}\r\n total</span></span>\r\n <span class=\"text-sub mb-2\"> Based on {{ headerData?.date?.startDate | date: 'MMM d' }} - {{\r\n headerData?.date?.endDate | date: 'MMM d, y' }}\r\n </span>\r\n </h3>\r\n <div *ngIf=\"(flagsTableApiState | async) === 'loaded'\" class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon footfallsearch svg-icon-1 position-absolute ms-8\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\">\r\n </rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input [formControl]=\"searchInput\" type=\"text\"\r\n class=\"form-control ps-14 ms-4 me-4 footfallsearch\" placeholder=\"Search\"\r\n autocomplete=\"off\" />\r\n <!-- <lib-reactive-select [formControl]=\"filterInput\" [idField]=\"'value'\"\r\n [nameField]=\"'label'\" [data]=\"filterValues\" class=\"w-100\">\r\n </lib-reactive-select> -->\r\n <button *ngIf=\"flagsTableData?.length\"\r\n [disabled]=\"(flagsTableApiState | async) === 'loading'\" type=\"button\"\r\n (click)=\"onFlagsTableExport()\" type=\"button\"\r\n class=\"btn-outline btn align-items-end text-nowrap invheader ms-4\">\r\n <!-- Export Icon -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </svg>\r\n <span class=\"ms-2\"></span> Export\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <ng-container *ngIf=\"(flagsTableApiState | async) === 'loaded' && flagsTableData?.length\">\r\n <div class=\"table-responsive px-4\">\r\n <table class=\"table text-nowrap bottom-border\">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('checkListName')\">Checklist Name\r\n <svg [ngClass]=\"sortColumName === 'checkListName' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'checkListName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('coverage')\">Coverage<svg\r\n [ngClass]=\"sortColumName === 'coverage' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'coverage' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('runAIQuestionCount')\" *ngIf=\"['runAI'].includes(selectedFlag)\">No of Questions<svg\r\n [ngClass]=\"sortColumName === 'runAIQuestionCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'runAIQuestionCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('assignedStores')\">Assigned\r\n Stores<svg\r\n [ngClass]=\"sortColumName === 'assignedStores' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'assignedStores' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <!-- *ngIf=\"!['runAI'].includes(selectedFlag)\" -->\r\n <th class=\"cursor-pointer\" (click)=\"sortData('flaggedStores')\">Flagged Stores\r\n <svg [ngClass]=\"sortColumName === 'flaggedStores' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'flaggedStores' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('flags')\" *ngIf=\"['runAI'].includes(selectedFlag)\">Flags\r\n <svg [ngClass]=\"sortColumName === 'flags' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'flags' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th *ngIf=\"['all','question'].includes(selectedFlag)\" class=\"cursor-pointer\"\r\n (click)=\"sortData('customQuestionFlagCount')\">{{selectedFlag === 'question'\r\n ? 'Flags' : 'Question Flags'}}<svg\r\n [ngClass]=\"sortColumName === 'customQuestionFlagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'customQuestionFlagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th *ngIf=\"['all'].includes(selectedFlag)\" class=\"cursor-pointer\"\r\n (click)=\"sortData('runAIFlag')\">Run AI Flags<svg\r\n [ngClass]=\"sortColumName === 'runAIFlag' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'runAIFlag' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th *ngIf=\"['all','time'].includes(selectedFlag)\" class=\"cursor-pointer\"\r\n (click)=\"sortData('customTimeFlagCount')\">{{selectedFlag === 'time' ?\r\n 'Flags' : 'Not Submitted Flags'}}<svg\r\n [ngClass]=\"sortColumName === 'customTimeFlagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'customTimeFlagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th *ngIf=\"['all','detection'].includes(selectedFlag)\" class=\"cursor-pointer\"\r\n (click)=\"sortData('flagCount')\">{{selectedFlag === 'detection' ? 'Detections' :\r\n 'Detection Flags'}}<svg\r\n [ngClass]=\"sortColumName === 'flagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'flagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <!-- <th style=\"width: 200px;\" class=\"cursor-pointer\" (click)=\"sortData('flagCount')\">Flagged<svg\r\n [ngClass]=\"sortColumName === 'flagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'flagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></th> -->\r\n <!-- <th *ngIf=\"selectedFlag === 'detection'\" class=\"cursor-pointer\" (click)=\"sortData('detectionCount')\">Detection Count<svg\r\n [ngClass]=\"sortColumName === 'detectionCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'detectionCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></th> -->\r\n <th class=\"cursor-pointer\" (click)=\"sortData('Compliance')\">Compliance %<svg\r\n [ngClass]=\"sortColumName === 'Compliance' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'Compliance' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <!-- *ngFor=\"let store of checklistPerformance\" -->\r\n <tr *ngFor=\"let data of flagsTableData\">\r\n <td>\r\n <div>\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n {{data?.checkListChar?.toUpperCase() || '--' }} </span>\r\n </div><span (click)=\"viewInDetail(data?.sourceCheckList_id)\"\r\n class=\"table-title-primary cursor-pointer\">{{data?.checkListName ?\r\n data?.checkListName : '--'}}</span> <span\r\n *ngIf=\"data?.checkListType !== 'custom'\" class=\"mx-2\">\u2728</span>\r\n </div>\r\n </td>\r\n \r\n <td class=\"table-title\">{{ data?.coverage ? data?.coverage : '--' }}</td>\r\n <td class=\"table-title\" *ngIf=\"['runAI'].includes(selectedFlag)\">{{ data?.runAIQuestionCount ? data?.runAIQuestionCount : 0 }}</td>\r\n <td class=\"table-title\">{{ data.checkListType === 'custom' ?\r\n ((data?.assignedStores || data?.assignedStores === 0) ? data?.assignedStores\r\n : '--') : ((data?.assignedStoresAi || data?.assignedStoresAi === 0) ?\r\n data?.assignedStoresAi : '--')}}</td>\r\n <td class=\"table-title\">{{ (data?.flaggedStores || data?.flaggedStores === 0) ?\r\n data?.flaggedStores : '--' }}</td>\r\n <td *ngIf=\"['all','question',''].includes(selectedFlag)\" class=\"table-title\" >{{\r\n data?.customQuestionFlagCount ?? '--' }}</td>\r\n <td *ngIf=\"['all'].includes(selectedFlag)\" class=\"table-title\">{{\r\n data?.runAIFlag ?? '--' }}</td>\r\n <td *ngIf=\"['all','time'].includes(selectedFlag)\" class=\"table-title\">{{\r\n data?.customTimeFlagCount ?? '--' }}</td>\r\n <!-- -->\r\n <td *ngIf=\"['all','detection', 'runAI'].includes(selectedFlag)\" class=\"table-title\">\r\n <!-- {{data?.checkListType === 'custom' ? 0 : (data?.flagCount ?? '--')}} -->\r\n {{data?.flagCount ?? '0'}}\r\n </td>\r\n \r\n \r\n <!-- <td class=\"table-title-primary\"> \r\n\r\n <ng-container *ngIf=\"data?.checkListType === 'custom'\" >\r\n <div *ngIf=\"filterInput.value === 'all' || filterInput.value === 'question'\" class=\"d-flex justify-content-between mb-2\">\r\n <span class=\"cursor-pointer\" (click)=\"viewInDetail(data?.sourceCheckList_id, 'question')\" >{{(data?.customQuestionFlagCount || data?.customQuestionFlagCount === 0) ? data?.customQuestionFlagCount?.toLocaleString('en-IN') : '--'}} </span> \r\n <span class=\"badge badge-light-default mx-3\" >Questions</span> \r\n </div>\r\n\r\n <div *ngIf=\"filterInput.value === 'all' || filterInput.value === 'time'\" class=\"d-flex justify-content-between\">\r\n <span class=\"cursor-pointer\" (click)=\"viewInDetail(data?.sourceCheckList_id, 'time')\" >{{(data?.customTimeFlagCount || data?.customTimeFlagCount === 0) ? data?.customTimeFlagCount?.toLocaleString('en-IN') : '--'}} </span> \r\n <span class=\"badge badge-light-default mx-3\" >Not Submitted</span> \r\n </div> \r\n </ng-container> \r\n\r\n <div *ngIf=\"data?.checkListType !== 'custom'\" class=\"d-flex justify-content-between\">\r\n <span class=\"cursor-pointer\" (click)=\"viewInDetail(data?.sourceCheckList_id)\" >{{(data?.flagCount || data?.flagCount === 0) ? data?.flagCount?.toLocaleString('en-IN') : '--'}} </span> \r\n <span class=\"badge badge-light-default mx-3\" >Detections</span> \r\n </div>\r\n \r\n </td> -->\r\n <td class=\"table-title\">\r\n <div class=\"d-flex\" *ngIf=\"data.checkListType !== 'activitymonitoring'\">\r\n <div class=\"h-5px w-100 bg-light mt-4\">\r\n <div role=\"progressbar\" aria-valuemin=\"20\" aria-valuemax=\"100\"\r\n class=\"bg-primary rounded h-5px \"\r\n [style.width]=\"data?.complianceRate + '%'\"> </div>\r\n </div>\r\n <div class=\"text-end table-title\"><span class=\"my-1 mx-1 text-end\">\r\n {{data?.complianceRate?.toLocaleString('en-US', {\r\n minimumFractionDigits: 0 })\r\n || '--'}}%</span></div>\r\n </div>\r\n <div *ngIf=\"data.checkListType === 'activitymonitoring'\">\r\n NA\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n <div (click)=\"viewInDetail(data?.sourceCheckList_id)\"\r\n class=\"table-title-primary cursor-pointer\">View</div>\r\n </div>\r\n </td>\r\n\r\n </tr>\r\n\r\n </tbody>\r\n </table>\r\n\r\n </div>\r\n <div *ngIf=\"(flagsTableApiState | async) === 'loaded' && flagsTableData?.length\">\r\n <lib-pagination [itemsPerPage]=\"itemsPerPage\" [currentPage]=\"currentPage\"\r\n [totalItems]=\"totalItems\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </ng-container>\r\n <ng-container\r\n *ngIf=\"(flagsTableApiState | async) === 'loading' || (flagsTableApiState | async) === 'initial'\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(flagsTableApiState | async) === 'loaded' && !flagsTableData?.length\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 my-6\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Flags Table</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".ellipse1{border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d}.cardcount{color:var(--Black, #101828);font-size:30px;font-style:normal;font-weight:600;line-height:38px}.cardtext{color:var(--Gray-700, #344054);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.cardsubcount{color:var(--Black, #101828);font-size:20px;font-style:normal;font-weight:700;line-height:30px}.card-border{padding:8px;border-radius:12px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF)}.percent-value{color:var(--Gray-500, #667085);text-align:center;font-size:16px;font-style:normal;font-weight:600;line-height:18px}.week-font{color:var(--Gray-800, #1D2939);font-size:12px;font-style:normal;font-weight:400;line-height:18px}.flagcard{padding:0 0 0 15%}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-size:14px;font-style:normal;font-weight:500!important;line-height:30px;text-decoration-line:underline}.table-title{color:var(--Gray-500, #667085);font-size:14px;font-style:normal;font-weight:500!important;line-height:20px}.rotate{rotate:180deg;transition:1s}td{vertical-align:middle}.inactive-card{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:#fff}.inactive-card .inactive-header{font-size:16px;font-weight:500;line-height:24px;border-radius:4px;padding:8px 16px;background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#10182808),#f9fafb}.active-card{border-radius:8px;border:1px solid var(--Primary-300, #6BCAFF);background:var(--Primary-25, #F6FCFF)}.active-card .active-header{font-size:16px;font-weight:500;line-height:24px;border-radius:4px;padding:8px 16px;background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f9fafb}.w-95{width:97%!important}.w-5{width:3%!important}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i4.DatePipe, name: "date" }] });
330
330
  }
331
331
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlagsNewComponent, decorators: [{
332
332
  type: Component,
333
- args: [{ selector: 'lib-flags-new', template: "<div class=\"col-md-12\">\r\n <div class=\"row\">\r\n <!--allCards -->\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'allCards'\">\r\n <div class=\"w-95\">\r\n <div class=\"pt-2 h-100\">\r\n <div class=\"d-flex justify-content-between\">\r\n <div class=\"cursor-pointer pe-3\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'w-25' : 'w-50'\" (click)=\"selectTabs('all')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='all' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='all' ? 'active-header' : 'inactive-header'\">\r\n Total Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.totalFlag === 0 ||\r\n cardMetricsData?.flagCards?.totalFlag) ?\r\n cardMetricsData?.flagCards?.totalFlag?.toLocaleString('en-IN') : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"cursor-pointer pe-3\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'w-25' : 'w-50'\" (click)=\"selectTabs('question')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='question' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='question' ? 'active-header' : 'inactive-header'\">\r\n Question Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount my-2 me-3\">{{(cardMetricsData?.flagCards?.questionFlag?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.questionFlag?.count) ?\r\n cardMetricsData?.flagCards?.questionFlag?.count?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\"\r\n class=\"mt-2 me-1\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"w-25 cursor-pointer pe-3\" (click)=\"selectTabs('runAI')\" *ngIf=\"cardMetricsData?.flagCards?.runAIFlag\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='runAI' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='runAI' ? 'active-header' : 'inactive-header'\">\r\n Run AI Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.runAIFlag?.flagCount\r\n === 0 ||\r\n cardMetricsData?.flagCards?.runAIFlag?.flagCount) ?\r\n cardMetricsData?.flagCards?.runAIFlag?.flagCount?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"cursor-pointer pe-3\" (click)=\"selectTabs('time')\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'w-25' : 'w-50'\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='time' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='time' ? 'active-header' : 'inactive-header'\">\r\n Not Submitted\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.delayInSubmission?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.delayInSubmission?.count) ?\r\n cardMetricsData?.flagCards?.delayInSubmission?.count?.toLocaleString('en-IN')\r\n : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"cursor-pointer pe-3\" (click)=\"selectTabs('detection')\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'w-25' : 'w-50'\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='detection' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='detection' ? 'active-header' : 'inactive-header'\">\r\n Detection Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.detectionFlag?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.detectionFlag?.count) ?\r\n cardMetricsData?.flagCards?.detectionFlag?.count?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!-- customChecklistCount > 1 & aiChecklistCount > 0 show 3 cards -->\r\n <!-- customCards -->\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'customCards'\">\r\n <div class=\"w-95\">\r\n <div class=\"pt-2 h-100\">\r\n <div class=\"d-flex justify-content-between mt-3\">\r\n <div class=\"col-3 cursor-pointer pe-3\" (click)=\"selectTabs('all')\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'col-3' : 'col-4'\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='all' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='all' ? 'active-header' : 'inactive-header'\">\r\n Total Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.totalFlag === 0 ||\r\n cardMetricsData?.flagCards?.totalFlag) ?\r\n cardMetricsData?.flagCards?.totalFlag?.toLocaleString('en-IN') : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-3 cursor-pointer pe-3\" (click)=\"selectTabs('question')\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'col-3' : 'col-4'\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='question' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='question' ? 'active-header' : 'inactive-header'\">\r\n Question Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount my-2 me-3\">{{(cardMetricsData?.flagCards?.questionFlag?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.questionFlag?.count) ?\r\n cardMetricsData?.flagCards?.questionFlag?.count?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\"\r\n class=\"mt-2 me-1\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-3 cursor-pointer pe-3\" (click)=\"selectTabs('runAI')\" *ngIf=\"cardMetricsData?.flagCards?.runAIFlag\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='runAI' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='runAI' ? 'active-header' : 'inactive-header'\">\r\n Run AI Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.runAIFlag?.flagCount\r\n === 0 ||\r\n cardMetricsData?.flagCards?.runAIFlag?.flagCount) ?\r\n cardMetricsData?.flagCards?.runAIFlag?.flagCount?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-3 cursor-pointer pe-3\" (click)=\"selectTabs('time')\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'col-3' : 'col-4'\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='time' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='time' ? 'active-header' : 'inactive-header'\">\r\n Not Submitted\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.delayInSubmission?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.delayInSubmission?.count) ?\r\n cardMetricsData?.flagCards?.delayInSubmission?.count?.toLocaleString('en-IN')\r\n : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'allCards' || cardMetricsDataByType?.showCards === 'customCards'\">\r\n <div *ngIf=\"headerData?.client !== '11'\" class=\"w-5 d-flex align-items-center\">\r\n <div class=\"row\">\r\n <div class=\"col-6 mt-3\">\r\n <div class=\"d-flex flex-column text-center align-items-center justify-content-center me-5\">\r\n <div class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='daily' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('daily')\">1D</div>\r\n <div class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='weekly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('weekly')\">1W</div>\r\n <div *ngIf=\"traxMonthlyComparisonData\" class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='monthly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('monthly')\">1M</div>\r\n <!-- <div class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='monthly' ? 'text-primary' :''\" (click)=\"dateValue('monthly')\">1M</div> -->\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n </div>\r\n <!-- customChecklistCount > 0 & aiChecklistCount > 1 show single cards -->\r\n <!-- aiCards -->\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'aiCards'\">\r\n <div class=\"row \">\r\n <div class=\"col-12 mt-3 cursor-pointer pe-3\" (click)=\"selectTabs('detection')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='detection' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='detection' ? 'active-header' : 'inactive-header'\">\r\n Detection Flags\r\n </div>\r\n <div class=\"p-3 row\">\r\n <div class=\"mt-2 col-11\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.detectionFlag?.count === 0 ||\r\n cardMetricsData?.flagCards?.detectionFlag?.count) ?\r\n cardMetricsData?.flagCards?.detectionFlag?.count?.toLocaleString('en-IN') : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\" fill=\"none\">\r\n <path d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\r\n fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\"\r\n stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n <div *ngIf=\"headerData?.client !== '11'\" class=\"col-1 mt-3\">\r\n <span class=\"mt-1 cursor-pointer fs-5 mx-2\"\r\n [ngClass]=\"dateComparisonType ==='daily' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('daily')\">1D</span>\r\n <span class=\"mt-1 cursor-pointer fs-5 me-2\"\r\n [ngClass]=\"dateComparisonType ==='weekly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('weekly')\">1W</span>\r\n <span *ngIf=\"traxMonthlyComparisonData\" class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='monthly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('monthly')\">1M</span>\r\n <!-- <div class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='monthly' ? 'text-primary' :''\" (click)=\"dateValue('monthly')\">1M</div> -->\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div class=\"row mt-3\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-4 px-4\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\"><span *ngIf=\"!['time','all'].includes(selectedFlag)\"\r\n class=\"me-3\">{{selectedFlag !== 'runAI' ? (selectedFlag | titlecase) : 'RunAI'}} Flags</span> <span\r\n *ngIf=\"['time','all'].includes(selectedFlag)\" class=\"me-3\">{{selectedFlag === 'all' ?\r\n 'Total Flags' : 'Not Sumbitted'}}</span> <span *ngIf=\"totalItems\"\r\n class=\"badge badge-light-primary \">{{totalItems}}\r\n total</span></span>\r\n <span class=\"text-sub mb-2\"> Based on {{ headerData?.date?.startDate | date: 'MMM d' }} - {{\r\n headerData?.date?.endDate | date: 'MMM d, y' }}\r\n </span>\r\n </h3>\r\n <div *ngIf=\"(flagsTableApiState | async) === 'loaded'\" class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon footfallsearch svg-icon-1 position-absolute ms-8\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\">\r\n </rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input [formControl]=\"searchInput\" type=\"text\"\r\n class=\"form-control ps-14 ms-4 me-4 footfallsearch\" placeholder=\"Search\"\r\n autocomplete=\"off\" />\r\n <!-- <lib-reactive-select [formControl]=\"filterInput\" [idField]=\"'value'\"\r\n [nameField]=\"'label'\" [data]=\"filterValues\" class=\"w-100\">\r\n </lib-reactive-select> -->\r\n <button *ngIf=\"flagsTableData?.length\"\r\n [disabled]=\"(flagsTableApiState | async) === 'loading'\" type=\"button\"\r\n (click)=\"onFlagsTableExport()\" type=\"button\"\r\n class=\"btn-outline btn align-items-end text-nowrap invheader ms-4\">\r\n <!-- Export Icon -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </svg>\r\n <span class=\"ms-2\"></span> Export\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <ng-container *ngIf=\"(flagsTableApiState | async) === 'loaded' && flagsTableData?.length\">\r\n <div class=\"table-responsive px-4\">\r\n <table class=\"table text-nowrap bottom-border\">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('checkListName')\">Checklist Name\r\n <svg [ngClass]=\"sortColumName === 'checkListName' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'checkListName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('coverage')\">Coverage<svg\r\n [ngClass]=\"sortColumName === 'coverage' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'coverage' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('runAIQuestionCount')\" *ngIf=\"['runAI'].includes(selectedFlag)\">No of Questions<svg\r\n [ngClass]=\"sortColumName === 'runAIQuestionCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'runAIQuestionCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('assignedStores')\">Assigned\r\n Stores<svg\r\n [ngClass]=\"sortColumName === 'assignedStores' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'assignedStores' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <!-- *ngIf=\"!['runAI'].includes(selectedFlag)\" -->\r\n <th class=\"cursor-pointer\" (click)=\"sortData('flaggedStores')\">Flagged Stores\r\n <svg [ngClass]=\"sortColumName === 'flaggedStores' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'flaggedStores' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('flags')\" *ngIf=\"['runAI'].includes(selectedFlag)\">Flags\r\n <svg [ngClass]=\"sortColumName === 'flags' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'flags' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th *ngIf=\"['all','question'].includes(selectedFlag)\" class=\"cursor-pointer\"\r\n (click)=\"sortData('customQuestionFlagCount')\">{{selectedFlag === 'question'\r\n ? 'Flags' : 'Question Flags'}}<svg\r\n [ngClass]=\"sortColumName === 'customQuestionFlagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'customQuestionFlagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th *ngIf=\"['all'].includes(selectedFlag)\" class=\"cursor-pointer\"\r\n (click)=\"sortData('runAIFlag')\">Run AI Flags<svg\r\n [ngClass]=\"sortColumName === 'runAIFlag' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'runAIFlag' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th *ngIf=\"['all','time'].includes(selectedFlag)\" class=\"cursor-pointer\"\r\n (click)=\"sortData('customTimeFlagCount')\">{{selectedFlag === 'time' ?\r\n 'Flags' : 'Not Submitted Flags'}}<svg\r\n [ngClass]=\"sortColumName === 'customTimeFlagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'customTimeFlagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th *ngIf=\"['all','detection'].includes(selectedFlag)\" class=\"cursor-pointer\"\r\n (click)=\"sortData('flagCount')\">{{selectedFlag === 'detection' ? 'Detections' :\r\n 'Detection Flags'}}<svg\r\n [ngClass]=\"sortColumName === 'flagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'flagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <!-- <th style=\"width: 200px;\" class=\"cursor-pointer\" (click)=\"sortData('flagCount')\">Flagged<svg\r\n [ngClass]=\"sortColumName === 'flagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'flagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></th> -->\r\n <!-- <th *ngIf=\"selectedFlag === 'detection'\" class=\"cursor-pointer\" (click)=\"sortData('detectionCount')\">Detection Count<svg\r\n [ngClass]=\"sortColumName === 'detectionCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'detectionCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></th> -->\r\n <th class=\"cursor-pointer\" (click)=\"sortData('Compliance')\">Compliance %<svg\r\n [ngClass]=\"sortColumName === 'Compliance' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'Compliance' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <!-- *ngFor=\"let store of checklistPerformance\" -->\r\n <tr *ngFor=\"let data of flagsTableData\">\r\n <td>\r\n <div>\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n {{data?.checkListChar?.toUpperCase() || '--' }} </span>\r\n </div><span (click)=\"viewInDetail(data?.sourceCheckList_id)\"\r\n class=\"table-title-primary cursor-pointer\">{{data?.checkListName ?\r\n data?.checkListName : '--'}}</span> <span\r\n *ngIf=\"data?.checkListType !== 'custom'\" class=\"mx-2\">\u2728</span>\r\n </div>\r\n </td>\r\n \r\n <td class=\"table-title\">{{ data?.coverage ? data?.coverage : '--' }}</td>\r\n <td class=\"table-title\" *ngIf=\"['runAI'].includes(selectedFlag)\">{{ data?.runAIQuestionCount ? data?.runAIQuestionCount : 0 }}</td>\r\n <td class=\"table-title\">{{ data.checkListType === 'custom' ?\r\n ((data?.assignedStores || data?.assignedStores === 0) ? data?.assignedStores\r\n : '--') : ((data?.assignedStoresAi || data?.assignedStoresAi === 0) ?\r\n data?.assignedStoresAi : '--')}}</td>\r\n <td class=\"table-title\">{{ (data?.flaggedStores || data?.flaggedStores === 0) ?\r\n data?.flaggedStores : '--' }}</td>\r\n <td *ngIf=\"['all','question',''].includes(selectedFlag)\" class=\"table-title\" >{{\r\n data?.customQuestionFlagCount ?? '--' }}</td>\r\n <td *ngIf=\"['all'].includes(selectedFlag)\" class=\"table-title\">{{\r\n data?.runAIFlag ?? '--' }}</td>\r\n <td *ngIf=\"['all','time'].includes(selectedFlag)\" class=\"table-title\">{{\r\n data?.customTimeFlagCount ?? '--' }}</td>\r\n <!-- -->\r\n <td *ngIf=\"['all','detection', 'runAI'].includes(selectedFlag)\" class=\"table-title\">\r\n <!-- {{data?.checkListType === 'custom' ? 0 : (data?.flagCount ?? '--')}} -->\r\n {{data?.flagCount ?? '0'}}\r\n </td>\r\n \r\n \r\n <!-- <td class=\"table-title-primary\"> \r\n\r\n <ng-container *ngIf=\"data?.checkListType === 'custom'\" >\r\n <div *ngIf=\"filterInput.value === 'all' || filterInput.value === 'question'\" class=\"d-flex justify-content-between mb-2\">\r\n <span class=\"cursor-pointer\" (click)=\"viewInDetail(data?.sourceCheckList_id, 'question')\" >{{(data?.customQuestionFlagCount || data?.customQuestionFlagCount === 0) ? data?.customQuestionFlagCount?.toLocaleString('en-IN') : '--'}} </span> \r\n <span class=\"badge badge-light-default mx-3\" >Questions</span> \r\n </div>\r\n\r\n <div *ngIf=\"filterInput.value === 'all' || filterInput.value === 'time'\" class=\"d-flex justify-content-between\">\r\n <span class=\"cursor-pointer\" (click)=\"viewInDetail(data?.sourceCheckList_id, 'time')\" >{{(data?.customTimeFlagCount || data?.customTimeFlagCount === 0) ? data?.customTimeFlagCount?.toLocaleString('en-IN') : '--'}} </span> \r\n <span class=\"badge badge-light-default mx-3\" >Not Submitted</span> \r\n </div> \r\n </ng-container> \r\n\r\n <div *ngIf=\"data?.checkListType !== 'custom'\" class=\"d-flex justify-content-between\">\r\n <span class=\"cursor-pointer\" (click)=\"viewInDetail(data?.sourceCheckList_id)\" >{{(data?.flagCount || data?.flagCount === 0) ? data?.flagCount?.toLocaleString('en-IN') : '--'}} </span> \r\n <span class=\"badge badge-light-default mx-3\" >Detections</span> \r\n </div>\r\n \r\n </td> -->\r\n <td class=\"table-title\">\r\n <div class=\"d-flex\" *ngIf=\"data.checkListType !== 'activitymonitoring'\">\r\n <div class=\"h-5px w-100 bg-light mt-4\">\r\n <div role=\"progressbar\" aria-valuemin=\"20\" aria-valuemax=\"100\"\r\n class=\"bg-primary rounded h-5px \"\r\n [style.width]=\"data?.complianceRate + '%'\"> </div>\r\n </div>\r\n <div class=\"text-end table-title\"><span class=\"my-1 mx-1 text-end\">\r\n {{data?.complianceRate?.toLocaleString('en-US', {\r\n minimumFractionDigits: 0 })\r\n || '--'}}%</span></div>\r\n </div>\r\n <div>\r\n NA\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n <div (click)=\"viewInDetail(data?.sourceCheckList_id)\"\r\n class=\"table-title-primary cursor-pointer\">View</div>\r\n </div>\r\n </td>\r\n\r\n </tr>\r\n\r\n </tbody>\r\n </table>\r\n\r\n </div>\r\n <div *ngIf=\"(flagsTableApiState | async) === 'loaded' && flagsTableData?.length\">\r\n <lib-pagination [itemsPerPage]=\"itemsPerPage\" [currentPage]=\"currentPage\"\r\n [totalItems]=\"totalItems\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </ng-container>\r\n <ng-container\r\n *ngIf=\"(flagsTableApiState | async) === 'loading' || (flagsTableApiState | async) === 'initial'\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(flagsTableApiState | async) === 'loaded' && !flagsTableData?.length\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 my-6\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Flags Table</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".ellipse1{border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d}.cardcount{color:var(--Black, #101828);font-size:30px;font-style:normal;font-weight:600;line-height:38px}.cardtext{color:var(--Gray-700, #344054);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.cardsubcount{color:var(--Black, #101828);font-size:20px;font-style:normal;font-weight:700;line-height:30px}.card-border{padding:8px;border-radius:12px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF)}.percent-value{color:var(--Gray-500, #667085);text-align:center;font-size:16px;font-style:normal;font-weight:600;line-height:18px}.week-font{color:var(--Gray-800, #1D2939);font-size:12px;font-style:normal;font-weight:400;line-height:18px}.flagcard{padding:0 0 0 15%}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-size:14px;font-style:normal;font-weight:500!important;line-height:30px;text-decoration-line:underline}.table-title{color:var(--Gray-500, #667085);font-size:14px;font-style:normal;font-weight:500!important;line-height:20px}.rotate{rotate:180deg;transition:1s}td{vertical-align:middle}.inactive-card{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:#fff}.inactive-card .inactive-header{font-size:16px;font-weight:500;line-height:24px;border-radius:4px;padding:8px 16px;background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#10182808),#f9fafb}.active-card{border-radius:8px;border:1px solid var(--Primary-300, #6BCAFF);background:var(--Primary-25, #F6FCFF)}.active-card .active-header{font-size:16px;font-weight:500;line-height:24px;border-radius:4px;padding:8px 16px;background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f9fafb}.w-95{width:97%!important}.w-5{width:3%!important}\n"] }]
333
+ args: [{ selector: 'lib-flags-new', template: "<div class=\"col-md-12\">\r\n <div class=\"row\">\r\n <!--allCards -->\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'allCards'\">\r\n <div class=\"w-95\">\r\n <div class=\"pt-2 h-100\">\r\n <div class=\"d-flex justify-content-between\">\r\n <div class=\"cursor-pointer pe-3\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'w-25' : 'w-50'\" (click)=\"selectTabs('all')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='all' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='all' ? 'active-header' : 'inactive-header'\">\r\n Total Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.totalFlag === 0 ||\r\n cardMetricsData?.flagCards?.totalFlag) ?\r\n cardMetricsData?.flagCards?.totalFlag?.toLocaleString('en-IN') : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"cursor-pointer pe-3\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'w-25' : 'w-50'\" (click)=\"selectTabs('question')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='question' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='question' ? 'active-header' : 'inactive-header'\">\r\n Question Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount my-2 me-3\">{{(cardMetricsData?.flagCards?.questionFlag?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.questionFlag?.count) ?\r\n cardMetricsData?.flagCards?.questionFlag?.count?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\"\r\n class=\"mt-2 me-1\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"w-25 cursor-pointer pe-3\" (click)=\"selectTabs('runAI')\" *ngIf=\"cardMetricsData?.flagCards?.runAIFlag\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='runAI' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='runAI' ? 'active-header' : 'inactive-header'\">\r\n Run AI Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.runAIFlag?.flagCount\r\n === 0 ||\r\n cardMetricsData?.flagCards?.runAIFlag?.flagCount) ?\r\n cardMetricsData?.flagCards?.runAIFlag?.flagCount?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"cursor-pointer pe-3\" (click)=\"selectTabs('time')\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'w-25' : 'w-50'\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='time' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='time' ? 'active-header' : 'inactive-header'\">\r\n Not Submitted\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.delayInSubmission?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.delayInSubmission?.count) ?\r\n cardMetricsData?.flagCards?.delayInSubmission?.count?.toLocaleString('en-IN')\r\n : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"cursor-pointer pe-3\" (click)=\"selectTabs('detection')\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'w-25' : 'w-50'\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='detection' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='detection' ? 'active-header' : 'inactive-header'\">\r\n Detection Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.detectionFlag?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.detectionFlag?.count) ?\r\n cardMetricsData?.flagCards?.detectionFlag?.count?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!-- customChecklistCount > 1 & aiChecklistCount > 0 show 3 cards -->\r\n <!-- customCards -->\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'customCards'\">\r\n <div class=\"w-95\">\r\n <div class=\"pt-2 h-100\">\r\n <div class=\"d-flex justify-content-between mt-3\">\r\n <div class=\"col-3 cursor-pointer pe-3\" (click)=\"selectTabs('all')\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'col-3' : 'col-4'\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='all' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='all' ? 'active-header' : 'inactive-header'\">\r\n Total Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.totalFlag === 0 ||\r\n cardMetricsData?.flagCards?.totalFlag) ?\r\n cardMetricsData?.flagCards?.totalFlag?.toLocaleString('en-IN') : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-3 cursor-pointer pe-3\" (click)=\"selectTabs('question')\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'col-3' : 'col-4'\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='question' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='question' ? 'active-header' : 'inactive-header'\">\r\n Question Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount my-2 me-3\">{{(cardMetricsData?.flagCards?.questionFlag?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.questionFlag?.count) ?\r\n cardMetricsData?.flagCards?.questionFlag?.count?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\"\r\n class=\"mt-2 me-1\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-3 cursor-pointer pe-3\" (click)=\"selectTabs('runAI')\" *ngIf=\"cardMetricsData?.flagCards?.runAIFlag\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='runAI' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='runAI' ? 'active-header' : 'inactive-header'\">\r\n Run AI Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.runAIFlag?.flagCount\r\n === 0 ||\r\n cardMetricsData?.flagCards?.runAIFlag?.flagCount) ?\r\n cardMetricsData?.flagCards?.runAIFlag?.flagCount?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-3 cursor-pointer pe-3\" (click)=\"selectTabs('time')\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'col-3' : 'col-4'\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='time' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='time' ? 'active-header' : 'inactive-header'\">\r\n Not Submitted\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.delayInSubmission?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.delayInSubmission?.count) ?\r\n cardMetricsData?.flagCards?.delayInSubmission?.count?.toLocaleString('en-IN')\r\n : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'allCards' || cardMetricsDataByType?.showCards === 'customCards'\">\r\n <div *ngIf=\"headerData?.client !== '11'\" class=\"w-5 d-flex align-items-center\">\r\n <div class=\"row\">\r\n <div class=\"col-6 mt-3\">\r\n <div class=\"d-flex flex-column text-center align-items-center justify-content-center me-5\">\r\n <div class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='daily' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('daily')\">1D</div>\r\n <div class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='weekly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('weekly')\">1W</div>\r\n <div *ngIf=\"traxMonthlyComparisonData\" class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='monthly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('monthly')\">1M</div>\r\n <!-- <div class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='monthly' ? 'text-primary' :''\" (click)=\"dateValue('monthly')\">1M</div> -->\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n </div>\r\n <!-- customChecklistCount > 0 & aiChecklistCount > 1 show single cards -->\r\n <!-- aiCards -->\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'aiCards'\">\r\n <div class=\"row \">\r\n <div class=\"col-12 mt-3 cursor-pointer pe-3\" (click)=\"selectTabs('detection')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='detection' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='detection' ? 'active-header' : 'inactive-header'\">\r\n Detection Flags\r\n </div>\r\n <div class=\"p-3 row\">\r\n <div class=\"mt-2 col-11\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.detectionFlag?.count === 0 ||\r\n cardMetricsData?.flagCards?.detectionFlag?.count) ?\r\n cardMetricsData?.flagCards?.detectionFlag?.count?.toLocaleString('en-IN') : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\" fill=\"none\">\r\n <path d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\r\n fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\"\r\n stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n <div *ngIf=\"headerData?.client !== '11'\" class=\"col-1 mt-3\">\r\n <span class=\"mt-1 cursor-pointer fs-5 mx-2\"\r\n [ngClass]=\"dateComparisonType ==='daily' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('daily')\">1D</span>\r\n <span class=\"mt-1 cursor-pointer fs-5 me-2\"\r\n [ngClass]=\"dateComparisonType ==='weekly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('weekly')\">1W</span>\r\n <span *ngIf=\"traxMonthlyComparisonData\" class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='monthly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('monthly')\">1M</span>\r\n <!-- <div class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='monthly' ? 'text-primary' :''\" (click)=\"dateValue('monthly')\">1M</div> -->\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div class=\"row mt-3\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-4 px-4\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\"><span *ngIf=\"!['time','all'].includes(selectedFlag)\"\r\n class=\"me-3\">{{selectedFlag !== 'runAI' ? (selectedFlag | titlecase) : 'RunAI'}} Flags</span> <span\r\n *ngIf=\"['time','all'].includes(selectedFlag)\" class=\"me-3\">{{selectedFlag === 'all' ?\r\n 'Total Flags' : 'Not Sumbitted'}}</span> <span *ngIf=\"totalItems\"\r\n class=\"badge badge-light-primary \">{{totalItems}}\r\n total</span></span>\r\n <span class=\"text-sub mb-2\"> Based on {{ headerData?.date?.startDate | date: 'MMM d' }} - {{\r\n headerData?.date?.endDate | date: 'MMM d, y' }}\r\n </span>\r\n </h3>\r\n <div *ngIf=\"(flagsTableApiState | async) === 'loaded'\" class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon footfallsearch svg-icon-1 position-absolute ms-8\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\">\r\n </rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input [formControl]=\"searchInput\" type=\"text\"\r\n class=\"form-control ps-14 ms-4 me-4 footfallsearch\" placeholder=\"Search\"\r\n autocomplete=\"off\" />\r\n <!-- <lib-reactive-select [formControl]=\"filterInput\" [idField]=\"'value'\"\r\n [nameField]=\"'label'\" [data]=\"filterValues\" class=\"w-100\">\r\n </lib-reactive-select> -->\r\n <button *ngIf=\"flagsTableData?.length\"\r\n [disabled]=\"(flagsTableApiState | async) === 'loading'\" type=\"button\"\r\n (click)=\"onFlagsTableExport()\" type=\"button\"\r\n class=\"btn-outline btn align-items-end text-nowrap invheader ms-4\">\r\n <!-- Export Icon -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </svg>\r\n <span class=\"ms-2\"></span> Export\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <ng-container *ngIf=\"(flagsTableApiState | async) === 'loaded' && flagsTableData?.length\">\r\n <div class=\"table-responsive px-4\">\r\n <table class=\"table text-nowrap bottom-border\">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('checkListName')\">Checklist Name\r\n <svg [ngClass]=\"sortColumName === 'checkListName' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'checkListName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('coverage')\">Coverage<svg\r\n [ngClass]=\"sortColumName === 'coverage' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'coverage' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('runAIQuestionCount')\" *ngIf=\"['runAI'].includes(selectedFlag)\">No of Questions<svg\r\n [ngClass]=\"sortColumName === 'runAIQuestionCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'runAIQuestionCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('assignedStores')\">Assigned\r\n Stores<svg\r\n [ngClass]=\"sortColumName === 'assignedStores' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'assignedStores' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <!-- *ngIf=\"!['runAI'].includes(selectedFlag)\" -->\r\n <th class=\"cursor-pointer\" (click)=\"sortData('flaggedStores')\">Flagged Stores\r\n <svg [ngClass]=\"sortColumName === 'flaggedStores' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'flaggedStores' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('flags')\" *ngIf=\"['runAI'].includes(selectedFlag)\">Flags\r\n <svg [ngClass]=\"sortColumName === 'flags' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'flags' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th *ngIf=\"['all','question'].includes(selectedFlag)\" class=\"cursor-pointer\"\r\n (click)=\"sortData('customQuestionFlagCount')\">{{selectedFlag === 'question'\r\n ? 'Flags' : 'Question Flags'}}<svg\r\n [ngClass]=\"sortColumName === 'customQuestionFlagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'customQuestionFlagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th *ngIf=\"['all'].includes(selectedFlag)\" class=\"cursor-pointer\"\r\n (click)=\"sortData('runAIFlag')\">Run AI Flags<svg\r\n [ngClass]=\"sortColumName === 'runAIFlag' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'runAIFlag' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th *ngIf=\"['all','time'].includes(selectedFlag)\" class=\"cursor-pointer\"\r\n (click)=\"sortData('customTimeFlagCount')\">{{selectedFlag === 'time' ?\r\n 'Flags' : 'Not Submitted Flags'}}<svg\r\n [ngClass]=\"sortColumName === 'customTimeFlagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'customTimeFlagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th *ngIf=\"['all','detection'].includes(selectedFlag)\" class=\"cursor-pointer\"\r\n (click)=\"sortData('flagCount')\">{{selectedFlag === 'detection' ? 'Detections' :\r\n 'Detection Flags'}}<svg\r\n [ngClass]=\"sortColumName === 'flagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'flagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <!-- <th style=\"width: 200px;\" class=\"cursor-pointer\" (click)=\"sortData('flagCount')\">Flagged<svg\r\n [ngClass]=\"sortColumName === 'flagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'flagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></th> -->\r\n <!-- <th *ngIf=\"selectedFlag === 'detection'\" class=\"cursor-pointer\" (click)=\"sortData('detectionCount')\">Detection Count<svg\r\n [ngClass]=\"sortColumName === 'detectionCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'detectionCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></th> -->\r\n <th class=\"cursor-pointer\" (click)=\"sortData('Compliance')\">Compliance %<svg\r\n [ngClass]=\"sortColumName === 'Compliance' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'Compliance' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <!-- *ngFor=\"let store of checklistPerformance\" -->\r\n <tr *ngFor=\"let data of flagsTableData\">\r\n <td>\r\n <div>\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n {{data?.checkListChar?.toUpperCase() || '--' }} </span>\r\n </div><span (click)=\"viewInDetail(data?.sourceCheckList_id)\"\r\n class=\"table-title-primary cursor-pointer\">{{data?.checkListName ?\r\n data?.checkListName : '--'}}</span> <span\r\n *ngIf=\"data?.checkListType !== 'custom'\" class=\"mx-2\">\u2728</span>\r\n </div>\r\n </td>\r\n \r\n <td class=\"table-title\">{{ data?.coverage ? data?.coverage : '--' }}</td>\r\n <td class=\"table-title\" *ngIf=\"['runAI'].includes(selectedFlag)\">{{ data?.runAIQuestionCount ? data?.runAIQuestionCount : 0 }}</td>\r\n <td class=\"table-title\">{{ data.checkListType === 'custom' ?\r\n ((data?.assignedStores || data?.assignedStores === 0) ? data?.assignedStores\r\n : '--') : ((data?.assignedStoresAi || data?.assignedStoresAi === 0) ?\r\n data?.assignedStoresAi : '--')}}</td>\r\n <td class=\"table-title\">{{ (data?.flaggedStores || data?.flaggedStores === 0) ?\r\n data?.flaggedStores : '--' }}</td>\r\n <td *ngIf=\"['all','question',''].includes(selectedFlag)\" class=\"table-title\" >{{\r\n data?.customQuestionFlagCount ?? '--' }}</td>\r\n <td *ngIf=\"['all'].includes(selectedFlag)\" class=\"table-title\">{{\r\n data?.runAIFlag ?? '--' }}</td>\r\n <td *ngIf=\"['all','time'].includes(selectedFlag)\" class=\"table-title\">{{\r\n data?.customTimeFlagCount ?? '--' }}</td>\r\n <!-- -->\r\n <td *ngIf=\"['all','detection', 'runAI'].includes(selectedFlag)\" class=\"table-title\">\r\n <!-- {{data?.checkListType === 'custom' ? 0 : (data?.flagCount ?? '--')}} -->\r\n {{data?.flagCount ?? '0'}}\r\n </td>\r\n \r\n \r\n <!-- <td class=\"table-title-primary\"> \r\n\r\n <ng-container *ngIf=\"data?.checkListType === 'custom'\" >\r\n <div *ngIf=\"filterInput.value === 'all' || filterInput.value === 'question'\" class=\"d-flex justify-content-between mb-2\">\r\n <span class=\"cursor-pointer\" (click)=\"viewInDetail(data?.sourceCheckList_id, 'question')\" >{{(data?.customQuestionFlagCount || data?.customQuestionFlagCount === 0) ? data?.customQuestionFlagCount?.toLocaleString('en-IN') : '--'}} </span> \r\n <span class=\"badge badge-light-default mx-3\" >Questions</span> \r\n </div>\r\n\r\n <div *ngIf=\"filterInput.value === 'all' || filterInput.value === 'time'\" class=\"d-flex justify-content-between\">\r\n <span class=\"cursor-pointer\" (click)=\"viewInDetail(data?.sourceCheckList_id, 'time')\" >{{(data?.customTimeFlagCount || data?.customTimeFlagCount === 0) ? data?.customTimeFlagCount?.toLocaleString('en-IN') : '--'}} </span> \r\n <span class=\"badge badge-light-default mx-3\" >Not Submitted</span> \r\n </div> \r\n </ng-container> \r\n\r\n <div *ngIf=\"data?.checkListType !== 'custom'\" class=\"d-flex justify-content-between\">\r\n <span class=\"cursor-pointer\" (click)=\"viewInDetail(data?.sourceCheckList_id)\" >{{(data?.flagCount || data?.flagCount === 0) ? data?.flagCount?.toLocaleString('en-IN') : '--'}} </span> \r\n <span class=\"badge badge-light-default mx-3\" >Detections</span> \r\n </div>\r\n \r\n </td> -->\r\n <td class=\"table-title\">\r\n <div class=\"d-flex\" *ngIf=\"data.checkListType !== 'activitymonitoring'\">\r\n <div class=\"h-5px w-100 bg-light mt-4\">\r\n <div role=\"progressbar\" aria-valuemin=\"20\" aria-valuemax=\"100\"\r\n class=\"bg-primary rounded h-5px \"\r\n [style.width]=\"data?.complianceRate + '%'\"> </div>\r\n </div>\r\n <div class=\"text-end table-title\"><span class=\"my-1 mx-1 text-end\">\r\n {{data?.complianceRate?.toLocaleString('en-US', {\r\n minimumFractionDigits: 0 })\r\n || '--'}}%</span></div>\r\n </div>\r\n <div *ngIf=\"data.checkListType === 'activitymonitoring'\">\r\n NA\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n <div (click)=\"viewInDetail(data?.sourceCheckList_id)\"\r\n class=\"table-title-primary cursor-pointer\">View</div>\r\n </div>\r\n </td>\r\n\r\n </tr>\r\n\r\n </tbody>\r\n </table>\r\n\r\n </div>\r\n <div *ngIf=\"(flagsTableApiState | async) === 'loaded' && flagsTableData?.length\">\r\n <lib-pagination [itemsPerPage]=\"itemsPerPage\" [currentPage]=\"currentPage\"\r\n [totalItems]=\"totalItems\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </ng-container>\r\n <ng-container\r\n *ngIf=\"(flagsTableApiState | async) === 'loading' || (flagsTableApiState | async) === 'initial'\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(flagsTableApiState | async) === 'loaded' && !flagsTableData?.length\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 my-6\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Flags Table</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".ellipse1{border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d}.cardcount{color:var(--Black, #101828);font-size:30px;font-style:normal;font-weight:600;line-height:38px}.cardtext{color:var(--Gray-700, #344054);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.cardsubcount{color:var(--Black, #101828);font-size:20px;font-style:normal;font-weight:700;line-height:30px}.card-border{padding:8px;border-radius:12px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF)}.percent-value{color:var(--Gray-500, #667085);text-align:center;font-size:16px;font-style:normal;font-weight:600;line-height:18px}.week-font{color:var(--Gray-800, #1D2939);font-size:12px;font-style:normal;font-weight:400;line-height:18px}.flagcard{padding:0 0 0 15%}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-size:14px;font-style:normal;font-weight:500!important;line-height:30px;text-decoration-line:underline}.table-title{color:var(--Gray-500, #667085);font-size:14px;font-style:normal;font-weight:500!important;line-height:20px}.rotate{rotate:180deg;transition:1s}td{vertical-align:middle}.inactive-card{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:#fff}.inactive-card .inactive-header{font-size:16px;font-weight:500;line-height:24px;border-radius:4px;padding:8px 16px;background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#10182808),#f9fafb}.active-card{border-radius:8px;border:1px solid var(--Primary-300, #6BCAFF);background:var(--Primary-25, #F6FCFF)}.active-card .active-header{font-size:16px;font-weight:500;line-height:24px;border-radius:4px;padding:8px 16px;background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f9fafb}.w-95{width:97%!important}.w-5{width:3%!important}\n"] }]
334
334
  }], ctorParameters: () => [{ type: i1.GlobalStateService }, { type: i0.ChangeDetectorRef }, { type: i2.TraxService }, { type: i3.Router }, { type: i1.PageInfoService }, { type: i3.ActivatedRoute }] });
335
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhZ3MtbmV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2UtdHJheC9zcmMvbGliL2NvbXBvbmVudHMvZmxhZ3MtbmV3L2ZsYWdzLW5ldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2ZsYWdzLW5ldy9mbGFncy1uZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFLL0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLGlCQUFpQixNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sR0FBRyxNQUFNLHFCQUFxQixDQUFDO0FBQ3RDLE9BQU8sUUFBUSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7OztBQUNoRCxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZCLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBT2hDLE1BQU0sT0FBTyxpQkFBaUI7SUE4QlQ7SUFBZ0M7SUFBMkM7SUFBa0M7SUFBd0I7SUFBa0M7SUE3QmxMLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBQ3ZDLFlBQVksR0FBRyxFQUFFLENBQUE7SUFDakIsV0FBVyxHQUFHLENBQUMsQ0FBQTtJQUNmLFVBQVUsR0FBRyxDQUFDLENB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QUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN4QyxJQUFJLEdBQUcsRUFBRSxJQUFJLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLEtBQUssU0FBUyxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUU7b0JBQzdELElBQUksQ0FBQyxxQkFBcUIsR0FBRzt3QkFDekIsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0I7d0JBQzNDLG9CQUFvQixFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CO3dCQUNuRCxTQUFTLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTO3FCQUNoQyxDQUFDO29CQUNGLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUU7d0JBQ3RELElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7cUJBQ2hDO29CQUNDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7aUJBQ3ZDO3FCQUFNO29CQUNMLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7aUJBQ25DO1lBQ0wsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakIsQ0FBQztTQUNKLENBQUMsQ0FBQztJQUNQLENBQUM7d0dBOVVZLGlCQUFpQjs0RkFBakIsaUJBQWlCLHFEQ3BCOUIsd3ozRUEwNEJNOzs0RkR0M0JPLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgZGVib3VuY2VUaW1lLCBCZWhhdmlvclN1YmplY3QsIHRha2VVbnRpbCwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UsIFBhZ2VJbmZvU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5pbXBvcnQgeyBUcmF4U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYXguc2VydmljZSc7XHJcbmltcG9ydCB7IFJvdXRlciwgQWN0aXZhdGVkUm91dGUgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IEhlYWRlckZpbHRlciwgRmxhZ3NUYWJsZURhdGEsIElGbGFnQ2FyZHMsIElGbGFnQ29tcGFyaXNvbkNhcmRzLCBGbGFnQ2FyZHNCeVR5cGUgfSBmcm9tICcuL2ZsYWdzLW5ldy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcclxuaW1wb3J0IGN1c3RvbVBhcnNlRm9ybWF0IGZyb20gJ2RheWpzL3BsdWdpbi9jdXN0b21QYXJzZUZvcm1hdCc7XHJcbmltcG9ydCB1dGMgZnJvbSAnZGF5anMvcGx1Z2luL3V0Yy5qcyc7XHJcbmltcG9ydCB0aW1lWm9uZSBmcm9tICdkYXlqcy9wbHVnaW4vdGltZXpvbmUuanMnO1xyXG5kYXlqcy5leHRlbmQodGltZVpvbmUpO1xyXG5kYXlqcy5leHRlbmQodXRjKTtcclxuZGF5anMuZXh0ZW5kKGN1c3RvbVBhcnNlRm9ybWF0KTsgXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1mbGFncy1uZXcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mbGFncy1uZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9mbGFncy1uZXcuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGbGFnc05ld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBpdGVtc1BlclBhZ2UgPSAxMFxyXG4gIGN1cnJlbnRQYWdlID0gMFxyXG4gIHRvdGFsSXRlbXMgPSAwXHJcbiAgc2VsZWN0ZWRGbGFnOiBhbnkgPSAnYWxsJztcclxuICB1c2VyRW1haWxlczogYW55ID0gW107XHJcbiAgcGFnaW5hdGlvblNpemVzID0gWzEwLCAyMCwgMzBdXHJcbiAgcGFnZVNpemUgPSAxMFxyXG4gIHNvcnRDb2x1bU5hbWUgPSAnY2hlY2tMaXN0TmFtZSc7XHJcbiAgc29ydERpcmVjdGlvbiA9IDE7XHJcbiAgaGVhZGVyRGF0YTogSGVhZGVyRmlsdGVyIHwgbnVsbCB8IHVuZGVmaW5lZDtcclxuICB0cmF4TW9udGhseUNvbXBhcmlzb25EYXRhOiBhbnkgPSBcIlwiO1xyXG4gIGRheWpzID0gZGF5anM7XHJcbiAgZmxhZ3NUYWJsZUFwaVN0YXRlID0gbmV3IEJlaGF2aW9yU3ViamVjdDwnaW5pdGlhbCcgfCAnbG9hZGluZycgfCAnbG9hZGVkJz4oJ2luaXRpYWwnKVxyXG4gIGZsYWdzVGFibGVEYXRhOiBGbGFnc1RhYmxlRGF0YVtdID0gW11cclxuICBjYXJkTWV0cmljc0FwaVN0YXRlID0gbmV3IEJlaGF2aW9yU3ViamVjdDwnaW5pdGlhbCcgfCAnbG9hZGluZycgfCAnbG9hZGVkJz4oJ2luaXRpYWwnKVxyXG4gIGNhcmRNZXRyaWNzRGF0YTogSUZsYWdDYXJkcyB8IG51bGwgfCB1bmRlZmluZWRcclxuICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhOiBJRmxhZ0NvbXBhcmlzb25DYXJkcyB8IG51bGwgfCB1bmRlZmluZWRcclxuICBzZWFyY2hJbnB1dDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xyXG4gIGZpbHRlcklucHV0OiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnYWxsJyk7XHJcbiAgY2FyZE1ldHJpY3NEYXRhQnlUeXBlOiBGbGFnQ2FyZHNCeVR5cGUgfCBudWxsIHwgdW5kZWZpbmVkXHJcbiAgZmlsdGVyVmFsdWVzID0gW1xyXG4gICAge2xhYmVsOidBbGwnLCB2YWx1ZTonYWxsJ30sXHJcbiAgICB7bGFiZWw6J1F1ZXN0aW9uJywgdmFsdWU6J3F1ZXN0aW9uJ30sXHJcbiAgICB7bGFiZWw6J05vdCBTdWJtaXR0ZWQnLCB2YWx1ZTondGltZSd9LFxyXG4gICAge2xhYmVsOidEZXRlY3Rpb24nLCB2YWx1ZTonZGV0ZWN0aW9uJ30sXHJcbiAgXVxyXG4gIGRhdGVDb21wYXJpc29uVHlwZTogJ2RhaWx5JyB8ICd3ZWVrbHknIHwgJ21vbnRobHknIDtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UsIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHRyYXhTZXJ2aWNlOiBUcmF4U2VydmljZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBwYWdlSW5mbzogUGFnZUluZm9TZXJ2aWNlLHByaXZhdGUgcm91dGU6QWN0aXZhdGVkUm91dGUpIHtcclxuICAgIHRoaXMudXNlckVtYWlsZXMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidXNlcnNFbWFpbC1pbmZvXCIpIHx8IFwiW11cIiApXHJcbiAgICB0aGlzLnNlYXJjaElucHV0LnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkucGlwZShkZWJvdW5jZVRpbWUoMTAwMCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnN1YnNjcmliZSgodmFsKSA9PiB7XHJcbiAgICAgIGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlICA9IDBcclxuICAgICAgdGhpcy5nZXRGbGFnc1RhYmxlKClcclxuICAgIH0pXHJcblxyXG5cclxuICAgIHRoaXMuZmlsdGVySW5wdXQudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHZhbCkgPT4ge1xyXG4gICAgICBpZiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jdXJyZW50UGFnZSAgPSAwXHJcbiAgICAgIHRoaXMuZ2V0RmxhZ3NUYWJsZSgpXHJcbiAgICB9KVxyXG5cclxuICAgIGNvbnN0IGRhdGVDb21wYXJpc29uVHlwZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdkYXNoYm9hcmREYXRlVHlwZScpXHJcbiAgICBpZihkYXRlQ29tcGFyaXNvblR5cGUpe1xyXG4gICAgICBpZihkYXRlQ29tcGFyaXNvblR5cGUgPT09ICdkYWlseScgfHwgZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnd2Vla2x5JyB8fCBkYXRlQ29tcGFyaXNvblR5cGUgPT09ICdtb250aGx5Jyl7XHJcbiAgICAgICAgdGhpcy5kYXRlQ29tcGFyaXNvblR5cGUgPSBkYXRlQ29tcGFyaXNvblR5cGVcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgdGhpcy5kYXRlQ29tcGFyaXNvblR5cGUgPSAnZGFpbHknXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2Rhc2hib2FyZERhdGVUeXBlJywgJ2RhaWx5JylcclxuICAgICAgfVxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMuZGF0ZUNvbXBhcmlzb25UeXBlID0gJ2RhaWx5J1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZGFzaGJvYXJkRGF0ZVR5cGUnLCAnZGFpbHknKVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocGFyYW1zOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHBhcmFtcz8uZGF0ZSkge1xyXG4gICAgICAgIGxldCBsb2NhbERldGFpbHMgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJoZWFkZXItZmlsdGVyc1wiKSA/PyBcInt9XCIsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAobG9jYWxEZXRhaWxzKSB7XHJcbiAgICAgICAgICBsb2NhbERldGFpbHMuZGF0ZSA9IHsgc3RhcnREYXRlOiBwYXJhbXMuZGF0ZSwgZW5kRGF0ZTogcGFyYW1zLmRhdGUgfTtcclxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiaGVhZGVyLWZpbHRlcnNcIiwgSlNPTi5zdHJpbmdpZnkobG9jYWxEZXRhaWxzKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWVcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTAwMCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhPy5jbGllbnQpIHtcclxuICAgICAgICAgIHRoaXMuaGVhZGVyRGF0YSA9IGRhdGE7XHJcbiAgICAgICAgICBpZiAodGhpcy5oZWFkZXJEYXRhPy5zdG9yZXM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLmhlYWRlckRhdGEuc3RvcmVzID0gdGhpcy5oZWFkZXJEYXRhLnN0b3Jlcy5maWx0ZXIoKGRhdGE6IGFueSkgPT4gZGF0YT8uY2hlY2tlZClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuY2hlY2tsaXN0Q291bnRCeVR5cGUoKVxyXG4gICAgICAgICAgdGhpcy5nZXRDaGVja2xpc3RGbGFnTWV0cmljcygpXHJcbiAgICAgICAgICB0aGlzLmdldENoZWNrbGlzdEZsYWdNZXRyaWNzQ29tcGFyaXNvbigpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLnNldFBhZ2VEYXRhKClcclxuICB9XHJcblxyXG4gIHNldFBhZ2VEYXRhKCkge1xyXG4gICAgdGhpcy5wYWdlSW5mby5zZXRUaXRsZShcIkZsYWdzXCIpO1xyXG4gICAgdGhpcy5wYWdlSW5mby5zZXREZXNjcmlwdGlvbihcIlwiKTtcclxuICAgIHRoaXMucGFnZUluZm8uc2V0QnJlYWRjcnVtYnMoW1xyXG4gICAgICAvLyB7IHRpdGxlOiBcIkFuYWx5emVcIiwgcGF0aDogXCIvbWFuYWdlL3RyYXgvZGFzaGJvYXJkXCIsIGlzQWN0aXZlOiBmYWxzZSwgaXNTZXBhcmF0b3I6IGZhbHNlIH0sXHJcbiAgICAgIC8vIHsgdGl0bGU6IFwiQW5hbHl6ZVwiLCBwYXRoOiBcIi9tYW5hZ2UvdHJheC9kYXNoYm9hcmRcIiwgaXNBY3RpdmU6IGZhbHNlLCBpc1NlcGFyYXRvcjogdHJ1ZSB9LFxyXG4gICAgICB7IHRpdGxlOiBcIlRhbmdvIFRyYXhcIiwgcGF0aDogXCIvbWFuYWdlL3RyYXgvZGFzaGJvYXJkXCIsIGlzQWN0aXZlOiBmYWxzZSwgaXNTZXBhcmF0b3I6IGZhbHNlIH0sXHJcbiAgICAgIHsgdGl0bGU6IFwiVGFuZ28gVHJheFwiLCBwYXRoOiBcIi9tYW5hZ2UvdHJheC9kYXNoYm9hcmRcIiwgaXNBY3RpdmU6IGZhbHNlLCBpc1NlcGFyYXRvcjogdHJ1ZSB9LFxyXG4gICAgICAvLyB7IHRpdGxlOiBcIlJlcG9ydHNcIiwgcGF0aDogXCIvbWFuYWdlL3RyYXgvcmVwb3J0c1wiLCBpc0FjdGl2ZTogZmFsc2UsIGlzU2VwYXJhdG9yOiBmYWxzZSB9LFxyXG4gICAgICAvLyB7IHRpdGxlOiBcIlJlcG9ydHNcIiwgcGF0aDogXCIvbWFuYWdlL3RyYXgvcmVwb3J0c1wiLCBpc0FjdGl2ZTogZmFsc2UsIGlzU2VwYXJhdG9yOiB0cnVlIH0sXHJcbiAgICBdKTtcclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0Q2hlY2tsaXN0RmxhZ01ldHJpY3MoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZsYWdzVGFibGVEYXRhID0gW107XHJcbiAgICB0aGlzLmNhcmRNZXRyaWNzQXBpU3RhdGUubmV4dCgnbG9hZGluZycpXHJcbiAgICBjb25zdCBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xyXG4gICAgICBcImNsaWVudElkXCI6IHRoaXMuaGVhZGVyRGF0YT8uY2xpZW50LFxyXG4gICAgICBcImZyb21EYXRlXCI6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZS5zdGFydERhdGUsXHJcbiAgICAgIFwidG9EYXRlXCI6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZS5lbmREYXRlLFxyXG4gICAgICBcInN0b3JlSWRcIjogdGhpcy5oZWFkZXJEYXRhPy5zdG9yZXMubWFwKCh2YWw6IHsgc3RvcmVJZDogc3RyaW5nLCBzdG9yZU5hbWU6IHN0cmluZyB9KSA9PiB2YWwuc3RvcmVJZCksXHJcbiAgICAgIFwidXNlckVtYWlsZXNcIjogdGhpcy51c2VyRW1haWxlc1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLm92ZXJhbGxGbGFnTWV0cmljcyhkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMuY2FyZE1ldHJpY3NBcGlTdGF0ZS5uZXh0KCdsb2FkZWQnKVxyXG4gICAgICAgIGlmIChyZXM/LmRhdGEpIHtcclxuICAgICAgICAgIHRoaXMuY2FyZE1ldHJpY3NEYXRhID0gcmVzLmRhdGFcclxuICAgICAgICAgIHRoaXMuZ2V0RmxhZ3NUYWJsZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmNhcmRNZXRyaWNzRGF0YSA9IG51bGxcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGUpO1xyXG5cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldENoZWNrbGlzdEZsYWdNZXRyaWNzQ29tcGFyaXNvbigpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XHJcbiAgICAgIFwiY2xpZW50SWRcIjogdGhpcy5oZWFkZXJEYXRhPy5jbGllbnQsXHJcbiAgICAgIFwiZnJvbURhdGVcIjogdGhpcy5oZWFkZXJEYXRhPy5kYXRlLnN0YXJ0RGF0ZSxcclxuICAgICAgXCJ0b0RhdGVcIjogdGhpcy5oZWFkZXJEYXRhPy5kYXRlLmVuZERhdGUsXHJcbiAgICAgIFwic3RvcmVJZFwiOiB0aGlzLmhlYWRlckRhdGE/LnN0b3Jlcy5tYXAoKHZhbDogeyBzdG9yZUlkOiBzdHJpbmcsIHN0b3JlTmFtZTogc3RyaW5nIH0pID0+IHZhbC5zdG9yZUlkKSxcclxuICAgICAgXCJ1c2VyRW1haWxlc1wiOiB0aGlzLnVzZXJFbWFpbGVzLFxyXG4gICAgICBcImRhdGVUeXBlXCI6IHRoaXMuZGF0ZUNvbXBhcmlzb25UeXBlXHJcbiAgICB9XHJcblxyXG5cclxuICAgIHRoaXMudHJheFNlcnZpY2Uub3ZlcmFsbEZsYWdNZXRyaWNzQ29tcGFyaXNvbihkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChyZXM/LmRhdGEpIHtcclxuICAgICAgICAgIHRoaXMuY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YSA9IHJlcy5kYXRhXHJcbiAgICAgICAgICBpZiAodGhpcy50cmF4TW9udGhseUNvbXBhcmlzb25EYXRhID09ICcnKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHJheE1vbnRobHlDb21wYXJpc29uRGF0YSA9IHRoaXMuY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcy50cmF4TW9udGhseUNvbXBhcmlzb25cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5jYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhID0gbnVsbFxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZSk7XHJcblxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0RmxhZ3NUYWJsZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZmxhZ3NUYWJsZURhdGEgPSBbXTtcclxuICAgIHRoaXMudG90YWxJdGVtcyA9IDA7XHJcbiAgICB0aGlzLmZsYWdzVGFibGVBcGlTdGF0ZS5uZXh0KCdsb2FkaW5nJylcclxuICAgIGNvbnN0IGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmhlYWRlckRhdGE/LmNsaWVudCxcclxuICAgICAgc3RvcmVJZDogdGhpcy5oZWFkZXJEYXRhPy5zdG9yZXMubWFwKFxyXG4gICAgICAgICh2YWw6IHsgc3RvcmVJZDogc3RyaW5nOyBzdG9yZU5hbWU6IHN0cmluZyB9KSA9PiB2YWwuc3RvcmVJZFxyXG4gICAgICApLFxyXG4gICAgICB1c2VyRW1haWxlczogdGhpcy51c2VyRW1haWxlcyxcclxuICAgICAgZnJvbURhdGU6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZS5zdGFydERhdGUsXHJcbiAgICAgIHRvRGF0ZTogdGhpcy5oZWFkZXJEYXRhPy5kYXRlLmVuZERhdGUsXHJcbiAgICAgIGxpbWl0OiB0aGlzLnBhZ2VTaXplLFxyXG4gICAgICBvZmZzZXQ6IHRoaXMuY3VycmVudFBhZ2UgPiAwID8gdGhpcy5jdXJyZW50UGFnZSAtIDEgOiAwLFxyXG4gICAgICBzb3J0Q29sdW1uTmFtZTogdGhpcy5zb3J0Q29sdW1OYW1lLFxyXG4gICAgICBzb3J0Qnk6IHRoaXMuc29ydERpcmVjdGlvbixcclxuICAgICAgc2VhcmNoVmFsdWU6IHRoaXMuc2VhcmNoSW5wdXQudmFsdWUsXHJcbiAgICAgIGZpbHRlcjogdGhpcy5zZWxlY3RlZEZsYWcsXHJcbiAgICAgIC4uLih0aGlzLnNlbGVjdGVkRmxhZyA9PT0gXCJydW5BSVwiICYmIHtcclxuICAgICAgICBydW5BSUNoZWNrbGlzdE5hbWU6IHRoaXMuY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHMucnVuQUlGbGFnLmxpc3QubWFwKFxyXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/LmNoZWNrTGlzdE5hbWVcclxuICAgICAgICApLFxyXG4gICAgICB9KSxcclxuICAgIH07XHJcblxyXG5cclxuICAgIHRoaXMudHJheFNlcnZpY2UuZmxhZ3NUYWJsZVYyKGRhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5mbGFnc1RhYmxlQXBpU3RhdGUubmV4dCgnbG9hZGVkJylcclxuICAgICAgICBpZiAocmVzPy5kYXRhPy50b3RhbENvdW50KSB7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSByZXMuZGF0YS50b3RhbENvdW50XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudG90YWxJdGVtcyA9IDBcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJlcz8uZGF0YT8uY2hlY2tsaXN0UGVyZm9ybWFuY2UpIHtcclxuICAgICAgICAgIHRoaXMuZmxhZ3NUYWJsZURhdGEgPSByZXMuZGF0YS5jaGVja2xpc3RQZXJmb3JtYW5jZVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmZsYWdzVGFibGVEYXRhID0gW11cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZmxhZ3NUYWJsZUFwaVN0YXRlLm5leHQoJ2xvYWRlZCcpXHJcblxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgb25GbGFnc1RhYmxlRXhwb3J0KCk6IHZvaWQge1xyXG4gICAgLy8gdGhpcy5mbGFnc1RhYmxlQXBpU3RhdGUubmV4dCgnbG9hZGluZycpXHJcbiAgICBjb25zdCBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xyXG4gICAgICBcImNsaWVudElkXCI6IHRoaXMuaGVhZGVyRGF0YT8uY2xpZW50LFxyXG4gICAgICBcInN0b3JlSWRcIjogdGhpcy5oZWFkZXJEYXRhPy5zdG9yZXMubWFwKCh2YWw6IHsgc3RvcmVJZDogc3RyaW5nLCBzdG9yZU5hbWU6IHN0cmluZyB9KSA9PiB2YWwuc3RvcmVJZCksXHJcbiAgICAgIFwidXNlckVtYWlsZXNcIjogdGhpcy51c2VyRW1haWxlcyxcclxuICAgICAgXCJmcm9tRGF0ZVwiOiB0aGlzLmhlYWRlckRhdGE/LmRhdGUuc3RhcnREYXRlLFxyXG4gICAgICBcInRvRGF0ZVwiOiB0aGlzLmhlYWRlckRhdGE/LmRhdGUuZW5kRGF0ZSxcclxuICAgICAgXCJsaW1pdFwiOiB0aGlzLnBhZ2VTaXplLFxyXG4gICAgICBcIm9mZnNldFwiOiB0aGlzLmN1cnJlbnRQYWdlID4gMCA/IHRoaXMuY3VycmVudFBhZ2UgLSAxIDogMCxcclxuICAgICAgXCJzb3J0Q29sdW1uTmFtZVwiOiB0aGlzLnNvcnRDb2x1bU5hbWUsXHJcbiAgICAgIFwic29ydEJ5XCI6IHRoaXMuc29ydERpcmVjdGlvbixcclxuICAgICAgXCJzZWFyY2hWYWx1ZVwiOnRoaXMuc2VhcmNoSW5wdXQudmFsdWUsXHJcbiAgICAgIC8vIFwiZmlsdGVyXCI6dGhpcy5maWx0ZXJJbnB1dC52YWx1ZSxcclxuICAgICAgXCJmaWx0ZXJcIjp0aGlzLnNlbGVjdGVkRmxhZyxcclxuICAgICAgXCJleHBvcnRcIjp0cnVlLCAgICAgIFxyXG4gICAgICAuLi4odGhpcy5zZWxlY3RlZEZsYWcgPT09IFwicnVuQUlcIiAmJiB7XHJcbiAgICAgICAgcnVuQUlDaGVja2xpc3ROYW1lOiB0aGlzLmNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzLnJ1bkFJRmxhZy5saXN0Lm1hcChcclxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5jaGVja0xpc3ROYW1lXHJcbiAgICAgICAgKSxcclxuICAgICAgfSksXHJcbiAgICB9XHJcblxyXG5cclxuICAgIHRoaXMudHJheFNlcnZpY2UuZXhwb3J0RmxhZ3NUYWJsZXYyKGRhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5mbGFnc1RhYmxlQXBpU3RhdGUubmV4dCgnbG9hZGVkJylcclxuICAgICAgICB0aGlzLnRyYXhTZXJ2aWNlLnNhdmVBc0V4Y2VsRmlsZShyZXMsIGAke3RoaXMuc2VsZWN0ZWRGbGFnLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpfSR7dGhpcy5zZWxlY3RlZEZsYWcuc2xpY2UoMSl9IGZsYWdfYClcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG5cclxuXHJcbiAgc29ydERhdGEoY29sdW1uOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNvcnRDb2x1bU5hbWUgPT09IGNvbHVtbikge1xyXG4gICAgICB0aGlzLnNvcnREaXJlY3Rpb24gPSB0aGlzLnNvcnREaXJlY3Rpb24gPT09IDEgPyAtMSA6IDE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNvcnRDb2x1bU5hbWUgPSBjb2x1bW47XHJcbiAgICAgIHRoaXMuc29ydERpcmVjdGlvbiA9IDE7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMuZ2V0RmxhZ3NUYWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgb25QYWdlU2l6ZUNoYW5nZShwYWdlU2l6ZTogYW55KSB7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuICAgIHRoaXMuaXRlbXNQZXJQYWdlID0gcGFnZVNpemU7XHJcbiAgICB0aGlzLnBhZ2VTaXplID0gcGFnZVNpemU7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMuZ2V0RmxhZ3NUYWJsZSgpXHJcbiAgfVxyXG5cclxuICBvblBhZ2VDaGFuZ2UocGFnZU9mZnNldDogYW55KSB7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gcGFnZU9mZnNldFxyXG4gICAgdGhpcy5nZXRGbGFnc1RhYmxlKClcclxuICB9XHJcblxyXG4gIHZpZXdJbkRldGFpbChjaGVja2xpc3RJZDogc3RyaW5nIHwgdW5kZWZpbmVkLCB0eXBlPzogJ3F1ZXN0aW9uJyB8ICd0aW1lJyB8ICdydW5BSScgKSB7XHJcbiAgICBpZighY2hlY2tsaXN0SWQpe1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGxldCByb3V0ZSAgPSBgL21hbmFnZS90cmF4L2ZsYWdzL2ZsYWdzaW5mbz9pZD0ke2NoZWNrbGlzdElkfWBcclxuICAgIGlmKHRoaXMuc2VsZWN0ZWRGbGFnID09ICdydW5BSScpIHtcclxuICAgICAgcm91dGUgPSByb3V0ZSArIGAmdHlwZT1ydW5BSWA7XHJcbiAgICB9XHJcbiAgICBpZih0eXBlKXtcclxuICAgICAgcm91dGUgPSByb3V0ZSArIGAmdHlwZT0ke3R5cGV9YFxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwocm91dGUpXHJcbiAgfVxyXG5cclxuICBkYXRlQ29tcGFyaXNvblZhbHVlQ2hhbmdlKHZhbDonZGFpbHknIHwgJ3dlZWtseScgfCAnbW9udGhseScgKXtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdkYXNoYm9hcmREYXRlVHlwZScsIHZhbClcclxuICAgIHRoaXMuZGF0ZUNvbXBhcmlzb25UeXBlID0gdmFsXHJcbiAgICB0aGlzLmNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGEgPSBudWxsXHJcbiAgICB0aGlzLmdldENoZWNrbGlzdEZsYWdNZXRyaWNzQ29tcGFyaXNvbigpXHJcbiAgfVxyXG5cclxuICBzZWxlY3RUYWJzKGZsYWc6YW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRmxhZyA9IGZsYWc7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlICA9IDBcclxuICAgIHRoaXMuZ2V0RmxhZ3NUYWJsZSgpXHJcbiAgfVxyXG5cclxuICBjaGVja2xpc3RDb3VudEJ5VHlwZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2FyZE1ldHJpY3NBcGlTdGF0ZS5uZXh0KCdsb2FkaW5nJyk7XHJcbiAgICBjb25zdCBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xyXG4gICAgICAgIFwiY2xpZW50SWRcIjogdGhpcy5oZWFkZXJEYXRhPy5jbGllbnQsXHJcbiAgICAgICAgXCJmcm9tRGF0ZVwiOiB0aGlzLmhlYWRlckRhdGE/LmRhdGUuc3RhcnREYXRlLFxyXG4gICAgICAgIFwidG9EYXRlXCI6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZS5lbmREYXRlLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLmNoZWNrbGlzdENvdW50QnlUeXBlKGRhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jYXJkTWV0cmljc0FwaVN0YXRlLm5leHQoJ2xvYWRlZCcpO1xyXG4gICAgICAgICAgICBpZiAocmVzPy5jb2RlID09PSAyMDAgJiYgcmVzPy5zdGF0dXMgPT09IFwic3VjY2Vzc1wiICYmIHJlcz8uZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jYXJkTWV0cmljc0RhdGFCeVR5cGUgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWlDaGVja2xpc3RDb3VudDogcmVzLmRhdGEuYWlDaGVja2xpc3RDb3VudCxcclxuICAgICAgICAgICAgICAgICAgICBjdXN0b21DaGVja2xpc3RDb3VudDogcmVzLmRhdGEuY3VzdG9tQ2hlY2tsaXN0Q291bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgc2hvd0NhcmRzOiByZXMuZGF0YS5zaG93Q2FyZHNcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jYXJkTWV0cmljc0RhdGFCeVR5cGUuc2hvd0NhcmRzID09PSAnYWlDYXJkcycpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RUYWJzKCdkZXRlY3Rpb24nKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmNhcmRNZXRyaWNzRGF0YUJ5VHlwZSA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZSkgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn1cclxufVxyXG5cclxuIiwiPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDwhLS1hbGxDYXJkcyAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FyZE1ldHJpY3NEYXRhQnlUeXBlPy5zaG93Q2FyZHMgPT09ICdhbGxDYXJkcydcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidy05NVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHQtMiBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBwZS0zXCIgW25nQ2xhc3NdPVwiY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnJ1bkFJRmxhZyA/ICd3LTI1JyA6ICd3LTUwJ1wiIChjbGljayk9XCJzZWxlY3RUYWJzKCdhbGwnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSdhbGwnID8gJ2FjdGl2ZS1jYXJkJyA6ICdpbmFjdGl2ZS1jYXJkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0nYWxsJyA/ICdhY3RpdmUtaGVhZGVyJyA6ICdpbmFjdGl2ZS1oZWFkZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG90YWwgRmxhZ3NcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZHN1YmNvdW50IG1lLTNcIj57eyhjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8udG90YWxGbGFnID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8udG90YWxGbGFnKSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8udG90YWxGbGFnPy50b0xvY2FsZVN0cmluZygnZW4tSU4nKSA6ICctLSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8udG90YWxDb21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8udG90YWxDb21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEzXCIgaGVpZ2h0PVwiOFwiIHZpZXdCb3g9XCIwIDAgMTMgOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjgzMiAxTDcuMDgyMDMgNS43NUw0LjU4MjAzIDMuMjVMMC44MzIwMzEgN00xMS44MzIgMUg4LjgzMjAzTTExLjgzMiAxVjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy50b3RhbENvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCIgY2xhc3M9XCJuZy1zdGFyLWluc2VydGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz1cIm10LTJcIj48c3BhbiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyhjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy50b3RhbENvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8udG90YWxDb21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnRvdGFsQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhPy50b0xvY2FsZVN0cmluZygnZW4tSU4nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJTwvc3Bhbj48c3BhbiBjbGFzcz1cIndlZWstZm9udFwiPiB2c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Qge3tkYXRlQ29tcGFyaXNvblR5cGUgPT09ICd3ZWVrbHknID8gJ3dlZWsnIDogZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnbW9udGhseScgPyAnbW9udGgnIDogJ2RheSd9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHBlLTNcIiBbbmdDbGFzc109XCJjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8ucnVuQUlGbGFnID8gJ3ctMjUnIDogJ3ctNTAnXCIgKGNsaWNrKT1cInNlbGVjdFRhYnMoJ3F1ZXN0aW9uJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0ncXVlc3Rpb24nID8gJ2FjdGl2ZS1jYXJkJyA6ICdpbmFjdGl2ZS1jYXJkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0ncXVlc3Rpb24nID8gJ2FjdGl2ZS1oZWFkZXInIDogJ2luYWN0aXZlLWhlYWRlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbiBGbGFnc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FyZHN1YmNvdW50IG15LTIgbWUtM1wiPnt7KGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5xdWVzdGlvbkZsYWc/LmNvdW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnF1ZXN0aW9uRmxhZz8uY291bnQpID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5xdWVzdGlvbkZsYWc/LmNvdW50Py50b0xvY2FsZVN0cmluZygnZW4tSU4nKSA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS0nfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnF1ZXN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMiBtZS0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucXVlc3Rpb25Db21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEzXCIgaGVpZ2h0PVwiOFwiIHZpZXdCb3g9XCIwIDAgMTMgOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjgzMiAxTDcuMDgyMDMgNS43NUw0LjU4MjAzIDMuMjVMMC44MzIwMzEgN00xMS44MzIgMUg4LjgzMjAzTTExLjgzMiAxVjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5xdWVzdGlvbkNvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCIgY2xhc3M9XCJuZy1zdGFyLWluc2VydGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz1cIm10LTJcIj48c3BhbiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyhjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5xdWVzdGlvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucXVlc3Rpb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnF1ZXN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhPy50b0xvY2FsZVN0cmluZygnZW4tSU4nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJTwvc3Bhbj48c3BhbiBjbGFzcz1cIndlZWstZm9udFwiPiB2c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Qge3tkYXRlQ29tcGFyaXNvblR5cGUgPT09ICd3ZWVrbHknID8gJ3dlZWsnIDogZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnbW9udGhseScgPyAnbW9udGgnIDogJ2RheSd9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMjUgY3Vyc29yLXBvaW50ZXIgcGUtM1wiIChjbGljayk9XCJzZWxlY3RUYWJzKCdydW5BSScpXCIgKm5nSWY9XCJjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8ucnVuQUlGbGFnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIiBbbmdDbGFzc109XCJzZWxlY3RlZEZsYWcgPT09J3J1bkFJJyA/ICdhY3RpdmUtY2FyZCcgOiAnaW5hY3RpdmUtY2FyZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIiBbbmdDbGFzc109XCJzZWxlY3RlZEZsYWcgPT09J3J1bkFJJyA/ICdhY3RpdmUtaGVhZGVyJyA6ICdpbmFjdGl2ZS1oZWFkZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVuIEFJIEZsYWdzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmRzdWJjb3VudCBtZS0zXCI+e3soY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnJ1bkFJRmxhZz8uZmxhZ0NvdW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnJ1bkFJRmxhZz8uZmxhZ0NvdW50KSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8ucnVuQUlGbGFnPy5mbGFnQ291bnQ/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucnVuQUlDb21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucnVuQUlDb21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEzXCIgaGVpZ2h0PVwiOFwiIHZpZXdCb3g9XCIwIDAgMTMgOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjgzMiAxTDcuMDgyMDMgNS43NUw0LjU4MjAzIDMuMjVMMC44MzIwMzEgN00xMS44MzIgMUg4LjgzMjAzTTExLjgzMiAxVjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5ydW5BSUNvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCIgY2xhc3M9XCJuZy1zdGFyLWluc2VydGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz1cIm10LTJcIj48c3BhbiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyhjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5ydW5BSUNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucnVuQUlDb21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnJ1bkFJQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhPy50b0xvY2FsZVN0cmluZygnZW4tSU4nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJTwvc3Bhbj48c3BhbiBjbGFzcz1cIndlZWstZm9udFwiPiB2c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Qge3tkYXRlQ29tcGFyaXNvblR5cGUgPT09ICd3ZWVrbHknID8gJ3dlZWsnIDogZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnbW9udGhseScgPyAnbW9udGgnIDogJ2RheSd9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHBlLTNcIiAoY2xpY2spPVwic2VsZWN0VGFicygndGltZScpXCIgW25nQ2xhc3NdPVwiY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnJ1bkFJRmxhZyA/ICd3LTI1JyA6ICd3LTUwJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSd0aW1lJyA/ICdhY3RpdmUtY2FyZCcgOiAnaW5hY3RpdmUtY2FyZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIiBbbmdDbGFzc109XCJzZWxlY3RlZEZsYWcgPT09J3RpbWUnID8gJ2FjdGl2ZS1oZWFkZXInIDogJ2luYWN0aXZlLWhlYWRlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3QgU3VibWl0dGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkc3ViY291bnQgbWUtM1wiPnt7KGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5kZWxheUluU3VibWlzc2lvbj8uY291bnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8uZGVsYXlJblN1Ym1pc3Npb24/LmNvdW50KSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8uZGVsYXlJblN1Ym1pc3Npb24/LmNvdW50Py50b0xvY2FsZVN0cmluZygnZW4tSU4nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnLS0nfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uQ29tcGFyaXNvbkZsYWc/LkNvbXBhcmlzb25GbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjhcIiB2aWV3Qm94PVwiMCAwIDEzIDhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMS44MzIgMUw3LjA4MjAzIDUuNzVMNC41ODIwMyAzLjI1TDAuODMyMDMxIDdNMTEuODMyIDFIOC44MzIwM00xMS44MzIgMVY0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAzOTg1NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGVsYXlJblN1Ym1pc3Npb25Db21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiIGNsYXNzPVwibmctc3Rhci1pbnNlcnRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgOUw2Ljc1IDQuMjVMNC4yNSA2Ljc1TDAuNSAzTTExLjUgOUg4LjVNMTEuNSA5VjZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMzI4XzQ2NTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9XCJtdC0yXCI+PHNwYW4gY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3soY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGVsYXlJblN1Ym1pc3Npb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZWxheUluU3VibWlzc2lvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YT8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICU8L3NwYW4+PHNwYW4gY2xhc3M9XCJ3ZWVrLWZvbnRcIj4gdnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IHt7ZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnd2Vla2x5JyA/ICd3ZWVrJyA6IGRhdGVDb21wYXJpc29uVHlwZSA9PT0gJ21vbnRobHknID8gJ21vbnRoJyA6ICdkYXknfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBwZS0zXCIgKGNsaWNrKT1cInNlbGVjdFRhYnMoJ2RldGVjdGlvbicpXCIgW25nQ2xhc3NdPVwiY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnJ1bkFJRmxhZyA/ICd3LTI1JyA6ICd3LTUwJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSdkZXRlY3Rpb24nID8gJ2FjdGl2ZS1jYXJkJyA6ICdpbmFjdGl2ZS1jYXJkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0nZGV0ZWN0aW9uJyA/ICdhY3RpdmUtaGVhZGVyJyA6ICdpbmFjdGl2ZS1oZWFkZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV0ZWN0aW9uIEZsYWdzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmRzdWJjb3VudCBtZS0zXCI+e3soY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LmRldGVjdGlvbkZsYWc/LmNvdW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LmRldGVjdGlvbkZsYWc/LmNvdW50KSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8uZGV0ZWN0aW9uRmxhZz8uY291bnQ/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGV0ZWN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRldGVjdGlvbkNvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTNcIiBoZWlnaHQ9XCI4XCIgdmlld0JveD1cIjAgMCAxMyA4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEuODMyIDFMNy4wODIwMyA1Ljc1TDQuNTgyMDMgMy4yNUwwLjgzMjAzMSA3TTExLjgzMiAxSDguODMyMDNNMTEuODMyIDFWNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMzk4NTVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRldGVjdGlvbkNvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCIgY2xhc3M9XCJuZy1zdGFyLWluc2VydGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz1cIm10LTJcIj48c3BhbiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyhjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZXRlY3Rpb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRldGVjdGlvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGV0ZWN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhPy50b0xvY2FsZVN0cmluZygnZW4tSU4nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJTwvc3Bhbj48c3BhbiBjbGFzcz1cIndlZWstZm9udFwiPiB2c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Qge3tkYXRlQ29tcGFyaXNvblR5cGUgPT09ICd3ZWVrbHknID8gJ3dlZWsnIDogZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnbW9udGhseScgPyAnbW9udGgnIDogJ2RheSd9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPCEtLSBjdXN0b21DaGVja2xpc3RDb3VudCA+IDEgJiBhaUNoZWNrbGlzdENvdW50ID4gMCBzaG93IDMgY2FyZHMgLS0+XHJcbiAgICAgICAgPCEtLSBjdXN0b21DYXJkcyAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FyZE1ldHJpY3NEYXRhQnlUeXBlPy5zaG93Q2FyZHMgPT09ICdjdXN0b21DYXJkcydcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidy05NVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHQtMiBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zIGN1cnNvci1wb2ludGVyIHBlLTNcIiAoY2xpY2spPVwic2VsZWN0VGFicygnYWxsJylcIiBbbmdDbGFzc109XCJjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8ucnVuQUlGbGFnID8gJ2NvbC0zJyA6ICdjb2wtNCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0nYWxsJyA/ICdhY3RpdmUtY2FyZCcgOiAnaW5hY3RpdmUtY2FyZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIiBbbmdDbGFzc109XCJzZWxlY3RlZEZsYWcgPT09J2FsbCcgPyAnYWN0aXZlLWhlYWRlcicgOiAnaW5hY3RpdmUtaGVhZGVyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvdGFsIEZsYWdzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmRzdWJjb3VudCBtZS0zXCI+e3soY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnRvdGFsRmxhZyA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnRvdGFsRmxhZykgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnRvdGFsRmxhZz8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJykgOiAnLS0nfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnRvdGFsQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnRvdGFsQ29tcGFyaXNvbkZsYWc/LkNvbXBhcmlzb25GbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjhcIiB2aWV3Qm94PVwiMCAwIDEzIDhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMS44MzIgMUw3LjA4MjAzIDUuNzVMNC41ODIwMyAzLjI1TDAuODMyMDMxIDdNMTEuODMyIDFIOC44MzIwM00xMS44MzIgMVY0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAzOTg1NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8udG90YWxDb21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiIGNsYXNzPVwibmctc3Rhci1pbnNlcnRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgOUw2Ljc1IDQuMjVMNC4yNSA2Ljc1TDAuNSAzTTExLjUgOUg4LjVNMTEuNSA5VjZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMzI4XzQ2NTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9XCJtdC0yXCI+PHNwYW4gY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3soY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8udG90YWxDb21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnRvdGFsQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy50b3RhbENvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YT8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICU8L3NwYW4+PHNwYW4gY2xhc3M9XCJ3ZWVrLWZvbnRcIj4gdnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IHt7ZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnd2Vla2x5JyA/ICd3ZWVrJyA6IGRhdGVDb21wYXJpc29uVHlwZSA9PT0gJ21vbnRobHknID8gJ21vbnRoJyA6ICdkYXknfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMyBjdXJzb3ItcG9pbnRlciBwZS0zXCIgKGNsaWNrKT1cInNlbGVjdFRhYnMoJ3F1ZXN0aW9uJylcIiBbbmdDbGFzc109XCJjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8ucnVuQUlGbGFnID8gJ2NvbC0zJyA6ICdjb2wtNCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0ncXVlc3Rpb24nID8gJ2FjdGl2ZS1jYXJkJyA6ICdpbmFjdGl2ZS1jYXJkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0ncXVlc3Rpb24nID8gJ2FjdGl2ZS1oZWFkZXInIDogJ2luYWN0aXZlLWhlYWRlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbiBGbGFnc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FyZHN1YmNvdW50IG15LTIgbWUtM1wiPnt7KGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5xdWVzdGlvbkZsYWc/LmNvdW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnF1ZXN0aW9uRmxhZz8uY291bnQpID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5xdWVzdGlvbkZsYWc/LmNvdW50Py50b0xvY2FsZVN0cmluZygnZW4tSU4nKSA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS0nfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnF1ZXN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMiBtZS0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucXVlc3Rpb25Db21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEzXCIgaGVpZ2h0PVwiOFwiIHZpZXdCb3g9XCIwIDAgMTMgOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjgzMiAxTDcuMDgyMDMgNS43NUw0LjU4MjAzIDMuMjVMMC44MzIwMzEgN00xMS44MzIgMUg4LjgzMjAzTTExLjgzMiAxVjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5xdWVzdGlvbkNvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCIgY2xhc3M9XCJuZy1zdGFyLWluc2VydGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz1cIm10LTJcIj48c3BhbiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyhjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5xdWVzdGlvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucXVlc3Rpb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnF1ZXN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhPy50b0xvY2FsZVN0cmluZygnZW4tSU4nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJTwvc3Bhbj48c3BhbiBjbGFzcz1cIndlZWstZm9udFwiPiB2c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Qge3tkYXRlQ29tcGFyaXNvblR5cGUgPT09ICd3ZWVrbHknID8gJ3dlZWsnIDogZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnbW9udGhseScgPyAnbW9udGgnIDogJ2RheSd9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zIGN1cnNvci1wb2ludGVyIHBlLTNcIiAoY2xpY2spPVwic2VsZWN0VGFicygncnVuQUknKVwiICpuZ0lmPVwiY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnJ1bkFJRmxhZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSdydW5BSScgPyAnYWN0aXZlLWNhcmQnIDogJ2luYWN0aXZlLWNhcmQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSdydW5BSScgPyAnYWN0aXZlLWhlYWRlcicgOiAnaW5hY3RpdmUtaGVhZGVyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1biBBSSBGbGFnc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkc3ViY291bnQgbWUtM1wiPnt7KGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5ydW5BSUZsYWc/LmZsYWdDb3VudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5ydW5BSUZsYWc/LmZsYWdDb3VudCkgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnJ1bkFJRmxhZz8uZmxhZ0NvdW50Py50b0xvY2FsZVN0cmluZygnZW4tSU4nKSA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS0nfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnJ1bkFJQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnJ1bkFJQ29tcGFyaXNvbkZsYWc/LkNvbXBhcmlzb25GbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjhcIiB2aWV3Qm94PVwiMCAwIDEzIDhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMS44MzIgMUw3LjA4MjAzIDUuNzVMNC41ODIwMyAzLjI1TDAuODMyMDMxIDdNMTEuODMyIDFIOC44MzIwM00xMS44MzIgMVY0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAzOTg1NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucnVuQUlDb21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiIGNsYXNzPVwibmctc3Rhci1pbnNlcnRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgOUw2Ljc1IDQuMjVMNC4yNSA2Ljc1TDAuNSAzTTExLjUgOUg4LjVNMTEuNSA5VjZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMzI4XzQ2NTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9XCJtdC0yXCI+PHNwYW4gY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3soY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucnVuQUlDb21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnJ1bkFJQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5ydW5BSUNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YT8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICU8L3NwYW4+PHNwYW4gY2xhc3M9XCJ3ZWVrLWZvbnRcIj4gdnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IHt7ZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnd2Vla2x5JyA/ICd3ZWVrJyA6IGRhdGVDb21wYXJpc29uVHlwZSA9PT0gJ21vbnRobHknID8gJ21vbnRoJyA6ICdkYXknfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMyBjdXJzb3ItcG9pbnRlciBwZS0zXCIgKGNsaWNrKT1cInNlbGVjdFRhYnMoJ3RpbWUnKVwiIFtuZ0NsYXNzXT1cImNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5ydW5BSUZsYWcgPyAnY29sLTMnIDogJ2NvbC00J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSd0aW1lJyA/ICdhY3RpdmUtY2FyZCcgOiAnaW5hY3RpdmUtY2FyZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIiBbbmdDbGFzc109XCJzZWxlY3RlZEZsYWcgPT09J3RpbWUnID8gJ2FjdGl2ZS1oZWFkZXInIDogJ2luYWN0aXZlLWhlYWRlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3QgU3VibWl0dGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkc3ViY291bnQgbWUtM1wiPnt7KGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5kZWxheUluU3VibWlzc2lvbj8uY291bnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8uZGVsYXlJblN1Ym1pc3Npb24/LmNvdW50KSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8uZGVsYXlJblN1Ym1pc3Npb24/LmNvdW50Py50b0xvY2FsZVN0cmluZygnZW4tSU4nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnLS0nfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uQ29tcGFyaXNvbkZsYWc/LkNvbXBhcmlzb25GbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjhcIiB2aWV3Qm94PVwiMCAwIDEzIDhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMS44MzIgMUw3LjA4MjAzIDUuNzVMNC41ODIwMyAzLjI1TDAuODMyMDMxIDdNMTEuODMyIDFIOC44MzIwM00xMS44MzIgMVY0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAzOTg1NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGVsYXlJblN1Ym1pc3Npb25Db21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiIGNsYXNzPVwibmctc3Rhci1pbnNlcnRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgOUw2Ljc1IDQuMjVMNC4yNSA2Ljc1TDAuNSAzTTExLjUgOUg4LjVNMTEuNSA5VjZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMzI4XzQ2NTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9XCJtdC0yXCI+PHNwYW4gY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3soY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGVsYXlJblN1Ym1pc3Npb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZWxheUluU3VibWlzc2lvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YT8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICU8L3NwYW4+PHNwYW4gY2xhc3M9XCJ3ZWVrLWZvbnRcIj4gdnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IHt7ZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnd2Vla2x5JyA/ICd3ZWVrJyA6IGRhdGVDb21wYXJpc29uVHlwZSA9PT0gJ21vbnRobHknID8gJ21vbnRoJyA6ICdkYXknfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYXJkTWV0cmljc0RhdGFCeVR5cGU/LnNob3dDYXJkcyA9PT0gJ2FsbENhcmRzJyB8fCBjYXJkTWV0cmljc0RhdGFCeVR5cGU/LnNob3dDYXJkcyA9PT0gJ2N1c3RvbUNhcmRzJ1wiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJoZWFkZXJEYXRhPy5jbGllbnQgIT09ICcxMSdcIiBjbGFzcz1cInctNSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiB0ZXh0LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtZS01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0xIGN1cnNvci1wb2ludGVyIGZzLTVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZGF0ZUNvbXBhcmlzb25UeXBlID09PSdkYWlseScgPyAndGV4dC1wcmltYXJ5JyA6JydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRhdGVDb21wYXJpc29uVmFsdWVDaGFuZ2UoJ2RhaWx5JylcIj4xRDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMSBjdXJzb3ItcG9pbnRlciBmcy01XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRhdGVDb21wYXJpc29uVHlwZSA9PT0nd2Vla2x5JyA/ICd0ZXh0LXByaW1hcnknIDonJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGF0ZUNvbXBhcmlzb25WYWx1ZUNoYW5nZSgnd2Vla2x5JylcIj4xVzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICAqbmdJZj1cInRyYXhNb250aGx5Q29tcGFyaXNvbkRhdGFcIiBjbGFzcz1cIm10LTEgY3Vyc29yLXBvaW50ZXIgZnMtNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJkYXRlQ29tcGFyaXNvblR5cGUgPT09J21vbnRobHknID8gJ3RleHQtcHJpbWFyeScgOicnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkYXRlQ29tcGFyaXNvblZhbHVlQ2hhbmdlKCdtb250aGx5JylcIj4xTTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgIGNsYXNzPVwibXQtMSBjdXJzb3ItcG9pbnRlciBmcy01XCIgIFtuZ0NsYXNzXT1cImRhdGVUeXBlID09PSdtb250aGx5JyA/ICd0ZXh0LXByaW1hcnknIDonJ1wiICAoY2xpY2spPVwiZGF0ZVZhbHVlKCdtb250aGx5JylcIj4xTTwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gY3VzdG9tQ2hlY2tsaXN0Q291bnQgPiAwICYgYWlDaGVja2xpc3RDb3VudCA+IDEgc2hvdyBzaW5nbGUgY2FyZHMgLS0+XHJcbiAgICA8IS0tIGFpQ2FyZHMgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FyZE1ldHJpY3NEYXRhQnlUeXBlPy5zaG93Q2FyZHMgPT09ICdhaUNhcmRzJ1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG10LTMgY3Vyc29yLXBvaW50ZXIgcGUtM1wiIChjbGljayk9XCJzZWxlY3RUYWJzKCdkZXRlY3Rpb24nKVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSdkZXRlY3Rpb24nID8gJ2FjdGl2ZS1jYXJkJyA6ICdpbmFjdGl2ZS1jYXJkJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0nZGV0ZWN0aW9uJyA/ICdhY3RpdmUtaGVhZGVyJyA6ICdpbmFjdGl2ZS1oZWFkZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgRGV0ZWN0aW9uIEZsYWdzXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTMgcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTIgY29sLTExXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZHN1YmNvdW50IG1lLTNcIj57eyhjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8uZGV0ZWN0aW9uRmxhZz8uY291bnQgPT09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5kZXRlY3Rpb25GbGFnPy5jb3VudCkgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LmRldGVjdGlvbkZsYWc/LmNvdW50Py50b0xvY2FsZVN0cmluZygnZW4tSU4nKSA6ICctLSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGV0ZWN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRldGVjdGlvbkNvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTNcIiBoZWlnaHQ9XCI4XCIgdmlld0JveD1cIjAgMCAxMyA4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjgzMiAxTDcuMDgyMDMgNS43NUw0LjU4MjAzIDMuMjVMMC44MzIwMzEgN00xMS44MzIgMUg4LjgzMjAzTTExLjgzMiAxVjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZXRlY3Rpb25Db21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiIGNsYXNzPVwibmctc3Rhci1pbnNlcnRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgOUw2Ljc1IDQuMjVMNC4yNSA2Ljc1TDAuNSAzTTExLjUgOUg4LjVNMTEuNSA5VjZcIiBzdHJva2U9XCIjRDkyRDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz1cIm10LTJcIj48c3BhbiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyhjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZXRlY3Rpb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRldGVjdGlvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGV0ZWN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhPy50b0xvY2FsZVN0cmluZygnZW4tSU4nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJTwvc3Bhbj48c3BhbiBjbGFzcz1cIndlZWstZm9udFwiPiB2c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Qge3tkYXRlQ29tcGFyaXNvblR5cGUgPT09ICd3ZWVrbHknID8gJ3dlZWsnIDogZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnbW9udGhseScgPyAnbW9udGgnIDogJ2RheSd9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImhlYWRlckRhdGE/LmNsaWVudCAhPT0gJzExJ1wiIGNsYXNzPVwiY29sLTEgbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTEgY3Vyc29yLXBvaW50ZXIgZnMtNSBteC0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRhdGVDb21wYXJpc29uVHlwZSA9PT0nZGFpbHknID8gJ3RleHQtcHJpbWFyeScgOicnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkYXRlQ29tcGFyaXNvblZhbHVlQ2hhbmdlKCdkYWlseScpXCI+MUQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMSBjdXJzb3ItcG9pbnRlciBmcy01IG1lLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZGF0ZUNvbXBhcmlzb25UeXBlID09PSd3ZWVrbHknID8gJ3RleHQtcHJpbWFyeScgOicnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkYXRlQ29tcGFyaXNvblZhbHVlQ2hhbmdlKCd3ZWVrbHknKVwiPjFXPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAgKm5nSWY9XCJ0cmF4TW9udGhseUNvbXBhcmlzb25EYXRhXCIgY2xhc3M9XCJtdC0xIGN1cnNvci1wb2ludGVyIGZzLTVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZGF0ZUNvbXBhcmlzb25UeXBlID09PSdtb250aGx5JyA/ICd0ZXh0LXByaW1hcnknIDonJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGF0ZUNvbXBhcmlzb25WYWx1ZUNoYW5nZSgnbW9udGhseScpXCI+MU08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiAgY2xhc3M9XCJtdC0xIGN1cnNvci1wb2ludGVyIGZzLTVcIiAgW25nQ2xhc3NdPVwiZGF0ZVR5cGUgPT09J21vbnRobHknID8gJ3RleHQtcHJpbWFyeScgOicnXCIgIChjbGljayk9XCJkYXRlVmFsdWUoJ21vbnRobHknKVwiPjFNPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtM1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC00IHB4LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZC1sYWJlbCBtYi0yXCI+PHNwYW4gKm5nSWY9XCIhWyd0aW1lJywnYWxsJ10uaW5jbHVkZXMoc2VsZWN0ZWRGbGFnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZS0zXCI+e3tzZWxlY3RlZEZsYWcgIT09ICdydW5BSScgPyAgKHNlbGVjdGVkRmxhZyB8IHRpdGxlY2FzZSkgOiAnUnVuQUknfX0gRmxhZ3M8L3NwYW4+IDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJbJ3RpbWUnLCdhbGwnXS5pbmNsdWRlcyhzZWxlY3RlZEZsYWcpXCIgY2xhc3M9XCJtZS0zXCI+e3tzZWxlY3RlZEZsYWcgPT09ICdhbGwnID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVG90YWwgRmxhZ3MnIDogJ05vdCBTdW1iaXR0ZWQnfX08L3NwYW4+IDxzcGFuICpuZ0lmPVwidG90YWxJdGVtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1wcmltYXJ5IFwiPnt7dG90YWxJdGVtc319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWw8L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc3ViIG1iLTJcIj4gQmFzZWQgb24ge3sgaGVhZGVyRGF0YT8uZGF0ZT8uc3RhcnREYXRlIHwgZGF0ZTogJ01NTSBkJyB9fSAtIHt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJEYXRhPy5kYXRlPy5lbmREYXRlIHwgZGF0ZTogJ01NTSBkLCB5JyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKGZsYWdzVGFibGVBcGlTdGF0ZSB8IGFzeW5jKSA9PT0gJ2xvYWRlZCdcIiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciAgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gZm9vdGZhbGxzZWFyY2ggc3ZnLWljb24tMSBwb3NpdGlvbi1hYnNvbHV0ZSAgbXMtOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBvcGFjaXR5PVwiMC41XCIgeD1cIjE3LjAzNjVcIiB5PVwiMTUuMTIyM1wiIHdpZHRoPVwiOC4xNTU0NlwiIGhlaWdodD1cIjJcIiByeD1cIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInJvdGF0ZSg0NSAxNy4wMzY1IDE1LjEyMjMpXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExIDE5QzYuNTU1NTYgMTkgMyAxNS40NDQ0IDMgMTFDMyA2LjU1NTU2IDYuNTU1NTYgMyAxMSAzQzE1LjQ0NDQgMyAxOSA2LjU1NTU2IDE5IDExQzE5IDE1LjQ0NDQgMTUuNDQ0NCAxOSAxMSAxOVpNMTEgNUM3LjUzMzMzIDUgNSA3LjUzMzMzIDUgMTFDNSAxNC40NjY3IDcuNTMzMzMgMTcgMTEgMTdDMTQuNDY2NyAxNyAxNyAxNC40NjY3IDE3IDExQzE3IDcuNTMzMzMgMTQuNDY2NyA1IDExIDVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFtmb3JtQ29udHJvbF09XCJzZWFyY2hJbnB1dFwiIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcHMtMTQgbXMtNCBtZS00IGZvb3RmYWxsc2VhcmNoXCIgcGxhY2Vob2xkZXI9XCJTZWFyY2hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGxpYi1yZWFjdGl2ZS1zZWxlY3QgW2Zvcm1Db250cm9sXT1cImZpbHRlcklucHV0XCIgW2lkRmllbGRdPVwiJ3ZhbHVlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZUZpZWxkXT1cIidsYWJlbCdcIiBbZGF0YV09XCJmaWx0ZXJWYWx1ZXNcIiBjbGFzcz1cInctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGliLXJlYWN0aXZlLXNlbGVjdD4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImZsYWdzVGFibGVEYXRhPy5sZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiKGZsYWdzVGFibGVBcGlTdGF0ZSB8IGFzeW5jKSA9PT0gJ2xvYWRpbmcnXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkZsYWdzVGFibGVFeHBvcnQoKVwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1vdXRsaW5lIGJ0biBhbGlnbi1pdGVtcy1lbmQgdGV4dC1ub3dyYXAgaW52aGVhZGVyIG1zLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBFeHBvcnQgSWNvbiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNMTQuMTY2NyA2LjY2NjY3TDEwIDIuNU0xMCAyLjVMNS44MzMzMyA2LjY2NjY3TTEwIDIuNVYxMi41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+PC9zcGFuPiBFeHBvcnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGZsYWdzVGFibGVBcGlTdGF0ZSB8IGFzeW5jKSA9PT0gJ2xvYWRlZCcgJiYgZmxhZ3NUYWJsZURhdGE/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZSBweC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0ZXh0LW5vd3JhcCBib3R0b20tYm9yZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnY2hlY2tMaXN0TmFtZScpXCI+Q2hlY2tsaXN0IE5hbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICdjaGVja0xpc3ROYW1lJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdjaGVja0xpc3ROYW1lJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ2NvdmVyYWdlJylcIj5Db3ZlcmFnZTxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ2NvdmVyYWdlJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdjb3ZlcmFnZScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgncnVuQUlRdWVzdGlvbkNvdW50JylcIiAqbmdJZj1cIlsncnVuQUknXS5pbmNsdWRlcyhzZWxlY3RlZEZsYWcpXCI+Tm8gb2YgUXVlc3Rpb25zPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAncnVuQUlRdWVzdGlvbkNvdW50JyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdydW5BSVF1ZXN0aW9uQ291bnQnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ2Fzc2lnbmVkU3RvcmVzJylcIj5Bc3NpZ25lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlczxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ2Fzc2lnbmVkU3RvcmVzJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdhc3NpZ25lZFN0b3JlcycgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAqbmdJZj1cIiFbJ3J1bkFJJ10uaW5jbHVkZXMoc2VsZWN0ZWRGbGFnKVwiIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ2ZsYWdnZWRTdG9yZXMnKVwiPkZsYWdnZWQgU3RvcmVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAnZmxhZ2dlZFN0b3JlcycgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0Q29sdW1OYW1lID09PSAnZmxhZ2dlZFN0b3JlcycgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCdmbGFncycpXCIgKm5nSWY9XCJbJ3J1bkFJJ10uaW5jbHVkZXMoc2VsZWN0ZWRGbGFnKVwiPkZsYWdzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAnZmxhZ3MnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ2ZsYWdzJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiWydhbGwnLCdxdWVzdGlvbiddLmluY2x1ZGVzKHNlbGVjdGVkRmxhZylcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzb3J0RGF0YSgnY3VzdG9tUXVlc3Rpb25GbGFnQ291bnQnKVwiPnt7c2VsZWN0ZWRGbGFnID09PSAncXVlc3Rpb24nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdGbGFncycgOiAnUXVlc3Rpb24gRmxhZ3MnfX08c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ2N1c3RvbVF1ZXN0aW9uRmxhZ0NvdW50JyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0Q29sdW1OYW1lID09PSAnY3VzdG9tUXVlc3Rpb25GbGFnQ291bnQnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiWydhbGwnXS5pbmNsdWRlcyhzZWxlY3RlZEZsYWcpXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic29ydERhdGEoJ3J1bkFJRmxhZycpXCI+UnVuIEFJIEZsYWdzPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICdydW5BSUZsYWcnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdydW5BSUZsYWcnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJbJ2FsbCcsJ3RpbWUnXS5pbmNsdWRlcyhzZWxlY3RlZEZsYWcpXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic29ydERhdGEoJ2N1c3RvbVRpbWVGbGFnQ291bnQnKVwiPnt7c2VsZWN0ZWRGbGFnID09PSAndGltZScgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZsYWdzJyA6ICdOb3QgU3VibWl0dGVkIEZsYWdzJ319PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICdjdXN0b21UaW1lRmxhZ0NvdW50JyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0Q29sdW1OYW1lID09PSAnY3VzdG9tVGltZUZsYWdDb3VudCcgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cIlsnYWxsJywnZGV0ZWN0aW9uJ10uaW5jbHVkZXMoc2VsZWN0ZWRGbGFnKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNvcnREYXRhKCdmbGFnQ291bnQnKVwiPnt7c2VsZWN0ZWRGbGFnID09PSAnZGV0ZWN0aW9uJyA/ICdEZXRlY3Rpb25zJyA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRGV0ZWN0aW9uIEZsYWdzJ319PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICdmbGFnQ291bnQnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdmbGFnQ291bnQnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8dGggc3R5bGU9XCJ3aWR0aDogMjAwcHg7XCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnZmxhZ0NvdW50JylcIj5GbGFnZ2VkPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICdmbGFnQ291bnQnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdmbGFnQ291bnQnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3RoPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHRoICpuZ0lmPVwic2VsZWN0ZWRGbGFnID09PSAnZGV0ZWN0aW9uJ1wiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ2RldGVjdGlvbkNvdW50JylcIj5EZXRlY3Rpb24gQ291bnQ8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ2RldGVjdGlvbkNvdW50JyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0Q29sdW1OYW1lID09PSAnZGV0ZWN0aW9uQ291bnQnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3RoPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCdDb21wbGlhbmNlJylcIj5Db21wbGlhbmNlICU8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICdDb21wbGlhbmNlJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdDb21wbGlhbmNlJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5BY3Rpb25zPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAqbmdGb3I9XCJsZXQgc3RvcmUgb2YgY2hlY2tsaXN0UGVyZm9ybWFuY2VcIiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBkYXRhIG9mIGZsYWdzVGFibGVEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhPy5jaGVja0xpc3RDaGFyPy50b1VwcGVyQ2FzZSgpIHx8ICctLScgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48c3BhbiAoY2xpY2spPVwidmlld0luRGV0YWlsKGRhdGE/LnNvdXJjZUNoZWNrTGlzdF9pZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS10aXRsZS1wcmltYXJ5IGN1cnNvci1wb2ludGVyXCI+e3tkYXRhPy5jaGVja0xpc3ROYW1lID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE/LmNoZWNrTGlzdE5hbWUgOiAnLS0nfX08L3NwYW4+IDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRhdGE/LmNoZWNrTGlzdFR5cGUgIT09ICdjdXN0b20nXCIgY2xhc3M9XCJteC0yXCI+4pyoPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPnt7IGRhdGE/LmNvdmVyYWdlID8gZGF0YT8uY292ZXJhZ2UgOiAnLS0nIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRhYmxlLXRpdGxlXCIgKm5nSWY9XCJbJ3J1bkFJJ10uaW5jbHVkZXMoc2VsZWN0ZWRGbGFnKVwiPnt7IGRhdGE/LnJ1bkFJUXVlc3Rpb25Db3VudCA/IGRhdGE/LnJ1bkFJUXVlc3Rpb25Db3VudCA6IDAgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGFibGUtdGl0bGVcIj57eyBkYXRhLmNoZWNrTGlzdFR5cGUgPT09ICdjdXN0b20nID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGE/LmFzc2lnbmVkU3RvcmVzIHx8IGRhdGE/LmFzc2lnbmVkU3RvcmVzID09PSAwKSA/IGRhdGE/LmFzc2lnbmVkU3RvcmVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnLS0nKSA6ICgoZGF0YT8uYXNzaWduZWRTdG9yZXNBaSB8fCBkYXRhPy5hc3NpZ25lZFN0b3Jlc0FpID09PSAwKSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT8uYXNzaWduZWRTdG9yZXNBaSA6ICctLScpfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGFibGUtdGl0bGVcIj57eyAoZGF0YT8uZmxhZ2dlZFN0b3JlcyB8fCBkYXRhPy5mbGFnZ2VkU3RvcmVzID09PSAwKSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT8uZmxhZ2dlZFN0b3JlcyA6ICctLScgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIlsnYWxsJywncXVlc3Rpb24nLCcnXS5pbmNsdWRlcyhzZWxlY3RlZEZsYWcpXCIgY2xhc3M9XCJ0YWJsZS10aXRsZVwiID57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPy5jdXN0b21RdWVzdGlvbkZsYWdDb3VudCA/PyAnLS0nIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJbJ2FsbCddLmluY2x1ZGVzKHNlbGVjdGVkRmxhZylcIiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT8ucnVuQUlGbGFnID8/ICctLScgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIlsnYWxsJywndGltZSddLmluY2x1ZGVzKHNlbGVjdGVkRmxhZylcIiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT8uY3VzdG9tVGltZUZsYWdDb3VudCA/PyAnLS0nIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiWydhbGwnLCdkZXRlY3Rpb24nLCAncnVuQUknXS5pbmNsdWRlcyhzZWxlY3RlZEZsYWcpXCIgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHt7ZGF0YT8uY2hlY2tMaXN0VHlwZSA9PT0gJ2N1c3RvbScgPyAwIDogKGRhdGE/LmZsYWdDb3VudCA/PyAnLS0nKX19IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2RhdGE/LmZsYWdDb3VudCA/PyAnMCd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDx0ZCBjbGFzcz1cInRhYmxlLXRpdGxlLXByaW1hcnlcIj4gXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGE/LmNoZWNrTGlzdFR5cGUgPT09ICdjdXN0b20nXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZpbHRlcklucHV0LnZhbHVlID09PSAnYWxsJyB8fCBmaWx0ZXJJbnB1dC52YWx1ZSA9PT0gJ3F1ZXN0aW9uJ1wiIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInZpZXdJbkRldGFpbChkYXRhPy5zb3VyY2VDaGVja0xpc3RfaWQsICdxdWVzdGlvbicpXCIgPnt7KGRhdGE/LmN1c3RvbVF1ZXN0aW9uRmxhZ0NvdW50IHx8IGRhdGE/LmN1c3RvbVF1ZXN0aW9uRmxhZ0NvdW50ID09PSAwKSA/IGRhdGE/LmN1c3RvbVF1ZXN0aW9uRmxhZ0NvdW50Py50b0xvY2FsZVN0cmluZygnZW4tSU4nKSA6ICctLSd9fSA8L3NwYW4+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCBteC0zXCIgPlF1ZXN0aW9uczwvc3Bhbj4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZmlsdGVySW5wdXQudmFsdWUgPT09ICdhbGwnIHx8IGZpbHRlcklucHV0LnZhbHVlID09PSAndGltZSdcIiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwidmlld0luRGV0YWlsKGRhdGE/LnNvdXJjZUNoZWNrTGlzdF9pZCwgJ3RpbWUnKVwiID57eyhkYXRhPy5jdXN0b21UaW1lRmxhZ0NvdW50IHx8IGRhdGE/LmN1c3RvbVRpbWVGbGFnQ291bnQgPT09IDApID8gZGF0YT8uY3VzdG9tVGltZUZsYWdDb3VudD8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJykgOiAnLS0nfX0gPC9zcGFuPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQgbXgtM1wiID5Ob3QgU3VibWl0dGVkPC9zcGFuPiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkYXRhPy5jaGVja0xpc3RUeXBlICE9PSAnY3VzdG9tJ1wiIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJ2aWV3SW5EZXRhaWwoZGF0YT8uc291cmNlQ2hlY2tMaXN0X2lkKVwiID57eyhkYXRhPy5mbGFnQ291bnQgfHwgZGF0YT8uZmxhZ0NvdW50ID09PSAwKSA/IGRhdGE/LmZsYWdDb3VudD8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJykgOiAnLS0nfX0gPC9zcGFuPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQgbXgtM1wiID5EZXRlY3Rpb25zPC9zcGFuPiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGFibGUtdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgKm5nSWY9XCJkYXRhLmNoZWNrTGlzdFR5cGUgIT09ICdhY3Rpdml0eW1vbml0b3JpbmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTVweCB3LTEwMCBiZy1saWdodCBtdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHJvbGU9XCJwcm9ncmVzc2JhclwiIGFyaWEtdmFsdWVtaW49XCIyMFwiIGFyaWEtdmFsdWVtYXg9XCIxMDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmctcHJpbWFyeSByb3VuZGVkIGgtNXB4IFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImRhdGE/LmNvbXBsaWFuY2VSYXRlICsgJyUnXCI+IDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZW5kIHRhYmxlLXRpdGxlXCI+PHNwYW4gY2xhc3M9XCJteS0xIG14LTEgdGV4dC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2RhdGE/LmNvbXBsaWFuY2VSYXRlPy50b0xvY2FsZVN0cmluZygnZW4tVVMnLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAwIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJy0tJ319JTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwidmlld0luRGV0YWlsKGRhdGE/LnNvdXJjZUNoZWNrTGlzdF9pZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS10aXRsZS1wcmltYXJ5IGN1cnNvci1wb2ludGVyXCI+VmlldzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIoZmxhZ3NUYWJsZUFwaVN0YXRlIHwgYXN5bmMpID09PSAnbG9hZGVkJyAmJiBmbGFnc1RhYmxlRGF0YT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXBhZ2luYXRpb24gW2l0ZW1zUGVyUGFnZV09XCJpdGVtc1BlclBhZ2VcIiBbY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b3RhbEl0ZW1zXT1cInRvdGFsSXRlbXNcIiBbcGFnaW5hdGlvblNpemVzXT1cInBhZ2luYXRpb25TaXplc1wiIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIj48L2xpYi1wYWdpbmF0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGZsYWdzVGFibGVBcGlTdGF0ZSB8IGFzeW5jKSA9PT0gJ2xvYWRpbmcnIHx8IChmbGFnc1RhYmxlQXBpU3RhdGUgfCBhc3luYykgPT09ICdpbml0aWFsJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZmxhZ3NUYWJsZUFwaVN0YXRlIHwgYXN5bmMpID09PSAnbG9hZGVkJyAmJiAhZmxhZ3NUYWJsZURhdGE/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG15LTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLXNyY1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGFtYWludGV4dCBtdC0zXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhc3VidGV4dFwiPlRoZXJlIGlzIG5vIHJlc3VsdCBmb3IgRmxhZ3MgVGFibGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
335
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhZ3MtbmV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2UtdHJheC9zcmMvbGliL2NvbXBvbmVudHMvZmxhZ3MtbmV3L2ZsYWdzLW5ldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2ZsYWdzLW5ldy9mbGFncy1uZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFLL0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLGlCQUFpQixNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sR0FBRyxNQUFNLHFCQUFxQixDQUFDO0FBQ3RDLE9BQU8sUUFBUSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7OztBQUNoRCxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZCLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBT2hDLE1BQU0sT0FBTyxpQkFBaUI7SUE4QlQ7SUFBZ0M7SUFBMkM7SUFBa0M7SUFBd0I7SUFBa0M7SUE3QmxMLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBQ3ZDLFlBQVksR0FBRyxFQUFFLENBQUE7SUFDakIsV0FBVyxHQUFHLENBQUMsQ0FBQTtJQUNmLFVBQVUsR0FBRyxDQUFDLENB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QUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN4QyxJQUFJLEdBQUcsRUFBRSxJQUFJLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLEtBQUssU0FBUyxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUU7b0JBQzdELElBQUksQ0FBQyxxQkFBcUIsR0FBRzt3QkFDekIsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0I7d0JBQzNDLG9CQUFvQixFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CO3dCQUNuRCxTQUFTLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTO3FCQUNoQyxDQUFDO29CQUNGLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUU7d0JBQ3RELElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7cUJBQ2hDO29CQUNDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7aUJBQ3ZDO3FCQUFNO29CQUNMLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7aUJBQ25DO1lBQ0wsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakIsQ0FBQztTQUNKLENBQUMsQ0FBQztJQUNQLENBQUM7d0dBOVVZLGlCQUFpQjs0RkFBakIsaUJBQWlCLHFEQ3BCOUIsODIzRUEwNEJNOzs0RkR0M0JPLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgZGVib3VuY2VUaW1lLCBCZWhhdmlvclN1YmplY3QsIHRha2VVbnRpbCwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UsIFBhZ2VJbmZvU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5pbXBvcnQgeyBUcmF4U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYXguc2VydmljZSc7XHJcbmltcG9ydCB7IFJvdXRlciwgQWN0aXZhdGVkUm91dGUgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IEhlYWRlckZpbHRlciwgRmxhZ3NUYWJsZURhdGEsIElGbGFnQ2FyZHMsIElGbGFnQ29tcGFyaXNvbkNhcmRzLCBGbGFnQ2FyZHNCeVR5cGUgfSBmcm9tICcuL2ZsYWdzLW5ldy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcclxuaW1wb3J0IGN1c3RvbVBhcnNlRm9ybWF0IGZyb20gJ2RheWpzL3BsdWdpbi9jdXN0b21QYXJzZUZvcm1hdCc7XHJcbmltcG9ydCB1dGMgZnJvbSAnZGF5anMvcGx1Z2luL3V0Yy5qcyc7XHJcbmltcG9ydCB0aW1lWm9uZSBmcm9tICdkYXlqcy9wbHVnaW4vdGltZXpvbmUuanMnO1xyXG5kYXlqcy5leHRlbmQodGltZVpvbmUpO1xyXG5kYXlqcy5leHRlbmQodXRjKTtcclxuZGF5anMuZXh0ZW5kKGN1c3RvbVBhcnNlRm9ybWF0KTsgXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1mbGFncy1uZXcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mbGFncy1uZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9mbGFncy1uZXcuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGbGFnc05ld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBpdGVtc1BlclBhZ2UgPSAxMFxyXG4gIGN1cnJlbnRQYWdlID0gMFxyXG4gIHRvdGFsSXRlbXMgPSAwXHJcbiAgc2VsZWN0ZWRGbGFnOiBhbnkgPSAnYWxsJztcclxuICB1c2VyRW1haWxlczogYW55ID0gW107XHJcbiAgcGFnaW5hdGlvblNpemVzID0gWzEwLCAyMCwgMzBdXHJcbiAgcGFnZVNpemUgPSAxMFxyXG4gIHNvcnRDb2x1bU5hbWUgPSAnY2hlY2tMaXN0TmFtZSc7XHJcbiAgc29ydERpcmVjdGlvbiA9IDE7XHJcbiAgaGVhZGVyRGF0YTogSGVhZGVyRmlsdGVyIHwgbnVsbCB8IHVuZGVmaW5lZDtcclxuICB0cmF4TW9udGhseUNvbXBhcmlzb25EYXRhOiBhbnkgPSBcIlwiO1xyXG4gIGRheWpzID0gZGF5anM7XHJcbiAgZmxhZ3NUYWJsZUFwaVN0YXRlID0gbmV3IEJlaGF2aW9yU3ViamVjdDwnaW5pdGlhbCcgfCAnbG9hZGluZycgfCAnbG9hZGVkJz4oJ2luaXRpYWwnKVxyXG4gIGZsYWdzVGFibGVEYXRhOiBGbGFnc1RhYmxlRGF0YVtdID0gW11cclxuICBjYXJkTWV0cmljc0FwaVN0YXRlID0gbmV3IEJlaGF2aW9yU3ViamVjdDwnaW5pdGlhbCcgfCAnbG9hZGluZycgfCAnbG9hZGVkJz4oJ2luaXRpYWwnKVxyXG4gIGNhcmRNZXRyaWNzRGF0YTogSUZsYWdDYXJkcyB8IG51bGwgfCB1bmRlZmluZWRcclxuICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhOiBJRmxhZ0NvbXBhcmlzb25DYXJkcyB8IG51bGwgfCB1bmRlZmluZWRcclxuICBzZWFyY2hJbnB1dDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xyXG4gIGZpbHRlcklucHV0OiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnYWxsJyk7XHJcbiAgY2FyZE1ldHJpY3NEYXRhQnlUeXBlOiBGbGFnQ2FyZHNCeVR5cGUgfCBudWxsIHwgdW5kZWZpbmVkXHJcbiAgZmlsdGVyVmFsdWVzID0gW1xyXG4gICAge2xhYmVsOidBbGwnLCB2YWx1ZTonYWxsJ30sXHJcbiAgICB7bGFiZWw6J1F1ZXN0aW9uJywgdmFsdWU6J3F1ZXN0aW9uJ30sXHJcbiAgICB7bGFiZWw6J05vdCBTdWJtaXR0ZWQnLCB2YWx1ZTondGltZSd9LFxyXG4gICAge2xhYmVsOidEZXRlY3Rpb24nLCB2YWx1ZTonZGV0ZWN0aW9uJ30sXHJcbiAgXVxyXG4gIGRhdGVDb21wYXJpc29uVHlwZTogJ2RhaWx5JyB8ICd3ZWVrbHknIHwgJ21vbnRobHknIDtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UsIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHRyYXhTZXJ2aWNlOiBUcmF4U2VydmljZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBwYWdlSW5mbzogUGFnZUluZm9TZXJ2aWNlLHByaXZhdGUgcm91dGU6QWN0aXZhdGVkUm91dGUpIHtcclxuICAgIHRoaXMudXNlckVtYWlsZXMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidXNlcnNFbWFpbC1pbmZvXCIpIHx8IFwiW11cIiApXHJcbiAgICB0aGlzLnNlYXJjaElucHV0LnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkucGlwZShkZWJvdW5jZVRpbWUoMTAwMCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnN1YnNjcmliZSgodmFsKSA9PiB7XHJcbiAgICAgIGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlICA9IDBcclxuICAgICAgdGhpcy5nZXRGbGFnc1RhYmxlKClcclxuICAgIH0pXHJcblxyXG5cclxuICAgIHRoaXMuZmlsdGVySW5wdXQudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHZhbCkgPT4ge1xyXG4gICAgICBpZiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jdXJyZW50UGFnZSAgPSAwXHJcbiAgICAgIHRoaXMuZ2V0RmxhZ3NUYWJsZSgpXHJcbiAgICB9KVxyXG5cclxuICAgIGNvbnN0IGRhdGVDb21wYXJpc29uVHlwZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdkYXNoYm9hcmREYXRlVHlwZScpXHJcbiAgICBpZihkYXRlQ29tcGFyaXNvblR5cGUpe1xyXG4gICAgICBpZihkYXRlQ29tcGFyaXNvblR5cGUgPT09ICdkYWlseScgfHwgZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnd2Vla2x5JyB8fCBkYXRlQ29tcGFyaXNvblR5cGUgPT09ICdtb250aGx5Jyl7XHJcbiAgICAgICAgdGhpcy5kYXRlQ29tcGFyaXNvblR5cGUgPSBkYXRlQ29tcGFyaXNvblR5cGVcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgdGhpcy5kYXRlQ29tcGFyaXNvblR5cGUgPSAnZGFpbHknXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2Rhc2hib2FyZERhdGVUeXBlJywgJ2RhaWx5JylcclxuICAgICAgfVxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMuZGF0ZUNvbXBhcmlzb25UeXBlID0gJ2RhaWx5J1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZGFzaGJvYXJkRGF0ZVR5cGUnLCAnZGFpbHknKVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocGFyYW1zOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHBhcmFtcz8uZGF0ZSkge1xyXG4gICAgICAgIGxldCBsb2NhbERldGFpbHMgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJoZWFkZXItZmlsdGVyc1wiKSA/PyBcInt9XCIsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAobG9jYWxEZXRhaWxzKSB7XHJcbiAgICAgICAgICBsb2NhbERldGFpbHMuZGF0ZSA9IHsgc3RhcnREYXRlOiBwYXJhbXMuZGF0ZSwgZW5kRGF0ZTogcGFyYW1zLmRhdGUgfTtcclxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiaGVhZGVyLWZpbHRlcnNcIiwgSlNPTi5zdHJpbmdpZnkobG9jYWxEZXRhaWxzKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWVcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTAwMCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhPy5jbGllbnQpIHtcclxuICAgICAgICAgIHRoaXMuaGVhZGVyRGF0YSA9IGRhdGE7XHJcbiAgICAgICAgICBpZiAodGhpcy5oZWFkZXJEYXRhPy5zdG9yZXM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLmhlYWRlckRhdGEuc3RvcmVzID0gdGhpcy5oZWFkZXJEYXRhLnN0b3Jlcy5maWx0ZXIoKGRhdGE6IGFueSkgPT4gZGF0YT8uY2hlY2tlZClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuY2hlY2tsaXN0Q291bnRCeVR5cGUoKVxyXG4gICAgICAgICAgdGhpcy5nZXRDaGVja2xpc3RGbGFnTWV0cmljcygpXHJcbiAgICAgICAgICB0aGlzLmdldENoZWNrbGlzdEZsYWdNZXRyaWNzQ29tcGFyaXNvbigpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLnNldFBhZ2VEYXRhKClcclxuICB9XHJcblxyXG4gIHNldFBhZ2VEYXRhKCkge1xyXG4gICAgdGhpcy5wYWdlSW5mby5zZXRUaXRsZShcIkZsYWdzXCIpO1xyXG4gICAgdGhpcy5wYWdlSW5mby5zZXREZXNjcmlwdGlvbihcIlwiKTtcclxuICAgIHRoaXMucGFnZUluZm8uc2V0QnJlYWRjcnVtYnMoW1xyXG4gICAgICAvLyB7IHRpdGxlOiBcIkFuYWx5emVcIiwgcGF0aDogXCIvbWFuYWdlL3RyYXgvZGFzaGJvYXJkXCIsIGlzQWN0aXZlOiBmYWxzZSwgaXNTZXBhcmF0b3I6IGZhbHNlIH0sXHJcbiAgICAgIC8vIHsgdGl0bGU6IFwiQW5hbHl6ZVwiLCBwYXRoOiBcIi9tYW5hZ2UvdHJheC9kYXNoYm9hcmRcIiwgaXNBY3RpdmU6IGZhbHNlLCBpc1NlcGFyYXRvcjogdHJ1ZSB9LFxyXG4gICAgICB7IHRpdGxlOiBcIlRhbmdvIFRyYXhcIiwgcGF0aDogXCIvbWFuYWdlL3RyYXgvZGFzaGJvYXJkXCIsIGlzQWN0aXZlOiBmYWxzZSwgaXNTZXBhcmF0b3I6IGZhbHNlIH0sXHJcbiAgICAgIHsgdGl0bGU6IFwiVGFuZ28gVHJheFwiLCBwYXRoOiBcIi9tYW5hZ2UvdHJheC9kYXNoYm9hcmRcIiwgaXNBY3RpdmU6IGZhbHNlLCBpc1NlcGFyYXRvcjogdHJ1ZSB9LFxyXG4gICAgICAvLyB7IHRpdGxlOiBcIlJlcG9ydHNcIiwgcGF0aDogXCIvbWFuYWdlL3RyYXgvcmVwb3J0c1wiLCBpc0FjdGl2ZTogZmFsc2UsIGlzU2VwYXJhdG9yOiBmYWxzZSB9LFxyXG4gICAgICAvLyB7IHRpdGxlOiBcIlJlcG9ydHNcIiwgcGF0aDogXCIvbWFuYWdlL3RyYXgvcmVwb3J0c1wiLCBpc0FjdGl2ZTogZmFsc2UsIGlzU2VwYXJhdG9yOiB0cnVlIH0sXHJcbiAgICBdKTtcclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0Q2hlY2tsaXN0RmxhZ01ldHJpY3MoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZsYWdzVGFibGVEYXRhID0gW107XHJcbiAgICB0aGlzLmNhcmRNZXRyaWNzQXBpU3RhdGUubmV4dCgnbG9hZGluZycpXHJcbiAgICBjb25zdCBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xyXG4gICAgICBcImNsaWVudElkXCI6IHRoaXMuaGVhZGVyRGF0YT8uY2xpZW50LFxyXG4gICAgICBcImZyb21EYXRlXCI6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZS5zdGFydERhdGUsXHJcbiAgICAgIFwidG9EYXRlXCI6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZS5lbmREYXRlLFxyXG4gICAgICBcInN0b3JlSWRcIjogdGhpcy5oZWFkZXJEYXRhPy5zdG9yZXMubWFwKCh2YWw6IHsgc3RvcmVJZDogc3RyaW5nLCBzdG9yZU5hbWU6IHN0cmluZyB9KSA9PiB2YWwuc3RvcmVJZCksXHJcbiAgICAgIFwidXNlckVtYWlsZXNcIjogdGhpcy51c2VyRW1haWxlc1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLm92ZXJhbGxGbGFnTWV0cmljcyhkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMuY2FyZE1ldHJpY3NBcGlTdGF0ZS5uZXh0KCdsb2FkZWQnKVxyXG4gICAgICAgIGlmIChyZXM/LmRhdGEpIHtcclxuICAgICAgICAgIHRoaXMuY2FyZE1ldHJpY3NEYXRhID0gcmVzLmRhdGFcclxuICAgICAgICAgIHRoaXMuZ2V0RmxhZ3NUYWJsZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmNhcmRNZXRyaWNzRGF0YSA9IG51bGxcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGUpO1xyXG5cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldENoZWNrbGlzdEZsYWdNZXRyaWNzQ29tcGFyaXNvbigpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XHJcbiAgICAgIFwiY2xpZW50SWRcIjogdGhpcy5oZWFkZXJEYXRhPy5jbGllbnQsXHJcbiAgICAgIFwiZnJvbURhdGVcIjogdGhpcy5oZWFkZXJEYXRhPy5kYXRlLnN0YXJ0RGF0ZSxcclxuICAgICAgXCJ0b0RhdGVcIjogdGhpcy5oZWFkZXJEYXRhPy5kYXRlLmVuZERhdGUsXHJcbiAgICAgIFwic3RvcmVJZFwiOiB0aGlzLmhlYWRlckRhdGE/LnN0b3Jlcy5tYXAoKHZhbDogeyBzdG9yZUlkOiBzdHJpbmcsIHN0b3JlTmFtZTogc3RyaW5nIH0pID0+IHZhbC5zdG9yZUlkKSxcclxuICAgICAgXCJ1c2VyRW1haWxlc1wiOiB0aGlzLnVzZXJFbWFpbGVzLFxyXG4gICAgICBcImRhdGVUeXBlXCI6IHRoaXMuZGF0ZUNvbXBhcmlzb25UeXBlXHJcbiAgICB9XHJcblxyXG5cclxuICAgIHRoaXMudHJheFNlcnZpY2Uub3ZlcmFsbEZsYWdNZXRyaWNzQ29tcGFyaXNvbihkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChyZXM/LmRhdGEpIHtcclxuICAgICAgICAgIHRoaXMuY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YSA9IHJlcy5kYXRhXHJcbiAgICAgICAgICBpZiAodGhpcy50cmF4TW9udGhseUNvbXBhcmlzb25EYXRhID09ICcnKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHJheE1vbnRobHlDb21wYXJpc29uRGF0YSA9IHRoaXMuY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcy50cmF4TW9udGhseUNvbXBhcmlzb25cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5jYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhID0gbnVsbFxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZSk7XHJcblxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0RmxhZ3NUYWJsZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZmxhZ3NUYWJsZURhdGEgPSBbXTtcclxuICAgIHRoaXMudG90YWxJdGVtcyA9IDA7XHJcbiAgICB0aGlzLmZsYWdzVGFibGVBcGlTdGF0ZS5uZXh0KCdsb2FkaW5nJylcclxuICAgIGNvbnN0IGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmhlYWRlckRhdGE/LmNsaWVudCxcclxuICAgICAgc3RvcmVJZDogdGhpcy5oZWFkZXJEYXRhPy5zdG9yZXMubWFwKFxyXG4gICAgICAgICh2YWw6IHsgc3RvcmVJZDogc3RyaW5nOyBzdG9yZU5hbWU6IHN0cmluZyB9KSA9PiB2YWwuc3RvcmVJZFxyXG4gICAgICApLFxyXG4gICAgICB1c2VyRW1haWxlczogdGhpcy51c2VyRW1haWxlcyxcclxuICAgICAgZnJvbURhdGU6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZS5zdGFydERhdGUsXHJcbiAgICAgIHRvRGF0ZTogdGhpcy5oZWFkZXJEYXRhPy5kYXRlLmVuZERhdGUsXHJcbiAgICAgIGxpbWl0OiB0aGlzLnBhZ2VTaXplLFxyXG4gICAgICBvZmZzZXQ6IHRoaXMuY3VycmVudFBhZ2UgPiAwID8gdGhpcy5jdXJyZW50UGFnZSAtIDEgOiAwLFxyXG4gICAgICBzb3J0Q29sdW1uTmFtZTogdGhpcy5zb3J0Q29sdW1OYW1lLFxyXG4gICAgICBzb3J0Qnk6IHRoaXMuc29ydERpcmVjdGlvbixcclxuICAgICAgc2VhcmNoVmFsdWU6IHRoaXMuc2VhcmNoSW5wdXQudmFsdWUsXHJcbiAgICAgIGZpbHRlcjogdGhpcy5zZWxlY3RlZEZsYWcsXHJcbiAgICAgIC4uLih0aGlzLnNlbGVjdGVkRmxhZyA9PT0gXCJydW5BSVwiICYmIHtcclxuICAgICAgICBydW5BSUNoZWNrbGlzdE5hbWU6IHRoaXMuY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHMucnVuQUlGbGFnLmxpc3QubWFwKFxyXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/LmNoZWNrTGlzdE5hbWVcclxuICAgICAgICApLFxyXG4gICAgICB9KSxcclxuICAgIH07XHJcblxyXG5cclxuICAgIHRoaXMudHJheFNlcnZpY2UuZmxhZ3NUYWJsZVYyKGRhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5mbGFnc1RhYmxlQXBpU3RhdGUubmV4dCgnbG9hZGVkJylcclxuICAgICAgICBpZiAocmVzPy5kYXRhPy50b3RhbENvdW50KSB7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSByZXMuZGF0YS50b3RhbENvdW50XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudG90YWxJdGVtcyA9IDBcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJlcz8uZGF0YT8uY2hlY2tsaXN0UGVyZm9ybWFuY2UpIHtcclxuICAgICAgICAgIHRoaXMuZmxhZ3NUYWJsZURhdGEgPSByZXMuZGF0YS5jaGVja2xpc3RQZXJmb3JtYW5jZVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmZsYWdzVGFibGVEYXRhID0gW11cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZmxhZ3NUYWJsZUFwaVN0YXRlLm5leHQoJ2xvYWRlZCcpXHJcblxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgb25GbGFnc1RhYmxlRXhwb3J0KCk6IHZvaWQge1xyXG4gICAgLy8gdGhpcy5mbGFnc1RhYmxlQXBpU3RhdGUubmV4dCgnbG9hZGluZycpXHJcbiAgICBjb25zdCBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xyXG4gICAgICBcImNsaWVudElkXCI6IHRoaXMuaGVhZGVyRGF0YT8uY2xpZW50LFxyXG4gICAgICBcInN0b3JlSWRcIjogdGhpcy5oZWFkZXJEYXRhPy5zdG9yZXMubWFwKCh2YWw6IHsgc3RvcmVJZDogc3RyaW5nLCBzdG9yZU5hbWU6IHN0cmluZyB9KSA9PiB2YWwuc3RvcmVJZCksXHJcbiAgICAgIFwidXNlckVtYWlsZXNcIjogdGhpcy51c2VyRW1haWxlcyxcclxuICAgICAgXCJmcm9tRGF0ZVwiOiB0aGlzLmhlYWRlckRhdGE/LmRhdGUuc3RhcnREYXRlLFxyXG4gICAgICBcInRvRGF0ZVwiOiB0aGlzLmhlYWRlckRhdGE/LmRhdGUuZW5kRGF0ZSxcclxuICAgICAgXCJsaW1pdFwiOiB0aGlzLnBhZ2VTaXplLFxyXG4gICAgICBcIm9mZnNldFwiOiB0aGlzLmN1cnJlbnRQYWdlID4gMCA/IHRoaXMuY3VycmVudFBhZ2UgLSAxIDogMCxcclxuICAgICAgXCJzb3J0Q29sdW1uTmFtZVwiOiB0aGlzLnNvcnRDb2x1bU5hbWUsXHJcbiAgICAgIFwic29ydEJ5XCI6IHRoaXMuc29ydERpcmVjdGlvbixcclxuICAgICAgXCJzZWFyY2hWYWx1ZVwiOnRoaXMuc2VhcmNoSW5wdXQudmFsdWUsXHJcbiAgICAgIC8vIFwiZmlsdGVyXCI6dGhpcy5maWx0ZXJJbnB1dC52YWx1ZSxcclxuICAgICAgXCJmaWx0ZXJcIjp0aGlzLnNlbGVjdGVkRmxhZyxcclxuICAgICAgXCJleHBvcnRcIjp0cnVlLCAgICAgIFxyXG4gICAgICAuLi4odGhpcy5zZWxlY3RlZEZsYWcgPT09IFwicnVuQUlcIiAmJiB7XHJcbiAgICAgICAgcnVuQUlDaGVja2xpc3ROYW1lOiB0aGlzLmNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzLnJ1bkFJRmxhZy5saXN0Lm1hcChcclxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5jaGVja0xpc3ROYW1lXHJcbiAgICAgICAgKSxcclxuICAgICAgfSksXHJcbiAgICB9XHJcblxyXG5cclxuICAgIHRoaXMudHJheFNlcnZpY2UuZXhwb3J0RmxhZ3NUYWJsZXYyKGRhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5mbGFnc1RhYmxlQXBpU3RhdGUubmV4dCgnbG9hZGVkJylcclxuICAgICAgICB0aGlzLnRyYXhTZXJ2aWNlLnNhdmVBc0V4Y2VsRmlsZShyZXMsIGAke3RoaXMuc2VsZWN0ZWRGbGFnLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpfSR7dGhpcy5zZWxlY3RlZEZsYWcuc2xpY2UoMSl9IGZsYWdfYClcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG5cclxuXHJcbiAgc29ydERhdGEoY29sdW1uOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNvcnRDb2x1bU5hbWUgPT09IGNvbHVtbikge1xyXG4gICAgICB0aGlzLnNvcnREaXJlY3Rpb24gPSB0aGlzLnNvcnREaXJlY3Rpb24gPT09IDEgPyAtMSA6IDE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNvcnRDb2x1bU5hbWUgPSBjb2x1bW47XHJcbiAgICAgIHRoaXMuc29ydERpcmVjdGlvbiA9IDE7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMuZ2V0RmxhZ3NUYWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgb25QYWdlU2l6ZUNoYW5nZShwYWdlU2l6ZTogYW55KSB7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuICAgIHRoaXMuaXRlbXNQZXJQYWdlID0gcGFnZVNpemU7XHJcbiAgICB0aGlzLnBhZ2VTaXplID0gcGFnZVNpemU7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMuZ2V0RmxhZ3NUYWJsZSgpXHJcbiAgfVxyXG5cclxuICBvblBhZ2VDaGFuZ2UocGFnZU9mZnNldDogYW55KSB7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gcGFnZU9mZnNldFxyXG4gICAgdGhpcy5nZXRGbGFnc1RhYmxlKClcclxuICB9XHJcblxyXG4gIHZpZXdJbkRldGFpbChjaGVja2xpc3RJZDogc3RyaW5nIHwgdW5kZWZpbmVkLCB0eXBlPzogJ3F1ZXN0aW9uJyB8ICd0aW1lJyB8ICdydW5BSScgKSB7XHJcbiAgICBpZighY2hlY2tsaXN0SWQpe1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGxldCByb3V0ZSAgPSBgL21hbmFnZS90cmF4L2ZsYWdzL2ZsYWdzaW5mbz9pZD0ke2NoZWNrbGlzdElkfWBcclxuICAgIGlmKHRoaXMuc2VsZWN0ZWRGbGFnID09ICdydW5BSScpIHtcclxuICAgICAgcm91dGUgPSByb3V0ZSArIGAmdHlwZT1ydW5BSWA7XHJcbiAgICB9XHJcbiAgICBpZih0eXBlKXtcclxuICAgICAgcm91dGUgPSByb3V0ZSArIGAmdHlwZT0ke3R5cGV9YFxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwocm91dGUpXHJcbiAgfVxyXG5cclxuICBkYXRlQ29tcGFyaXNvblZhbHVlQ2hhbmdlKHZhbDonZGFpbHknIHwgJ3dlZWtseScgfCAnbW9udGhseScgKXtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdkYXNoYm9hcmREYXRlVHlwZScsIHZhbClcclxuICAgIHRoaXMuZGF0ZUNvbXBhcmlzb25UeXBlID0gdmFsXHJcbiAgICB0aGlzLmNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGEgPSBudWxsXHJcbiAgICB0aGlzLmdldENoZWNrbGlzdEZsYWdNZXRyaWNzQ29tcGFyaXNvbigpXHJcbiAgfVxyXG5cclxuICBzZWxlY3RUYWJzKGZsYWc6YW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRmxhZyA9IGZsYWc7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlICA9IDBcclxuICAgIHRoaXMuZ2V0RmxhZ3NUYWJsZSgpXHJcbiAgfVxyXG5cclxuICBjaGVja2xpc3RDb3VudEJ5VHlwZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2FyZE1ldHJpY3NBcGlTdGF0ZS5uZXh0KCdsb2FkaW5nJyk7XHJcbiAgICBjb25zdCBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xyXG4gICAgICAgIFwiY2xpZW50SWRcIjogdGhpcy5oZWFkZXJEYXRhPy5jbGllbnQsXHJcbiAgICAgICAgXCJmcm9tRGF0ZVwiOiB0aGlzLmhlYWRlckRhdGE/LmRhdGUuc3RhcnREYXRlLFxyXG4gICAgICAgIFwidG9EYXRlXCI6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZS5lbmREYXRlLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLmNoZWNrbGlzdENvdW50QnlUeXBlKGRhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jYXJkTWV0cmljc0FwaVN0YXRlLm5leHQoJ2xvYWRlZCcpO1xyXG4gICAgICAgICAgICBpZiAocmVzPy5jb2RlID09PSAyMDAgJiYgcmVzPy5zdGF0dXMgPT09IFwic3VjY2Vzc1wiICYmIHJlcz8uZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jYXJkTWV0cmljc0RhdGFCeVR5cGUgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWlDaGVja2xpc3RDb3VudDogcmVzLmRhdGEuYWlDaGVja2xpc3RDb3VudCxcclxuICAgICAgICAgICAgICAgICAgICBjdXN0b21DaGVja2xpc3RDb3VudDogcmVzLmRhdGEuY3VzdG9tQ2hlY2tsaXN0Q291bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgc2hvd0NhcmRzOiByZXMuZGF0YS5zaG93Q2FyZHNcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jYXJkTWV0cmljc0RhdGFCeVR5cGUuc2hvd0NhcmRzID09PSAnYWlDYXJkcycpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RUYWJzKCdkZXRlY3Rpb24nKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmNhcmRNZXRyaWNzRGF0YUJ5VHlwZSA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZSkgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn1cclxufVxyXG5cclxuIiwiPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDwhLS1hbGxDYXJkcyAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FyZE1ldHJpY3NEYXRhQnlUeXBlPy5zaG93Q2FyZHMgPT09ICdhbGxDYXJkcydcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidy05NVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHQtMiBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBwZS0zXCIgW25nQ2xhc3NdPVwiY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnJ1bkFJRmxhZyA/ICd3LTI1JyA6ICd3LTUwJ1wiIChjbGljayk9XCJzZWxlY3RUYWJzKCdhbGwnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSdhbGwnID8gJ2FjdGl2ZS1jYXJkJyA6ICdpbmFjdGl2ZS1jYXJkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0nYWxsJyA/ICdhY3RpdmUtaGVhZGVyJyA6ICdpbmFjdGl2ZS1oZWFkZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG90YWwgRmxhZ3NcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZHN1YmNvdW50IG1lLTNcIj57eyhjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8udG90YWxGbGFnID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8udG90YWxGbGFnKSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8udG90YWxGbGFnPy50b0xvY2FsZVN0cmluZygnZW4tSU4nKSA6ICctLSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8udG90YWxDb21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8udG90YWxDb21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEzXCIgaGVpZ2h0PVwiOFwiIHZpZXdCb3g9XCIwIDAgMTMgOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjgzMiAxTDcuMDgyMDMgNS43NUw0LjU4MjAzIDMuMjVMMC44MzIwMzEgN00xMS44MzIgMUg4LjgzMjAzTTExLjgzMiAxVjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy50b3RhbENvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCIgY2xhc3M9XCJuZy1zdGFyLWluc2VydGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz1cIm10LTJcIj48c3BhbiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyhjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy50b3RhbENvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8udG90YWxDb21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnRvdGFsQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhPy50b0xvY2FsZVN0cmluZygnZW4tSU4nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJTwvc3Bhbj48c3BhbiBjbGFzcz1cIndlZWstZm9udFwiPiB2c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Qge3tkYXRlQ29tcGFyaXNvblR5cGUgPT09ICd3ZWVrbHknID8gJ3dlZWsnIDogZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnbW9udGhseScgPyAnbW9udGgnIDogJ2RheSd9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHBlLTNcIiBbbmdDbGFzc109XCJjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8ucnVuQUlGbGFnID8gJ3ctMjUnIDogJ3ctNTAnXCIgKGNsaWNrKT1cInNlbGVjdFRhYnMoJ3F1ZXN0aW9uJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0ncXVlc3Rpb24nID8gJ2FjdGl2ZS1jYXJkJyA6ICdpbmFjdGl2ZS1jYXJkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0ncXVlc3Rpb24nID8gJ2FjdGl2ZS1oZWFkZXInIDogJ2luYWN0aXZlLWhlYWRlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbiBGbGFnc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FyZHN1YmNvdW50IG15LTIgbWUtM1wiPnt7KGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5xdWVzdGlvbkZsYWc/LmNvdW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnF1ZXN0aW9uRmxhZz8uY291bnQpID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5xdWVzdGlvbkZsYWc/LmNvdW50Py50b0xvY2FsZVN0cmluZygnZW4tSU4nKSA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS0nfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnF1ZXN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMiBtZS0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucXVlc3Rpb25Db21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEzXCIgaGVpZ2h0PVwiOFwiIHZpZXdCb3g9XCIwIDAgMTMgOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjgzMiAxTDcuMDgyMDMgNS43NUw0LjU4MjAzIDMuMjVMMC44MzIwMzEgN00xMS44MzIgMUg4LjgzMjAzTTExLjgzMiAxVjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5xdWVzdGlvbkNvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCIgY2xhc3M9XCJuZy1zdGFyLWluc2VydGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz1cIm10LTJcIj48c3BhbiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyhjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5xdWVzdGlvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucXVlc3Rpb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnF1ZXN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhPy50b0xvY2FsZVN0cmluZygnZW4tSU4nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJTwvc3Bhbj48c3BhbiBjbGFzcz1cIndlZWstZm9udFwiPiB2c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Qge3tkYXRlQ29tcGFyaXNvblR5cGUgPT09ICd3ZWVrbHknID8gJ3dlZWsnIDogZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnbW9udGhseScgPyAnbW9udGgnIDogJ2RheSd9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMjUgY3Vyc29yLXBvaW50ZXIgcGUtM1wiIChjbGljayk9XCJzZWxlY3RUYWJzKCdydW5BSScpXCIgKm5nSWY9XCJjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8ucnVuQUlGbGFnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIiBbbmdDbGFzc109XCJzZWxlY3RlZEZsYWcgPT09J3J1bkFJJyA/ICdhY3RpdmUtY2FyZCcgOiAnaW5hY3RpdmUtY2FyZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIiBbbmdDbGFzc109XCJzZWxlY3RlZEZsYWcgPT09J3J1bkFJJyA/ICdhY3RpdmUtaGVhZGVyJyA6ICdpbmFjdGl2ZS1oZWFkZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVuIEFJIEZsYWdzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmRzdWJjb3VudCBtZS0zXCI+e3soY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnJ1bkFJRmxhZz8uZmxhZ0NvdW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnJ1bkFJRmxhZz8uZmxhZ0NvdW50KSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8ucnVuQUlGbGFnPy5mbGFnQ291bnQ/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucnVuQUlDb21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucnVuQUlDb21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEzXCIgaGVpZ2h0PVwiOFwiIHZpZXdCb3g9XCIwIDAgMTMgOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjgzMiAxTDcuMDgyMDMgNS43NUw0LjU4MjAzIDMuMjVMMC44MzIwMzEgN00xMS44MzIgMUg4LjgzMjAzTTExLjgzMiAxVjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5ydW5BSUNvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCIgY2xhc3M9XCJuZy1zdGFyLWluc2VydGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz1cIm10LTJcIj48c3BhbiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyhjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5ydW5BSUNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucnVuQUlDb21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnJ1bkFJQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhPy50b0xvY2FsZVN0cmluZygnZW4tSU4nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJTwvc3Bhbj48c3BhbiBjbGFzcz1cIndlZWstZm9udFwiPiB2c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Qge3tkYXRlQ29tcGFyaXNvblR5cGUgPT09ICd3ZWVrbHknID8gJ3dlZWsnIDogZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnbW9udGhseScgPyAnbW9udGgnIDogJ2RheSd9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHBlLTNcIiAoY2xpY2spPVwic2VsZWN0VGFicygndGltZScpXCIgW25nQ2xhc3NdPVwiY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnJ1bkFJRmxhZyA/ICd3LTI1JyA6ICd3LTUwJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSd0aW1lJyA/ICdhY3RpdmUtY2FyZCcgOiAnaW5hY3RpdmUtY2FyZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIiBbbmdDbGFzc109XCJzZWxlY3RlZEZsYWcgPT09J3RpbWUnID8gJ2FjdGl2ZS1oZWFkZXInIDogJ2luYWN0aXZlLWhlYWRlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3QgU3VibWl0dGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkc3ViY291bnQgbWUtM1wiPnt7KGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5kZWxheUluU3VibWlzc2lvbj8uY291bnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8uZGVsYXlJblN1Ym1pc3Npb24/LmNvdW50KSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8uZGVsYXlJblN1Ym1pc3Npb24/LmNvdW50Py50b0xvY2FsZVN0cmluZygnZW4tSU4nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnLS0nfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uQ29tcGFyaXNvbkZsYWc/LkNvbXBhcmlzb25GbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjhcIiB2aWV3Qm94PVwiMCAwIDEzIDhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMS44MzIgMUw3LjA4MjAzIDUuNzVMNC41ODIwMyAzLjI1TDAuODMyMDMxIDdNMTEuODMyIDFIOC44MzIwM00xMS44MzIgMVY0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAzOTg1NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGVsYXlJblN1Ym1pc3Npb25Db21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiIGNsYXNzPVwibmctc3Rhci1pbnNlcnRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgOUw2Ljc1IDQuMjVMNC4yNSA2Ljc1TDAuNSAzTTExLjUgOUg4LjVNMTEuNSA5VjZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMzI4XzQ2NTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9XCJtdC0yXCI+PHNwYW4gY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3soY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGVsYXlJblN1Ym1pc3Npb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZWxheUluU3VibWlzc2lvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YT8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICU8L3NwYW4+PHNwYW4gY2xhc3M9XCJ3ZWVrLWZvbnRcIj4gdnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IHt7ZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnd2Vla2x5JyA/ICd3ZWVrJyA6IGRhdGVDb21wYXJpc29uVHlwZSA9PT0gJ21vbnRobHknID8gJ21vbnRoJyA6ICdkYXknfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBwZS0zXCIgKGNsaWNrKT1cInNlbGVjdFRhYnMoJ2RldGVjdGlvbicpXCIgW25nQ2xhc3NdPVwiY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnJ1bkFJRmxhZyA/ICd3LTI1JyA6ICd3LTUwJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSdkZXRlY3Rpb24nID8gJ2FjdGl2ZS1jYXJkJyA6ICdpbmFjdGl2ZS1jYXJkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0nZGV0ZWN0aW9uJyA/ICdhY3RpdmUtaGVhZGVyJyA6ICdpbmFjdGl2ZS1oZWFkZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV0ZWN0aW9uIEZsYWdzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmRzdWJjb3VudCBtZS0zXCI+e3soY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LmRldGVjdGlvbkZsYWc/LmNvdW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LmRldGVjdGlvbkZsYWc/LmNvdW50KSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8uZGV0ZWN0aW9uRmxhZz8uY291bnQ/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGV0ZWN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRldGVjdGlvbkNvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTNcIiBoZWlnaHQ9XCI4XCIgdmlld0JveD1cIjAgMCAxMyA4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEuODMyIDFMNy4wODIwMyA1Ljc1TDQuNTgyMDMgMy4yNUwwLjgzMjAzMSA3TTExLjgzMiAxSDguODMyMDNNMTEuODMyIDFWNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMzk4NTVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRldGVjdGlvbkNvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCIgY2xhc3M9XCJuZy1zdGFyLWluc2VydGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz1cIm10LTJcIj48c3BhbiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyhjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZXRlY3Rpb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRldGVjdGlvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGV0ZWN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhPy50b0xvY2FsZVN0cmluZygnZW4tSU4nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJTwvc3Bhbj48c3BhbiBjbGFzcz1cIndlZWstZm9udFwiPiB2c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Qge3tkYXRlQ29tcGFyaXNvblR5cGUgPT09ICd3ZWVrbHknID8gJ3dlZWsnIDogZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnbW9udGhseScgPyAnbW9udGgnIDogJ2RheSd9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPCEtLSBjdXN0b21DaGVja2xpc3RDb3VudCA+IDEgJiBhaUNoZWNrbGlzdENvdW50ID4gMCBzaG93IDMgY2FyZHMgLS0+XHJcbiAgICAgICAgPCEtLSBjdXN0b21DYXJkcyAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FyZE1ldHJpY3NEYXRhQnlUeXBlPy5zaG93Q2FyZHMgPT09ICdjdXN0b21DYXJkcydcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidy05NVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHQtMiBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zIGN1cnNvci1wb2ludGVyIHBlLTNcIiAoY2xpY2spPVwic2VsZWN0VGFicygnYWxsJylcIiBbbmdDbGFzc109XCJjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8ucnVuQUlGbGFnID8gJ2NvbC0zJyA6ICdjb2wtNCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0nYWxsJyA/ICdhY3RpdmUtY2FyZCcgOiAnaW5hY3RpdmUtY2FyZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIiBbbmdDbGFzc109XCJzZWxlY3RlZEZsYWcgPT09J2FsbCcgPyAnYWN0aXZlLWhlYWRlcicgOiAnaW5hY3RpdmUtaGVhZGVyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvdGFsIEZsYWdzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmRzdWJjb3VudCBtZS0zXCI+e3soY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnRvdGFsRmxhZyA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnRvdGFsRmxhZykgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnRvdGFsRmxhZz8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJykgOiAnLS0nfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnRvdGFsQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnRvdGFsQ29tcGFyaXNvbkZsYWc/LkNvbXBhcmlzb25GbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjhcIiB2aWV3Qm94PVwiMCAwIDEzIDhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMS44MzIgMUw3LjA4MjAzIDUuNzVMNC41ODIwMyAzLjI1TDAuODMyMDMxIDdNMTEuODMyIDFIOC44MzIwM00xMS44MzIgMVY0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAzOTg1NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8udG90YWxDb21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiIGNsYXNzPVwibmctc3Rhci1pbnNlcnRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgOUw2Ljc1IDQuMjVMNC4yNSA2Ljc1TDAuNSAzTTExLjUgOUg4LjVNMTEuNSA5VjZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMzI4XzQ2NTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9XCJtdC0yXCI+PHNwYW4gY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3soY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8udG90YWxDb21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnRvdGFsQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy50b3RhbENvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YT8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICU8L3NwYW4+PHNwYW4gY2xhc3M9XCJ3ZWVrLWZvbnRcIj4gdnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IHt7ZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnd2Vla2x5JyA/ICd3ZWVrJyA6IGRhdGVDb21wYXJpc29uVHlwZSA9PT0gJ21vbnRobHknID8gJ21vbnRoJyA6ICdkYXknfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMyBjdXJzb3ItcG9pbnRlciBwZS0zXCIgKGNsaWNrKT1cInNlbGVjdFRhYnMoJ3F1ZXN0aW9uJylcIiBbbmdDbGFzc109XCJjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8ucnVuQUlGbGFnID8gJ2NvbC0zJyA6ICdjb2wtNCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0ncXVlc3Rpb24nID8gJ2FjdGl2ZS1jYXJkJyA6ICdpbmFjdGl2ZS1jYXJkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0ncXVlc3Rpb24nID8gJ2FjdGl2ZS1oZWFkZXInIDogJ2luYWN0aXZlLWhlYWRlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbiBGbGFnc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FyZHN1YmNvdW50IG15LTIgbWUtM1wiPnt7KGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5xdWVzdGlvbkZsYWc/LmNvdW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnF1ZXN0aW9uRmxhZz8uY291bnQpID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5xdWVzdGlvbkZsYWc/LmNvdW50Py50b0xvY2FsZVN0cmluZygnZW4tSU4nKSA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS0nfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnF1ZXN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMiBtZS0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucXVlc3Rpb25Db21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEzXCIgaGVpZ2h0PVwiOFwiIHZpZXdCb3g9XCIwIDAgMTMgOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjgzMiAxTDcuMDgyMDMgNS43NUw0LjU4MjAzIDMuMjVMMC44MzIwMzEgN00xMS44MzIgMUg4LjgzMjAzTTExLjgzMiAxVjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5xdWVzdGlvbkNvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCIgY2xhc3M9XCJuZy1zdGFyLWluc2VydGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz1cIm10LTJcIj48c3BhbiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyhjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5xdWVzdGlvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucXVlc3Rpb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnF1ZXN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhPy50b0xvY2FsZVN0cmluZygnZW4tSU4nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJTwvc3Bhbj48c3BhbiBjbGFzcz1cIndlZWstZm9udFwiPiB2c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Qge3tkYXRlQ29tcGFyaXNvblR5cGUgPT09ICd3ZWVrbHknID8gJ3dlZWsnIDogZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnbW9udGhseScgPyAnbW9udGgnIDogJ2RheSd9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zIGN1cnNvci1wb2ludGVyIHBlLTNcIiAoY2xpY2spPVwic2VsZWN0VGFicygncnVuQUknKVwiICpuZ0lmPVwiY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnJ1bkFJRmxhZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSdydW5BSScgPyAnYWN0aXZlLWNhcmQnIDogJ2luYWN0aXZlLWNhcmQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSdydW5BSScgPyAnYWN0aXZlLWhlYWRlcicgOiAnaW5hY3RpdmUtaGVhZGVyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1biBBSSBGbGFnc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkc3ViY291bnQgbWUtM1wiPnt7KGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5ydW5BSUZsYWc/LmZsYWdDb3VudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5ydW5BSUZsYWc/LmZsYWdDb3VudCkgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnJ1bkFJRmxhZz8uZmxhZ0NvdW50Py50b0xvY2FsZVN0cmluZygnZW4tSU4nKSA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS0nfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnJ1bkFJQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnJ1bkFJQ29tcGFyaXNvbkZsYWc/LkNvbXBhcmlzb25GbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjhcIiB2aWV3Qm94PVwiMCAwIDEzIDhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMS44MzIgMUw3LjA4MjAzIDUuNzVMNC41ODIwMyAzLjI1TDAuODMyMDMxIDdNMTEuODMyIDFIOC44MzIwM00xMS44MzIgMVY0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAzOTg1NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucnVuQUlDb21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiIGNsYXNzPVwibmctc3Rhci1pbnNlcnRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgOUw2Ljc1IDQuMjVMNC4yNSA2Ljc1TDAuNSAzTTExLjUgOUg4LjVNMTEuNSA5VjZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMzI4XzQ2NTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9XCJtdC0yXCI+PHNwYW4gY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3soY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucnVuQUlDb21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnJ1bkFJQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5ydW5BSUNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YT8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICU8L3NwYW4+PHNwYW4gY2xhc3M9XCJ3ZWVrLWZvbnRcIj4gdnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IHt7ZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnd2Vla2x5JyA/ICd3ZWVrJyA6IGRhdGVDb21wYXJpc29uVHlwZSA9PT0gJ21vbnRobHknID8gJ21vbnRoJyA6ICdkYXknfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMyBjdXJzb3ItcG9pbnRlciBwZS0zXCIgKGNsaWNrKT1cInNlbGVjdFRhYnMoJ3RpbWUnKVwiIFtuZ0NsYXNzXT1cImNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5ydW5BSUZsYWcgPyAnY29sLTMnIDogJ2NvbC00J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSd0aW1lJyA/ICdhY3RpdmUtY2FyZCcgOiAnaW5hY3RpdmUtY2FyZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIiBbbmdDbGFzc109XCJzZWxlY3RlZEZsYWcgPT09J3RpbWUnID8gJ2FjdGl2ZS1oZWFkZXInIDogJ2luYWN0aXZlLWhlYWRlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3QgU3VibWl0dGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkc3ViY291bnQgbWUtM1wiPnt7KGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5kZWxheUluU3VibWlzc2lvbj8uY291bnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8uZGVsYXlJblN1Ym1pc3Npb24/LmNvdW50KSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8uZGVsYXlJblN1Ym1pc3Npb24/LmNvdW50Py50b0xvY2FsZVN0cmluZygnZW4tSU4nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnLS0nfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uQ29tcGFyaXNvbkZsYWc/LkNvbXBhcmlzb25GbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjhcIiB2aWV3Qm94PVwiMCAwIDEzIDhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMS44MzIgMUw3LjA4MjAzIDUuNzVMNC41ODIwMyAzLjI1TDAuODMyMDMxIDdNMTEuODMyIDFIOC44MzIwM00xMS44MzIgMVY0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAzOTg1NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGVsYXlJblN1Ym1pc3Npb25Db21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiIGNsYXNzPVwibmctc3Rhci1pbnNlcnRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgOUw2Ljc1IDQuMjVMNC4yNSA2Ljc1TDAuNSAzTTExLjUgOUg4LjVNMTEuNSA5VjZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMzI4XzQ2NTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9XCJtdC0yXCI+PHNwYW4gY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3soY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGVsYXlJblN1Ym1pc3Npb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZWxheUluU3VibWlzc2lvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YT8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICU8L3NwYW4+PHNwYW4gY2xhc3M9XCJ3ZWVrLWZvbnRcIj4gdnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IHt7ZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnd2Vla2x5JyA/ICd3ZWVrJyA6IGRhdGVDb21wYXJpc29uVHlwZSA9PT0gJ21vbnRobHknID8gJ21vbnRoJyA6ICdkYXknfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYXJkTWV0cmljc0RhdGFCeVR5cGU/LnNob3dDYXJkcyA9PT0gJ2FsbENhcmRzJyB8fCBjYXJkTWV0cmljc0RhdGFCeVR5cGU/LnNob3dDYXJkcyA9PT0gJ2N1c3RvbUNhcmRzJ1wiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJoZWFkZXJEYXRhPy5jbGllbnQgIT09ICcxMSdcIiBjbGFzcz1cInctNSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiB0ZXh0LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtZS01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0xIGN1cnNvci1wb2ludGVyIGZzLTVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZGF0ZUNvbXBhcmlzb25UeXBlID09PSdkYWlseScgPyAndGV4dC1wcmltYXJ5JyA6JydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRhdGVDb21wYXJpc29uVmFsdWVDaGFuZ2UoJ2RhaWx5JylcIj4xRDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMSBjdXJzb3ItcG9pbnRlciBmcy01XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRhdGVDb21wYXJpc29uVHlwZSA9PT0nd2Vla2x5JyA/ICd0ZXh0LXByaW1hcnknIDonJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGF0ZUNvbXBhcmlzb25WYWx1ZUNoYW5nZSgnd2Vla2x5JylcIj4xVzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICAqbmdJZj1cInRyYXhNb250aGx5Q29tcGFyaXNvbkRhdGFcIiBjbGFzcz1cIm10LTEgY3Vyc29yLXBvaW50ZXIgZnMtNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJkYXRlQ29tcGFyaXNvblR5cGUgPT09J21vbnRobHknID8gJ3RleHQtcHJpbWFyeScgOicnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkYXRlQ29tcGFyaXNvblZhbHVlQ2hhbmdlKCdtb250aGx5JylcIj4xTTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgIGNsYXNzPVwibXQtMSBjdXJzb3ItcG9pbnRlciBmcy01XCIgIFtuZ0NsYXNzXT1cImRhdGVUeXBlID09PSdtb250aGx5JyA/ICd0ZXh0LXByaW1hcnknIDonJ1wiICAoY2xpY2spPVwiZGF0ZVZhbHVlKCdtb250aGx5JylcIj4xTTwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gY3VzdG9tQ2hlY2tsaXN0Q291bnQgPiAwICYgYWlDaGVja2xpc3RDb3VudCA+IDEgc2hvdyBzaW5nbGUgY2FyZHMgLS0+XHJcbiAgICA8IS0tIGFpQ2FyZHMgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FyZE1ldHJpY3NEYXRhQnlUeXBlPy5zaG93Q2FyZHMgPT09ICdhaUNhcmRzJ1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG10LTMgY3Vyc29yLXBvaW50ZXIgcGUtM1wiIChjbGljayk9XCJzZWxlY3RUYWJzKCdkZXRlY3Rpb24nKVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSdkZXRlY3Rpb24nID8gJ2FjdGl2ZS1jYXJkJyA6ICdpbmFjdGl2ZS1jYXJkJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0nZGV0ZWN0aW9uJyA/ICdhY3RpdmUtaGVhZGVyJyA6ICdpbmFjdGl2ZS1oZWFkZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgRGV0ZWN0aW9uIEZsYWdzXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTMgcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTIgY29sLTExXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZHN1YmNvdW50IG1lLTNcIj57eyhjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8uZGV0ZWN0aW9uRmxhZz8uY291bnQgPT09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5kZXRlY3Rpb25GbGFnPy5jb3VudCkgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LmRldGVjdGlvbkZsYWc/LmNvdW50Py50b0xvY2FsZVN0cmluZygnZW4tSU4nKSA6ICctLSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGV0ZWN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRldGVjdGlvbkNvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTNcIiBoZWlnaHQ9XCI4XCIgdmlld0JveD1cIjAgMCAxMyA4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjgzMiAxTDcuMDgyMDMgNS43NUw0LjU4MjAzIDMuMjVMMC44MzIwMzEgN00xMS44MzIgMUg4LjgzMjAzTTExLjgzMiAxVjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZXRlY3Rpb25Db21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiIGNsYXNzPVwibmctc3Rhci1pbnNlcnRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgOUw2Ljc1IDQuMjVMNC4yNSA2Ljc1TDAuNSAzTTExLjUgOUg4LjVNMTEuNSA5VjZcIiBzdHJva2U9XCIjRDkyRDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz1cIm10LTJcIj48c3BhbiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyhjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZXRlY3Rpb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRldGVjdGlvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGV0ZWN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhPy50b0xvY2FsZVN0cmluZygnZW4tSU4nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJTwvc3Bhbj48c3BhbiBjbGFzcz1cIndlZWstZm9udFwiPiB2c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Qge3tkYXRlQ29tcGFyaXNvblR5cGUgPT09ICd3ZWVrbHknID8gJ3dlZWsnIDogZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnbW9udGhseScgPyAnbW9udGgnIDogJ2RheSd9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImhlYWRlckRhdGE/LmNsaWVudCAhPT0gJzExJ1wiIGNsYXNzPVwiY29sLTEgbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTEgY3Vyc29yLXBvaW50ZXIgZnMtNSBteC0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRhdGVDb21wYXJpc29uVHlwZSA9PT0nZGFpbHknID8gJ3RleHQtcHJpbWFyeScgOicnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkYXRlQ29tcGFyaXNvblZhbHVlQ2hhbmdlKCdkYWlseScpXCI+MUQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMSBjdXJzb3ItcG9pbnRlciBmcy01IG1lLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZGF0ZUNvbXBhcmlzb25UeXBlID09PSd3ZWVrbHknID8gJ3RleHQtcHJpbWFyeScgOicnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkYXRlQ29tcGFyaXNvblZhbHVlQ2hhbmdlKCd3ZWVrbHknKVwiPjFXPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAgKm5nSWY9XCJ0cmF4TW9udGhseUNvbXBhcmlzb25EYXRhXCIgY2xhc3M9XCJtdC0xIGN1cnNvci1wb2ludGVyIGZzLTVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZGF0ZUNvbXBhcmlzb25UeXBlID09PSdtb250aGx5JyA/ICd0ZXh0LXByaW1hcnknIDonJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGF0ZUNvbXBhcmlzb25WYWx1ZUNoYW5nZSgnbW9udGhseScpXCI+MU08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiAgY2xhc3M9XCJtdC0xIGN1cnNvci1wb2ludGVyIGZzLTVcIiAgW25nQ2xhc3NdPVwiZGF0ZVR5cGUgPT09J21vbnRobHknID8gJ3RleHQtcHJpbWFyeScgOicnXCIgIChjbGljayk9XCJkYXRlVmFsdWUoJ21vbnRobHknKVwiPjFNPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtM1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC00IHB4LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZC1sYWJlbCBtYi0yXCI+PHNwYW4gKm5nSWY9XCIhWyd0aW1lJywnYWxsJ10uaW5jbHVkZXMoc2VsZWN0ZWRGbGFnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZS0zXCI+e3tzZWxlY3RlZEZsYWcgIT09ICdydW5BSScgPyAgKHNlbGVjdGVkRmxhZyB8IHRpdGxlY2FzZSkgOiAnUnVuQUknfX0gRmxhZ3M8L3NwYW4+IDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJbJ3RpbWUnLCdhbGwnXS5pbmNsdWRlcyhzZWxlY3RlZEZsYWcpXCIgY2xhc3M9XCJtZS0zXCI+e3tzZWxlY3RlZEZsYWcgPT09ICdhbGwnID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVG90YWwgRmxhZ3MnIDogJ05vdCBTdW1iaXR0ZWQnfX08L3NwYW4+IDxzcGFuICpuZ0lmPVwidG90YWxJdGVtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1wcmltYXJ5IFwiPnt7dG90YWxJdGVtc319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWw8L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc3ViIG1iLTJcIj4gQmFzZWQgb24ge3sgaGVhZGVyRGF0YT8uZGF0ZT8uc3RhcnREYXRlIHwgZGF0ZTogJ01NTSBkJyB9fSAtIHt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJEYXRhPy5kYXRlPy5lbmREYXRlIHwgZGF0ZTogJ01NTSBkLCB5JyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKGZsYWdzVGFibGVBcGlTdGF0ZSB8IGFzeW5jKSA9PT0gJ2xvYWRlZCdcIiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciAgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gZm9vdGZhbGxzZWFyY2ggc3ZnLWljb24tMSBwb3NpdGlvbi1hYnNvbHV0ZSAgbXMtOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBvcGFjaXR5PVwiMC41XCIgeD1cIjE3LjAzNjVcIiB5PVwiMTUuMTIyM1wiIHdpZHRoPVwiOC4xNTU0NlwiIGhlaWdodD1cIjJcIiByeD1cIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInJvdGF0ZSg0NSAxNy4wMzY1IDE1LjEyMjMpXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExIDE5QzYuNTU1NTYgMTkgMyAxNS40NDQ0IDMgMTFDMyA2LjU1NTU2IDYuNTU1NTYgMyAxMSAzQzE1LjQ0NDQgMyAxOSA2LjU1NTU2IDE5IDExQzE5IDE1LjQ0NDQgMTUuNDQ0NCAxOSAxMSAxOVpNMTEgNUM3LjUzMzMzIDUgNSA3LjUzMzMzIDUgMTFDNSAxNC40NjY3IDcuNTMzMzMgMTcgMTEgMTdDMTQuNDY2NyAxNyAxNyAxNC40NjY3IDE3IDExQzE3IDcuNTMzMzMgMTQuNDY2NyA1IDExIDVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFtmb3JtQ29udHJvbF09XCJzZWFyY2hJbnB1dFwiIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcHMtMTQgbXMtNCBtZS00IGZvb3RmYWxsc2VhcmNoXCIgcGxhY2Vob2xkZXI9XCJTZWFyY2hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGxpYi1yZWFjdGl2ZS1zZWxlY3QgW2Zvcm1Db250cm9sXT1cImZpbHRlcklucHV0XCIgW2lkRmllbGRdPVwiJ3ZhbHVlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZUZpZWxkXT1cIidsYWJlbCdcIiBbZGF0YV09XCJmaWx0ZXJWYWx1ZXNcIiBjbGFzcz1cInctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGliLXJlYWN0aXZlLXNlbGVjdD4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImZsYWdzVGFibGVEYXRhPy5sZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiKGZsYWdzVGFibGVBcGlTdGF0ZSB8IGFzeW5jKSA9PT0gJ2xvYWRpbmcnXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkZsYWdzVGFibGVFeHBvcnQoKVwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1vdXRsaW5lIGJ0biBhbGlnbi1pdGVtcy1lbmQgdGV4dC1ub3dyYXAgaW52aGVhZGVyIG1zLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBFeHBvcnQgSWNvbiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNMTQuMTY2NyA2LjY2NjY3TDEwIDIuNU0xMCAyLjVMNS44MzMzMyA2LjY2NjY3TTEwIDIuNVYxMi41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+PC9zcGFuPiBFeHBvcnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGZsYWdzVGFibGVBcGlTdGF0ZSB8IGFzeW5jKSA9PT0gJ2xvYWRlZCcgJiYgZmxhZ3NUYWJsZURhdGE/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZSBweC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0ZXh0LW5vd3JhcCBib3R0b20tYm9yZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnY2hlY2tMaXN0TmFtZScpXCI+Q2hlY2tsaXN0IE5hbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICdjaGVja0xpc3ROYW1lJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdjaGVja0xpc3ROYW1lJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ2NvdmVyYWdlJylcIj5Db3ZlcmFnZTxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ2NvdmVyYWdlJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdjb3ZlcmFnZScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgncnVuQUlRdWVzdGlvbkNvdW50JylcIiAqbmdJZj1cIlsncnVuQUknXS5pbmNsdWRlcyhzZWxlY3RlZEZsYWcpXCI+Tm8gb2YgUXVlc3Rpb25zPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAncnVuQUlRdWVzdGlvbkNvdW50JyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdydW5BSVF1ZXN0aW9uQ291bnQnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ2Fzc2lnbmVkU3RvcmVzJylcIj5Bc3NpZ25lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlczxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ2Fzc2lnbmVkU3RvcmVzJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdhc3NpZ25lZFN0b3JlcycgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAqbmdJZj1cIiFbJ3J1bkFJJ10uaW5jbHVkZXMoc2VsZWN0ZWRGbGFnKVwiIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ2ZsYWdnZWRTdG9yZXMnKVwiPkZsYWdnZWQgU3RvcmVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAnZmxhZ2dlZFN0b3JlcycgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0Q29sdW1OYW1lID09PSAnZmxhZ2dlZFN0b3JlcycgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCdmbGFncycpXCIgKm5nSWY9XCJbJ3J1bkFJJ10uaW5jbHVkZXMoc2VsZWN0ZWRGbGFnKVwiPkZsYWdzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAnZmxhZ3MnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ2ZsYWdzJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiWydhbGwnLCdxdWVzdGlvbiddLmluY2x1ZGVzKHNlbGVjdGVkRmxhZylcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzb3J0RGF0YSgnY3VzdG9tUXVlc3Rpb25GbGFnQ291bnQnKVwiPnt7c2VsZWN0ZWRGbGFnID09PSAncXVlc3Rpb24nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdGbGFncycgOiAnUXVlc3Rpb24gRmxhZ3MnfX08c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ2N1c3RvbVF1ZXN0aW9uRmxhZ0NvdW50JyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0Q29sdW1OYW1lID09PSAnY3VzdG9tUXVlc3Rpb25GbGFnQ291bnQnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiWydhbGwnXS5pbmNsdWRlcyhzZWxlY3RlZEZsYWcpXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic29ydERhdGEoJ3J1bkFJRmxhZycpXCI+UnVuIEFJIEZsYWdzPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICdydW5BSUZsYWcnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdydW5BSUZsYWcnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJbJ2FsbCcsJ3RpbWUnXS5pbmNsdWRlcyhzZWxlY3RlZEZsYWcpXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic29ydERhdGEoJ2N1c3RvbVRpbWVGbGFnQ291bnQnKVwiPnt7c2VsZWN0ZWRGbGFnID09PSAndGltZScgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZsYWdzJyA6ICdOb3QgU3VibWl0dGVkIEZsYWdzJ319PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICdjdXN0b21UaW1lRmxhZ0NvdW50JyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0Q29sdW1OYW1lID09PSAnY3VzdG9tVGltZUZsYWdDb3VudCcgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cIlsnYWxsJywnZGV0ZWN0aW9uJ10uaW5jbHVkZXMoc2VsZWN0ZWRGbGFnKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNvcnREYXRhKCdmbGFnQ291bnQnKVwiPnt7c2VsZWN0ZWRGbGFnID09PSAnZGV0ZWN0aW9uJyA/ICdEZXRlY3Rpb25zJyA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRGV0ZWN0aW9uIEZsYWdzJ319PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICdmbGFnQ291bnQnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdmbGFnQ291bnQnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8dGggc3R5bGU9XCJ3aWR0aDogMjAwcHg7XCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnZmxhZ0NvdW50JylcIj5GbGFnZ2VkPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICdmbGFnQ291bnQnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdmbGFnQ291bnQnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3RoPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHRoICpuZ0lmPVwic2VsZWN0ZWRGbGFnID09PSAnZGV0ZWN0aW9uJ1wiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ2RldGVjdGlvbkNvdW50JylcIj5EZXRlY3Rpb24gQ291bnQ8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ2RldGVjdGlvbkNvdW50JyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0Q29sdW1OYW1lID09PSAnZGV0ZWN0aW9uQ291bnQnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3RoPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCdDb21wbGlhbmNlJylcIj5Db21wbGlhbmNlICU8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICdDb21wbGlhbmNlJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdDb21wbGlhbmNlJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5BY3Rpb25zPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAqbmdGb3I9XCJsZXQgc3RvcmUgb2YgY2hlY2tsaXN0UGVyZm9ybWFuY2VcIiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBkYXRhIG9mIGZsYWdzVGFibGVEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhPy5jaGVja0xpc3RDaGFyPy50b1VwcGVyQ2FzZSgpIHx8ICctLScgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48c3BhbiAoY2xpY2spPVwidmlld0luRGV0YWlsKGRhdGE/LnNvdXJjZUNoZWNrTGlzdF9pZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS10aXRsZS1wcmltYXJ5IGN1cnNvci1wb2ludGVyXCI+e3tkYXRhPy5jaGVja0xpc3ROYW1lID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE/LmNoZWNrTGlzdE5hbWUgOiAnLS0nfX08L3NwYW4+IDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRhdGE/LmNoZWNrTGlzdFR5cGUgIT09ICdjdXN0b20nXCIgY2xhc3M9XCJteC0yXCI+4pyoPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPnt7IGRhdGE/LmNvdmVyYWdlID8gZGF0YT8uY292ZXJhZ2UgOiAnLS0nIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRhYmxlLXRpdGxlXCIgKm5nSWY9XCJbJ3J1bkFJJ10uaW5jbHVkZXMoc2VsZWN0ZWRGbGFnKVwiPnt7IGRhdGE/LnJ1bkFJUXVlc3Rpb25Db3VudCA/IGRhdGE/LnJ1bkFJUXVlc3Rpb25Db3VudCA6IDAgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGFibGUtdGl0bGVcIj57eyBkYXRhLmNoZWNrTGlzdFR5cGUgPT09ICdjdXN0b20nID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGE/LmFzc2lnbmVkU3RvcmVzIHx8IGRhdGE/LmFzc2lnbmVkU3RvcmVzID09PSAwKSA/IGRhdGE/LmFzc2lnbmVkU3RvcmVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnLS0nKSA6ICgoZGF0YT8uYXNzaWduZWRTdG9yZXNBaSB8fCBkYXRhPy5hc3NpZ25lZFN0b3Jlc0FpID09PSAwKSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT8uYXNzaWduZWRTdG9yZXNBaSA6ICctLScpfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGFibGUtdGl0bGVcIj57eyAoZGF0YT8uZmxhZ2dlZFN0b3JlcyB8fCBkYXRhPy5mbGFnZ2VkU3RvcmVzID09PSAwKSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT8uZmxhZ2dlZFN0b3JlcyA6ICctLScgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIlsnYWxsJywncXVlc3Rpb24nLCcnXS5pbmNsdWRlcyhzZWxlY3RlZEZsYWcpXCIgY2xhc3M9XCJ0YWJsZS10aXRsZVwiID57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPy5jdXN0b21RdWVzdGlvbkZsYWdDb3VudCA/PyAnLS0nIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJbJ2FsbCddLmluY2x1ZGVzKHNlbGVjdGVkRmxhZylcIiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT8ucnVuQUlGbGFnID8/ICctLScgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIlsnYWxsJywndGltZSddLmluY2x1ZGVzKHNlbGVjdGVkRmxhZylcIiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT8uY3VzdG9tVGltZUZsYWdDb3VudCA/PyAnLS0nIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiWydhbGwnLCdkZXRlY3Rpb24nLCAncnVuQUknXS5pbmNsdWRlcyhzZWxlY3RlZEZsYWcpXCIgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHt7ZGF0YT8uY2hlY2tMaXN0VHlwZSA9PT0gJ2N1c3RvbScgPyAwIDogKGRhdGE/LmZsYWdDb3VudCA/PyAnLS0nKX19IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2RhdGE/LmZsYWdDb3VudCA/PyAnMCd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDx0ZCBjbGFzcz1cInRhYmxlLXRpdGxlLXByaW1hcnlcIj4gXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGE/LmNoZWNrTGlzdFR5cGUgPT09ICdjdXN0b20nXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZpbHRlcklucHV0LnZhbHVlID09PSAnYWxsJyB8fCBmaWx0ZXJJbnB1dC52YWx1ZSA9PT0gJ3F1ZXN0aW9uJ1wiIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInZpZXdJbkRldGFpbChkYXRhPy5zb3VyY2VDaGVja0xpc3RfaWQsICdxdWVzdGlvbicpXCIgPnt7KGRhdGE/LmN1c3RvbVF1ZXN0aW9uRmxhZ0NvdW50IHx8IGRhdGE/LmN1c3RvbVF1ZXN0aW9uRmxhZ0NvdW50ID09PSAwKSA/IGRhdGE/LmN1c3RvbVF1ZXN0aW9uRmxhZ0NvdW50Py50b0xvY2FsZVN0cmluZygnZW4tSU4nKSA6ICctLSd9fSA8L3NwYW4+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCBteC0zXCIgPlF1ZXN0aW9uczwvc3Bhbj4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZmlsdGVySW5wdXQudmFsdWUgPT09ICdhbGwnIHx8IGZpbHRlcklucHV0LnZhbHVlID09PSAndGltZSdcIiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwidmlld0luRGV0YWlsKGRhdGE/LnNvdXJjZUNoZWNrTGlzdF9pZCwgJ3RpbWUnKVwiID57eyhkYXRhPy5jdXN0b21UaW1lRmxhZ0NvdW50IHx8IGRhdGE/LmN1c3RvbVRpbWVGbGFnQ291bnQgPT09IDApID8gZGF0YT8uY3VzdG9tVGltZUZsYWdDb3VudD8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJykgOiAnLS0nfX0gPC9zcGFuPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQgbXgtM1wiID5Ob3QgU3VibWl0dGVkPC9zcGFuPiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkYXRhPy5jaGVja0xpc3RUeXBlICE9PSAnY3VzdG9tJ1wiIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJ2aWV3SW5EZXRhaWwoZGF0YT8uc291cmNlQ2hlY2tMaXN0X2lkKVwiID57eyhkYXRhPy5mbGFnQ291bnQgfHwgZGF0YT8uZmxhZ0NvdW50ID09PSAwKSA/IGRhdGE/LmZsYWdDb3VudD8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJykgOiAnLS0nfX0gPC9zcGFuPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQgbXgtM1wiID5EZXRlY3Rpb25zPC9zcGFuPiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGFibGUtdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgKm5nSWY9XCJkYXRhLmNoZWNrTGlzdFR5cGUgIT09ICdhY3Rpdml0eW1vbml0b3JpbmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTVweCB3LTEwMCBiZy1saWdodCBtdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHJvbGU9XCJwcm9ncmVzc2JhclwiIGFyaWEtdmFsdWVtaW49XCIyMFwiIGFyaWEtdmFsdWVtYXg9XCIxMDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmctcHJpbWFyeSByb3VuZGVkIGgtNXB4IFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImRhdGE/LmNvbXBsaWFuY2VSYXRlICsgJyUnXCI+IDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZW5kIHRhYmxlLXRpdGxlXCI+PHNwYW4gY2xhc3M9XCJteS0xIG14LTEgdGV4dC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2RhdGE/LmNvbXBsaWFuY2VSYXRlPy50b0xvY2FsZVN0cmluZygnZW4tVVMnLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAwIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJy0tJ319JTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGF0YS5jaGVja0xpc3RUeXBlID09PSAnYWN0aXZpdHltb25pdG9yaW5nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwidmlld0luRGV0YWlsKGRhdGE/LnNvdXJjZUNoZWNrTGlzdF9pZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS10aXRsZS1wcmltYXJ5IGN1cnNvci1wb2ludGVyXCI+VmlldzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIoZmxhZ3NUYWJsZUFwaVN0YXRlIHwgYXN5bmMpID09PSAnbG9hZGVkJyAmJiBmbGFnc1RhYmxlRGF0YT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXBhZ2luYXRpb24gW2l0ZW1zUGVyUGFnZV09XCJpdGVtc1BlclBhZ2VcIiBbY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b3RhbEl0ZW1zXT1cInRvdGFsSXRlbXNcIiBbcGFnaW5hdGlvblNpemVzXT1cInBhZ2luYXRpb25TaXplc1wiIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIj48L2xpYi1wYWdpbmF0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGZsYWdzVGFibGVBcGlTdGF0ZSB8IGFzeW5jKSA9PT0gJ2xvYWRpbmcnIHx8IChmbGFnc1RhYmxlQXBpU3RhdGUgfCBhc3luYykgPT09ICdpbml0aWFsJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZmxhZ3NUYWJsZUFwaVN0YXRlIHwgYXN5bmMpID09PSAnbG9hZGVkJyAmJiAhZmxhZ3NUYWJsZURhdGE/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG15LTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLXNyY1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGFtYWludGV4dCBtdC0zXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhc3VidGV4dFwiPlRoZXJlIGlzIG5vIHJlc3VsdCBmb3IgRmxhZ3MgVGFibGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19