simpo-component-library 3.6.319 → 3.6.323

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.
Files changed (62) hide show
  1. package/esm2022/lib/directive/icon-directive.directive.mjs +1 -2
  2. package/esm2022/lib/directive/image-directive.directive.mjs +2 -2
  3. package/esm2022/lib/directive/spacing-around.directive.mjs +2 -2
  4. package/esm2022/lib/ecommerce/sections/authentication-required/authentication-required.component.mjs +19 -3
  5. package/esm2022/lib/ecommerce/sections/passbook-transactions/passbook-transactions.component.mjs +37 -0
  6. package/esm2022/lib/ecommerce/sections/returns-calculator/returns-calculator.component.mjs +227 -18
  7. package/esm2022/lib/ecommerce/sections/scheme-details/scheme-details.component.mjs +193 -14
  8. package/esm2022/lib/ecommerce/sections/schemes/schemes.component.mjs +108 -0
  9. package/esm2022/lib/ecommerce/sections/schemes/schemes.component.model.mjs +2 -0
  10. package/esm2022/lib/ecommerce/sections/user-profile/user-profile.component.mjs +179 -22
  11. package/esm2022/lib/ecommerce/sections/verify-payment/verify-payment.component.mjs +90 -31
  12. package/esm2022/lib/elements/link-editor/link-editor.component.mjs +3 -3
  13. package/esm2022/lib/elements/socia-icons/socia-icons.component.mjs +3 -3
  14. package/esm2022/lib/elements/text-editor/text-editor.component.mjs +3 -3
  15. package/esm2022/lib/sections/footer/footer.component.mjs +3 -3
  16. package/esm2022/lib/sections/header-section/header-section.component.mjs +15 -3
  17. package/esm2022/lib/sections/logo-showcase/logo-showcase.component.mjs +13 -4
  18. package/esm2022/lib/sections/scheme-detail/scheme-detail.component.mjs +265 -0
  19. package/esm2022/lib/sections/scheme-detail/scheme-detail.modal.mjs +2 -0
  20. package/esm2022/lib/services/rest.service.mjs +80 -7
  21. package/esm2022/lib/services/storage.service.mjs +8 -1
  22. package/esm2022/lib/styles/index.mjs +2 -1
  23. package/esm2022/public-api.mjs +3 -1
  24. package/fesm2022/simpo-component-library.mjs +1223 -161
  25. package/fesm2022/simpo-component-library.mjs.map +1 -1
  26. package/lib/directive/background-directive.d.ts +1 -1
  27. package/lib/directive/button-directive.directive.d.ts +1 -1
  28. package/lib/directive/color.directive.d.ts +1 -1
  29. package/lib/ecommerce/sections/authentication-required/authentication-required.component.d.ts +2 -1
  30. package/lib/ecommerce/sections/new-collection/new-collection.component.d.ts +1 -1
  31. package/lib/ecommerce/sections/passbook-transactions/passbook-transactions.component.d.ts +14 -0
  32. package/lib/ecommerce/sections/product-desc/product-desc.component.d.ts +2 -2
  33. package/lib/ecommerce/sections/product-list/product-list.component.d.ts +1 -1
  34. package/lib/ecommerce/sections/returns-calculator/returns-calculator.component.d.ts +41 -3
  35. package/lib/ecommerce/sections/scheme-details/scheme-details.component.d.ts +35 -3
  36. package/lib/ecommerce/sections/schemes/schemes.component.d.ts +28 -0
  37. package/lib/ecommerce/sections/schemes/schemes.component.model.d.ts +21 -0
  38. package/lib/ecommerce/sections/store-list/store-list.component.d.ts +1 -1
  39. package/lib/ecommerce/sections/store-page/store-page.component.d.ts +1 -1
  40. package/lib/ecommerce/sections/user-profile/user-profile.component.d.ts +19 -2
  41. package/lib/ecommerce/sections/verify-payment/verify-payment.component.d.ts +4 -0
  42. package/lib/elements/link-editor/link-editor.component.d.ts +1 -1
  43. package/lib/elements/pricing-s1/pricing-s1.component.d.ts +1 -1
  44. package/lib/sections/banner-carousel/banner-carousel.component.d.ts +2 -2
  45. package/lib/sections/banner-grid-section/banner-grid-section.component.d.ts +1 -1
  46. package/lib/sections/carousel-banner/carousel-banner.component.d.ts +1 -1
  47. package/lib/sections/contact-us/contact-us.component.d.ts +2 -2
  48. package/lib/sections/faq-section/faq-section.component.d.ts +1 -1
  49. package/lib/sections/header-section/header-section.component.d.ts +4 -1
  50. package/lib/sections/image-section/image-section.component.d.ts +2 -2
  51. package/lib/sections/logo-showcase/logo-showcase.component.d.ts +2 -1
  52. package/lib/sections/moving-text/moving-text.component.d.ts +1 -1
  53. package/lib/sections/pricing-section/pricing-section.component.d.ts +2 -2
  54. package/lib/sections/scheme-detail/scheme-detail.component.d.ts +68 -0
  55. package/lib/sections/scheme-detail/scheme-detail.modal.d.ts +17 -0
  56. package/lib/services/rest.service.d.ts +18 -2
  57. package/lib/services/storage.service.d.ts +2 -0
  58. package/lib/styles/index.d.ts +2 -1
  59. package/package.json +1 -1
  60. package/public-api.d.ts +2 -0
  61. package/simpo-component-library-3.6.323.tgz +0 -0
  62. package/simpo-component-library-3.6.319.tgz +0 -0
@@ -32,14 +32,14 @@ export class SociaIconsComponent {
32
32
  }
33
33
  }
34
34
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SociaIconsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
35
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SociaIconsComponent, isStandalone: true, selector: "simpo-socia-icons", inputs: { socialIconData: "socialIconData", color: "color", sectionId: "sectionId", iconColor: "iconColor" }, host: { listeners: { "window:resize": "getScreenSize($event)" } }, ngImport: i0, template: "<div style=\"cursor: pointer;\" *ngIf=\"socialIconData?.type == ChannelType.FACEBOOK\">\r\n <div (click)=\"openLink('FACEBOOK')\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"\r\n class=\"icon w-8 h-8\" aria-hidden=\"true\" [simpoColor]=\"color\" [id]=\"sectionId\" [attr.fill]=\"iconColor\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M10.4375 21.8784C5.65941 21.1274 2 16.9877 2 12 2 6.48086 6.48086 2 12 2c5.5191 0 10 4.48086 10 10 0 4.9877-3.6594 9.1274-8.4375 9.8784v-6.9878h2.3301L16.3359 12h-2.7724v-1.8758c0-.79084.3874-1.5617 1.6296-1.5617h1.261V6.10156s-1.1443-.19531-2.2385-.19531c-2.2842 0-3.7771 1.38438-3.7771 3.89063V12H7.89844v2.8906h2.53906v6.9878Z\"\r\n clip-rule=\"evenodd\"></path>\r\n </svg>\r\n </div>\r\n</div>\r\n<div style=\"cursor: pointer;\" *ngIf=\"socialIconData?.type === ChannelType.TWITTER\">\r\n <a [href]=\"socialIconData?.link\" target=\"_blank\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"\r\n class=\"icon w-8 h-8\" aria-hidden=\"true\" [simpoColor]=\"color\" [id]=\"sectionId\" [attr.fill]=\"iconColor\">\r\n <path\r\n d=\"M13.6756 10.6218 20.2324 3h-1.5537l-5.6933 6.61788L8.43817 3H3.1935l6.8763 10.0074L3.1935 21h1.55384l6.01226-6.9887L15.5618 21h5.2447l-7.1313-10.3782h.0004Zm-2.1282 2.4738-.6967-.9965-5.54249-7.92939h2.38662l4.47367 6.39919.6967.9966 5.8152 8.318h-2.3866l-4.7454-6.7875v-.0004Z\">\r\n </path>\r\n </svg>\r\n </a>\r\n</div>\r\n<div style=\"cursor: pointer;\" *ngIf=\"socialIconData?.type === ChannelType.LINKEDIN\">\r\n <div (click)=\"openLink('LINKEDIN')\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"\r\n class=\"icon w-8 h-8\" aria-hidden=\"true\" [simpoColor]=\"color\" [id]=\"sectionId\" [attr.fill]=\"iconColor\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M19.5565 2C20.9051 2 22 3.09492 22 4.44352V19.5565C22 20.9051 20.9051 22 19.5565 22H4.44352C3.09492 22 2 20.9051 2 19.5565V4.44352C2 3.09492 3.09488 2 4.44352 2H19.5565ZM8.26801 18.5243V9.71723H5.33676v8.81707h2.93125Zm10.56789 0v-5.0562c0-2.7083-1.446-3.96822-3.3742-3.96822-1.5549 0-2.2513.85512-2.6413 1.45572V9.71723H9.88988c.03887.82737 0 8.81707 0 8.81707h2.93052v-4.9241c0-.2636.0189-.527.0966-.7154.2115-.5264.694-1.0716 1.5037-1.0716 1.0599 0 1.4846.8088 1.4846 1.9936v4.7175h2.9306ZM6.82219 5.4657c-1.00289 0-1.65813.65924-1.65813 1.52352 0 .84601.63532 1.52351 1.61924 1.52351 1.02207 0 1.67719-.6775 1.67719-1.52351-.01895-.86297-.62442-1.52164-1.6384-1.52352Z\"\r\n clip-rule=\"evenodd\"></path>\r\n </svg>\r\n </div>\r\n</div>\r\n<div style=\"cursor: pointer;\" *ngIf=\"socialIconData?.type === ChannelType.YOUTUBE\">\r\n <a [href]=\"socialIconData?.link\" target=\"_blank\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"\r\n class=\"icon w-8 h-8\" aria-hidden=\"true\" [simpoColor]=\"color\" [id]=\"sectionId\" [attr.fill]=\"iconColor\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M21.0053 5.6191c.5996.6477.7946 2.11879.7946 2.11879S22 9.46405 22 11.1908v1.618c0 1.7268-.2001 3.453-.2001 3.453s-.1956 1.4705-.7946 2.1169c-.6859.7654-1.4461.8449-1.8754.8897-.0469.0049-.0899.0094-.1283.0143-2.799.2145-7.0016.222-7.0016.222s-5.20038-.0507-6.80025-.2145c-.07572-.0151-.16746-.0268-.27131-.0402-.50666-.0651-1.3018-.1673-1.93375-.8719-.59957-.6465-.79463-2.1169-.79463-2.1169S2 14.5356 2 12.8082v-1.618c0-1.72615.20006-3.45231.20006-3.45231s.19569-1.47109.79463-2.11879c.68895-.76815 1.4516-.84541 1.88002-.88881.04511-.00457.08651-.00876.12373-.01335C7.79681 4.5 11.995 4.5 11.995 4.5h.0094s4.1982 0 6.9972.21694c.0372.00459.0786.00879.1238.01336.4285.0424 1.1916.12069 1.8799.8888Zm-5.251 6.3832-6.25196 3.7512V8.25117l6.25196 3.75113Z\"\r\n clip-rule=\"evenodd\"></path>\r\n </svg>\r\n </a>\r\n</div>\r\n<div style=\"cursor: pointer;\" *ngIf=\"socialIconData?.type === ChannelType.INSTAGRAM\">\r\n <div (click)=\"openLink('INSTAGRAM')\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"\r\n class=\"icon w-8 h-8\" aria-hidden=\"true\" [simpoColor]=\"color\" [id]=\"sectionId\" [attr.fill]=\"iconColor\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M12 2c5.5191 0 10 4.48086 10 10 0 5.5191-4.4809 10-10 10-5.51914 0-10-4.4809-10-10C2 6.48086 6.48086 2 12 2Zm0 3.75c-1.6974 0-1.9102.00719-2.57688.03762-.66523.03035-1.11957.13601-1.51714.29051-.41098.15972-.75953.37243-1.107.72089-.24746.24746-.56117.69602-.72089 1.107-.1545.39753-.26012.85187-.29051 1.5171C5.75719 10.0898 5.75 10.3026 5.75 12s.00719 1.9102.03758 2.5769c.03039.6652.13601 1.1195.29051 1.5171.15972.411.37243.7595.72089 1.107.24747.2475.69602.5612 1.107.7209.39757.1545.85191.2601 1.51714.2905.66668.0304.87948.0376 2.57688.0376s1.9102-.0072 2.5769-.0376c.6652-.0304 1.1195-.136 1.5171-.2905.411-.1597.7595-.3724 1.107-.7209.2475-.2475.5612-.696.7209-1.107.1545-.3976.2601-.8519.2905-1.5171.0304-.6667.0376-.8795.0376-2.5769 0-1.6974-.0072-1.9102-.0376-2.57688-.0304-.66523-.136-1.11957-.2905-1.5171-.1597-.41098-.3724-.75954-.7209-1.107s-.696-.56117-1.107-.72089c-.3976-.1545-.8519-.26016-1.5171-.29051C13.9102 5.75719 13.6974 5.75 12 5.75Zm0 1.12613c1.6688 0 1.8665.00637 2.5255.03645.6094.02781.9403.12961 1.1606.21519.2917.11336.4999.24883.7186.46754.2187.21867.3542.42692.4675.71864.0856.22023.1874.55113.2152 1.1605.0301.65905.0365.85675.0365 2.52555s-.0064 1.8665-.0365 2.5255c-.0278.6094-.1296.9403-.2152 1.1606-.1133.2917-.2488.4999-.4675.7186-.2187.2187-.4269.3542-.7186.4675-.2203.0856-.5512.1874-1.1606.2152-.6589.0301-.8566.0365-2.5255.0365s-1.8666-.0064-2.52555-.0365c-.60937-.0278-.94027-.1296-1.1605-.2152-.29176-.1133-.49997-.2488-.71868-.4675-.21871-.2187-.35414-.4269-.4675-.7186-.08558-.2203-.18742-.5512-.21523-1.1606-.03008-.659-.03641-.8567-.03641-2.5255s.00633-1.8665.03641-2.52555c.02781-.60937.12965-.94027.21523-1.1605.11336-.29172.24879-.49997.4675-.71864.21871-.21871.42692-.35418.71868-.46754.22023-.08558.55113-.18738 1.1605-.21519.65905-.03008.85675-.03645 2.52555-.03645Zm0 1.91442c-1.7725 0-3.20945 1.43695-3.20945 3.20945S10.2275 15.2095 12 15.2095s3.2095-1.437 3.2095-3.2095c0-1.7725-1.437-3.20945-3.2095-3.20945Zm0 5.29275c-1.1506 0-2.08332-.9327-2.08332-2.0833 0-1.1506.93272-2.08332 2.08332-2.08332S14.0833 10.8494 14.0833 12 13.1506 14.0833 12 14.0833Zm4.0863-5.41955c0 .41422-.3358.74996-.7501.74996-.4141 0-.7499-.33574-.7499-.74996s.3358-.75.7499-.75c.4143 0 .7501.33578.7501.75Z\"\r\n clip-rule=\"evenodd\"></path>\r\n </svg>\r\n </div>\r\n</div>\r\n<div style=\"cursor: pointer;\" *ngIf=\"socialIconData?.type === ChannelType.TELEGRAM\">\r\n <a [href]=\"socialIconData?.link\" target=\"_blank\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"\r\n class=\"icon w-8 h-8\" aria-hidden=\"true\" [simpoColor]=\"color\" [id]=\"sectionId\" [attr.fill]=\"iconColor\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M22 12c0 5.5229-4.4771 10-10 10-5.52285 0-10-4.4771-10-10C2 6.47715 6.47715 2 12 2c5.5229 0 10 4.47715 10 10Zm-9.6417-2.61755c-.9726.40455-2.91653 1.24185-5.83173 2.51195-.47339.1883-.72136.3725-.74394.5525-.03815.3044.24296.4242.86192.5874.0706.0222.14374.0452.21872.0695.51059.166 1.19741.3602 1.55446.3679.32388.007.68537-.1265 1.08446-.4006 2.72381-1.8386 4.12981-2.7679 4.21801-2.788.0623-.0141.1486-.0319.2071.0201.0585.052.0527.1504.0465.1768-.0377.1609-1.5335 1.5516-2.3077 2.2714-.2415.2244-.4127.3836-.4477.42-.0784.0814-.1583.1584-.2351.2325-.4743.4572-.83.8001.0197 1.3601.4084.2691.7352.4917 1.0612.7137.356.2424.7111.4842 1.1705.7854.117.0767.2288.1564.3377.224.4143.2954.7865.5608 1.2464.5184.2672-.0245.5432-.2758.6824-1.0252.3313-1.771.9825-5.6083 1.133-7.18949.0132-.13853-.0024-.31583-.0167-.39367-.0124-.07782-.0412-.18872-.1424-.2708-.1198-.09722-.3048-.11772-.3875-.11627-.3761.00663-.9531.20728-3.7303 1.36238Z\"\r\n clip-rule=\"evenodd\"></path>\r\n </svg>\r\n </a>\r\n</div>\r\n<div style=\"cursor: pointer;\" *ngIf=\"socialIconData?.type === ChannelType.THREADS\">\r\n <a [href]=\"socialIconData?.link\" target=\"_blank\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"\r\n class=\"icon w-8 h-8\" aria-hidden=\"true\" [simpoColor]=\"color\" [id]=\"sectionId\" [attr.fill]=\"iconColor\">\r\n <path\r\n d=\"M12.1482 21.6888h-.0058c-2.89118-.0194-5.1138-.9727-6.60781-2.833-1.32737-1.6568-2.01324-3.9608-2.03659-6.848v-.0136c.02325-2.88921.70922-5.19128 2.03853-6.84806C7.0286 3.28395 9.25316 2.33057 12.1424 2.31119h.0116c2.2168.0155 4.0712.5852 5.511 1.6936 1.3545 1.04252 2.3079 2.52685 2.833 4.41423l-1.6471.45925c-.8914-3.19731-3.1469-4.83085-6.7047-4.85604-2.24853.01744-4.12546.75573-5.28037 2.19355C5.7865 7.56253 5.22842 9.50804 5.20711 12c.02131 2.492.57939 4.4375 1.66066 5.7842 1.15491 1.4398 2.93184 2.1781 5.28043 2.1936 2.118-.0155 3.519-.5097 4.6836-1.651 1.3293-1.3022 1.306-2.9008.8797-3.8736-.25-.5736-.7054-1.0503-1.3196-1.4126-.155 1.0909-.5019 1.9746-1.0367 2.6412-.7151.8894-1.7285 1.3758-3.0113 1.4455-.9708.0523-1.9068-.1763-2.63149-.6472-.85843-.5561-1.36031-1.4049-1.41457-2.3931-.05232-.9612.32942-1.8448 1.07352-2.4881.71114-.6143 1.71104-.9747 2.89304-1.0425.8701-.0485 1.6859-.0097 2.4377.1143-.1007-.5988-.3022-1.07546-.6045-1.41844-.4147-.47282-1.0561-.7131-1.9049-.71891h-.0232c-.6821 0-1.6084.18796-2.19743 1.06577l-1.41844-.95145c.7906-1.17428 2.07337-1.82149 3.61587-1.82149h.0249c2.5791.0155 4.1158 1.59478 4.2689 4.35032.0872.0368.1744.0755.2596.1143 1.2024.5658 2.0831 1.4223 2.5462 2.4784.6424 1.4707.7035 3.8678-1.2498 5.7803-1.494 1.4611-3.3058 2.1219-5.8753 2.1393h-.0058Zm.81-9.4388c-.1958 0-.3924.0058-.5969.0174-1.4824.0833-2.40667.7635-2.3544 1.7304.0543 1.0135 1.1724 1.4844 2.2479 1.4262.9882-.0523 2.2749-.4379 2.4919-2.9957-.5464-.1183-1.1452-.1783-1.7885-.1783Z\">\r\n </path>\r\n </svg>\r\n </a>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: ColorDirective, selector: "[simpoColor]", inputs: ["simpoColor"] }] }); }
35
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SociaIconsComponent, isStandalone: true, selector: "simpo-socia-icons", inputs: { socialIconData: "socialIconData", color: "color", sectionId: "sectionId", iconColor: "iconColor" }, host: { listeners: { "window:resize": "getScreenSize($event)" } }, ngImport: i0, template: "<div style=\"cursor: pointer;\" *ngIf=\"socialIconData?.type == ChannelType.FACEBOOK\">\r\n <div (click)=\"openLink('FACEBOOK')\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 24 24\" width=\"21\" height=\"21\"\r\n class=\"icon w-8 h-8\" aria-hidden=\"true\" [simpoColor]=\"color\" [id]=\"sectionId\" [attr.fill]=\"iconColor\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M10.4375 21.8784C5.65941 21.1274 2 16.9877 2 12 2 6.48086 6.48086 2 12 2c5.5191 0 10 4.48086 10 10 0 4.9877-3.6594 9.1274-8.4375 9.8784v-6.9878h2.3301L16.3359 12h-2.7724v-1.8758c0-.79084.3874-1.5617 1.6296-1.5617h1.261V6.10156s-1.1443-.19531-2.2385-.19531c-2.2842 0-3.7771 1.38438-3.7771 3.89063V12H7.89844v2.8906h2.53906v6.9878Z\"\r\n clip-rule=\"evenodd\"></path>\r\n </svg>\r\n </div>\r\n</div>\r\n<div style=\"cursor: pointer;\" *ngIf=\"socialIconData?.type === ChannelType.TWITTER\">\r\n <a [href]=\"socialIconData?.link\" target=\"_blank\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 24 24\" width=\"21\" height=\"21\"\r\n class=\"icon w-8 h-8\" aria-hidden=\"true\" [simpoColor]=\"color\" [id]=\"sectionId\" [attr.fill]=\"iconColor\">\r\n <path\r\n d=\"M13.6756 10.6218 20.2324 3h-1.5537l-5.6933 6.61788L8.43817 3H3.1935l6.8763 10.0074L3.1935 21h1.55384l6.01226-6.9887L15.5618 21h5.2447l-7.1313-10.3782h.0004Zm-2.1282 2.4738-.6967-.9965-5.54249-7.92939h2.38662l4.47367 6.39919.6967.9966 5.8152 8.318h-2.3866l-4.7454-6.7875v-.0004Z\">\r\n </path>\r\n </svg>\r\n </a>\r\n</div>\r\n<div style=\"cursor: pointer;\" *ngIf=\"socialIconData?.type === ChannelType.LINKEDIN\">\r\n <div (click)=\"openLink('LINKEDIN')\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 24 24\" width=\"21\" height=\"21\"\r\n class=\"icon w-8 h-8\" aria-hidden=\"true\" [simpoColor]=\"color\" [id]=\"sectionId\" [attr.fill]=\"iconColor\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M19.5565 2C20.9051 2 22 3.09492 22 4.44352V19.5565C22 20.9051 20.9051 22 19.5565 22H4.44352C3.09492 22 2 20.9051 2 19.5565V4.44352C2 3.09492 3.09488 2 4.44352 2H19.5565ZM8.26801 18.5243V9.71723H5.33676v8.81707h2.93125Zm10.56789 0v-5.0562c0-2.7083-1.446-3.96822-3.3742-3.96822-1.5549 0-2.2513.85512-2.6413 1.45572V9.71723H9.88988c.03887.82737 0 8.81707 0 8.81707h2.93052v-4.9241c0-.2636.0189-.527.0966-.7154.2115-.5264.694-1.0716 1.5037-1.0716 1.0599 0 1.4846.8088 1.4846 1.9936v4.7175h2.9306ZM6.82219 5.4657c-1.00289 0-1.65813.65924-1.65813 1.52352 0 .84601.63532 1.52351 1.61924 1.52351 1.02207 0 1.67719-.6775 1.67719-1.52351-.01895-.86297-.62442-1.52164-1.6384-1.52352Z\"\r\n clip-rule=\"evenodd\"></path>\r\n </svg>\r\n </div>\r\n</div>\r\n<div style=\"cursor: pointer;\" *ngIf=\"socialIconData?.type === ChannelType.YOUTUBE\">\r\n <a [href]=\"socialIconData?.link\" target=\"_blank\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 24 24\" width=\"21\" height=\"21\"\r\n class=\"icon w-8 h-8\" aria-hidden=\"true\" [simpoColor]=\"color\" [id]=\"sectionId\" [attr.fill]=\"iconColor\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M21.0053 5.6191c.5996.6477.7946 2.11879.7946 2.11879S22 9.46405 22 11.1908v1.618c0 1.7268-.2001 3.453-.2001 3.453s-.1956 1.4705-.7946 2.1169c-.6859.7654-1.4461.8449-1.8754.8897-.0469.0049-.0899.0094-.1283.0143-2.799.2145-7.0016.222-7.0016.222s-5.20038-.0507-6.80025-.2145c-.07572-.0151-.16746-.0268-.27131-.0402-.50666-.0651-1.3018-.1673-1.93375-.8719-.59957-.6465-.79463-2.1169-.79463-2.1169S2 14.5356 2 12.8082v-1.618c0-1.72615.20006-3.45231.20006-3.45231s.19569-1.47109.79463-2.11879c.68895-.76815 1.4516-.84541 1.88002-.88881.04511-.00457.08651-.00876.12373-.01335C7.79681 4.5 11.995 4.5 11.995 4.5h.0094s4.1982 0 6.9972.21694c.0372.00459.0786.00879.1238.01336.4285.0424 1.1916.12069 1.8799.8888Zm-5.251 6.3832-6.25196 3.7512V8.25117l6.25196 3.75113Z\"\r\n clip-rule=\"evenodd\"></path>\r\n </svg>\r\n </a>\r\n</div>\r\n<div style=\"cursor: pointer;\" *ngIf=\"socialIconData?.type === ChannelType.INSTAGRAM\">\r\n <div (click)=\"openLink('INSTAGRAM')\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 24 24\" width=\"21\" height=\"21\"\r\n class=\"icon w-8 h-8\" aria-hidden=\"true\" [simpoColor]=\"color\" [id]=\"sectionId\" [attr.fill]=\"iconColor\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M12 2c5.5191 0 10 4.48086 10 10 0 5.5191-4.4809 10-10 10-5.51914 0-10-4.4809-10-10C2 6.48086 6.48086 2 12 2Zm0 3.75c-1.6974 0-1.9102.00719-2.57688.03762-.66523.03035-1.11957.13601-1.51714.29051-.41098.15972-.75953.37243-1.107.72089-.24746.24746-.56117.69602-.72089 1.107-.1545.39753-.26012.85187-.29051 1.5171C5.75719 10.0898 5.75 10.3026 5.75 12s.00719 1.9102.03758 2.5769c.03039.6652.13601 1.1195.29051 1.5171.15972.411.37243.7595.72089 1.107.24747.2475.69602.5612 1.107.7209.39757.1545.85191.2601 1.51714.2905.66668.0304.87948.0376 2.57688.0376s1.9102-.0072 2.5769-.0376c.6652-.0304 1.1195-.136 1.5171-.2905.411-.1597.7595-.3724 1.107-.7209.2475-.2475.5612-.696.7209-1.107.1545-.3976.2601-.8519.2905-1.5171.0304-.6667.0376-.8795.0376-2.5769 0-1.6974-.0072-1.9102-.0376-2.57688-.0304-.66523-.136-1.11957-.2905-1.5171-.1597-.41098-.3724-.75954-.7209-1.107s-.696-.56117-1.107-.72089c-.3976-.1545-.8519-.26016-1.5171-.29051C13.9102 5.75719 13.6974 5.75 12 5.75Zm0 1.12613c1.6688 0 1.8665.00637 2.5255.03645.6094.02781.9403.12961 1.1606.21519.2917.11336.4999.24883.7186.46754.2187.21867.3542.42692.4675.71864.0856.22023.1874.55113.2152 1.1605.0301.65905.0365.85675.0365 2.52555s-.0064 1.8665-.0365 2.5255c-.0278.6094-.1296.9403-.2152 1.1606-.1133.2917-.2488.4999-.4675.7186-.2187.2187-.4269.3542-.7186.4675-.2203.0856-.5512.1874-1.1606.2152-.6589.0301-.8566.0365-2.5255.0365s-1.8666-.0064-2.52555-.0365c-.60937-.0278-.94027-.1296-1.1605-.2152-.29176-.1133-.49997-.2488-.71868-.4675-.21871-.2187-.35414-.4269-.4675-.7186-.08558-.2203-.18742-.5512-.21523-1.1606-.03008-.659-.03641-.8567-.03641-2.5255s.00633-1.8665.03641-2.52555c.02781-.60937.12965-.94027.21523-1.1605.11336-.29172.24879-.49997.4675-.71864.21871-.21871.42692-.35418.71868-.46754.22023-.08558.55113-.18738 1.1605-.21519.65905-.03008.85675-.03645 2.52555-.03645Zm0 1.91442c-1.7725 0-3.20945 1.43695-3.20945 3.20945S10.2275 15.2095 12 15.2095s3.2095-1.437 3.2095-3.2095c0-1.7725-1.437-3.20945-3.2095-3.20945Zm0 5.29275c-1.1506 0-2.08332-.9327-2.08332-2.0833 0-1.1506.93272-2.08332 2.08332-2.08332S14.0833 10.8494 14.0833 12 13.1506 14.0833 12 14.0833Zm4.0863-5.41955c0 .41422-.3358.74996-.7501.74996-.4141 0-.7499-.33574-.7499-.74996s.3358-.75.7499-.75c.4143 0 .7501.33578.7501.75Z\"\r\n clip-rule=\"evenodd\"></path>\r\n </svg>\r\n </div>\r\n</div>\r\n<div style=\"cursor: pointer;\" *ngIf=\"socialIconData?.type === ChannelType.TELEGRAM\">\r\n <a [href]=\"socialIconData?.link\" target=\"_blank\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 24 24\" width=\"21\" height=\"21\"\r\n class=\"icon w-8 h-8\" aria-hidden=\"true\" [simpoColor]=\"color\" [id]=\"sectionId\" [attr.fill]=\"iconColor\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M22 12c0 5.5229-4.4771 10-10 10-5.52285 0-10-4.4771-10-10C2 6.47715 6.47715 2 12 2c5.5229 0 10 4.47715 10 10Zm-9.6417-2.61755c-.9726.40455-2.91653 1.24185-5.83173 2.51195-.47339.1883-.72136.3725-.74394.5525-.03815.3044.24296.4242.86192.5874.0706.0222.14374.0452.21872.0695.51059.166 1.19741.3602 1.55446.3679.32388.007.68537-.1265 1.08446-.4006 2.72381-1.8386 4.12981-2.7679 4.21801-2.788.0623-.0141.1486-.0319.2071.0201.0585.052.0527.1504.0465.1768-.0377.1609-1.5335 1.5516-2.3077 2.2714-.2415.2244-.4127.3836-.4477.42-.0784.0814-.1583.1584-.2351.2325-.4743.4572-.83.8001.0197 1.3601.4084.2691.7352.4917 1.0612.7137.356.2424.7111.4842 1.1705.7854.117.0767.2288.1564.3377.224.4143.2954.7865.5608 1.2464.5184.2672-.0245.5432-.2758.6824-1.0252.3313-1.771.9825-5.6083 1.133-7.18949.0132-.13853-.0024-.31583-.0167-.39367-.0124-.07782-.0412-.18872-.1424-.2708-.1198-.09722-.3048-.11772-.3875-.11627-.3761.00663-.9531.20728-3.7303 1.36238Z\"\r\n clip-rule=\"evenodd\"></path>\r\n </svg>\r\n </a>\r\n</div>\r\n<div style=\"cursor: pointer;\" *ngIf=\"socialIconData?.type === ChannelType.THREADS\">\r\n <a [href]=\"socialIconData?.link\" target=\"_blank\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 24 24\" width=\"21\" height=\"21\"\r\n class=\"icon w-8 h-8\" aria-hidden=\"true\" [simpoColor]=\"color\" [id]=\"sectionId\" [attr.fill]=\"iconColor\">\r\n <path\r\n d=\"M12.1482 21.6888h-.0058c-2.89118-.0194-5.1138-.9727-6.60781-2.833-1.32737-1.6568-2.01324-3.9608-2.03659-6.848v-.0136c.02325-2.88921.70922-5.19128 2.03853-6.84806C7.0286 3.28395 9.25316 2.33057 12.1424 2.31119h.0116c2.2168.0155 4.0712.5852 5.511 1.6936 1.3545 1.04252 2.3079 2.52685 2.833 4.41423l-1.6471.45925c-.8914-3.19731-3.1469-4.83085-6.7047-4.85604-2.24853.01744-4.12546.75573-5.28037 2.19355C5.7865 7.56253 5.22842 9.50804 5.20711 12c.02131 2.492.57939 4.4375 1.66066 5.7842 1.15491 1.4398 2.93184 2.1781 5.28043 2.1936 2.118-.0155 3.519-.5097 4.6836-1.651 1.3293-1.3022 1.306-2.9008.8797-3.8736-.25-.5736-.7054-1.0503-1.3196-1.4126-.155 1.0909-.5019 1.9746-1.0367 2.6412-.7151.8894-1.7285 1.3758-3.0113 1.4455-.9708.0523-1.9068-.1763-2.63149-.6472-.85843-.5561-1.36031-1.4049-1.41457-2.3931-.05232-.9612.32942-1.8448 1.07352-2.4881.71114-.6143 1.71104-.9747 2.89304-1.0425.8701-.0485 1.6859-.0097 2.4377.1143-.1007-.5988-.3022-1.07546-.6045-1.41844-.4147-.47282-1.0561-.7131-1.9049-.71891h-.0232c-.6821 0-1.6084.18796-2.19743 1.06577l-1.41844-.95145c.7906-1.17428 2.07337-1.82149 3.61587-1.82149h.0249c2.5791.0155 4.1158 1.59478 4.2689 4.35032.0872.0368.1744.0755.2596.1143 1.2024.5658 2.0831 1.4223 2.5462 2.4784.6424 1.4707.7035 3.8678-1.2498 5.7803-1.494 1.4611-3.3058 2.1219-5.8753 2.1393h-.0058Zm.81-9.4388c-.1958 0-.3924.0058-.5969.0174-1.4824.0833-2.40667.7635-2.3544 1.7304.0543 1.0135 1.1724 1.4844 2.2479 1.4262.9882-.0523 2.2749-.4379 2.4919-2.9957-.5464-.1183-1.1452-.1783-1.7885-.1783Z\">\r\n </path>\r\n </svg>\r\n </a>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: ColorDirective, selector: "[simpoColor]", inputs: ["simpoColor"] }] }); }
36
36
  }
37
37
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SociaIconsComponent, decorators: [{
38
38
  type: Component,
39
39
  args: [{ selector: 'simpo-socia-icons', standalone: true, imports: [
40
40
  CommonModule,
41
41
  ColorDirective
42
- ], template: "<div style=\"cursor: pointer;\" *ngIf=\"socialIconData?.type == ChannelType.FACEBOOK\">\r\n <div (click)=\"openLink('FACEBOOK')\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"\r\n class=\"icon w-8 h-8\" aria-hidden=\"true\" [simpoColor]=\"color\" [id]=\"sectionId\" [attr.fill]=\"iconColor\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M10.4375 21.8784C5.65941 21.1274 2 16.9877 2 12 2 6.48086 6.48086 2 12 2c5.5191 0 10 4.48086 10 10 0 4.9877-3.6594 9.1274-8.4375 9.8784v-6.9878h2.3301L16.3359 12h-2.7724v-1.8758c0-.79084.3874-1.5617 1.6296-1.5617h1.261V6.10156s-1.1443-.19531-2.2385-.19531c-2.2842 0-3.7771 1.38438-3.7771 3.89063V12H7.89844v2.8906h2.53906v6.9878Z\"\r\n clip-rule=\"evenodd\"></path>\r\n </svg>\r\n </div>\r\n</div>\r\n<div style=\"cursor: pointer;\" *ngIf=\"socialIconData?.type === ChannelType.TWITTER\">\r\n <a [href]=\"socialIconData?.link\" target=\"_blank\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"\r\n class=\"icon w-8 h-8\" aria-hidden=\"true\" [simpoColor]=\"color\" [id]=\"sectionId\" [attr.fill]=\"iconColor\">\r\n <path\r\n d=\"M13.6756 10.6218 20.2324 3h-1.5537l-5.6933 6.61788L8.43817 3H3.1935l6.8763 10.0074L3.1935 21h1.55384l6.01226-6.9887L15.5618 21h5.2447l-7.1313-10.3782h.0004Zm-2.1282 2.4738-.6967-.9965-5.54249-7.92939h2.38662l4.47367 6.39919.6967.9966 5.8152 8.318h-2.3866l-4.7454-6.7875v-.0004Z\">\r\n </path>\r\n </svg>\r\n </a>\r\n</div>\r\n<div style=\"cursor: pointer;\" *ngIf=\"socialIconData?.type === ChannelType.LINKEDIN\">\r\n <div (click)=\"openLink('LINKEDIN')\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"\r\n class=\"icon w-8 h-8\" aria-hidden=\"true\" [simpoColor]=\"color\" [id]=\"sectionId\" [attr.fill]=\"iconColor\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M19.5565 2C20.9051 2 22 3.09492 22 4.44352V19.5565C22 20.9051 20.9051 22 19.5565 22H4.44352C3.09492 22 2 20.9051 2 19.5565V4.44352C2 3.09492 3.09488 2 4.44352 2H19.5565ZM8.26801 18.5243V9.71723H5.33676v8.81707h2.93125Zm10.56789 0v-5.0562c0-2.7083-1.446-3.96822-3.3742-3.96822-1.5549 0-2.2513.85512-2.6413 1.45572V9.71723H9.88988c.03887.82737 0 8.81707 0 8.81707h2.93052v-4.9241c0-.2636.0189-.527.0966-.7154.2115-.5264.694-1.0716 1.5037-1.0716 1.0599 0 1.4846.8088 1.4846 1.9936v4.7175h2.9306ZM6.82219 5.4657c-1.00289 0-1.65813.65924-1.65813 1.52352 0 .84601.63532 1.52351 1.61924 1.52351 1.02207 0 1.67719-.6775 1.67719-1.52351-.01895-.86297-.62442-1.52164-1.6384-1.52352Z\"\r\n clip-rule=\"evenodd\"></path>\r\n </svg>\r\n </div>\r\n</div>\r\n<div style=\"cursor: pointer;\" *ngIf=\"socialIconData?.type === ChannelType.YOUTUBE\">\r\n <a [href]=\"socialIconData?.link\" target=\"_blank\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"\r\n class=\"icon w-8 h-8\" aria-hidden=\"true\" [simpoColor]=\"color\" [id]=\"sectionId\" [attr.fill]=\"iconColor\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M21.0053 5.6191c.5996.6477.7946 2.11879.7946 2.11879S22 9.46405 22 11.1908v1.618c0 1.7268-.2001 3.453-.2001 3.453s-.1956 1.4705-.7946 2.1169c-.6859.7654-1.4461.8449-1.8754.8897-.0469.0049-.0899.0094-.1283.0143-2.799.2145-7.0016.222-7.0016.222s-5.20038-.0507-6.80025-.2145c-.07572-.0151-.16746-.0268-.27131-.0402-.50666-.0651-1.3018-.1673-1.93375-.8719-.59957-.6465-.79463-2.1169-.79463-2.1169S2 14.5356 2 12.8082v-1.618c0-1.72615.20006-3.45231.20006-3.45231s.19569-1.47109.79463-2.11879c.68895-.76815 1.4516-.84541 1.88002-.88881.04511-.00457.08651-.00876.12373-.01335C7.79681 4.5 11.995 4.5 11.995 4.5h.0094s4.1982 0 6.9972.21694c.0372.00459.0786.00879.1238.01336.4285.0424 1.1916.12069 1.8799.8888Zm-5.251 6.3832-6.25196 3.7512V8.25117l6.25196 3.75113Z\"\r\n clip-rule=\"evenodd\"></path>\r\n </svg>\r\n </a>\r\n</div>\r\n<div style=\"cursor: pointer;\" *ngIf=\"socialIconData?.type === ChannelType.INSTAGRAM\">\r\n <div (click)=\"openLink('INSTAGRAM')\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"\r\n class=\"icon w-8 h-8\" aria-hidden=\"true\" [simpoColor]=\"color\" [id]=\"sectionId\" [attr.fill]=\"iconColor\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M12 2c5.5191 0 10 4.48086 10 10 0 5.5191-4.4809 10-10 10-5.51914 0-10-4.4809-10-10C2 6.48086 6.48086 2 12 2Zm0 3.75c-1.6974 0-1.9102.00719-2.57688.03762-.66523.03035-1.11957.13601-1.51714.29051-.41098.15972-.75953.37243-1.107.72089-.24746.24746-.56117.69602-.72089 1.107-.1545.39753-.26012.85187-.29051 1.5171C5.75719 10.0898 5.75 10.3026 5.75 12s.00719 1.9102.03758 2.5769c.03039.6652.13601 1.1195.29051 1.5171.15972.411.37243.7595.72089 1.107.24747.2475.69602.5612 1.107.7209.39757.1545.85191.2601 1.51714.2905.66668.0304.87948.0376 2.57688.0376s1.9102-.0072 2.5769-.0376c.6652-.0304 1.1195-.136 1.5171-.2905.411-.1597.7595-.3724 1.107-.7209.2475-.2475.5612-.696.7209-1.107.1545-.3976.2601-.8519.2905-1.5171.0304-.6667.0376-.8795.0376-2.5769 0-1.6974-.0072-1.9102-.0376-2.57688-.0304-.66523-.136-1.11957-.2905-1.5171-.1597-.41098-.3724-.75954-.7209-1.107s-.696-.56117-1.107-.72089c-.3976-.1545-.8519-.26016-1.5171-.29051C13.9102 5.75719 13.6974 5.75 12 5.75Zm0 1.12613c1.6688 0 1.8665.00637 2.5255.03645.6094.02781.9403.12961 1.1606.21519.2917.11336.4999.24883.7186.46754.2187.21867.3542.42692.4675.71864.0856.22023.1874.55113.2152 1.1605.0301.65905.0365.85675.0365 2.52555s-.0064 1.8665-.0365 2.5255c-.0278.6094-.1296.9403-.2152 1.1606-.1133.2917-.2488.4999-.4675.7186-.2187.2187-.4269.3542-.7186.4675-.2203.0856-.5512.1874-1.1606.2152-.6589.0301-.8566.0365-2.5255.0365s-1.8666-.0064-2.52555-.0365c-.60937-.0278-.94027-.1296-1.1605-.2152-.29176-.1133-.49997-.2488-.71868-.4675-.21871-.2187-.35414-.4269-.4675-.7186-.08558-.2203-.18742-.5512-.21523-1.1606-.03008-.659-.03641-.8567-.03641-2.5255s.00633-1.8665.03641-2.52555c.02781-.60937.12965-.94027.21523-1.1605.11336-.29172.24879-.49997.4675-.71864.21871-.21871.42692-.35418.71868-.46754.22023-.08558.55113-.18738 1.1605-.21519.65905-.03008.85675-.03645 2.52555-.03645Zm0 1.91442c-1.7725 0-3.20945 1.43695-3.20945 3.20945S10.2275 15.2095 12 15.2095s3.2095-1.437 3.2095-3.2095c0-1.7725-1.437-3.20945-3.2095-3.20945Zm0 5.29275c-1.1506 0-2.08332-.9327-2.08332-2.0833 0-1.1506.93272-2.08332 2.08332-2.08332S14.0833 10.8494 14.0833 12 13.1506 14.0833 12 14.0833Zm4.0863-5.41955c0 .41422-.3358.74996-.7501.74996-.4141 0-.7499-.33574-.7499-.74996s.3358-.75.7499-.75c.4143 0 .7501.33578.7501.75Z\"\r\n clip-rule=\"evenodd\"></path>\r\n </svg>\r\n </div>\r\n</div>\r\n<div style=\"cursor: pointer;\" *ngIf=\"socialIconData?.type === ChannelType.TELEGRAM\">\r\n <a [href]=\"socialIconData?.link\" target=\"_blank\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"\r\n class=\"icon w-8 h-8\" aria-hidden=\"true\" [simpoColor]=\"color\" [id]=\"sectionId\" [attr.fill]=\"iconColor\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M22 12c0 5.5229-4.4771 10-10 10-5.52285 0-10-4.4771-10-10C2 6.47715 6.47715 2 12 2c5.5229 0 10 4.47715 10 10Zm-9.6417-2.61755c-.9726.40455-2.91653 1.24185-5.83173 2.51195-.47339.1883-.72136.3725-.74394.5525-.03815.3044.24296.4242.86192.5874.0706.0222.14374.0452.21872.0695.51059.166 1.19741.3602 1.55446.3679.32388.007.68537-.1265 1.08446-.4006 2.72381-1.8386 4.12981-2.7679 4.21801-2.788.0623-.0141.1486-.0319.2071.0201.0585.052.0527.1504.0465.1768-.0377.1609-1.5335 1.5516-2.3077 2.2714-.2415.2244-.4127.3836-.4477.42-.0784.0814-.1583.1584-.2351.2325-.4743.4572-.83.8001.0197 1.3601.4084.2691.7352.4917 1.0612.7137.356.2424.7111.4842 1.1705.7854.117.0767.2288.1564.3377.224.4143.2954.7865.5608 1.2464.5184.2672-.0245.5432-.2758.6824-1.0252.3313-1.771.9825-5.6083 1.133-7.18949.0132-.13853-.0024-.31583-.0167-.39367-.0124-.07782-.0412-.18872-.1424-.2708-.1198-.09722-.3048-.11772-.3875-.11627-.3761.00663-.9531.20728-3.7303 1.36238Z\"\r\n clip-rule=\"evenodd\"></path>\r\n </svg>\r\n </a>\r\n</div>\r\n<div style=\"cursor: pointer;\" *ngIf=\"socialIconData?.type === ChannelType.THREADS\">\r\n <a [href]=\"socialIconData?.link\" target=\"_blank\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"\r\n class=\"icon w-8 h-8\" aria-hidden=\"true\" [simpoColor]=\"color\" [id]=\"sectionId\" [attr.fill]=\"iconColor\">\r\n <path\r\n d=\"M12.1482 21.6888h-.0058c-2.89118-.0194-5.1138-.9727-6.60781-2.833-1.32737-1.6568-2.01324-3.9608-2.03659-6.848v-.0136c.02325-2.88921.70922-5.19128 2.03853-6.84806C7.0286 3.28395 9.25316 2.33057 12.1424 2.31119h.0116c2.2168.0155 4.0712.5852 5.511 1.6936 1.3545 1.04252 2.3079 2.52685 2.833 4.41423l-1.6471.45925c-.8914-3.19731-3.1469-4.83085-6.7047-4.85604-2.24853.01744-4.12546.75573-5.28037 2.19355C5.7865 7.56253 5.22842 9.50804 5.20711 12c.02131 2.492.57939 4.4375 1.66066 5.7842 1.15491 1.4398 2.93184 2.1781 5.28043 2.1936 2.118-.0155 3.519-.5097 4.6836-1.651 1.3293-1.3022 1.306-2.9008.8797-3.8736-.25-.5736-.7054-1.0503-1.3196-1.4126-.155 1.0909-.5019 1.9746-1.0367 2.6412-.7151.8894-1.7285 1.3758-3.0113 1.4455-.9708.0523-1.9068-.1763-2.63149-.6472-.85843-.5561-1.36031-1.4049-1.41457-2.3931-.05232-.9612.32942-1.8448 1.07352-2.4881.71114-.6143 1.71104-.9747 2.89304-1.0425.8701-.0485 1.6859-.0097 2.4377.1143-.1007-.5988-.3022-1.07546-.6045-1.41844-.4147-.47282-1.0561-.7131-1.9049-.71891h-.0232c-.6821 0-1.6084.18796-2.19743 1.06577l-1.41844-.95145c.7906-1.17428 2.07337-1.82149 3.61587-1.82149h.0249c2.5791.0155 4.1158 1.59478 4.2689 4.35032.0872.0368.1744.0755.2596.1143 1.2024.5658 2.0831 1.4223 2.5462 2.4784.6424 1.4707.7035 3.8678-1.2498 5.7803-1.494 1.4611-3.3058 2.1219-5.8753 2.1393h-.0058Zm.81-9.4388c-.1958 0-.3924.0058-.5969.0174-1.4824.0833-2.40667.7635-2.3544 1.7304.0543 1.0135 1.1724 1.4844 2.2479 1.4262.9882-.0523 2.2749-.4379 2.4919-2.9957-.5464-.1183-1.1452-.1783-1.7885-.1783Z\">\r\n </path>\r\n </svg>\r\n </a>\r\n</div>\r\n" }]
42
+ ], template: "<div style=\"cursor: pointer;\" *ngIf=\"socialIconData?.type == ChannelType.FACEBOOK\">\r\n <div (click)=\"openLink('FACEBOOK')\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 24 24\" width=\"21\" height=\"21\"\r\n class=\"icon w-8 h-8\" aria-hidden=\"true\" [simpoColor]=\"color\" [id]=\"sectionId\" [attr.fill]=\"iconColor\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M10.4375 21.8784C5.65941 21.1274 2 16.9877 2 12 2 6.48086 6.48086 2 12 2c5.5191 0 10 4.48086 10 10 0 4.9877-3.6594 9.1274-8.4375 9.8784v-6.9878h2.3301L16.3359 12h-2.7724v-1.8758c0-.79084.3874-1.5617 1.6296-1.5617h1.261V6.10156s-1.1443-.19531-2.2385-.19531c-2.2842 0-3.7771 1.38438-3.7771 3.89063V12H7.89844v2.8906h2.53906v6.9878Z\"\r\n clip-rule=\"evenodd\"></path>\r\n </svg>\r\n </div>\r\n</div>\r\n<div style=\"cursor: pointer;\" *ngIf=\"socialIconData?.type === ChannelType.TWITTER\">\r\n <a [href]=\"socialIconData?.link\" target=\"_blank\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 24 24\" width=\"21\" height=\"21\"\r\n class=\"icon w-8 h-8\" aria-hidden=\"true\" [simpoColor]=\"color\" [id]=\"sectionId\" [attr.fill]=\"iconColor\">\r\n <path\r\n d=\"M13.6756 10.6218 20.2324 3h-1.5537l-5.6933 6.61788L8.43817 3H3.1935l6.8763 10.0074L3.1935 21h1.55384l6.01226-6.9887L15.5618 21h5.2447l-7.1313-10.3782h.0004Zm-2.1282 2.4738-.6967-.9965-5.54249-7.92939h2.38662l4.47367 6.39919.6967.9966 5.8152 8.318h-2.3866l-4.7454-6.7875v-.0004Z\">\r\n </path>\r\n </svg>\r\n </a>\r\n</div>\r\n<div style=\"cursor: pointer;\" *ngIf=\"socialIconData?.type === ChannelType.LINKEDIN\">\r\n <div (click)=\"openLink('LINKEDIN')\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 24 24\" width=\"21\" height=\"21\"\r\n class=\"icon w-8 h-8\" aria-hidden=\"true\" [simpoColor]=\"color\" [id]=\"sectionId\" [attr.fill]=\"iconColor\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M19.5565 2C20.9051 2 22 3.09492 22 4.44352V19.5565C22 20.9051 20.9051 22 19.5565 22H4.44352C3.09492 22 2 20.9051 2 19.5565V4.44352C2 3.09492 3.09488 2 4.44352 2H19.5565ZM8.26801 18.5243V9.71723H5.33676v8.81707h2.93125Zm10.56789 0v-5.0562c0-2.7083-1.446-3.96822-3.3742-3.96822-1.5549 0-2.2513.85512-2.6413 1.45572V9.71723H9.88988c.03887.82737 0 8.81707 0 8.81707h2.93052v-4.9241c0-.2636.0189-.527.0966-.7154.2115-.5264.694-1.0716 1.5037-1.0716 1.0599 0 1.4846.8088 1.4846 1.9936v4.7175h2.9306ZM6.82219 5.4657c-1.00289 0-1.65813.65924-1.65813 1.52352 0 .84601.63532 1.52351 1.61924 1.52351 1.02207 0 1.67719-.6775 1.67719-1.52351-.01895-.86297-.62442-1.52164-1.6384-1.52352Z\"\r\n clip-rule=\"evenodd\"></path>\r\n </svg>\r\n </div>\r\n</div>\r\n<div style=\"cursor: pointer;\" *ngIf=\"socialIconData?.type === ChannelType.YOUTUBE\">\r\n <a [href]=\"socialIconData?.link\" target=\"_blank\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 24 24\" width=\"21\" height=\"21\"\r\n class=\"icon w-8 h-8\" aria-hidden=\"true\" [simpoColor]=\"color\" [id]=\"sectionId\" [attr.fill]=\"iconColor\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M21.0053 5.6191c.5996.6477.7946 2.11879.7946 2.11879S22 9.46405 22 11.1908v1.618c0 1.7268-.2001 3.453-.2001 3.453s-.1956 1.4705-.7946 2.1169c-.6859.7654-1.4461.8449-1.8754.8897-.0469.0049-.0899.0094-.1283.0143-2.799.2145-7.0016.222-7.0016.222s-5.20038-.0507-6.80025-.2145c-.07572-.0151-.16746-.0268-.27131-.0402-.50666-.0651-1.3018-.1673-1.93375-.8719-.59957-.6465-.79463-2.1169-.79463-2.1169S2 14.5356 2 12.8082v-1.618c0-1.72615.20006-3.45231.20006-3.45231s.19569-1.47109.79463-2.11879c.68895-.76815 1.4516-.84541 1.88002-.88881.04511-.00457.08651-.00876.12373-.01335C7.79681 4.5 11.995 4.5 11.995 4.5h.0094s4.1982 0 6.9972.21694c.0372.00459.0786.00879.1238.01336.4285.0424 1.1916.12069 1.8799.8888Zm-5.251 6.3832-6.25196 3.7512V8.25117l6.25196 3.75113Z\"\r\n clip-rule=\"evenodd\"></path>\r\n </svg>\r\n </a>\r\n</div>\r\n<div style=\"cursor: pointer;\" *ngIf=\"socialIconData?.type === ChannelType.INSTAGRAM\">\r\n <div (click)=\"openLink('INSTAGRAM')\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 24 24\" width=\"21\" height=\"21\"\r\n class=\"icon w-8 h-8\" aria-hidden=\"true\" [simpoColor]=\"color\" [id]=\"sectionId\" [attr.fill]=\"iconColor\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M12 2c5.5191 0 10 4.48086 10 10 0 5.5191-4.4809 10-10 10-5.51914 0-10-4.4809-10-10C2 6.48086 6.48086 2 12 2Zm0 3.75c-1.6974 0-1.9102.00719-2.57688.03762-.66523.03035-1.11957.13601-1.51714.29051-.41098.15972-.75953.37243-1.107.72089-.24746.24746-.56117.69602-.72089 1.107-.1545.39753-.26012.85187-.29051 1.5171C5.75719 10.0898 5.75 10.3026 5.75 12s.00719 1.9102.03758 2.5769c.03039.6652.13601 1.1195.29051 1.5171.15972.411.37243.7595.72089 1.107.24747.2475.69602.5612 1.107.7209.39757.1545.85191.2601 1.51714.2905.66668.0304.87948.0376 2.57688.0376s1.9102-.0072 2.5769-.0376c.6652-.0304 1.1195-.136 1.5171-.2905.411-.1597.7595-.3724 1.107-.7209.2475-.2475.5612-.696.7209-1.107.1545-.3976.2601-.8519.2905-1.5171.0304-.6667.0376-.8795.0376-2.5769 0-1.6974-.0072-1.9102-.0376-2.57688-.0304-.66523-.136-1.11957-.2905-1.5171-.1597-.41098-.3724-.75954-.7209-1.107s-.696-.56117-1.107-.72089c-.3976-.1545-.8519-.26016-1.5171-.29051C13.9102 5.75719 13.6974 5.75 12 5.75Zm0 1.12613c1.6688 0 1.8665.00637 2.5255.03645.6094.02781.9403.12961 1.1606.21519.2917.11336.4999.24883.7186.46754.2187.21867.3542.42692.4675.71864.0856.22023.1874.55113.2152 1.1605.0301.65905.0365.85675.0365 2.52555s-.0064 1.8665-.0365 2.5255c-.0278.6094-.1296.9403-.2152 1.1606-.1133.2917-.2488.4999-.4675.7186-.2187.2187-.4269.3542-.7186.4675-.2203.0856-.5512.1874-1.1606.2152-.6589.0301-.8566.0365-2.5255.0365s-1.8666-.0064-2.52555-.0365c-.60937-.0278-.94027-.1296-1.1605-.2152-.29176-.1133-.49997-.2488-.71868-.4675-.21871-.2187-.35414-.4269-.4675-.7186-.08558-.2203-.18742-.5512-.21523-1.1606-.03008-.659-.03641-.8567-.03641-2.5255s.00633-1.8665.03641-2.52555c.02781-.60937.12965-.94027.21523-1.1605.11336-.29172.24879-.49997.4675-.71864.21871-.21871.42692-.35418.71868-.46754.22023-.08558.55113-.18738 1.1605-.21519.65905-.03008.85675-.03645 2.52555-.03645Zm0 1.91442c-1.7725 0-3.20945 1.43695-3.20945 3.20945S10.2275 15.2095 12 15.2095s3.2095-1.437 3.2095-3.2095c0-1.7725-1.437-3.20945-3.2095-3.20945Zm0 5.29275c-1.1506 0-2.08332-.9327-2.08332-2.0833 0-1.1506.93272-2.08332 2.08332-2.08332S14.0833 10.8494 14.0833 12 13.1506 14.0833 12 14.0833Zm4.0863-5.41955c0 .41422-.3358.74996-.7501.74996-.4141 0-.7499-.33574-.7499-.74996s.3358-.75.7499-.75c.4143 0 .7501.33578.7501.75Z\"\r\n clip-rule=\"evenodd\"></path>\r\n </svg>\r\n </div>\r\n</div>\r\n<div style=\"cursor: pointer;\" *ngIf=\"socialIconData?.type === ChannelType.TELEGRAM\">\r\n <a [href]=\"socialIconData?.link\" target=\"_blank\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 24 24\" width=\"21\" height=\"21\"\r\n class=\"icon w-8 h-8\" aria-hidden=\"true\" [simpoColor]=\"color\" [id]=\"sectionId\" [attr.fill]=\"iconColor\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M22 12c0 5.5229-4.4771 10-10 10-5.52285 0-10-4.4771-10-10C2 6.47715 6.47715 2 12 2c5.5229 0 10 4.47715 10 10Zm-9.6417-2.61755c-.9726.40455-2.91653 1.24185-5.83173 2.51195-.47339.1883-.72136.3725-.74394.5525-.03815.3044.24296.4242.86192.5874.0706.0222.14374.0452.21872.0695.51059.166 1.19741.3602 1.55446.3679.32388.007.68537-.1265 1.08446-.4006 2.72381-1.8386 4.12981-2.7679 4.21801-2.788.0623-.0141.1486-.0319.2071.0201.0585.052.0527.1504.0465.1768-.0377.1609-1.5335 1.5516-2.3077 2.2714-.2415.2244-.4127.3836-.4477.42-.0784.0814-.1583.1584-.2351.2325-.4743.4572-.83.8001.0197 1.3601.4084.2691.7352.4917 1.0612.7137.356.2424.7111.4842 1.1705.7854.117.0767.2288.1564.3377.224.4143.2954.7865.5608 1.2464.5184.2672-.0245.5432-.2758.6824-1.0252.3313-1.771.9825-5.6083 1.133-7.18949.0132-.13853-.0024-.31583-.0167-.39367-.0124-.07782-.0412-.18872-.1424-.2708-.1198-.09722-.3048-.11772-.3875-.11627-.3761.00663-.9531.20728-3.7303 1.36238Z\"\r\n clip-rule=\"evenodd\"></path>\r\n </svg>\r\n </a>\r\n</div>\r\n<div style=\"cursor: pointer;\" *ngIf=\"socialIconData?.type === ChannelType.THREADS\">\r\n <a [href]=\"socialIconData?.link\" target=\"_blank\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 24 24\" width=\"21\" height=\"21\"\r\n class=\"icon w-8 h-8\" aria-hidden=\"true\" [simpoColor]=\"color\" [id]=\"sectionId\" [attr.fill]=\"iconColor\">\r\n <path\r\n d=\"M12.1482 21.6888h-.0058c-2.89118-.0194-5.1138-.9727-6.60781-2.833-1.32737-1.6568-2.01324-3.9608-2.03659-6.848v-.0136c.02325-2.88921.70922-5.19128 2.03853-6.84806C7.0286 3.28395 9.25316 2.33057 12.1424 2.31119h.0116c2.2168.0155 4.0712.5852 5.511 1.6936 1.3545 1.04252 2.3079 2.52685 2.833 4.41423l-1.6471.45925c-.8914-3.19731-3.1469-4.83085-6.7047-4.85604-2.24853.01744-4.12546.75573-5.28037 2.19355C5.7865 7.56253 5.22842 9.50804 5.20711 12c.02131 2.492.57939 4.4375 1.66066 5.7842 1.15491 1.4398 2.93184 2.1781 5.28043 2.1936 2.118-.0155 3.519-.5097 4.6836-1.651 1.3293-1.3022 1.306-2.9008.8797-3.8736-.25-.5736-.7054-1.0503-1.3196-1.4126-.155 1.0909-.5019 1.9746-1.0367 2.6412-.7151.8894-1.7285 1.3758-3.0113 1.4455-.9708.0523-1.9068-.1763-2.63149-.6472-.85843-.5561-1.36031-1.4049-1.41457-2.3931-.05232-.9612.32942-1.8448 1.07352-2.4881.71114-.6143 1.71104-.9747 2.89304-1.0425.8701-.0485 1.6859-.0097 2.4377.1143-.1007-.5988-.3022-1.07546-.6045-1.41844-.4147-.47282-1.0561-.7131-1.9049-.71891h-.0232c-.6821 0-1.6084.18796-2.19743 1.06577l-1.41844-.95145c.7906-1.17428 2.07337-1.82149 3.61587-1.82149h.0249c2.5791.0155 4.1158 1.59478 4.2689 4.35032.0872.0368.1744.0755.2596.1143 1.2024.5658 2.0831 1.4223 2.5462 2.4784.6424 1.4707.7035 3.8678-1.2498 5.7803-1.494 1.4611-3.3058 2.1219-5.8753 2.1393h-.0058Zm.81-9.4388c-.1958 0-.3924.0058-.5969.0174-1.4824.0833-2.40667.7635-2.3544 1.7304.0543 1.0135 1.1724 1.4844 2.2479 1.4262.9882-.0523 2.2749-.4379 2.4919-2.9957-.5464-.1183-1.1452-.1783-1.7885-.1783Z\">\r\n </path>\r\n </svg>\r\n </a>\r\n</div>\r\n" }]
43
43
  }], ctorParameters: () => [], propDecorators: { socialIconData: [{
44
44
  type: Input
45
45
  }], color: [{
@@ -52,4 +52,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
52
52
  type: HostListener,
53
53
  args: ['window:resize', ['$event']]
54
54
  }] } });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29jaWEtaWNvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lbGVtZW50cy9zb2NpYS1pY29ucy9zb2NpYS1pY29ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL3NvY2lhLWljb25zL3NvY2lhLWljb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFdkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7O0FBWWpFLE1BQU0sT0FBTyxtQkFBbUI7SUFROUI7UUFGQSxnQkFBVyxHQUFHLFdBQVcsQ0FBQTtRQVV6QixxQkFBZ0IsR0FBNkI7WUFDM0MsUUFBUSxFQUFFLHdEQUF3RDtZQUNsRSxTQUFTLEVBQUUsOERBQThEO1lBQ3pFLFFBQVEsRUFBRSw0Q0FBNEM7U0FDdkQsQ0FBQTtRQUVELGdCQUFXLEdBQVcsR0FBRyxDQUFDO1FBYnhCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsUUFBUTtJQUVSLENBQUM7SUFVRCxhQUFhLENBQUMsS0FBYztRQUMxQixJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUN2QyxDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFZO1FBQ25CLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV6QyxJQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxFQUFDLENBQUM7WUFDNUIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNsRCxDQUFDO2FBQ0csQ0FBQztZQUNILE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzlCLENBQUM7SUFDSCxDQUFDOytHQXZDVSxtQkFBbUI7bUdBQW5CLG1CQUFtQiw4UENoQmhDLHV4VUFzRUEseURENURJLFlBQVksbUlBQ1osY0FBYzs7NEZBS0wsbUJBQW1CO2tCQVYvQixTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixjQUFjO3FCQUNmO3dEQU1RLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFtQk4sYUFBYTtzQkFEWixZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvb3RlclNvY2lhbENoYW5uZWxNb2RlbCB9IGZyb20gJy4uLy4uL3NlY3Rpb25zL2Zvb3Rlci1zZWN0aW9uL2Zvb3Rlci1zZWN0aW9uLm1vZGFsJztcclxuaW1wb3J0IHsgQ2hhbm5lbFR5cGUgfSBmcm9tICcuLi8uLi9zdHlsZXMvaW5kZXgnO1xyXG5pbXBvcnQgeyBDb2xvckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jb2xvci5kaXJlY3RpdmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzaW1wby1zb2NpYS1pY29ucycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBDb2xvckRpcmVjdGl2ZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NvY2lhLWljb25zLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vc29jaWEtaWNvbnMuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFNvY2lhSWNvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXR7XHJcblxyXG4gIEBJbnB1dCgpIHNvY2lhbEljb25EYXRhIDogYW55O1xyXG4gIEBJbnB1dCgpIGNvbG9yIDogYW55O1xyXG4gIEBJbnB1dCgpIHNlY3Rpb25JZD86IHN0cmluZztcclxuICBASW5wdXQoKSBpY29uQ29sb3IgOiBhbnk7XHJcbiAgQ2hhbm5lbFR5cGUgPSBDaGFubmVsVHlwZVxyXG5cclxuICBjb25zdHJ1Y3Rvcigpe1xyXG4gICAgdGhpcy5nZXRTY3JlZW5TaXplKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgfVxyXG5cclxuICBzb2NpYWxNZWRpYUxpbmtzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ30gPSB7XHJcbiAgICBGQUNFQk9PSzogJ2h0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9wcm9maWxlLnBocD9pZD02MTU1NTAyOTM1MDM0OScsXHJcbiAgICBJTlNUQUdSQU06ICdodHRwczovL3d3dy5pbnN0YWdyYW0uY29tL3NpbXBvLmFpP2lnc2g9TVRobE9ESnBjV0o2Wkd4a2RnPT0nLFxyXG4gICAgTElOS0VESU46ICdodHRwczovL3d3dy5saW5rZWRpbi5jb20vY29tcGFueS9zaW1wby1haS8nLFxyXG4gIH1cclxuXHJcbiAgc2NyZWVuV2lkdGg6IG51bWJlciA9IDQ3NTtcclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcclxuICBnZXRTY3JlZW5TaXplKGV2ZW50PzogbnVtYmVyKSB7XHJcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgdGhpcy5zY3JlZW5XaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3BlbkxpbmsodHlwZTogc3RyaW5nKXtcclxuICAgIGNvbnN0IGxpbmsgPSB0aGlzLnNvY2lhbE1lZGlhTGlua3NbdHlwZV07XHJcblxyXG4gICAgaWYodGhpcy5zb2NpYWxJY29uRGF0YT8ubGluayl7XHJcbiAgICAgIHdpbmRvdy5vcGVuKHRoaXMuc29jaWFsSWNvbkRhdGEubGluaywgJ19ibGFuaycpO1xyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgd2luZG93Lm9wZW4obGluaywgJ19ibGFuaycpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO1wiICpuZ0lmPVwic29jaWFsSWNvbkRhdGE/LnR5cGUgPT0gQ2hhbm5lbFR5cGUuRkFDRUJPT0tcIj5cclxuICAgIDxkaXYgKGNsaWNrKT1cIm9wZW5MaW5rKCdGQUNFQk9PSycpXCI+XHJcbiAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJpY29uIHctOCBoLThcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBbc2ltcG9Db2xvcl09XCJjb2xvclwiIFtpZF09XCJzZWN0aW9uSWRcIiBbYXR0ci5maWxsXT1cImljb25Db2xvclwiPlxyXG4gICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgICAgIGQ9XCJNMTAuNDM3NSAyMS44Nzg0QzUuNjU5NDEgMjEuMTI3NCAyIDE2Ljk4NzcgMiAxMiAyIDYuNDgwODYgNi40ODA4NiAyIDEyIDJjNS41MTkxIDAgMTAgNC40ODA4NiAxMCAxMCAwIDQuOTg3Ny0zLjY1OTQgOS4xMjc0LTguNDM3NSA5Ljg3ODR2LTYuOTg3OGgyLjMzMDFMMTYuMzM1OSAxMmgtMi43NzI0di0xLjg3NThjMC0uNzkwODQuMzg3NC0xLjU2MTcgMS42Mjk2LTEuNTYxN2gxLjI2MVY2LjEwMTU2cy0xLjE0NDMtLjE5NTMxLTIuMjM4NS0uMTk1MzFjLTIuMjg0MiAwLTMuNzc3MSAxLjM4NDM4LTMuNzc3MSAzLjg5MDYzVjEySDcuODk4NDR2Mi44OTA2aDIuNTM5MDZ2Ni45ODc4WlwiXHJcbiAgICAgICAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCI+PC9wYXRoPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO1wiICpuZ0lmPVwic29jaWFsSWNvbkRhdGE/LnR5cGUgPT09IENoYW5uZWxUeXBlLlRXSVRURVJcIj5cclxuICAgIDxhIFtocmVmXT1cInNvY2lhbEljb25EYXRhPy5saW5rXCIgdGFyZ2V0PVwiX2JsYW5rXCI+XHJcbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImljb24gdy04IGgtOFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiICBbc2ltcG9Db2xvcl09XCJjb2xvclwiIFtpZF09XCJzZWN0aW9uSWRcIiBbYXR0ci5maWxsXT1cImljb25Db2xvclwiPlxyXG4gICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgZD1cIk0xMy42NzU2IDEwLjYyMTggMjAuMjMyNCAzaC0xLjU1MzdsLTUuNjkzMyA2LjYxNzg4TDguNDM4MTcgM0gzLjE5MzVsNi44NzYzIDEwLjAwNzRMMy4xOTM1IDIxaDEuNTUzODRsNi4wMTIyNi02Ljk4ODdMMTUuNTYxOCAyMWg1LjI0NDdsLTcuMTMxMy0xMC4zNzgyaC4wMDA0Wm0tMi4xMjgyIDIuNDczOC0uNjk2Ny0uOTk2NS01LjU0MjQ5LTcuOTI5MzloMi4zODY2Mmw0LjQ3MzY3IDYuMzk5MTkuNjk2Ny45OTY2IDUuODE1MiA4LjMxOGgtMi4zODY2bC00Ljc0NTQtNi43ODc1di0uMDAwNFpcIj5cclxuICAgICAgICAgICAgPC9wYXRoPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgPC9hPlxyXG48L2Rpdj5cclxuPGRpdiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIiAqbmdJZj1cInNvY2lhbEljb25EYXRhPy50eXBlID09PSBDaGFubmVsVHlwZS5MSU5LRURJTlwiPlxyXG4gICAgPGRpdiAoY2xpY2spPVwib3BlbkxpbmsoJ0xJTktFRElOJylcIj5cclxuICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImljb24gdy04IGgtOFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiICBbc2ltcG9Db2xvcl09XCJjb2xvclwiIFtpZF09XCJzZWN0aW9uSWRcIiBbYXR0ci5maWxsXT1cImljb25Db2xvclwiPlxyXG4gICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgICAgIGQ9XCJNMTkuNTU2NSAyQzIwLjkwNTEgMiAyMiAzLjA5NDkyIDIyIDQuNDQzNTJWMTkuNTU2NUMyMiAyMC45MDUxIDIwLjkwNTEgMjIgMTkuNTU2NSAyMkg0LjQ0MzUyQzMuMDk0OTIgMjIgMiAyMC45MDUxIDIgMTkuNTU2NVY0LjQ0MzUyQzIgMy4wOTQ5MiAzLjA5NDg4IDIgNC40NDM1MiAySDE5LjU1NjVaTTguMjY4MDEgMTguNTI0M1Y5LjcxNzIzSDUuMzM2NzZ2OC44MTcwN2gyLjkzMTI1Wm0xMC41Njc4OSAwdi01LjA1NjJjMC0yLjcwODMtMS40NDYtMy45NjgyMi0zLjM3NDItMy45NjgyMi0xLjU1NDkgMC0yLjI1MTMuODU1MTItMi42NDEzIDEuNDU1NzJWOS43MTcyM0g5Ljg4OTg4Yy4wMzg4Ny44MjczNyAwIDguODE3MDcgMCA4LjgxNzA3aDIuOTMwNTJ2LTQuOTI0MWMwLS4yNjM2LjAxODktLjUyNy4wOTY2LS43MTU0LjIxMTUtLjUyNjQuNjk0LTEuMDcxNiAxLjUwMzctMS4wNzE2IDEuMDU5OSAwIDEuNDg0Ni44MDg4IDEuNDg0NiAxLjk5MzZ2NC43MTc1aDIuOTMwNlpNNi44MjIxOSA1LjQ2NTdjLTEuMDAyODkgMC0xLjY1ODEzLjY1OTI0LTEuNjU4MTMgMS41MjM1MiAwIC44NDYwMS42MzUzMiAxLjUyMzUxIDEuNjE5MjQgMS41MjM1MSAxLjAyMjA3IDAgMS42NzcxOS0uNjc3NSAxLjY3NzE5LTEuNTIzNTEtLjAxODk1LS44NjI5Ny0uNjI0NDItMS41MjE2NC0xLjYzODQtMS41MjM1MlpcIlxyXG4gICAgICAgICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiPjwvcGF0aD5cclxuICAgICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuPGRpdiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIiAqbmdJZj1cInNvY2lhbEljb25EYXRhPy50eXBlID09PSBDaGFubmVsVHlwZS5ZT1VUVUJFXCI+XHJcbiAgICA8YSBbaHJlZl09XCJzb2NpYWxJY29uRGF0YT8ubGlua1wiIHRhcmdldD1cIl9ibGFua1wiPlxyXG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJpY29uIHctOCBoLThcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAgW3NpbXBvQ29sb3JdPVwiY29sb3JcIiBbaWRdPVwic2VjdGlvbklkXCIgW2F0dHIuZmlsbF09XCJpY29uQ29sb3JcIj5cclxuICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICAgICAgICBkPVwiTTIxLjAwNTMgNS42MTkxYy41OTk2LjY0NzcuNzk0NiAyLjExODc5Ljc5NDYgMi4xMTg3OVMyMiA5LjQ2NDA1IDIyIDExLjE5MDh2MS42MThjMCAxLjcyNjgtLjIwMDEgMy40NTMtLjIwMDEgMy40NTNzLS4xOTU2IDEuNDcwNS0uNzk0NiAyLjExNjljLS42ODU5Ljc2NTQtMS40NDYxLjg0NDktMS44NzU0Ljg4OTctLjA0NjkuMDA0OS0uMDg5OS4wMDk0LS4xMjgzLjAxNDMtMi43OTkuMjE0NS03LjAwMTYuMjIyLTcuMDAxNi4yMjJzLTUuMjAwMzgtLjA1MDctNi44MDAyNS0uMjE0NWMtLjA3NTcyLS4wMTUxLS4xNjc0Ni0uMDI2OC0uMjcxMzEtLjA0MDItLjUwNjY2LS4wNjUxLTEuMzAxOC0uMTY3My0xLjkzMzc1LS44NzE5LS41OTk1Ny0uNjQ2NS0uNzk0NjMtMi4xMTY5LS43OTQ2My0yLjExNjlTMiAxNC41MzU2IDIgMTIuODA4MnYtMS42MThjMC0xLjcyNjE1LjIwMDA2LTMuNDUyMzEuMjAwMDYtMy40NTIzMXMuMTk1NjktMS40NzEwOS43OTQ2My0yLjExODc5Yy42ODg5NS0uNzY4MTUgMS40NTE2LS44NDU0MSAxLjg4MDAyLS44ODg4MS4wNDUxMS0uMDA0NTcuMDg2NTEtLjAwODc2LjEyMzczLS4wMTMzNUM3Ljc5NjgxIDQuNSAxMS45OTUgNC41IDExLjk5NSA0LjVoLjAwOTRzNC4xOTgyIDAgNi45OTcyLjIxNjk0Yy4wMzcyLjAwNDU5LjA3ODYuMDA4NzkuMTIzOC4wMTMzNi40Mjg1LjA0MjQgMS4xOTE2LjEyMDY5IDEuODc5OS44ODg4Wm0tNS4yNTEgNi4zODMyLTYuMjUxOTYgMy43NTEyVjguMjUxMTdsNi4yNTE5NiAzLjc1MTEzWlwiXHJcbiAgICAgICAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCI+PC9wYXRoPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgPC9hPlxyXG48L2Rpdj5cclxuPGRpdiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIiAqbmdJZj1cInNvY2lhbEljb25EYXRhPy50eXBlID09PSBDaGFubmVsVHlwZS5JTlNUQUdSQU1cIj5cclxuICAgIDxkaXYgKGNsaWNrKT1cIm9wZW5MaW5rKCdJTlNUQUdSQU0nKVwiPlxyXG4gICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbiB3LTggaC04XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgIFtzaW1wb0NvbG9yXT1cImNvbG9yXCIgW2lkXT1cInNlY3Rpb25JZFwiIFthdHRyLmZpbGxdPVwiaWNvbkNvbG9yXCI+XHJcbiAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgICAgZD1cIk0xMiAyYzUuNTE5MSAwIDEwIDQuNDgwODYgMTAgMTAgMCA1LjUxOTEtNC40ODA5IDEwLTEwIDEwLTUuNTE5MTQgMC0xMC00LjQ4MDktMTAtMTBDMiA2LjQ4MDg2IDYuNDgwODYgMiAxMiAyWm0wIDMuNzVjLTEuNjk3NCAwLTEuOTEwMi4wMDcxOS0yLjU3Njg4LjAzNzYyLS42NjUyMy4wMzAzNS0xLjExOTU3LjEzNjAxLTEuNTE3MTQuMjkwNTEtLjQxMDk4LjE1OTcyLS43NTk1My4zNzI0My0xLjEwNy43MjA4OS0uMjQ3NDYuMjQ3NDYtLjU2MTE3LjY5NjAyLS43MjA4OSAxLjEwNy0uMTU0NS4zOTc1My0uMjYwMTIuODUxODctLjI5MDUxIDEuNTE3MUM1Ljc1NzE5IDEwLjA4OTggNS43NSAxMC4zMDI2IDUuNzUgMTJzLjAwNzE5IDEuOTEwMi4wMzc1OCAyLjU3NjljLjAzMDM5LjY2NTIuMTM2MDEgMS4xMTk1LjI5MDUxIDEuNTE3MS4xNTk3Mi40MTEuMzcyNDMuNzU5NS43MjA4OSAxLjEwNy4yNDc0Ny4yNDc1LjY5NjAyLjU2MTIgMS4xMDcuNzIwOS4zOTc1Ny4xNTQ1Ljg1MTkxLjI2MDEgMS41MTcxNC4yOTA1LjY2NjY4LjAzMDQuODc5NDguMDM3NiAyLjU3Njg4LjAzNzZzMS45MTAyLS4wMDcyIDIuNTc2OS0uMDM3NmMuNjY1Mi0uMDMwNCAxLjExOTUtLjEzNiAxLjUxNzEtLjI5MDUuNDExLS4xNTk3Ljc1OTUtLjM3MjQgMS4xMDctLjcyMDkuMjQ3NS0uMjQ3NS41NjEyLS42OTYuNzIwOS0xLjEwNy4xNTQ1LS4zOTc2LjI2MDEtLjg1MTkuMjkwNS0xLjUxNzEuMDMwNC0uNjY2Ny4wMzc2LS44Nzk1LjAzNzYtMi41NzY5IDAtMS42OTc0LS4wMDcyLTEuOTEwMi0uMDM3Ni0yLjU3Njg4LS4wMzA0LS42NjUyMy0uMTM2LTEuMTE5NTctLjI5MDUtMS41MTcxLS4xNTk3LS40MTA5OC0uMzcyNC0uNzU5NTQtLjcyMDktMS4xMDdzLS42OTYtLjU2MTE3LTEuMTA3LS43MjA4OWMtLjM5NzYtLjE1NDUtLjg1MTktLjI2MDE2LTEuNTE3MS0uMjkwNTFDMTMuOTEwMiA1Ljc1NzE5IDEzLjY5NzQgNS43NSAxMiA1Ljc1Wm0wIDEuMTI2MTNjMS42Njg4IDAgMS44NjY1LjAwNjM3IDIuNTI1NS4wMzY0NS42MDk0LjAyNzgxLjk0MDMuMTI5NjEgMS4xNjA2LjIxNTE5LjI5MTcuMTEzMzYuNDk5OS4yNDg4My43MTg2LjQ2NzU0LjIxODcuMjE4NjcuMzU0Mi40MjY5Mi40Njc1LjcxODY0LjA4NTYuMjIwMjMuMTg3NC41NTExMy4yMTUyIDEuMTYwNS4wMzAxLjY1OTA1LjAzNjUuODU2NzUuMDM2NSAyLjUyNTU1cy0uMDA2NCAxLjg2NjUtLjAzNjUgMi41MjU1Yy0uMDI3OC42MDk0LS4xMjk2Ljk0MDMtLjIxNTIgMS4xNjA2LS4xMTMzLjI5MTctLjI0ODguNDk5OS0uNDY3NS43MTg2LS4yMTg3LjIxODctLjQyNjkuMzU0Mi0uNzE4Ni40Njc1LS4yMjAzLjA4NTYtLjU1MTIuMTg3NC0xLjE2MDYuMjE1Mi0uNjU4OS4wMzAxLS44NTY2LjAzNjUtMi41MjU1LjAzNjVzLTEuODY2Ni0uMDA2NC0yLjUyNTU1LS4wMzY1Yy0uNjA5MzctLjAyNzgtLjk0MDI3LS4xMjk2LTEuMTYwNS0uMjE1Mi0uMjkxNzYtLjExMzMtLjQ5OTk3LS4yNDg4LS43MTg2OC0uNDY3NS0uMjE4NzEtLjIxODctLjM1NDE0LS40MjY5LS40Njc1LS43MTg2LS4wODU1OC0uMjIwMy0uMTg3NDItLjU1MTItLjIxNTIzLTEuMTYwNi0uMDMwMDgtLjY1OS0uMDM2NDEtLjg1NjctLjAzNjQxLTIuNTI1NXMuMDA2MzMtMS44NjY1LjAzNjQxLTIuNTI1NTVjLjAyNzgxLS42MDkzNy4xMjk2NS0uOTQwMjcuMjE1MjMtMS4xNjA1LjExMzM2LS4yOTE3Mi4yNDg3OS0uNDk5OTcuNDY3NS0uNzE4NjQuMjE4NzEtLjIxODcxLjQyNjkyLS4zNTQxOC43MTg2OC0uNDY3NTQuMjIwMjMtLjA4NTU4LjU1MTEzLS4xODczOCAxLjE2MDUtLjIxNTE5LjY1OTA1LS4wMzAwOC44NTY3NS0uMDM2NDUgMi41MjU1NS0uMDM2NDVabTAgMS45MTQ0MmMtMS43NzI1IDAtMy4yMDk0NSAxLjQzNjk1LTMuMjA5NDUgMy4yMDk0NVMxMC4yMjc1IDE1LjIwOTUgMTIgMTUuMjA5NXMzLjIwOTUtMS40MzcgMy4yMDk1LTMuMjA5NWMwLTEuNzcyNS0xLjQzNy0zLjIwOTQ1LTMuMjA5NS0zLjIwOTQ1Wm0wIDUuMjkyNzVjLTEuMTUwNiAwLTIuMDgzMzItLjkzMjctMi4wODMzMi0yLjA4MzMgMC0xLjE1MDYuOTMyNzItMi4wODMzMiAyLjA4MzMyLTIuMDgzMzJTMTQuMDgzMyAxMC44NDk0IDE0LjA4MzMgMTIgMTMuMTUwNiAxNC4wODMzIDEyIDE0LjA4MzNabTQuMDg2My01LjQxOTU1YzAgLjQxNDIyLS4zMzU4Ljc0OTk2LS43NTAxLjc0OTk2LS40MTQxIDAtLjc0OTktLjMzNTc0LS43NDk5LS43NDk5NnMuMzM1OC0uNzUuNzQ5OS0uNzVjLjQxNDMgMCAuNzUwMS4zMzU3OC43NTAxLjc1WlwiXHJcbiAgICAgICAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCI+PC9wYXRoPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO1wiICpuZ0lmPVwic29jaWFsSWNvbkRhdGE/LnR5cGUgPT09IENoYW5uZWxUeXBlLlRFTEVHUkFNXCI+XHJcbiAgICA8YSBbaHJlZl09XCJzb2NpYWxJY29uRGF0YT8ubGlua1wiIHRhcmdldD1cIl9ibGFua1wiPlxyXG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJpY29uIHctOCBoLThcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBbc2ltcG9Db2xvcl09XCJjb2xvclwiIFtpZF09XCJzZWN0aW9uSWRcIiBbYXR0ci5maWxsXT1cImljb25Db2xvclwiPlxyXG4gICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgICAgIGQ9XCJNMjIgMTJjMCA1LjUyMjktNC40NzcxIDEwLTEwIDEwLTUuNTIyODUgMC0xMC00LjQ3NzEtMTAtMTBDMiA2LjQ3NzE1IDYuNDc3MTUgMiAxMiAyYzUuNTIyOSAwIDEwIDQuNDc3MTUgMTAgMTBabS05LjY0MTctMi42MTc1NWMtLjk3MjYuNDA0NTUtMi45MTY1MyAxLjI0MTg1LTUuODMxNzMgMi41MTE5NS0uNDczMzkuMTg4My0uNzIxMzYuMzcyNS0uNzQzOTQuNTUyNS0uMDM4MTUuMzA0NC4yNDI5Ni40MjQyLjg2MTkyLjU4NzQuMDcwNi4wMjIyLjE0Mzc0LjA0NTIuMjE4NzIuMDY5NS41MTA1OS4xNjYgMS4xOTc0MS4zNjAyIDEuNTU0NDYuMzY3OS4zMjM4OC4wMDcuNjg1MzctLjEyNjUgMS4wODQ0Ni0uNDAwNiAyLjcyMzgxLTEuODM4NiA0LjEyOTgxLTIuNzY3OSA0LjIxODAxLTIuNzg4LjA2MjMtLjAxNDEuMTQ4Ni0uMDMxOS4yMDcxLjAyMDEuMDU4NS4wNTIuMDUyNy4xNTA0LjA0NjUuMTc2OC0uMDM3Ny4xNjA5LTEuNTMzNSAxLjU1MTYtMi4zMDc3IDIuMjcxNC0uMjQxNS4yMjQ0LS40MTI3LjM4MzYtLjQ0NzcuNDItLjA3ODQuMDgxNC0uMTU4My4xNTg0LS4yMzUxLjIzMjUtLjQ3NDMuNDU3Mi0uODMuODAwMS4wMTk3IDEuMzYwMS40MDg0LjI2OTEuNzM1Mi40OTE3IDEuMDYxMi43MTM3LjM1Ni4yNDI0LjcxMTEuNDg0MiAxLjE3MDUuNzg1NC4xMTcuMDc2Ny4yMjg4LjE1NjQuMzM3Ny4yMjQuNDE0My4yOTU0Ljc4NjUuNTYwOCAxLjI0NjQuNTE4NC4yNjcyLS4wMjQ1LjU0MzItLjI3NTguNjgyNC0xLjAyNTIuMzMxMy0xLjc3MS45ODI1LTUuNjA4MyAxLjEzMy03LjE4OTQ5LjAxMzItLjEzODUzLS4wMDI0LS4zMTU4My0uMDE2Ny0uMzkzNjctLjAxMjQtLjA3NzgyLS4wNDEyLS4xODg3Mi0uMTQyNC0uMjcwOC0uMTE5OC0uMDk3MjItLjMwNDgtLjExNzcyLS4zODc1LS4xMTYyNy0uMzc2MS4wMDY2My0uOTUzMS4yMDcyOC0zLjczMDMgMS4zNjIzOFpcIlxyXG4gICAgICAgICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiPjwvcGF0aD5cclxuICAgICAgICA8L3N2Zz5cclxuICAgIDwvYT5cclxuPC9kaXY+XHJcbjxkaXYgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCIgKm5nSWY9XCJzb2NpYWxJY29uRGF0YT8udHlwZSA9PT0gQ2hhbm5lbFR5cGUuVEhSRUFEU1wiPlxyXG4gICAgPGEgW2hyZWZdPVwic29jaWFsSWNvbkRhdGE/LmxpbmtcIiB0YXJnZXQ9XCJfYmxhbmtcIj5cclxuICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbiB3LTggaC04XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgIFtzaW1wb0NvbG9yXT1cImNvbG9yXCIgW2lkXT1cInNlY3Rpb25JZFwiIFthdHRyLmZpbGxdPVwiaWNvbkNvbG9yXCI+XHJcbiAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICBkPVwiTTEyLjE0ODIgMjEuNjg4OGgtLjAwNThjLTIuODkxMTgtLjAxOTQtNS4xMTM4LS45NzI3LTYuNjA3ODEtMi44MzMtMS4zMjczNy0xLjY1NjgtMi4wMTMyNC0zLjk2MDgtMi4wMzY1OS02Ljg0OHYtLjAxMzZjLjAyMzI1LTIuODg5MjEuNzA5MjItNS4xOTEyOCAyLjAzODUzLTYuODQ4MDZDNy4wMjg2IDMuMjgzOTUgOS4yNTMxNiAyLjMzMDU3IDEyLjE0MjQgMi4zMTExOWguMDExNmMyLjIxNjguMDE1NSA0LjA3MTIuNTg1MiA1LjUxMSAxLjY5MzYgMS4zNTQ1IDEuMDQyNTIgMi4zMDc5IDIuNTI2ODUgMi44MzMgNC40MTQyM2wtMS42NDcxLjQ1OTI1Yy0uODkxNC0zLjE5NzMxLTMuMTQ2OS00LjgzMDg1LTYuNzA0Ny00Ljg1NjA0LTIuMjQ4NTMuMDE3NDQtNC4xMjU0Ni43NTU3My01LjI4MDM3IDIuMTkzNTVDNS43ODY1IDcuNTYyNTMgNS4yMjg0MiA5LjUwODA0IDUuMjA3MTEgMTJjLjAyMTMxIDIuNDkyLjU3OTM5IDQuNDM3NSAxLjY2MDY2IDUuNzg0MiAxLjE1NDkxIDEuNDM5OCAyLjkzMTg0IDIuMTc4MSA1LjI4MDQzIDIuMTkzNiAyLjExOC0uMDE1NSAzLjUxOS0uNTA5NyA0LjY4MzYtMS42NTEgMS4zMjkzLTEuMzAyMiAxLjMwNi0yLjkwMDguODc5Ny0zLjg3MzYtLjI1LS41NzM2LS43MDU0LTEuMDUwMy0xLjMxOTYtMS40MTI2LS4xNTUgMS4wOTA5LS41MDE5IDEuOTc0Ni0xLjAzNjcgMi42NDEyLS43MTUxLjg4OTQtMS43Mjg1IDEuMzc1OC0zLjAxMTMgMS40NDU1LS45NzA4LjA1MjMtMS45MDY4LS4xNzYzLTIuNjMxNDktLjY0NzItLjg1ODQzLS41NTYxLTEuMzYwMzEtMS40MDQ5LTEuNDE0NTctMi4zOTMxLS4wNTIzMi0uOTYxMi4zMjk0Mi0xLjg0NDggMS4wNzM1Mi0yLjQ4ODEuNzExMTQtLjYxNDMgMS43MTEwNC0uOTc0NyAyLjg5MzA0LTEuMDQyNS44NzAxLS4wNDg1IDEuNjg1OS0uMDA5NyAyLjQzNzcuMTE0My0uMTAwNy0uNTk4OC0uMzAyMi0xLjA3NTQ2LS42MDQ1LTEuNDE4NDQtLjQxNDctLjQ3MjgyLTEuMDU2MS0uNzEzMS0xLjkwNDktLjcxODkxaC0uMDIzMmMtLjY4MjEgMC0xLjYwODQuMTg3OTYtMi4xOTc0MyAxLjA2NTc3bC0xLjQxODQ0LS45NTE0NWMuNzkwNi0xLjE3NDI4IDIuMDczMzctMS44MjE0OSAzLjYxNTg3LTEuODIxNDloLjAyNDljMi41NzkxLjAxNTUgNC4xMTU4IDEuNTk0NzggNC4yNjg5IDQuMzUwMzIuMDg3Mi4wMzY4LjE3NDQuMDc1NS4yNTk2LjExNDMgMS4yMDI0LjU2NTggMi4wODMxIDEuNDIyMyAyLjU0NjIgMi40Nzg0LjY0MjQgMS40NzA3LjcwMzUgMy44Njc4LTEuMjQ5OCA1Ljc4MDMtMS40OTQgMS40NjExLTMuMzA1OCAyLjEyMTktNS44NzUzIDIuMTM5M2gtLjAwNThabS44MS05LjQzODhjLS4xOTU4IDAtLjM5MjQuMDA1OC0uNTk2OS4wMTc0LTEuNDgyNC4wODMzLTIuNDA2NjcuNzYzNS0yLjM1NDQgMS43MzA0LjA1NDMgMS4wMTM1IDEuMTcyNCAxLjQ4NDQgMi4yNDc5IDEuNDI2Mi45ODgyLS4wNTIzIDIuMjc0OS0uNDM3OSAyLjQ5MTktMi45OTU3LS41NDY0LS4xMTgzLTEuMTQ1Mi0uMTc4My0xLjc4ODUtLjE3ODNaXCI+XHJcbiAgICAgICAgICAgIDwvcGF0aD5cclxuICAgICAgICA8L3N2Zz5cclxuICAgIDwvYT5cclxuPC9kaXY+XHJcbiJdfQ==
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29jaWEtaWNvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lbGVtZW50cy9zb2NpYS1pY29ucy9zb2NpYS1pY29ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL3NvY2lhLWljb25zL3NvY2lhLWljb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFdkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7O0FBWWpFLE1BQU0sT0FBTyxtQkFBbUI7SUFROUI7UUFGQSxnQkFBVyxHQUFHLFdBQVcsQ0FBQTtRQVV6QixxQkFBZ0IsR0FBNkI7WUFDM0MsUUFBUSxFQUFFLHdEQUF3RDtZQUNsRSxTQUFTLEVBQUUsOERBQThEO1lBQ3pFLFFBQVEsRUFBRSw0Q0FBNEM7U0FDdkQsQ0FBQTtRQUVELGdCQUFXLEdBQVcsR0FBRyxDQUFDO1FBYnhCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsUUFBUTtJQUVSLENBQUM7SUFVRCxhQUFhLENBQUMsS0FBYztRQUMxQixJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUN2QyxDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFZO1FBQ25CLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV6QyxJQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxFQUFDLENBQUM7WUFDNUIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNsRCxDQUFDO2FBQ0csQ0FBQztZQUNILE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzlCLENBQUM7SUFDSCxDQUFDOytHQXZDVSxtQkFBbUI7bUdBQW5CLG1CQUFtQiw4UENoQmhDLHV4VUFzRUEseURENURJLFlBQVksbUlBQ1osY0FBYzs7NEZBS0wsbUJBQW1CO2tCQVYvQixTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixjQUFjO3FCQUNmO3dEQU1RLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFtQk4sYUFBYTtzQkFEWixZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvb3RlclNvY2lhbENoYW5uZWxNb2RlbCB9IGZyb20gJy4uLy4uL3NlY3Rpb25zL2Zvb3Rlci1zZWN0aW9uL2Zvb3Rlci1zZWN0aW9uLm1vZGFsJztcclxuaW1wb3J0IHsgQ2hhbm5lbFR5cGUgfSBmcm9tICcuLi8uLi9zdHlsZXMvaW5kZXgnO1xyXG5pbXBvcnQgeyBDb2xvckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jb2xvci5kaXJlY3RpdmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzaW1wby1zb2NpYS1pY29ucycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBDb2xvckRpcmVjdGl2ZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NvY2lhLWljb25zLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vc29jaWEtaWNvbnMuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFNvY2lhSWNvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXR7XHJcblxyXG4gIEBJbnB1dCgpIHNvY2lhbEljb25EYXRhIDogYW55O1xyXG4gIEBJbnB1dCgpIGNvbG9yIDogYW55O1xyXG4gIEBJbnB1dCgpIHNlY3Rpb25JZD86IHN0cmluZztcclxuICBASW5wdXQoKSBpY29uQ29sb3IgOiBhbnk7XHJcbiAgQ2hhbm5lbFR5cGUgPSBDaGFubmVsVHlwZVxyXG5cclxuICBjb25zdHJ1Y3Rvcigpe1xyXG4gICAgdGhpcy5nZXRTY3JlZW5TaXplKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgfVxyXG5cclxuICBzb2NpYWxNZWRpYUxpbmtzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ30gPSB7XHJcbiAgICBGQUNFQk9PSzogJ2h0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9wcm9maWxlLnBocD9pZD02MTU1NTAyOTM1MDM0OScsXHJcbiAgICBJTlNUQUdSQU06ICdodHRwczovL3d3dy5pbnN0YWdyYW0uY29tL3NpbXBvLmFpP2lnc2g9TVRobE9ESnBjV0o2Wkd4a2RnPT0nLFxyXG4gICAgTElOS0VESU46ICdodHRwczovL3d3dy5saW5rZWRpbi5jb20vY29tcGFueS9zaW1wby1haS8nLFxyXG4gIH1cclxuXHJcbiAgc2NyZWVuV2lkdGg6IG51bWJlciA9IDQ3NTtcclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcclxuICBnZXRTY3JlZW5TaXplKGV2ZW50PzogbnVtYmVyKSB7XHJcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgdGhpcy5zY3JlZW5XaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3BlbkxpbmsodHlwZTogc3RyaW5nKXtcclxuICAgIGNvbnN0IGxpbmsgPSB0aGlzLnNvY2lhbE1lZGlhTGlua3NbdHlwZV07XHJcblxyXG4gICAgaWYodGhpcy5zb2NpYWxJY29uRGF0YT8ubGluayl7XHJcbiAgICAgIHdpbmRvdy5vcGVuKHRoaXMuc29jaWFsSWNvbkRhdGEubGluaywgJ19ibGFuaycpO1xyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgd2luZG93Lm9wZW4obGluaywgJ19ibGFuaycpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO1wiICpuZ0lmPVwic29jaWFsSWNvbkRhdGE/LnR5cGUgPT0gQ2hhbm5lbFR5cGUuRkFDRUJPT0tcIj5cclxuICAgIDxkaXYgKGNsaWNrKT1cIm9wZW5MaW5rKCdGQUNFQk9PSycpXCI+XHJcbiAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIxXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJpY29uIHctOCBoLThcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBbc2ltcG9Db2xvcl09XCJjb2xvclwiIFtpZF09XCJzZWN0aW9uSWRcIiBbYXR0ci5maWxsXT1cImljb25Db2xvclwiPlxyXG4gICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgICAgIGQ9XCJNMTAuNDM3NSAyMS44Nzg0QzUuNjU5NDEgMjEuMTI3NCAyIDE2Ljk4NzcgMiAxMiAyIDYuNDgwODYgNi40ODA4NiAyIDEyIDJjNS41MTkxIDAgMTAgNC40ODA4NiAxMCAxMCAwIDQuOTg3Ny0zLjY1OTQgOS4xMjc0LTguNDM3NSA5Ljg3ODR2LTYuOTg3OGgyLjMzMDFMMTYuMzM1OSAxMmgtMi43NzI0di0xLjg3NThjMC0uNzkwODQuMzg3NC0xLjU2MTcgMS42Mjk2LTEuNTYxN2gxLjI2MVY2LjEwMTU2cy0xLjE0NDMtLjE5NTMxLTIuMjM4NS0uMTk1MzFjLTIuMjg0MiAwLTMuNzc3MSAxLjM4NDM4LTMuNzc3MSAzLjg5MDYzVjEySDcuODk4NDR2Mi44OTA2aDIuNTM5MDZ2Ni45ODc4WlwiXHJcbiAgICAgICAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCI+PC9wYXRoPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO1wiICpuZ0lmPVwic29jaWFsSWNvbkRhdGE/LnR5cGUgPT09IENoYW5uZWxUeXBlLlRXSVRURVJcIj5cclxuICAgIDxhIFtocmVmXT1cInNvY2lhbEljb25EYXRhPy5saW5rXCIgdGFyZ2V0PVwiX2JsYW5rXCI+XHJcbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjFcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImljb24gdy04IGgtOFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiICBbc2ltcG9Db2xvcl09XCJjb2xvclwiIFtpZF09XCJzZWN0aW9uSWRcIiBbYXR0ci5maWxsXT1cImljb25Db2xvclwiPlxyXG4gICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgZD1cIk0xMy42NzU2IDEwLjYyMTggMjAuMjMyNCAzaC0xLjU1MzdsLTUuNjkzMyA2LjYxNzg4TDguNDM4MTcgM0gzLjE5MzVsNi44NzYzIDEwLjAwNzRMMy4xOTM1IDIxaDEuNTUzODRsNi4wMTIyNi02Ljk4ODdMMTUuNTYxOCAyMWg1LjI0NDdsLTcuMTMxMy0xMC4zNzgyaC4wMDA0Wm0tMi4xMjgyIDIuNDczOC0uNjk2Ny0uOTk2NS01LjU0MjQ5LTcuOTI5MzloMi4zODY2Mmw0LjQ3MzY3IDYuMzk5MTkuNjk2Ny45OTY2IDUuODE1MiA4LjMxOGgtMi4zODY2bC00Ljc0NTQtNi43ODc1di0uMDAwNFpcIj5cclxuICAgICAgICAgICAgPC9wYXRoPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgPC9hPlxyXG48L2Rpdj5cclxuPGRpdiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIiAqbmdJZj1cInNvY2lhbEljb25EYXRhPy50eXBlID09PSBDaGFubmVsVHlwZS5MSU5LRURJTlwiPlxyXG4gICAgPGRpdiAoY2xpY2spPVwib3BlbkxpbmsoJ0xJTktFRElOJylcIj5cclxuICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjFcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImljb24gdy04IGgtOFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiICBbc2ltcG9Db2xvcl09XCJjb2xvclwiIFtpZF09XCJzZWN0aW9uSWRcIiBbYXR0ci5maWxsXT1cImljb25Db2xvclwiPlxyXG4gICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgICAgIGQ9XCJNMTkuNTU2NSAyQzIwLjkwNTEgMiAyMiAzLjA5NDkyIDIyIDQuNDQzNTJWMTkuNTU2NUMyMiAyMC45MDUxIDIwLjkwNTEgMjIgMTkuNTU2NSAyMkg0LjQ0MzUyQzMuMDk0OTIgMjIgMiAyMC45MDUxIDIgMTkuNTU2NVY0LjQ0MzUyQzIgMy4wOTQ5MiAzLjA5NDg4IDIgNC40NDM1MiAySDE5LjU1NjVaTTguMjY4MDEgMTguNTI0M1Y5LjcxNzIzSDUuMzM2NzZ2OC44MTcwN2gyLjkzMTI1Wm0xMC41Njc4OSAwdi01LjA1NjJjMC0yLjcwODMtMS40NDYtMy45NjgyMi0zLjM3NDItMy45NjgyMi0xLjU1NDkgMC0yLjI1MTMuODU1MTItMi42NDEzIDEuNDU1NzJWOS43MTcyM0g5Ljg4OTg4Yy4wMzg4Ny44MjczNyAwIDguODE3MDcgMCA4LjgxNzA3aDIuOTMwNTJ2LTQuOTI0MWMwLS4yNjM2LjAxODktLjUyNy4wOTY2LS43MTU0LjIxMTUtLjUyNjQuNjk0LTEuMDcxNiAxLjUwMzctMS4wNzE2IDEuMDU5OSAwIDEuNDg0Ni44MDg4IDEuNDg0NiAxLjk5MzZ2NC43MTc1aDIuOTMwNlpNNi44MjIxOSA1LjQ2NTdjLTEuMDAyODkgMC0xLjY1ODEzLjY1OTI0LTEuNjU4MTMgMS41MjM1MiAwIC44NDYwMS42MzUzMiAxLjUyMzUxIDEuNjE5MjQgMS41MjM1MSAxLjAyMjA3IDAgMS42NzcxOS0uNjc3NSAxLjY3NzE5LTEuNTIzNTEtLjAxODk1LS44NjI5Ny0uNjI0NDItMS41MjE2NC0xLjYzODQtMS41MjM1MlpcIlxyXG4gICAgICAgICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiPjwvcGF0aD5cclxuICAgICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuPGRpdiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIiAqbmdJZj1cInNvY2lhbEljb25EYXRhPy50eXBlID09PSBDaGFubmVsVHlwZS5ZT1VUVUJFXCI+XHJcbiAgICA8YSBbaHJlZl09XCJzb2NpYWxJY29uRGF0YT8ubGlua1wiIHRhcmdldD1cIl9ibGFua1wiPlxyXG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIxXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJpY29uIHctOCBoLThcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAgW3NpbXBvQ29sb3JdPVwiY29sb3JcIiBbaWRdPVwic2VjdGlvbklkXCIgW2F0dHIuZmlsbF09XCJpY29uQ29sb3JcIj5cclxuICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICAgICAgICBkPVwiTTIxLjAwNTMgNS42MTkxYy41OTk2LjY0NzcuNzk0NiAyLjExODc5Ljc5NDYgMi4xMTg3OVMyMiA5LjQ2NDA1IDIyIDExLjE5MDh2MS42MThjMCAxLjcyNjgtLjIwMDEgMy40NTMtLjIwMDEgMy40NTNzLS4xOTU2IDEuNDcwNS0uNzk0NiAyLjExNjljLS42ODU5Ljc2NTQtMS40NDYxLjg0NDktMS44NzU0Ljg4OTctLjA0NjkuMDA0OS0uMDg5OS4wMDk0LS4xMjgzLjAxNDMtMi43OTkuMjE0NS03LjAwMTYuMjIyLTcuMDAxNi4yMjJzLTUuMjAwMzgtLjA1MDctNi44MDAyNS0uMjE0NWMtLjA3NTcyLS4wMTUxLS4xNjc0Ni0uMDI2OC0uMjcxMzEtLjA0MDItLjUwNjY2LS4wNjUxLTEuMzAxOC0uMTY3My0xLjkzMzc1LS44NzE5LS41OTk1Ny0uNjQ2NS0uNzk0NjMtMi4xMTY5LS43OTQ2My0yLjExNjlTMiAxNC41MzU2IDIgMTIuODA4MnYtMS42MThjMC0xLjcyNjE1LjIwMDA2LTMuNDUyMzEuMjAwMDYtMy40NTIzMXMuMTk1NjktMS40NzEwOS43OTQ2My0yLjExODc5Yy42ODg5NS0uNzY4MTUgMS40NTE2LS44NDU0MSAxLjg4MDAyLS44ODg4MS4wNDUxMS0uMDA0NTcuMDg2NTEtLjAwODc2LjEyMzczLS4wMTMzNUM3Ljc5NjgxIDQuNSAxMS45OTUgNC41IDExLjk5NSA0LjVoLjAwOTRzNC4xOTgyIDAgNi45OTcyLjIxNjk0Yy4wMzcyLjAwNDU5LjA3ODYuMDA4NzkuMTIzOC4wMTMzNi40Mjg1LjA0MjQgMS4xOTE2LjEyMDY5IDEuODc5OS44ODg4Wm0tNS4yNTEgNi4zODMyLTYuMjUxOTYgMy43NTEyVjguMjUxMTdsNi4yNTE5NiAzLjc1MTEzWlwiXHJcbiAgICAgICAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCI+PC9wYXRoPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgPC9hPlxyXG48L2Rpdj5cclxuPGRpdiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIiAqbmdJZj1cInNvY2lhbEljb25EYXRhPy50eXBlID09PSBDaGFubmVsVHlwZS5JTlNUQUdSQU1cIj5cclxuICAgIDxkaXYgKGNsaWNrKT1cIm9wZW5MaW5rKCdJTlNUQUdSQU0nKVwiPlxyXG4gICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbiB3LTggaC04XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgIFtzaW1wb0NvbG9yXT1cImNvbG9yXCIgW2lkXT1cInNlY3Rpb25JZFwiIFthdHRyLmZpbGxdPVwiaWNvbkNvbG9yXCI+XHJcbiAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgICAgZD1cIk0xMiAyYzUuNTE5MSAwIDEwIDQuNDgwODYgMTAgMTAgMCA1LjUxOTEtNC40ODA5IDEwLTEwIDEwLTUuNTE5MTQgMC0xMC00LjQ4MDktMTAtMTBDMiA2LjQ4MDg2IDYuNDgwODYgMiAxMiAyWm0wIDMuNzVjLTEuNjk3NCAwLTEuOTEwMi4wMDcxOS0yLjU3Njg4LjAzNzYyLS42NjUyMy4wMzAzNS0xLjExOTU3LjEzNjAxLTEuNTE3MTQuMjkwNTEtLjQxMDk4LjE1OTcyLS43NTk1My4zNzI0My0xLjEwNy43MjA4OS0uMjQ3NDYuMjQ3NDYtLjU2MTE3LjY5NjAyLS43MjA4OSAxLjEwNy0uMTU0NS4zOTc1My0uMjYwMTIuODUxODctLjI5MDUxIDEuNTE3MUM1Ljc1NzE5IDEwLjA4OTggNS43NSAxMC4zMDI2IDUuNzUgMTJzLjAwNzE5IDEuOTEwMi4wMzc1OCAyLjU3NjljLjAzMDM5LjY2NTIuMTM2MDEgMS4xMTk1LjI5MDUxIDEuNTE3MS4xNTk3Mi40MTEuMzcyNDMuNzU5NS43MjA4OSAxLjEwNy4yNDc0Ny4yNDc1LjY5NjAyLjU2MTIgMS4xMDcuNzIwOS4zOTc1Ny4xNTQ1Ljg1MTkxLjI2MDEgMS41MTcxNC4yOTA1LjY2NjY4LjAzMDQuODc5NDguMDM3NiAyLjU3Njg4LjAzNzZzMS45MTAyLS4wMDcyIDIuNTc2OS0uMDM3NmMuNjY1Mi0uMDMwNCAxLjExOTUtLjEzNiAxLjUxNzEtLjI5MDUuNDExLS4xNTk3Ljc1OTUtLjM3MjQgMS4xMDctLjcyMDkuMjQ3NS0uMjQ3NS41NjEyLS42OTYuNzIwOS0xLjEwNy4xNTQ1LS4zOTc2LjI2MDEtLjg1MTkuMjkwNS0xLjUxNzEuMDMwNC0uNjY2Ny4wMzc2LS44Nzk1LjAzNzYtMi41NzY5IDAtMS42OTc0LS4wMDcyLTEuOTEwMi0uMDM3Ni0yLjU3Njg4LS4wMzA0LS42NjUyMy0uMTM2LTEuMTE5NTctLjI5MDUtMS41MTcxLS4xNTk3LS40MTA5OC0uMzcyNC0uNzU5NTQtLjcyMDktMS4xMDdzLS42OTYtLjU2MTE3LTEuMTA3LS43MjA4OWMtLjM5NzYtLjE1NDUtLjg1MTktLjI2MDE2LTEuNTE3MS0uMjkwNTFDMTMuOTEwMiA1Ljc1NzE5IDEzLjY5NzQgNS43NSAxMiA1Ljc1Wm0wIDEuMTI2MTNjMS42Njg4IDAgMS44NjY1LjAwNjM3IDIuNTI1NS4wMzY0NS42MDk0LjAyNzgxLjk0MDMuMTI5NjEgMS4xNjA2LjIxNTE5LjI5MTcuMTEzMzYuNDk5OS4yNDg4My43MTg2LjQ2NzU0LjIxODcuMjE4NjcuMzU0Mi40MjY5Mi40Njc1LjcxODY0LjA4NTYuMjIwMjMuMTg3NC41NTExMy4yMTUyIDEuMTYwNS4wMzAxLjY1OTA1LjAzNjUuODU2NzUuMDM2NSAyLjUyNTU1cy0uMDA2NCAxLjg2NjUtLjAzNjUgMi41MjU1Yy0uMDI3OC42MDk0LS4xMjk2Ljk0MDMtLjIxNTIgMS4xNjA2LS4xMTMzLjI5MTctLjI0ODguNDk5OS0uNDY3NS43MTg2LS4yMTg3LjIxODctLjQyNjkuMzU0Mi0uNzE4Ni40Njc1LS4yMjAzLjA4NTYtLjU1MTIuMTg3NC0xLjE2MDYuMjE1Mi0uNjU4OS4wMzAxLS44NTY2LjAzNjUtMi41MjU1LjAzNjVzLTEuODY2Ni0uMDA2NC0yLjUyNTU1LS4wMzY1Yy0uNjA5MzctLjAyNzgtLjk0MDI3LS4xMjk2LTEuMTYwNS0uMjE1Mi0uMjkxNzYtLjExMzMtLjQ5OTk3LS4yNDg4LS43MTg2OC0uNDY3NS0uMjE4NzEtLjIxODctLjM1NDE0LS40MjY5LS40Njc1LS43MTg2LS4wODU1OC0uMjIwMy0uMTg3NDItLjU1MTItLjIxNTIzLTEuMTYwNi0uMDMwMDgtLjY1OS0uMDM2NDEtLjg1NjctLjAzNjQxLTIuNTI1NXMuMDA2MzMtMS44NjY1LjAzNjQxLTIuNTI1NTVjLjAyNzgxLS42MDkzNy4xMjk2NS0uOTQwMjcuMjE1MjMtMS4xNjA1LjExMzM2LS4yOTE3Mi4yNDg3OS0uNDk5OTcuNDY3NS0uNzE4NjQuMjE4NzEtLjIxODcxLjQyNjkyLS4zNTQxOC43MTg2OC0uNDY3NTQuMjIwMjMtLjA4NTU4LjU1MTEzLS4xODczOCAxLjE2MDUtLjIxNTE5LjY1OTA1LS4wMzAwOC44NTY3NS0uMDM2NDUgMi41MjU1NS0uMDM2NDVabTAgMS45MTQ0MmMtMS43NzI1IDAtMy4yMDk0NSAxLjQzNjk1LTMuMjA5NDUgMy4yMDk0NVMxMC4yMjc1IDE1LjIwOTUgMTIgMTUuMjA5NXMzLjIwOTUtMS40MzcgMy4yMDk1LTMuMjA5NWMwLTEuNzcyNS0xLjQzNy0zLjIwOTQ1LTMuMjA5NS0zLjIwOTQ1Wm0wIDUuMjkyNzVjLTEuMTUwNiAwLTIuMDgzMzItLjkzMjctMi4wODMzMi0yLjA4MzMgMC0xLjE1MDYuOTMyNzItMi4wODMzMiAyLjA4MzMyLTIuMDgzMzJTMTQuMDgzMyAxMC44NDk0IDE0LjA4MzMgMTIgMTMuMTUwNiAxNC4wODMzIDEyIDE0LjA4MzNabTQuMDg2My01LjQxOTU1YzAgLjQxNDIyLS4zMzU4Ljc0OTk2LS43NTAxLjc0OTk2LS40MTQxIDAtLjc0OTktLjMzNTc0LS43NDk5LS43NDk5NnMuMzM1OC0uNzUuNzQ5OS0uNzVjLjQxNDMgMCAuNzUwMS4zMzU3OC43NTAxLjc1WlwiXHJcbiAgICAgICAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCI+PC9wYXRoPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO1wiICpuZ0lmPVwic29jaWFsSWNvbkRhdGE/LnR5cGUgPT09IENoYW5uZWxUeXBlLlRFTEVHUkFNXCI+XHJcbiAgICA8YSBbaHJlZl09XCJzb2NpYWxJY29uRGF0YT8ubGlua1wiIHRhcmdldD1cIl9ibGFua1wiPlxyXG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIxXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJpY29uIHctOCBoLThcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBbc2ltcG9Db2xvcl09XCJjb2xvclwiIFtpZF09XCJzZWN0aW9uSWRcIiBbYXR0ci5maWxsXT1cImljb25Db2xvclwiPlxyXG4gICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgICAgIGQ9XCJNMjIgMTJjMCA1LjUyMjktNC40NzcxIDEwLTEwIDEwLTUuNTIyODUgMC0xMC00LjQ3NzEtMTAtMTBDMiA2LjQ3NzE1IDYuNDc3MTUgMiAxMiAyYzUuNTIyOSAwIDEwIDQuNDc3MTUgMTAgMTBabS05LjY0MTctMi42MTc1NWMtLjk3MjYuNDA0NTUtMi45MTY1MyAxLjI0MTg1LTUuODMxNzMgMi41MTE5NS0uNDczMzkuMTg4My0uNzIxMzYuMzcyNS0uNzQzOTQuNTUyNS0uMDM4MTUuMzA0NC4yNDI5Ni40MjQyLjg2MTkyLjU4NzQuMDcwNi4wMjIyLjE0Mzc0LjA0NTIuMjE4NzIuMDY5NS41MTA1OS4xNjYgMS4xOTc0MS4zNjAyIDEuNTU0NDYuMzY3OS4zMjM4OC4wMDcuNjg1MzctLjEyNjUgMS4wODQ0Ni0uNDAwNiAyLjcyMzgxLTEuODM4NiA0LjEyOTgxLTIuNzY3OSA0LjIxODAxLTIuNzg4LjA2MjMtLjAxNDEuMTQ4Ni0uMDMxOS4yMDcxLjAyMDEuMDU4NS4wNTIuMDUyNy4xNTA0LjA0NjUuMTc2OC0uMDM3Ny4xNjA5LTEuNTMzNSAxLjU1MTYtMi4zMDc3IDIuMjcxNC0uMjQxNS4yMjQ0LS40MTI3LjM4MzYtLjQ0NzcuNDItLjA3ODQuMDgxNC0uMTU4My4xNTg0LS4yMzUxLjIzMjUtLjQ3NDMuNDU3Mi0uODMuODAwMS4wMTk3IDEuMzYwMS40MDg0LjI2OTEuNzM1Mi40OTE3IDEuMDYxMi43MTM3LjM1Ni4yNDI0LjcxMTEuNDg0MiAxLjE3MDUuNzg1NC4xMTcuMDc2Ny4yMjg4LjE1NjQuMzM3Ny4yMjQuNDE0My4yOTU0Ljc4NjUuNTYwOCAxLjI0NjQuNTE4NC4yNjcyLS4wMjQ1LjU0MzItLjI3NTguNjgyNC0xLjAyNTIuMzMxMy0xLjc3MS45ODI1LTUuNjA4MyAxLjEzMy03LjE4OTQ5LjAxMzItLjEzODUzLS4wMDI0LS4zMTU4My0uMDE2Ny0uMzkzNjctLjAxMjQtLjA3NzgyLS4wNDEyLS4xODg3Mi0uMTQyNC0uMjcwOC0uMTE5OC0uMDk3MjItLjMwNDgtLjExNzcyLS4zODc1LS4xMTYyNy0uMzc2MS4wMDY2My0uOTUzMS4yMDcyOC0zLjczMDMgMS4zNjIzOFpcIlxyXG4gICAgICAgICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiPjwvcGF0aD5cclxuICAgICAgICA8L3N2Zz5cclxuICAgIDwvYT5cclxuPC9kaXY+XHJcbjxkaXYgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCIgKm5nSWY9XCJzb2NpYWxJY29uRGF0YT8udHlwZSA9PT0gQ2hhbm5lbFR5cGUuVEhSRUFEU1wiPlxyXG4gICAgPGEgW2hyZWZdPVwic29jaWFsSWNvbkRhdGE/LmxpbmtcIiB0YXJnZXQ9XCJfYmxhbmtcIj5cclxuICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbiB3LTggaC04XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgIFtzaW1wb0NvbG9yXT1cImNvbG9yXCIgW2lkXT1cInNlY3Rpb25JZFwiIFthdHRyLmZpbGxdPVwiaWNvbkNvbG9yXCI+XHJcbiAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICBkPVwiTTEyLjE0ODIgMjEuNjg4OGgtLjAwNThjLTIuODkxMTgtLjAxOTQtNS4xMTM4LS45NzI3LTYuNjA3ODEtMi44MzMtMS4zMjczNy0xLjY1NjgtMi4wMTMyNC0zLjk2MDgtMi4wMzY1OS02Ljg0OHYtLjAxMzZjLjAyMzI1LTIuODg5MjEuNzA5MjItNS4xOTEyOCAyLjAzODUzLTYuODQ4MDZDNy4wMjg2IDMuMjgzOTUgOS4yNTMxNiAyLjMzMDU3IDEyLjE0MjQgMi4zMTExOWguMDExNmMyLjIxNjguMDE1NSA0LjA3MTIuNTg1MiA1LjUxMSAxLjY5MzYgMS4zNTQ1IDEuMDQyNTIgMi4zMDc5IDIuNTI2ODUgMi44MzMgNC40MTQyM2wtMS42NDcxLjQ1OTI1Yy0uODkxNC0zLjE5NzMxLTMuMTQ2OS00LjgzMDg1LTYuNzA0Ny00Ljg1NjA0LTIuMjQ4NTMuMDE3NDQtNC4xMjU0Ni43NTU3My01LjI4MDM3IDIuMTkzNTVDNS43ODY1IDcuNTYyNTMgNS4yMjg0MiA5LjUwODA0IDUuMjA3MTEgMTJjLjAyMTMxIDIuNDkyLjU3OTM5IDQuNDM3NSAxLjY2MDY2IDUuNzg0MiAxLjE1NDkxIDEuNDM5OCAyLjkzMTg0IDIuMTc4MSA1LjI4MDQzIDIuMTkzNiAyLjExOC0uMDE1NSAzLjUxOS0uNTA5NyA0LjY4MzYtMS42NTEgMS4zMjkzLTEuMzAyMiAxLjMwNi0yLjkwMDguODc5Ny0zLjg3MzYtLjI1LS41NzM2LS43MDU0LTEuMDUwMy0xLjMxOTYtMS40MTI2LS4xNTUgMS4wOTA5LS41MDE5IDEuOTc0Ni0xLjAzNjcgMi42NDEyLS43MTUxLjg4OTQtMS43Mjg1IDEuMzc1OC0zLjAxMTMgMS40NDU1LS45NzA4LjA1MjMtMS45MDY4LS4xNzYzLTIuNjMxNDktLjY0NzItLjg1ODQzLS41NTYxLTEuMzYwMzEtMS40MDQ5LTEuNDE0NTctMi4zOTMxLS4wNTIzMi0uOTYxMi4zMjk0Mi0xLjg0NDggMS4wNzM1Mi0yLjQ4ODEuNzExMTQtLjYxNDMgMS43MTEwNC0uOTc0NyAyLjg5MzA0LTEuMDQyNS44NzAxLS4wNDg1IDEuNjg1OS0uMDA5NyAyLjQzNzcuMTE0My0uMTAwNy0uNTk4OC0uMzAyMi0xLjA3NTQ2LS42MDQ1LTEuNDE4NDQtLjQxNDctLjQ3MjgyLTEuMDU2MS0uNzEzMS0xLjkwNDktLjcxODkxaC0uMDIzMmMtLjY4MjEgMC0xLjYwODQuMTg3OTYtMi4xOTc0MyAxLjA2NTc3bC0xLjQxODQ0LS45NTE0NWMuNzkwNi0xLjE3NDI4IDIuMDczMzctMS44MjE0OSAzLjYxNTg3LTEuODIxNDloLjAyNDljMi41NzkxLjAxNTUgNC4xMTU4IDEuNTk0NzggNC4yNjg5IDQuMzUwMzIuMDg3Mi4wMzY4LjE3NDQuMDc1NS4yNTk2LjExNDMgMS4yMDI0LjU2NTggMi4wODMxIDEuNDIyMyAyLjU0NjIgMi40Nzg0LjY0MjQgMS40NzA3LjcwMzUgMy44Njc4LTEuMjQ5OCA1Ljc4MDMtMS40OTQgMS40NjExLTMuMzA1OCAyLjEyMTktNS44NzUzIDIuMTM5M2gtLjAwNThabS44MS05LjQzODhjLS4xOTU4IDAtLjM5MjQuMDA1OC0uNTk2OS4wMTc0LTEuNDgyNC4wODMzLTIuNDA2NjcuNzYzNS0yLjM1NDQgMS43MzA0LjA1NDMgMS4wMTM1IDEuMTcyNCAxLjQ4NDQgMi4yNDc5IDEuNDI2Mi45ODgyLS4wNTIzIDIuMjc0OS0uNDM3OSAyLjQ5MTktMi45OTU3LS41NDY0LS4xMTgzLTEuMTQ1Mi0uMTc4My0xLjc4ODUtLjE3ODNaXCI+XHJcbiAgICAgICAgICAgIDwvcGF0aD5cclxuICAgICAgICA8L3N2Zz5cclxuICAgIDwvYT5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -352,7 +352,7 @@ export class TextEditorComponent {
352
352
  return this.value;
353
353
  }
354
354
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextEditorComponent, deps: [{ token: i1.ElementServiceService }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); }
355
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TextEditorComponent, isStandalone: true, selector: "simpo-text-editor", inputs: { value: "value", editable: "editable", sectionId: "sectionId", label: "label" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true }, { propertyName: "editor", first: true, predicate: ["editor"], descendants: true }, { propertyName: "colorPicker", first: true, predicate: ["colorPicker"], descendants: true }, { propertyName: "parentElement", first: true, predicate: ["parentElement"], descendants: true }, { propertyName: "suggestion", first: true, predicate: ["suggestion"], descendants: true }], ngImport: i0, template: "<div class=\"editor-container\" [ngClass]=\"{'border': editable}\" #parentElement [class.d-none]=\"!editable && getText() == ''\">\r\n <div [contenteditable]=\"editable\" [(ngModel)]=\"value\" class=\"editable-text\" (mouseup)=\"showToolbar($event)\" #editor\r\n (ngModelChange)=\"updateText($event)\" (mousedown)=\"hideToolbar($event)\" (paste)=\"onPaste($event)\">\r\n </div>\r\n\r\n <div class=\"toolbar\" *ngIf=\"editable && show\" [ngStyle]=\"{'top.px': toolbarY}\" [style.right]=\"rightZero ? '0px' : 'auto'\" [style.left]=\"!rightZero ? '0px' : 'auto'\" #toolbar >\r\n <!-- <select class=\"tool\" (change)=\"onFormatChange($event)\" [(ngModel)]=\"toolbarData.selectedHeading\">\r\n <option value=\"H1\">Heading1</option>\r\n <option value=\"H2\">Heading2</option>\r\n <option value=\"H3\">Heading3</option>\r\n <option value=\"div\">Text</option>\r\n </select> -->\r\n\r\n <button class=\"tool\" (click)=\"formatText('bold')\" [ngClass]=\"{'selectedTool': toolbarData.isBold}\"><mat-icon> format_bold</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('italic')\" [ngClass]=\"{'selectedTool': toolbarData.isItalic}\"><mat-icon> format_italic</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('underline')\" [ngClass]=\"{'selectedTool': toolbarData.isUnderlined}\"><mat-icon> format_underlined</mat-icon></button>\r\n\r\n <select class=\"tool\" (change)=\"changeFontSize($event)\" [(ngModel)]=\"toolbarData.selectedSize\">\r\n <option value=\"\" selected>Default</option>\r\n <option value=\"clamp(0.75rem, 2vw, 1rem)\">Small</option>\r\n <option value=\"clamp(1rem, 3vw, 1.5rem)\">Medium</option>\r\n <option value=\"clamp(1.25rem, 4vw, 2rem)\">Large</option>\r\n <option value=\"clamp(2rem, 5vw, 3rem)\">Extra Large</option>\r\n <option value=\"clamp(3.1rem, 7vw, 4.5rem)\">Huge</option>\r\n </select>\r\n\r\n <button class=\"tool\" (click)=\"formatText('insertOrderedList')\" [ngClass]=\"{'selectedTool': toolbarData.selectedList === 'insertOrderedList'}\"><mat-icon>format_list_numbered</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('insertUnorderedList')\" [ngClass]=\"{'selectedTool': toolbarData.selectedList === 'insertUnorderedList'}\"><mat-icon> format_list_bulleted</mat-icon></button>\r\n\r\n <button class=\"tool\" (click)=\"formatText('justifyLeft')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyLeft'}\"><mat-icon> format_align_left</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('justifyCenter')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyCenter'}\"><mat-icon> format_align_center</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('justifyRight')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyRight'}\"><mat-icon> format_align_right</mat-icon></button>\r\n\r\n <div class=\"colorType\">\r\n <button class=\"solid\" [ngClass]=\"{'solidColorSelected': selectedColorType === 'SOLID'}\" (click)=\"selectedColorType = 'SOLID'\">Solid</button>\r\n <button class=\"gradient\" [ngClass]=\"{'gradientColorSelected': selectedColorType === 'GRADIENT'}\" (click)=\"selectedColorType = 'GRADIENT'\">Gradient</button>\r\n </div>\r\n\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker()\" *ngIf=\"selectedColorType === 'SOLID'\">\r\n <mat-icon>format_color_text</mat-icon>\r\n <input type=\"color\" #colorPicker class=\"hidden-color-picker\" (input)=\"changeColor($event)\" [(ngModel)]=\"toolbarData.selectedColor\">\r\n </button>\r\n \r\n <div class=\"colorType\" *ngIf=\"selectedColorType === 'GRADIENT'\">\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker(); primaryColorPicker.click()\">\r\n <mat-icon [style.color]=\"primaryColor\">format_color_text</mat-icon>\r\n <input type=\"color\" #primaryColorPicker class=\"hidden-color-picker\" (input)=\"changeGradientColor()\" [(ngModel)]=\"primaryColor\">\r\n </button>\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker(); secondaryColorPicker.click()\">\r\n <mat-icon [style.color]=\"secondaryColor\">format_color_text</mat-icon>\r\n <input type=\"color\" #secondaryColorPicker class=\"hidden-color-picker\" (input)=\"changeGradientColor()\" [(ngModel)]=\"secondaryColor\">\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"suggestion-box\" [ngStyle]=\"{'top.px': suggestionY}\" [style.right]=\"rightZero ? '0px' : 'auto'\" [style.left]=\"!rightZero ? '0px' : 'auto'\" *ngIf=\"editable && label && showSuggestion\" #suggestion>\r\n <div class=\"suggestion\" (click)=\"regenerateText()\">\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/887493c1742273970151Frame%201244831740.png\" alt=\"\">\r\n <div>\r\n <p class=\"name\">Regenerate Text</p>\r\n <p class=\"desc\">Get a fresh variation of a current text</p>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.editor-container{position:relative;display:inline-block;overflow:visible;width:100%}.editor-container div{outline:none}.editable-text{padding:4px;cursor:text}.toolbar{position:absolute;background:#fff;box-shadow:0 2px 5px #0003;display:flex;gap:5px;align-items:center;z-index:100000;box-shadow:#00000029 0 1px 4px;padding:5px 15px;border-radius:22px}.toolbar:hover{border:1px solid #ccc}.toolbar button{background:none;border:none;padding:5px 8px;cursor:pointer;font-weight:700;display:flex;align-items:center}.toolbar button:hover{background:#ddd}.toolbar select{padding:3px;border:none;outline:none;font-size:14px;font-weight:600;cursor:pointer}.toolbar input[type=color]{border:none;width:30px;height:30px;padding:0;cursor:pointer}.color-picker-btn{position:relative;background:none;border:none;cursor:pointer;padding:5px}.hidden-color-picker{position:absolute;left:0;top:0;width:100%;height:100%;opacity:0;cursor:pointer}.border,.border:hover{border:1px solid #E9E9E9!important;border-radius:8px}.selectedTool{background:var(--primary-bg-color)!important;color:#fff;border-radius:5px}p{margin-bottom:0rem!important}.suggestion-box{position:absolute;background:#fff;border:1px solid #ccc;box-shadow:0 2px 5px #0003;z-index:10000;box-shadow:#00000029 0 1px 4px;padding:5px 15px;border-radius:10px}.suggestion{display:flex;gap:10px;width:307px;align-items:center;cursor:pointer}.suggestion img{border-radius:5px;width:32px;height:32px;background:#faf1fc;padding:3px}.suggestion .name{color:#000;font-family:var(--primary-font-family)}.suggestion .desc{color:#000;font-size:12px;color:#918585;font-family:var(--primary-font-family)}.colorType{display:flex;border:1px solid #E9E9E9;border-radius:5px;height:35px}.colorType .solid{border-right:1px solid #E9E9E9;font-size:14px!important;font-family:Mulish}.colorType .gradient{font-size:14px!important;font-family:Mulish}.solidColorSelected{background:var(--primary-bg-color)!important;color:#fff;border-top-left-radius:5px;border-bottom-left-radius:5px}.gradientColorSelected{background:var(--primary-bg-color)!important;color:#fff;border-top-right-radius:5px;border-bottom-right-radius:5px}@media screen and (max-width: 475px){.toolbar{max-width:100%;flex-wrap:wrap;row-gap:15px}.tool{width:max-content!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.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: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ContenteditableValueAccessor, selector: "[contenteditable][ngModel]", inputs: ["contenteditable"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
355
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TextEditorComponent, isStandalone: true, selector: "simpo-text-editor", inputs: { value: "value", editable: "editable", sectionId: "sectionId", label: "label" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true }, { propertyName: "editor", first: true, predicate: ["editor"], descendants: true }, { propertyName: "colorPicker", first: true, predicate: ["colorPicker"], descendants: true }, { propertyName: "parentElement", first: true, predicate: ["parentElement"], descendants: true }, { propertyName: "suggestion", first: true, predicate: ["suggestion"], descendants: true }], ngImport: i0, template: "<div class=\"editor-container\" [ngClass]=\"{'border': editable}\" #parentElement [class.d-none]=\"!editable && getText() == ''\">\r\n <div [contenteditable]=\"editable\" [(ngModel)]=\"value\" class=\"editable-text\" (mouseup)=\"showToolbar($event)\" #editor\r\n (ngModelChange)=\"updateText($event)\" (mousedown)=\"hideToolbar($event)\" (paste)=\"onPaste($event)\">\r\n </div>\r\n\r\n <div class=\"toolbar\" *ngIf=\"editable && show\" [ngStyle]=\"{'top.px': toolbarY}\" [style.right]=\"rightZero ? '0px' : 'auto'\" [style.left]=\"!rightZero ? '0px' : 'auto'\" #toolbar >\r\n <!-- <select class=\"tool\" (change)=\"onFormatChange($event)\" [(ngModel)]=\"toolbarData.selectedHeading\">\r\n <option value=\"H1\">Heading1</option>\r\n <option value=\"H2\">Heading2</option>\r\n <option value=\"H3\">Heading3</option>\r\n <option value=\"div\">Text</option>\r\n </select> -->\r\n\r\n <button class=\"tool\" (click)=\"formatText('bold')\" [ngClass]=\"{'selectedTool': toolbarData.isBold}\"><mat-icon> format_bold</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('italic')\" [ngClass]=\"{'selectedTool': toolbarData.isItalic}\"><mat-icon> format_italic</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('underline')\" [ngClass]=\"{'selectedTool': toolbarData.isUnderlined}\"><mat-icon> format_underlined</mat-icon></button>\r\n\r\n <select class=\"tool\" (change)=\"changeFontSize($event)\" [(ngModel)]=\"toolbarData.selectedSize\">\r\n <option value=\"\" selected>Default</option>\r\n <option value=\"clamp(0.75rem, 2vw, 1rem)\">Small</option>\r\n <option value=\"clamp(0.75rem, 2vw, 1.25rem)\">Medium</option>\r\n <option value=\"clamp(1rem, 3vw, 1.5rem)\">Semi Large</option>\r\n <option value=\"clamp(1.25rem, 4vw, 2rem)\">Large</option>\r\n <option value=\"clamp(2rem, 5vw, 3rem)\">Extra Large</option>\r\n <option value=\"clamp(3.1rem, 7vw, 4.5rem)\">Huge</option>\r\n </select>\r\n\r\n <button class=\"tool\" (click)=\"formatText('insertOrderedList')\" [ngClass]=\"{'selectedTool': toolbarData.selectedList === 'insertOrderedList'}\"><mat-icon>format_list_numbered</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('insertUnorderedList')\" [ngClass]=\"{'selectedTool': toolbarData.selectedList === 'insertUnorderedList'}\"><mat-icon> format_list_bulleted</mat-icon></button>\r\n\r\n <button class=\"tool\" (click)=\"formatText('justifyLeft')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyLeft'}\"><mat-icon> format_align_left</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('justifyCenter')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyCenter'}\"><mat-icon> format_align_center</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('justifyRight')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyRight'}\"><mat-icon> format_align_right</mat-icon></button>\r\n\r\n <div class=\"colorType\">\r\n <button class=\"solid\" [ngClass]=\"{'solidColorSelected': selectedColorType === 'SOLID'}\" (click)=\"selectedColorType = 'SOLID'\">Solid</button>\r\n <button class=\"gradient\" [ngClass]=\"{'gradientColorSelected': selectedColorType === 'GRADIENT'}\" (click)=\"selectedColorType = 'GRADIENT'\">Gradient</button>\r\n </div>\r\n\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker()\" *ngIf=\"selectedColorType === 'SOLID'\">\r\n <mat-icon>format_color_text</mat-icon>\r\n <input type=\"color\" #colorPicker class=\"hidden-color-picker\" (input)=\"changeColor($event)\" [(ngModel)]=\"toolbarData.selectedColor\">\r\n </button>\r\n \r\n <div class=\"colorType\" *ngIf=\"selectedColorType === 'GRADIENT'\">\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker(); primaryColorPicker.click()\">\r\n <mat-icon [style.color]=\"primaryColor\">format_color_text</mat-icon>\r\n <input type=\"color\" #primaryColorPicker class=\"hidden-color-picker\" (input)=\"changeGradientColor()\" [(ngModel)]=\"primaryColor\">\r\n </button>\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker(); secondaryColorPicker.click()\">\r\n <mat-icon [style.color]=\"secondaryColor\">format_color_text</mat-icon>\r\n <input type=\"color\" #secondaryColorPicker class=\"hidden-color-picker\" (input)=\"changeGradientColor()\" [(ngModel)]=\"secondaryColor\">\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"suggestion-box\" [ngStyle]=\"{'top.px': suggestionY}\" [style.right]=\"rightZero ? '0px' : 'auto'\" [style.left]=\"!rightZero ? '0px' : 'auto'\" *ngIf=\"editable && label && showSuggestion\" #suggestion>\r\n <div class=\"suggestion\" (click)=\"regenerateText()\">\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/887493c1742273970151Frame%201244831740.png\" alt=\"\">\r\n <div>\r\n <p class=\"name\">Regenerate Text</p>\r\n <p class=\"desc\">Get a fresh variation of a current text</p>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.editor-container{position:relative;display:inline-block;overflow:visible;width:100%}.editor-container div{outline:none}.editable-text{padding:4px;cursor:text}.toolbar{position:absolute;background:#fff;box-shadow:0 2px 5px #0003;display:flex;gap:5px;align-items:center;z-index:100000;box-shadow:#00000029 0 1px 4px;padding:5px 15px;border-radius:22px}.toolbar:hover{border:1px solid #ccc}.toolbar button{background:none;border:none;padding:5px 8px;cursor:pointer;font-weight:700;display:flex;align-items:center}.toolbar button:hover{background:#ddd}.toolbar select{padding:3px;border:none;outline:none;font-size:14px;font-weight:600;cursor:pointer}.toolbar input[type=color]{border:none;width:30px;height:30px;padding:0;cursor:pointer}.color-picker-btn{position:relative;background:none;border:none;cursor:pointer;padding:5px}.hidden-color-picker{position:absolute;left:0;top:0;width:100%;height:100%;opacity:0;cursor:pointer}.border,.border:hover{border:1px solid #E9E9E9!important;border-radius:8px}.selectedTool{background:var(--primary-bg-color)!important;color:#fff;border-radius:5px}p{margin-bottom:0rem!important}.suggestion-box{position:absolute;background:#fff;border:1px solid #ccc;box-shadow:0 2px 5px #0003;z-index:10000;box-shadow:#00000029 0 1px 4px;padding:5px 15px;border-radius:10px}.suggestion{display:flex;gap:10px;width:307px;align-items:center;cursor:pointer}.suggestion img{border-radius:5px;width:32px;height:32px;background:#faf1fc;padding:3px}.suggestion .name{color:#000;font-family:var(--primary-font-family)}.suggestion .desc{color:#000;font-size:12px;color:#918585;font-family:var(--primary-font-family)}.colorType{display:flex;border:1px solid #E9E9E9;border-radius:5px;height:35px}.colorType .solid{border-right:1px solid #E9E9E9;font-size:14px!important;font-family:Mulish}.colorType .gradient{font-size:14px!important;font-family:Mulish}.solidColorSelected{background:var(--primary-bg-color)!important;color:#fff;border-top-left-radius:5px;border-bottom-left-radius:5px}.gradientColorSelected{background:var(--primary-bg-color)!important;color:#fff;border-top-right-radius:5px;border-bottom-right-radius:5px}@media screen and (max-width: 475px){.toolbar{max-width:100%;flex-wrap:wrap;row-gap:15px}.tool{width:max-content!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.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: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ContenteditableValueAccessor, selector: "[contenteditable][ngModel]", inputs: ["contenteditable"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
356
356
  }
357
357
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextEditorComponent, decorators: [{
358
358
  type: Component,
@@ -361,7 +361,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
361
361
  FormsModule,
362
362
  ContenteditableValueAccessor,
363
363
  MatIconModule
364
- ], template: "<div class=\"editor-container\" [ngClass]=\"{'border': editable}\" #parentElement [class.d-none]=\"!editable && getText() == ''\">\r\n <div [contenteditable]=\"editable\" [(ngModel)]=\"value\" class=\"editable-text\" (mouseup)=\"showToolbar($event)\" #editor\r\n (ngModelChange)=\"updateText($event)\" (mousedown)=\"hideToolbar($event)\" (paste)=\"onPaste($event)\">\r\n </div>\r\n\r\n <div class=\"toolbar\" *ngIf=\"editable && show\" [ngStyle]=\"{'top.px': toolbarY}\" [style.right]=\"rightZero ? '0px' : 'auto'\" [style.left]=\"!rightZero ? '0px' : 'auto'\" #toolbar >\r\n <!-- <select class=\"tool\" (change)=\"onFormatChange($event)\" [(ngModel)]=\"toolbarData.selectedHeading\">\r\n <option value=\"H1\">Heading1</option>\r\n <option value=\"H2\">Heading2</option>\r\n <option value=\"H3\">Heading3</option>\r\n <option value=\"div\">Text</option>\r\n </select> -->\r\n\r\n <button class=\"tool\" (click)=\"formatText('bold')\" [ngClass]=\"{'selectedTool': toolbarData.isBold}\"><mat-icon> format_bold</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('italic')\" [ngClass]=\"{'selectedTool': toolbarData.isItalic}\"><mat-icon> format_italic</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('underline')\" [ngClass]=\"{'selectedTool': toolbarData.isUnderlined}\"><mat-icon> format_underlined</mat-icon></button>\r\n\r\n <select class=\"tool\" (change)=\"changeFontSize($event)\" [(ngModel)]=\"toolbarData.selectedSize\">\r\n <option value=\"\" selected>Default</option>\r\n <option value=\"clamp(0.75rem, 2vw, 1rem)\">Small</option>\r\n <option value=\"clamp(1rem, 3vw, 1.5rem)\">Medium</option>\r\n <option value=\"clamp(1.25rem, 4vw, 2rem)\">Large</option>\r\n <option value=\"clamp(2rem, 5vw, 3rem)\">Extra Large</option>\r\n <option value=\"clamp(3.1rem, 7vw, 4.5rem)\">Huge</option>\r\n </select>\r\n\r\n <button class=\"tool\" (click)=\"formatText('insertOrderedList')\" [ngClass]=\"{'selectedTool': toolbarData.selectedList === 'insertOrderedList'}\"><mat-icon>format_list_numbered</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('insertUnorderedList')\" [ngClass]=\"{'selectedTool': toolbarData.selectedList === 'insertUnorderedList'}\"><mat-icon> format_list_bulleted</mat-icon></button>\r\n\r\n <button class=\"tool\" (click)=\"formatText('justifyLeft')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyLeft'}\"><mat-icon> format_align_left</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('justifyCenter')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyCenter'}\"><mat-icon> format_align_center</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('justifyRight')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyRight'}\"><mat-icon> format_align_right</mat-icon></button>\r\n\r\n <div class=\"colorType\">\r\n <button class=\"solid\" [ngClass]=\"{'solidColorSelected': selectedColorType === 'SOLID'}\" (click)=\"selectedColorType = 'SOLID'\">Solid</button>\r\n <button class=\"gradient\" [ngClass]=\"{'gradientColorSelected': selectedColorType === 'GRADIENT'}\" (click)=\"selectedColorType = 'GRADIENT'\">Gradient</button>\r\n </div>\r\n\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker()\" *ngIf=\"selectedColorType === 'SOLID'\">\r\n <mat-icon>format_color_text</mat-icon>\r\n <input type=\"color\" #colorPicker class=\"hidden-color-picker\" (input)=\"changeColor($event)\" [(ngModel)]=\"toolbarData.selectedColor\">\r\n </button>\r\n \r\n <div class=\"colorType\" *ngIf=\"selectedColorType === 'GRADIENT'\">\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker(); primaryColorPicker.click()\">\r\n <mat-icon [style.color]=\"primaryColor\">format_color_text</mat-icon>\r\n <input type=\"color\" #primaryColorPicker class=\"hidden-color-picker\" (input)=\"changeGradientColor()\" [(ngModel)]=\"primaryColor\">\r\n </button>\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker(); secondaryColorPicker.click()\">\r\n <mat-icon [style.color]=\"secondaryColor\">format_color_text</mat-icon>\r\n <input type=\"color\" #secondaryColorPicker class=\"hidden-color-picker\" (input)=\"changeGradientColor()\" [(ngModel)]=\"secondaryColor\">\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"suggestion-box\" [ngStyle]=\"{'top.px': suggestionY}\" [style.right]=\"rightZero ? '0px' : 'auto'\" [style.left]=\"!rightZero ? '0px' : 'auto'\" *ngIf=\"editable && label && showSuggestion\" #suggestion>\r\n <div class=\"suggestion\" (click)=\"regenerateText()\">\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/887493c1742273970151Frame%201244831740.png\" alt=\"\">\r\n <div>\r\n <p class=\"name\">Regenerate Text</p>\r\n <p class=\"desc\">Get a fresh variation of a current text</p>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.editor-container{position:relative;display:inline-block;overflow:visible;width:100%}.editor-container div{outline:none}.editable-text{padding:4px;cursor:text}.toolbar{position:absolute;background:#fff;box-shadow:0 2px 5px #0003;display:flex;gap:5px;align-items:center;z-index:100000;box-shadow:#00000029 0 1px 4px;padding:5px 15px;border-radius:22px}.toolbar:hover{border:1px solid #ccc}.toolbar button{background:none;border:none;padding:5px 8px;cursor:pointer;font-weight:700;display:flex;align-items:center}.toolbar button:hover{background:#ddd}.toolbar select{padding:3px;border:none;outline:none;font-size:14px;font-weight:600;cursor:pointer}.toolbar input[type=color]{border:none;width:30px;height:30px;padding:0;cursor:pointer}.color-picker-btn{position:relative;background:none;border:none;cursor:pointer;padding:5px}.hidden-color-picker{position:absolute;left:0;top:0;width:100%;height:100%;opacity:0;cursor:pointer}.border,.border:hover{border:1px solid #E9E9E9!important;border-radius:8px}.selectedTool{background:var(--primary-bg-color)!important;color:#fff;border-radius:5px}p{margin-bottom:0rem!important}.suggestion-box{position:absolute;background:#fff;border:1px solid #ccc;box-shadow:0 2px 5px #0003;z-index:10000;box-shadow:#00000029 0 1px 4px;padding:5px 15px;border-radius:10px}.suggestion{display:flex;gap:10px;width:307px;align-items:center;cursor:pointer}.suggestion img{border-radius:5px;width:32px;height:32px;background:#faf1fc;padding:3px}.suggestion .name{color:#000;font-family:var(--primary-font-family)}.suggestion .desc{color:#000;font-size:12px;color:#918585;font-family:var(--primary-font-family)}.colorType{display:flex;border:1px solid #E9E9E9;border-radius:5px;height:35px}.colorType .solid{border-right:1px solid #E9E9E9;font-size:14px!important;font-family:Mulish}.colorType .gradient{font-size:14px!important;font-family:Mulish}.solidColorSelected{background:var(--primary-bg-color)!important;color:#fff;border-top-left-radius:5px;border-bottom-left-radius:5px}.gradientColorSelected{background:var(--primary-bg-color)!important;color:#fff;border-top-right-radius:5px;border-bottom-right-radius:5px}@media screen and (max-width: 475px){.toolbar{max-width:100%;flex-wrap:wrap;row-gap:15px}.tool{width:max-content!important}}\n"] }]
364
+ ], template: "<div class=\"editor-container\" [ngClass]=\"{'border': editable}\" #parentElement [class.d-none]=\"!editable && getText() == ''\">\r\n <div [contenteditable]=\"editable\" [(ngModel)]=\"value\" class=\"editable-text\" (mouseup)=\"showToolbar($event)\" #editor\r\n (ngModelChange)=\"updateText($event)\" (mousedown)=\"hideToolbar($event)\" (paste)=\"onPaste($event)\">\r\n </div>\r\n\r\n <div class=\"toolbar\" *ngIf=\"editable && show\" [ngStyle]=\"{'top.px': toolbarY}\" [style.right]=\"rightZero ? '0px' : 'auto'\" [style.left]=\"!rightZero ? '0px' : 'auto'\" #toolbar >\r\n <!-- <select class=\"tool\" (change)=\"onFormatChange($event)\" [(ngModel)]=\"toolbarData.selectedHeading\">\r\n <option value=\"H1\">Heading1</option>\r\n <option value=\"H2\">Heading2</option>\r\n <option value=\"H3\">Heading3</option>\r\n <option value=\"div\">Text</option>\r\n </select> -->\r\n\r\n <button class=\"tool\" (click)=\"formatText('bold')\" [ngClass]=\"{'selectedTool': toolbarData.isBold}\"><mat-icon> format_bold</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('italic')\" [ngClass]=\"{'selectedTool': toolbarData.isItalic}\"><mat-icon> format_italic</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('underline')\" [ngClass]=\"{'selectedTool': toolbarData.isUnderlined}\"><mat-icon> format_underlined</mat-icon></button>\r\n\r\n <select class=\"tool\" (change)=\"changeFontSize($event)\" [(ngModel)]=\"toolbarData.selectedSize\">\r\n <option value=\"\" selected>Default</option>\r\n <option value=\"clamp(0.75rem, 2vw, 1rem)\">Small</option>\r\n <option value=\"clamp(0.75rem, 2vw, 1.25rem)\">Medium</option>\r\n <option value=\"clamp(1rem, 3vw, 1.5rem)\">Semi Large</option>\r\n <option value=\"clamp(1.25rem, 4vw, 2rem)\">Large</option>\r\n <option value=\"clamp(2rem, 5vw, 3rem)\">Extra Large</option>\r\n <option value=\"clamp(3.1rem, 7vw, 4.5rem)\">Huge</option>\r\n </select>\r\n\r\n <button class=\"tool\" (click)=\"formatText('insertOrderedList')\" [ngClass]=\"{'selectedTool': toolbarData.selectedList === 'insertOrderedList'}\"><mat-icon>format_list_numbered</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('insertUnorderedList')\" [ngClass]=\"{'selectedTool': toolbarData.selectedList === 'insertUnorderedList'}\"><mat-icon> format_list_bulleted</mat-icon></button>\r\n\r\n <button class=\"tool\" (click)=\"formatText('justifyLeft')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyLeft'}\"><mat-icon> format_align_left</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('justifyCenter')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyCenter'}\"><mat-icon> format_align_center</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('justifyRight')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyRight'}\"><mat-icon> format_align_right</mat-icon></button>\r\n\r\n <div class=\"colorType\">\r\n <button class=\"solid\" [ngClass]=\"{'solidColorSelected': selectedColorType === 'SOLID'}\" (click)=\"selectedColorType = 'SOLID'\">Solid</button>\r\n <button class=\"gradient\" [ngClass]=\"{'gradientColorSelected': selectedColorType === 'GRADIENT'}\" (click)=\"selectedColorType = 'GRADIENT'\">Gradient</button>\r\n </div>\r\n\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker()\" *ngIf=\"selectedColorType === 'SOLID'\">\r\n <mat-icon>format_color_text</mat-icon>\r\n <input type=\"color\" #colorPicker class=\"hidden-color-picker\" (input)=\"changeColor($event)\" [(ngModel)]=\"toolbarData.selectedColor\">\r\n </button>\r\n \r\n <div class=\"colorType\" *ngIf=\"selectedColorType === 'GRADIENT'\">\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker(); primaryColorPicker.click()\">\r\n <mat-icon [style.color]=\"primaryColor\">format_color_text</mat-icon>\r\n <input type=\"color\" #primaryColorPicker class=\"hidden-color-picker\" (input)=\"changeGradientColor()\" [(ngModel)]=\"primaryColor\">\r\n </button>\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker(); secondaryColorPicker.click()\">\r\n <mat-icon [style.color]=\"secondaryColor\">format_color_text</mat-icon>\r\n <input type=\"color\" #secondaryColorPicker class=\"hidden-color-picker\" (input)=\"changeGradientColor()\" [(ngModel)]=\"secondaryColor\">\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"suggestion-box\" [ngStyle]=\"{'top.px': suggestionY}\" [style.right]=\"rightZero ? '0px' : 'auto'\" [style.left]=\"!rightZero ? '0px' : 'auto'\" *ngIf=\"editable && label && showSuggestion\" #suggestion>\r\n <div class=\"suggestion\" (click)=\"regenerateText()\">\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/887493c1742273970151Frame%201244831740.png\" alt=\"\">\r\n <div>\r\n <p class=\"name\">Regenerate Text</p>\r\n <p class=\"desc\">Get a fresh variation of a current text</p>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.editor-container{position:relative;display:inline-block;overflow:visible;width:100%}.editor-container div{outline:none}.editable-text{padding:4px;cursor:text}.toolbar{position:absolute;background:#fff;box-shadow:0 2px 5px #0003;display:flex;gap:5px;align-items:center;z-index:100000;box-shadow:#00000029 0 1px 4px;padding:5px 15px;border-radius:22px}.toolbar:hover{border:1px solid #ccc}.toolbar button{background:none;border:none;padding:5px 8px;cursor:pointer;font-weight:700;display:flex;align-items:center}.toolbar button:hover{background:#ddd}.toolbar select{padding:3px;border:none;outline:none;font-size:14px;font-weight:600;cursor:pointer}.toolbar input[type=color]{border:none;width:30px;height:30px;padding:0;cursor:pointer}.color-picker-btn{position:relative;background:none;border:none;cursor:pointer;padding:5px}.hidden-color-picker{position:absolute;left:0;top:0;width:100%;height:100%;opacity:0;cursor:pointer}.border,.border:hover{border:1px solid #E9E9E9!important;border-radius:8px}.selectedTool{background:var(--primary-bg-color)!important;color:#fff;border-radius:5px}p{margin-bottom:0rem!important}.suggestion-box{position:absolute;background:#fff;border:1px solid #ccc;box-shadow:0 2px 5px #0003;z-index:10000;box-shadow:#00000029 0 1px 4px;padding:5px 15px;border-radius:10px}.suggestion{display:flex;gap:10px;width:307px;align-items:center;cursor:pointer}.suggestion img{border-radius:5px;width:32px;height:32px;background:#faf1fc;padding:3px}.suggestion .name{color:#000;font-family:var(--primary-font-family)}.suggestion .desc{color:#000;font-size:12px;color:#918585;font-family:var(--primary-font-family)}.colorType{display:flex;border:1px solid #E9E9E9;border-radius:5px;height:35px}.colorType .solid{border-right:1px solid #E9E9E9;font-size:14px!important;font-family:Mulish}.colorType .gradient{font-size:14px!important;font-family:Mulish}.solidColorSelected{background:var(--primary-bg-color)!important;color:#fff;border-top-left-radius:5px;border-bottom-left-radius:5px}.gradientColorSelected{background:var(--primary-bg-color)!important;color:#fff;border-top-right-radius:5px;border-bottom-right-radius:5px}@media screen and (max-width: 475px){.toolbar{max-width:100%;flex-wrap:wrap;row-gap:15px}.tool{width:max-content!important}}\n"] }]
365
365
  }], ctorParameters: () => [{ type: i1.ElementServiceService }, { type: Object, decorators: [{
366
366
  type: Inject,
367
367
  args: [PLATFORM_ID]
@@ -391,4 +391,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
391
391
  }], label: [{
392
392
  type: Input
393
393
  }] } });
394
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lbGVtZW50cy90ZXh0LWVkaXRvci90ZXh0LWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL3RleHQtZWRpdG9yL3RleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3RJLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN6RixPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7QUFnQnZELE1BQU0sT0FBTyxtQkFBbUI7SUFnQzlCLFlBQW9CLGFBQW9DLEVBQ3pCLFVBQWtCO1FBRDdCLGtCQUFhLEdBQWIsYUFBYSxDQUF1QjtRQUN6QixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBMUJ4QyxVQUFLLEdBQVcscUNBQXFDLENBQUM7UUFDckQsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzFDLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFJbkMsU0FBSSxHQUFHLEtBQUssQ0FBQztRQUNiLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFDYixnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUNoQixjQUFTLEdBQVksSUFBSSxDQUFDO1FBQzFCLG1CQUFjLEdBQVksS0FB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LEtBQUs7c0JBQWIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNFLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT3V0cHV0LCBQTEFURk9STV9JRCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29udGVudGVkaXRhYmxlVmFsdWVBY2Nlc3NvciB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50ZWRpdGFibGUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbGVtZW50U2VydmljZVNlcnZpY2UgfSBmcm9tICcuLi9lZGl0b3Itc2VydmljZS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ltcG8tdGV4dC1lZGl0b3InLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBDb250ZW50ZWRpdGFibGVWYWx1ZUFjY2Vzc29yLFxyXG4gICAgTWF0SWNvbk1vZHVsZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vdGV4dC1lZGl0b3IuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFRleHRFZGl0b3JDb21wb25lbnQge1xyXG4gIEBWaWV3Q2hpbGQoJ3Rvb2xiYXInLCB7IHN0YXRpYzogZmFsc2UgfSkgdG9vbGJhciE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnZWRpdG9yJywgeyBzdGF0aWM6IGZhbHNlIH0pIGVkaXRvciE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnY29sb3JQaWNrZXInKSBjb2xvclBpY2tlciE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgncGFyZW50RWxlbWVudCcpIHBhcmVudEVsZW1lbnQhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ3N1Z2dlc3Rpb24nLCB7IHN0YXRpYzogZmFsc2UgfSkgc3VnZ2VzdGlvbiE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBJbnB1dCgpIHZhbHVlOiBzdHJpbmcgPSAnPHA+SGVsbG8gdGhpcyBpcyBwYWxhc2ggbWFraGlqYTwvcD4nO1xyXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBJbnB1dCgpIGVkaXRhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2VjdGlvbklkPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGxhYmVsPzogc3RyaW5nO1xyXG5cclxuICBzaG93ID0gZmFsc2U7XHJcbiAgdG9vbGJhclkgPSAwO1xyXG4gIHN1Z2dlc3Rpb25ZID0gMDtcclxuICByaWdodFplcm86IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHNob3dTdWdnZXN0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdG9vbGJhckRhdGE6IGFueSA9IHtcclxuICAgIHNlbGVjdGVkSGVhZGluZzogJycsXHJcbiAgICBpc0JvbGQ6IGZhbHNlLFxyXG4gICAgaXNJdGFsaWM6IGZhbHNlLFxyXG4gICAgaXNVbmRlcmxpbmVkOiBmYWxzZSxcclxuICAgIHNlbGVjdGVkU2l6ZTogJycsXHJcbiAgICBzZWxlY3RlZExpc3Q6ICcnLFxyXG4gICAgc2VsZWN0ZWRBbGlnbm1lbnQ6ICcnLFxyXG4gICAgc2VsZWN0ZWRDb2xvcjogJyMwMDAwMDAnXHJcbiAgfVxyXG4gIHNlbGVjdGVkQ29sb3JUeXBlOiAnU09MSUQnIHwgJ0dSQURJRU5UJyA9ICdTT0xJRCc7XHJcbiAgcHJpbWFyeUNvbG9yOiBzdHJpbmcgPSAnIzAwMDAwMCc7XHJcbiAgc2Vjb25kYXJ5Q29sb3I6IHN0cmluZyA9ICcjMDAwMDAwJztcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlZGl0b3JTZXJ2aWNlOiBFbGVtZW50U2VydmljZVNlcnZpY2UsXHJcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IE9iamVjdFxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcclxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5oaWRlVG9vbGJhci5iaW5kKHRoaXMpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcclxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5oaWRlVG9vbGJhci5iaW5kKHRoaXMpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBzaG93VG9vbGJhcihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpIHx8ICF0aGlzLmVkaXRhYmxlKSByZXR1cm47XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xyXG4gICAgaWYgKHNlbGVjdGlvbiA9PSBudWxsKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTtcclxuICAgIGNvbnN0IHJlY3QgPSByYW5nZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IHBhcmVudFJlY3QgPSB0aGlzLnBhcmVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IHRvcEZyb21QYXJlbnQgPSByZWN0LnRvcCAtIHBhcmVudFJlY3QudG9wO1xyXG5cclxuICAgIGlmIChzZWxlY3Rpb24gJiYgc2VsZWN0aW9uLnJhbmdlQ291bnQgPiAwKSB7XHJcbiAgICAgIHRoaXMuc3VnZ2VzdGlvblkgPSB0b3BGcm9tUGFyZW50ICsgMzA7XHJcbiAgICAgIHRoaXMuc2hvd1N1Z2dlc3Rpb24gPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzZWxlY3Rpb24gJiYgc2VsZWN0aW9uLnRvU3RyaW5nKCkudHJpbSgpICE9PSAnJykge1xyXG4gICAgICBjb25zdCB0b29sYmFyV2lkdGggPSA1NDE7XHJcblxyXG4gICAgICBjb25zdCB2aWV3cG9ydFdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgICAgIGNvbnN0IHJpZ2h0UG9zaXRvbiA9IHZpZXdwb3J0V2lkdGggLSBwYXJlbnRSZWN0LmxlZnQ7XHJcbiAgICAgIGlmIChyaWdodFBvc2l0b24gKyB0b29sYmFyV2lkdGggPiB2aWV3cG9ydFdpZHRoKSB7XHJcbiAgICAgICAgdGhpcy5yaWdodFplcm8gPSBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJpZ2h0WmVybyA9IHRydWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudG9vbGJhclkgPSB0b3BGcm9tUGFyZW50ICsgMzA7XHJcblxyXG4gICAgICB0aGlzLnJlRm9ybWF0dGluZ0RhdGEoKTtcclxuICAgICAgdGhpcy5yZWFkRm9ybWF0dGluZ1Byb3BlcnRpZXMoKTtcclxuXHJcbiAgICAgIHRoaXMuc2hvdyA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNob3cgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhpZGVUb29sYmFyKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgfHwgIXRoaXMuZWRpdGFibGUpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBjbGlja2VkSW5zaWRlRWRpdG9yID0gdGhpcy5lZGl0b3I/Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcclxuICAgIGNvbnN0IGNsaWNrZWRJbnNpZGVUb29sYmFyID0gdGhpcy50b29sYmFyPy5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCk7XHJcbiAgICBjb25zdCBjbGlja2VkSW5zaWRlU3VnZ2VzdGlvbiA9IHRoaXMuc3VnZ2VzdGlvbj8ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpO1xyXG5cclxuICAgIC8vIEhpZGUgdGhlIHRvb2xiYXIgaWYgdGhlIGNsaWNrIGlzIG91dHNpZGUgYm90aCB0aGUgZWRpdG9yIGFuZCB0b29sYmFyXHJcbiAgICBpZiAoIWNsaWNrZWRJbnNpZGVFZGl0b3IgJiYgIWNsaWNrZWRJbnNpZGVUb29sYmFyKSB7XHJcbiAgICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKCFjbGlja2VkSW5zaWRlRWRpdG9yICYmICFjbGlja2VkSW5zaWRlU3VnZ2VzdGlvbikge1xyXG4gICAgICB0aGlzLnNob3dTdWdnZXN0aW9uID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb3JtYXRUZXh0KGNvbW1hbmQ6IHN0cmluZywgdmFsdWU6IHN0cmluZyA9ICcnKSB7XHJcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcclxuXHJcbiAgICAvLyAgIGlmIChjb21tYW5kID09PSAnZm9ybWF0QmxvY2snKSB7XHJcbiAgICAvLyAgICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xyXG4gICAgLy8gICAgIGlmICghc2VsZWN0aW9uIHx8IHNlbGVjdGlvbi5yYW5nZUNvdW50ID09PSAwKSByZXR1cm47XHJcblxyXG4gICAgLy8gICAgIGNvbnN0IHJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7XHJcbiAgICAvLyAgICAgY29uc3Qgc2VsZWN0ZWRUZXh0ID0gc2VsZWN0aW9uLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgLy8gICAgIGlmIChzZWxlY3RlZFRleHQpIHtcclxuICAgIC8vICAgICAgICAgY29uc3QgbmV3RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodmFsdWUpO1xyXG4gICAgLy8gICAgICAgICBuZXdFbGVtZW50LnRleHRDb250ZW50ID0gc2VsZWN0ZWRUZXh0O1xyXG5cclxuICAgIC8vICAgICAgICAgcmFuZ2UuZGVsZXRlQ29udGVudHMoKTtcclxuICAgIC8vICAgICAgICAgcmFuZ2UuaW5zZXJ0Tm9kZShuZXdFbGVtZW50KTtcclxuXHJcbiAgICAvLyAgICAgICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRIZWFkaW5nID0gdmFsdWU7XHJcbiAgICAvLyAgICAgICAgIHJldHVybjtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyB9XHJcbiAgICBkb2N1bWVudC5leGVjQ29tbWFuZChjb21tYW5kLCBmYWxzZSwgdmFsdWUpO1xyXG5cclxuICAgIGlmIChjb21tYW5kID09PSAnYm9sZCcpXHJcbiAgICAgIHRoaXMudG9vbGJhckRhdGEuaXNCb2xkID0gIXRoaXMudG9vbGJhckRhdGEuaXNCb2xkO1xyXG4gICAgaWYgKGNvbW1hbmQgPT09ICdpdGFsaWMnKVxyXG4gICAgICB0aGlzLnRvb2xiYXJEYXRhLmlzSXRhbGljID0gIXRoaXMudG9vbGJhckRhdGEuaXNJdGFsaWM7XHJcbiAgICBpZiAoY29tbWFuZCA9PT0gJ3VuZGVybGluZScpXHJcbiAgICAgIHRoaXMudG9vbGJhckRhdGEuaXNVbmRlcmxpbmVkID0gIXRoaXMudG9vbGJhckRhdGEuaXNVbmRlcmxpbmVkXHJcbiAgICBpZiAoY29tbWFuZCA9PT0gJ2luc2VydE9yZGVyZWRMaXN0JyB8fCBjb21tYW5kID09PSAnaW5zZXJ0VW5vcmRlcmVkTGlzdCcpXHJcbiAgICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRMaXN0ID0gY29tbWFuZCA9PT0gdGhpcy50b29sYmFyRGF0YS5zZWxlY3RlZExpc3QgPyAnJyA6IGNvbW1hbmQ7XHJcbiAgICBpZiAoY29tbWFuZCA9PT0gJ2p1c3RpZnlMZWZ0JyB8fCBjb21tYW5kID09PSAnanVzdGlmeUNlbnRlcicgfHwgY29tbWFuZCA9PT0gJ2p1c3RpZnlSaWdodCcpXHJcbiAgICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRBbGlnbm1lbnQgPSBjb21tYW5kID09PSB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkQWxpZ25tZW50ID8gJycgOiBjb21tYW5kO1xyXG4gICAgaWYgKGNvbW1hbmQgPT09ICdmb3JtYXRCbG9jaycpXHJcbiAgICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRIZWFkaW5nID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VGb250U2l6ZShldmVudDogYW55KSB7XHJcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBzaXplID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG5cclxuICAgIC8vIEFwcGx5IGEgZGVmYXVsdCBzaXplIG9mIDQgKG5lZWRlZCBmb3IgZXhlY0NvbW1hbmQgdG8gd29yaylcclxuICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdmb250U2l6ZScsIGZhbHNlLCAnNCcpO1xyXG5cclxuICAgIC8vIENvbnZlcnQgc2VsZWN0ZWQgZm9udCBlbGVtZW50cyB0byBoYXZlIGFjdHVhbCBmb250LXNpemUgaW5zdGVhZCBvZiBcInNpemVcIiBhdHRyaWJ1dGVcclxuICAgIGNvbnN0IGVsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcImZvbnRbc2l6ZT0nNCddXCIpO1xyXG4gICAgZWxlbWVudHMuZm9yRWFjaChlbCA9PiB7XHJcbiAgICAgIGNvbnN0IGh0bWxFbGVtZW50ID0gZWwgYXMgSFRNTEVsZW1lbnQ7IC8vIOKchSBFeHBsaWNpdGx5IGNhc3QgdG8gSFRNTEVsZW1lbnRcclxuICAgICAgaHRtbEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdzaXplJyk7IC8vIFJlbW92ZSBvbGQgc2l6ZSBhdHRyaWJ1dGVcclxuICAgICAgaHRtbEVsZW1lbnQuc3R5bGUuZm9udFNpemUgPSBzaXplOyAvLyBBcHBseSBDU1MgZm9udCBzaXplXHJcbiAgICB9KTtcclxuICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRTaXplID0gc2l6ZTtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmVkaXRvci5uYXRpdmVFbGVtZW50LmlubmVySFRNTCk7XHJcbiAgICAvLyB0aGlzLnNob3cgPSBmYWxzZTsgLy8gSGlkZSB0b29sYmFyIGFmdGVyIGFjdGlvblxyXG4gIH1cclxuXHJcbiAgY2hhbmdlQ29sb3IoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XHJcbiAgICB0aGlzLnJlc3RvcmVTZWxlY3Rpb24oKTsgLy8gUmVzdG9yZSBzZWxlY3Rpb24gYmVmb3JlIHRvdWNoaW5nIERPTVxyXG5cclxuICAgIGNvbnN0IGNvbG9yID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgLy8gR3JhYiBjdXJyZW50IHNlbGVjdGlvblxyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xyXG4gICAgaWYgKHNlbGVjdGlvbiAmJiBzZWxlY3Rpb24ucmFuZ2VDb3VudCA+IDApIHtcclxuICAgICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTtcclxuICAgICAgbGV0IHRhcmdldE5vZGU6IE5vZGUgfCBudWxsID0gcmFuZ2UuY29tbW9uQW5jZXN0b3JDb250YWluZXI7XHJcblxyXG4gICAgICBpZiAoIXRhcmdldE5vZGUpIHJldHVybjtcclxuICAgICAgLy8gSWYgaXQncyBhIHRleHQgbm9kZSwgd29yayB3aXRoIGl0cyBwYXJlbnQgZWxlbWVudFxyXG4gICAgICBpZiAodGFyZ2V0Tm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUgJiYgdGFyZ2V0Tm9kZS5wYXJlbnRFbGVtZW50KSB7XHJcbiAgICAgICAgdGFyZ2V0Tm9kZSA9IHRhcmdldE5vZGUucGFyZW50RWxlbWVudDtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRhcmdldE5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xyXG4gICAgICAgIGNvbnN0IGVsID0gdGFyZ2V0Tm9kZSBhcyBIVE1MRWxlbWVudDtcclxuXHJcbiAgICAgICAgLy8gMSkgSWYgaXQgKmhhcyogZ3JhZGllbnQgc3R5bGluZywgc3RyaXAgaXQgb2ZmIGFuZCBpbW1lZGlhdGVseSBhcHBseSB5b3VyIHNvbGlkIGNvbG9yXHJcbiAgICAgICAgY29uc3QgaGFzR3JhZGllbnQgPVxyXG4gICAgICAgICAgZWwuc3R5bGUuYmFja2dyb3VuZENsaXAgPT09ICd0ZXh0JyB8fFxyXG4gICAgICAgICAgZWwuc3R5bGUud2Via2l0QmFja2dyb3VuZENsaXAgPT09ICd0ZXh0JztcclxuXHJcbiAgICAgICAgaWYgKGhhc0dyYWRpZW50KSB7XHJcbiAgICAgICAgICBlbC5zdHlsZS5iYWNrZ3JvdW5kID0gJyc7XHJcbiAgICAgICAgICBlbC5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9ICcnO1xyXG4gICAgICAgICAgZWwuc3R5bGUud2Via2l0QmFja2dyb3VuZENsaXAgPSAnJztcclxuICAgICAgICAgIGVsLnN0eWxlLndlYmtpdFRleHRGaWxsQ29sb3IgPSAnJztcclxuICAgICAgICAgIGVsLnN0eWxlLmNvbG9yID0gY29sb3I7XHJcblxyXG4gICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMuZWRpdG9yLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MKTtcclxuICAgICAgICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRDb2xvciA9IGNvbG9yO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gMikgSWYgKm5vKiBncmFkaWVudCBzdHlsaW5nLCBsb29rIGZvciBhbnkgPHNwYW4+IHdyYXBwZXJzIGFuZCB1bndyYXAgdGhlbVxyXG4gICAgICAgIC8vICAgIHNvIHRoYXQgb3VyIGV4ZWNDb21tYW5kKCdmb3JlQ29sb3InKSBjYW4gY2xlYW5seSBhcHBseSB0byBwbGFpbiB0ZXh0XHJcblxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBzcGFucyA9IHRoaXMuZWRpdG9yLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnc3BhbicpO1xyXG4gICAgc3BhbnMuZm9yRWFjaCgoc3BhbjogYW55KSA9PiB7XHJcbiAgICAgIC8vIE9ubHkgdW53cmFwIHNwYW5zIHRoYXQgKmRvbuKAmXQqIGNhcnJ5IGdyYWRpZW504oCUaS5lLiBzdHJpcHMgYW55IHJlc2lkdWFsIHRhZ3NcclxuICAgICAgY29uc3QgcGFyZW50ID0gc3Bhbi5wYXJlbnROb2RlITtcclxuICAgICAgd2hpbGUgKHNwYW4uZmlyc3RDaGlsZCkge1xyXG4gICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoc3Bhbi5maXJzdENoaWxkLCBzcGFuKTtcclxuICAgICAgfVxyXG4gICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQoc3Bhbik7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyAzKSBGaW5hbGx5LCB1c2UgdGhlIGxlZ2FjeSBleGVjQ29tbWFuZCBmb3Igc29saWQgY29sb3JcclxuICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdmb3JlQ29sb3InLCBmYWxzZSwgY29sb3IpO1xyXG5cclxuICAgIC8vIFVwZGF0ZSB0b29sYmFyIHN0YXRlXHJcbiAgICB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkQ29sb3IgPSBjb2xvcjtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmVkaXRvci5uYXRpdmVFbGVtZW50LmlubmVySFRNTCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVUZXh0KGV2ZW50OiBFdmVudCkge1xyXG4gICAgLy8gY29uc29sZS5sb2codGhpcy5lZGl0b3IubmF0aXZlRWxlbWVudC5pbm5lckhUTUwpXHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy5lZGl0b3IubmF0aXZlRWxlbWVudC5pbm5lckhUTUwpO1xyXG4gIH1cclxuXHJcbiAgb25Gb3JtYXRDaGFuZ2UoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZFZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MU2VsZWN0RWxlbWVudCkudmFsdWU7XHJcbiAgICB0aGlzLmZvcm1hdFRleHQoJ2Zvcm1hdEJsb2NrJywgc2VsZWN0ZWRWYWx1ZSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgb3BlbkNvbG9yUGlja2VyKCkge1xyXG4gICAgLy8gdGhpcy5jb2xvclBpY2tlci5uYXRpdmVFbGVtZW50LmNsaWNrKCk7IC8vIFByb2dyYW1tYXRpY2FsbHkgdHJpZ2dlciBpbnB1dFxyXG4gICAgdGhpcy5zYXZlU2VsZWN0aW9uKCk7IC8vIFNhdmUgdGhlIGN1cnJlbnQgc2VsZWN0aW9uXHJcbiAgfVxyXG5cclxuICByZWFkRm9ybWF0dGluZ1Byb3BlcnRpZXMoKSB7XHJcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XHJcbiAgICBpZiAoIXNlbGVjdGlvbikgcmV0dXJuO1xyXG4gICAgY29uc3Qgbm9kZSA9IHNlbGVjdGlvbi5mb2N1c05vZGUgYXMgSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgLy8gQ2hlY2sgaWYgbm9kZSBpcyBudWxsXHJcbiAgICBpZiAoIW5vZGUpIHJldHVybjtcclxuXHJcbiAgICBsZXQgZWxlbWVudCA9IG5vZGUucGFyZW50RWxlbWVudDtcclxuICAgIHdoaWxlIChlbGVtZW50KSB7XHJcbiAgICAgIGNvbnN0IG5vZGVOYW1lID0gZWxlbWVudC5ub2RlTmFtZTtcclxuXHJcbiAgICAgIGlmIChub2RlTmFtZSA9PT0gJ0gxJyB8fCBub2RlTmFtZSA9PT0gJ0gyJyB8fCBub2RlTmFtZSA9PT0gJ0gzJykge1xyXG4gICAgICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRIZWFkaW5nID0gbm9kZU5hbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAobm9kZU5hbWUgPT09ICdCJyB8fCBub2RlTmFtZSA9PT0gJ1NUUk9ORycpIHtcclxuICAgICAgICB0aGlzLnRvb2xiYXJEYXRhLmlzQm9sZCA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSBpZiAobm9kZU5hbWUgPT09ICdJJyB8fCBub2RlTmFtZSA9PT0gJ0VNJykge1xyXG4gICAgICAgIHRoaXMudG9vbGJhckRhdGEuaXNJdGFsaWMgPSB0cnVlO1xyXG4gICAgICB9IGVsc2UgaWYgKG5vZGVOYW1lID09PSAnVScpIHtcclxuICAgICAgICB0aGlzLnRvb2xiYXJEYXRhLmlzVW5kZXJsaW5lZCA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSBpZiAobm9kZU5hbWUgPT09ICdPTCcpIHtcclxuICAgICAgICB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkTGlzdCA9ICdpbnNlcnRPcmRlcmVkTGlzdCc7XHJcbiAgICAgIH0gZWxzZSBpZiAobm9kZU5hbWUgPT09ICdVTCcpIHtcclxuICAgICAgICB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkTGlzdCA9ICdpbnNlcnRVbm9yZGVyZWRMaXN0JztcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnN0eWxlLnRleHRBbGlnbikge1xyXG4gICAgICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRBbGlnbm1lbnQgPSBganVzdGlmeSR7ZWxlbWVudC5zdHlsZS50ZXh0QWxpZ24uY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBlbGVtZW50LnN0eWxlLnRleHRBbGlnbi5zbGljZSgxKX1gO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuc3R5bGUuZm9udFNpemUpIHtcclxuICAgICAgICB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkU2l6ZSA9IGVsZW1lbnQuc3R5bGUuZm9udFNpemU7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5zdHlsZS5jb2xvcikge1xyXG4gICAgICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRDb2xvciA9IGVsZW1lbnQuc3R5bGUuY29sb3JcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICAgIGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZUZvcm1hdHRpbmdEYXRhKCkge1xyXG4gICAgdGhpcy50b29sYmFyRGF0YSA9IHtcclxuICAgICAgc2VsZWN0ZWRIZWFkaW5nOiAnJyxcclxuICAgICAgaXNCb2xkOiBmYWxzZSxcclxuICAgICAgaXNJdGFsaWM6IGZhbHNlLFxyXG4gICAgICBpc1VuZGVybGluZWQ6IGZhbHNlLFxyXG4gICAgICBzZWxlY3RlZFNpemU6ICcnLFxyXG4gICAgICBzZWxlY3RlZExpc3Q6ICcnLFxyXG4gICAgICBzZWxlY3RlZEFsaWdubWVudDogJycsXHJcbiAgICAgIHNlbGVjdGVkQ29sb3I6ICcnXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VHcmFkaWVudENvbG9yKCkge1xyXG4gICAgdGhpcy5yZXN0b3JlU2VsZWN0aW9uKCk7IC8vIFJlc3RvcmUgdGhlIHNlbGVjdGlvbiBiZWZvcmUgYXBwbHlpbmcgZ3JhZGllbnRcclxuICAgIGNvbnN0IGNvbG9yID0gYGxpbmVhci1ncmFkaWVudCg5MGRlZywgJHt0aGlzLnByaW1hcnlDb2xvcn0gMCUsICR7dGhpcy5zZWNvbmRhcnlDb2xvcn0gMTAwJSlgXHJcbiAgICB0aGlzLmFwcGx5R3JhZGllbnRUb1RleHQoY29sb3IpXHJcbiAgfVxyXG5cclxuICBhcHBseUdyYWRpZW50VG9UZXh0KGdyYWRpZW50VmFsdWU6IHN0cmluZykge1xyXG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xyXG4gICAgaWYgKCFzZWxlY3Rpb24gfHwgc2VsZWN0aW9uLnJhbmdlQ291bnQgPT09IDApIHJldHVybjtcclxuXHJcbiAgICAvLyBHZXQgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIHJhbmdlXHJcbiAgICBjb25zdCByYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApO1xyXG5cclxuICAgIC8vIENoZWNrIGlmIHRoZSByYW5nZSBpcyB2YWxpZCBmb3Igd3JhcHBpbmdcclxuICAgIGlmICghcmFuZ2UgfHwgcmFuZ2UuY29sbGFwc2VkKSByZXR1cm47XHJcblxyXG4gICAgLy8gRXh0cmFjdCB0aGUgc2VsZWN0ZWQgY29udGVudFxyXG4gICAgY29uc3Qgc2VsZWN0ZWRDb250ZW50ID0gcmFuZ2UuZXh0cmFjdENvbnRlbnRzKCk7XHJcblxyXG4gICAgY29uc3Qgc3BhbnMgPSB0aGlzLmVkaXRvci5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3NwYW4nKTtcclxuICAgIHNwYW5zLmZvckVhY2goKHNwYW46IGFueSkgPT4ge1xyXG4gICAgICAvLyBPbmx5IHVud3JhcCBzcGFucyB0aGF0ICpkb27igJl0KiBjYXJyeSBncmFkaWVudOKAlGkuZS4gc3RyaXBzIGFueSByZXNpZHVhbCB0YWdzXHJcbiAgICAgIGNvbnN0IHBhcmVudCA9IHNwYW4ucGFyZW50Tm9kZSE7XHJcbiAgICAgIHdoaWxlIChzcGFuLmZpcnN0Q2hpbGQpIHtcclxuICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKHNwYW4uZmlyc3RDaGlsZCwgc3Bhbik7XHJcbiAgICAgIH1cclxuICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKHNwYW4pO1xyXG4gICAgfSk7XHJcblxyXG5cclxuICAgIC8vIENyZWF0ZSBhIG5ldyA8c3Bhbj4gZWxlbWVudCB0byB3cmFwIHRoZSBzZWxlY3RlZCB0ZXh0XHJcbiAgICBjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xyXG4gICAgc3Bhbi5zdHlsZS5iYWNrZ3JvdW5kID0gZ3JhZGllbnRWYWx1ZTtcclxuICAgIHNwYW4uc3R5bGUuYmFja2dyb3VuZENsaXAgPSAndGV4dCc7XHJcbiAgICBzcGFuLnN0eWxlLndlYmtpdEJhY2tncm91bmRDbGlwID0gJ3RleHQnO1xyXG4gICAgc3Bhbi5zdHlsZS5jb2xvciA9ICd0cmFuc3BhcmVudCc7XHJcbiAgICBzcGFuLnN0eWxlLndlYmtpdFRleHRGaWxsQ29sb3IgPSAndHJhbnNwYXJlbnQnO1xyXG5cclxuICAgIC8vIEFwcGVuZCB0aGUgc2VsZWN0ZWQgY29udGVudCB0byB0aGUgPHNwYW4+XHJcbiAgICBzcGFuLmFwcGVuZENoaWxkKHNlbGVjdGVkQ29udGVudCk7XHJcblxyXG4gICAgLy8gSW5zZXJ0IHRoZSA8c3Bhbj4gYmFjayBpbnRvIHRoZSByYW5nZVxyXG4gICAgcmFuZ2UuaW5zZXJ0Tm9kZShzcGFuKTtcclxuXHJcbiAgICAvLyBDbGVhciB0aGUgc2VsZWN0aW9uXHJcbiAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7XHJcblxyXG4gICAgLy8gRW1pdCB0aGUgdXBkYXRlZCBIVE1MIGNvbnRlbnRcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmVkaXRvci5uYXRpdmVFbGVtZW50LmlubmVySFRNTCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcmVnZW5lcmF0ZVRleHQoKSB7XHJcbiAgICBsZXQgcGF5bG9hZCA9IHtcclxuICAgICAgYnVzaW5lc3NJZDogbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2J1c2luZXNzSWQnKSxcclxuICAgICAgZGF0YUlkOiB0aGlzLnNlY3Rpb25JZCxcclxuICAgICAgc3ViSW5kdXN0cnlJZDogbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3N1YkluZHVzdHJ5SWQnKSxcclxuICAgICAgc3VnZ2VzdGVkRGF0YVR5cGU6ICdDT01QT05FTlQnLFxyXG4gICAgICB0b25lOiAnUFJPRkVTU0lPTkFMJyxcclxuICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXHJcbiAgICAgIGxhYmVsOiB0aGlzLmxhYmVsXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnJlZ2VuZXJhdGVUZXh0KHBheWxvYWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy52YWx1ZSA9IHJlcy5kYXRhO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2F2ZWRSYW5nZTogUmFuZ2UgfCBudWxsID0gbnVsbDtcclxuXHJcblxyXG4gIHNhdmVTZWxlY3Rpb24oKTogdm9pZCB7XHJcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XHJcbiAgICBpZiAoc2VsZWN0aW9uICYmIHNlbGVjdGlvbi5yYW5nZUNvdW50ID4gMCkge1xyXG4gICAgICB0aGlzLnNhdmVkUmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc3RvcmVTZWxlY3Rpb24oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zYXZlZFJhbmdlKSB7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcclxuICAgICAgc2VsZWN0aW9uPy5yZW1vdmVBbGxSYW5nZXMoKTtcclxuICAgICAgc2VsZWN0aW9uPy5hZGRSYW5nZSh0aGlzLnNhdmVkUmFuZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpIHtcclxuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xyXG5cclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBjb25zdCBodG1sID0gZXZlbnQuY2xpcGJvYXJkRGF0YT8uZ2V0RGF0YSgndGV4dC9odG1sJykgfHwgJyc7XHJcbiAgICBjb25zdCBjbGVhbkh0bWwgPSB0aGlzLnN0cmlwU3R5bGVzKGh0bWwpO1xyXG5cclxuICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdpbnNlcnRIVE1MJywgZmFsc2UsIGNsZWFuSHRtbCk7XHJcbiAgfVxyXG5cclxuICBzdHJpcFN0eWxlcyhodG1sOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZG9jID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhodG1sLCAndGV4dC9odG1sJyk7XHJcbiAgICBjb25zdCBlbGVtZW50cyA9IGRvYy5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoJyonKTtcclxuICAgIGVsZW1lbnRzLmZvckVhY2goZWwgPT4ge1xyXG4gICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoJ3N0eWxlJyk7IC8vIFJlbW92ZSBhbGwgaW5saW5lIHN0eWxlc1xyXG4gICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoJ2NsYXNzJyk7IC8vIE9wdGlvbmFsXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBkb2MuYm9keS5pbm5lckhUTUw7XHJcbiAgfVxyXG5cclxuICBnZXRUZXh0KCkge1xyXG4gICAgY29uc3QgdGV4dENvbnRlbnQgPSB0aGlzLnZhbHVlPy5yZXBsYWNlKC88XFwvP1tePl0rKD58JCkvZywgXCJcIik/LnJlcGxhY2UoL1xccysvZywgJyAnKS50cmltKCkgPz8gXCJcIjtcclxuICAgIGlmICghdGV4dENvbnRlbnQpIHtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy52YWx1ZTtcclxuICB9XHJcblxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZWRpdG9yLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cInsnYm9yZGVyJzogZWRpdGFibGV9XCIgI3BhcmVudEVsZW1lbnQgW2NsYXNzLmQtbm9uZV09XCIhZWRpdGFibGUgJiYgZ2V0VGV4dCgpID09ICcnXCI+XHJcbiAgPGRpdiBbY29udGVudGVkaXRhYmxlXT1cImVkaXRhYmxlXCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiIGNsYXNzPVwiZWRpdGFibGUtdGV4dFwiIChtb3VzZXVwKT1cInNob3dUb29sYmFyKCRldmVudClcIiAjZWRpdG9yXHJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVUZXh0KCRldmVudClcIiAobW91c2Vkb3duKT1cImhpZGVUb29sYmFyKCRldmVudClcIiAocGFzdGUpPVwib25QYXN0ZSgkZXZlbnQpXCI+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJ0b29sYmFyXCIgKm5nSWY9XCJlZGl0YWJsZSAmJiBzaG93XCIgW25nU3R5bGVdPVwieyd0b3AucHgnOiB0b29sYmFyWX1cIiBbc3R5bGUucmlnaHRdPVwicmlnaHRaZXJvID8gJzBweCcgOiAnYXV0bydcIiBbc3R5bGUubGVmdF09XCIhcmlnaHRaZXJvID8gJzBweCcgOiAnYXV0bydcIiAjdG9vbGJhciA+XHJcbiAgICA8IS0tIDxzZWxlY3QgY2xhc3M9XCJ0b29sXCIgKGNoYW5nZSk9XCJvbkZvcm1hdENoYW5nZSgkZXZlbnQpXCIgWyhuZ01vZGVsKV09XCJ0b29sYmFyRGF0YS5zZWxlY3RlZEhlYWRpbmdcIj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cIkgxXCI+SGVhZGluZzE8L29wdGlvbj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cIkgyXCI+SGVhZGluZzI8L29wdGlvbj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cIkgzXCI+SGVhZGluZzM8L29wdGlvbj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cImRpdlwiPlRleHQ8L29wdGlvbj5cclxuICAgIDwvc2VsZWN0PiAtLT5cclxuXHJcbiAgICA8YnV0dG9uIGNsYXNzPVwidG9vbFwiIChjbGljayk9XCJmb3JtYXRUZXh0KCdib2xkJylcIiBbbmdDbGFzc109XCJ7J3NlbGVjdGVkVG9vbCc6IHRvb2xiYXJEYXRhLmlzQm9sZH1cIj48bWF0LWljb24+IGZvcm1hdF9ib2xkPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgIDxidXR0b24gY2xhc3M9XCJ0b29sXCIgKGNsaWNrKT1cImZvcm1hdFRleHQoJ2l0YWxpYycpXCIgW25nQ2xhc3NdPVwieydzZWxlY3RlZFRvb2wnOiB0b29sYmFyRGF0YS5pc0l0YWxpY31cIj48bWF0LWljb24+IGZvcm1hdF9pdGFsaWM8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cInRvb2xcIiAoY2xpY2spPVwiZm9ybWF0VGV4dCgndW5kZXJsaW5lJylcIiBbbmdDbGFzc109XCJ7J3NlbGVjdGVkVG9vbCc6IHRvb2xiYXJEYXRhLmlzVW5kZXJsaW5lZH1cIj48bWF0LWljb24+IGZvcm1hdF91bmRlcmxpbmVkPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuXHJcbiAgICA8c2VsZWN0IGNsYXNzPVwidG9vbFwiIChjaGFuZ2UpPVwiY2hhbmdlRm9udFNpemUoJGV2ZW50KVwiIFsobmdNb2RlbCldPVwidG9vbGJhckRhdGEuc2VsZWN0ZWRTaXplXCI+XHJcbiAgICAgIDxvcHRpb24gdmFsdWU9XCJcIiBzZWxlY3RlZD5EZWZhdWx0PC9vcHRpb24+XHJcbiAgICAgIDxvcHRpb24gdmFsdWU9XCJjbGFtcCgwLjc1cmVtLCAydncsIDFyZW0pXCI+U21hbGw8L29wdGlvbj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cImNsYW1wKDFyZW0sIDN2dywgMS41cmVtKVwiPk1lZGl1bTwvb3B0aW9uPlxyXG4gICAgICA8b3B0aW9uIHZhbHVlPVwiY2xhbXAoMS4yNXJlbSwgNHZ3LCAycmVtKVwiPkxhcmdlPC9vcHRpb24+XHJcbiAgICAgIDxvcHRpb24gdmFsdWU9XCJjbGFtcCgycmVtLCA1dncsIDNyZW0pXCI+RXh0cmEgTGFyZ2U8L29wdGlvbj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cImNsYW1wKDMuMXJlbSwgN3Z3LCA0LjVyZW0pXCI+SHVnZTwvb3B0aW9uPlxyXG4gICAgPC9zZWxlY3Q+XHJcblxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cInRvb2xcIiAoY2xpY2spPVwiZm9ybWF0VGV4dCgnaW5zZXJ0T3JkZXJlZExpc3QnKVwiIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWRUb29sJzogdG9vbGJhckRhdGEuc2VsZWN0ZWRMaXN0ID09PSAnaW5zZXJ0T3JkZXJlZExpc3QnfVwiPjxtYXQtaWNvbj5mb3JtYXRfbGlzdF9udW1iZXJlZDwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwidG9vbFwiIChjbGljayk9XCJmb3JtYXRUZXh0KCdpbnNlcnRVbm9yZGVyZWRMaXN0JylcIiBbbmdDbGFzc109XCJ7J3NlbGVjdGVkVG9vbCc6IHRvb2xiYXJEYXRhLnNlbGVjdGVkTGlzdCA9PT0gJ2luc2VydFVub3JkZXJlZExpc3QnfVwiPjxtYXQtaWNvbj4gZm9ybWF0X2xpc3RfYnVsbGV0ZWQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG5cclxuICAgIDxidXR0b24gY2xhc3M9XCJ0b29sXCIgKGNsaWNrKT1cImZvcm1hdFRleHQoJ2p1c3RpZnlMZWZ0JylcIiBbbmdDbGFzc109XCJ7J3NlbGVjdGVkVG9vbCc6IHRvb2xiYXJEYXRhLnNlbGVjdGVkQWxpZ25tZW50ID09PSAnanVzdGlmeUxlZnQnfVwiPjxtYXQtaWNvbj4gZm9ybWF0X2FsaWduX2xlZnQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cInRvb2xcIiAoY2xpY2spPVwiZm9ybWF0VGV4dCgnanVzdGlmeUNlbnRlcicpXCIgW25nQ2xhc3NdPVwieydzZWxlY3RlZFRvb2wnOiB0b29sYmFyRGF0YS5zZWxlY3RlZEFsaWdubWVudCA9PT0gJ2p1c3RpZnlDZW50ZXInfVwiPjxtYXQtaWNvbj4gZm9ybWF0X2FsaWduX2NlbnRlcjwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwidG9vbFwiIChjbGljayk9XCJmb3JtYXRUZXh0KCdqdXN0aWZ5UmlnaHQnKVwiIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWRUb29sJzogdG9vbGJhckRhdGEuc2VsZWN0ZWRBbGlnbm1lbnQgPT09ICdqdXN0aWZ5UmlnaHQnfVwiPjxtYXQtaWNvbj4gZm9ybWF0X2FsaWduX3JpZ2h0PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sb3JUeXBlXCI+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJzb2xpZFwiIFtuZ0NsYXNzXT1cInsnc29saWRDb2xvclNlbGVjdGVkJzogc2VsZWN0ZWRDb2xvclR5cGUgPT09ICdTT0xJRCd9XCIgKGNsaWNrKT1cInNlbGVjdGVkQ29sb3JUeXBlID0gJ1NPTElEJ1wiPlNvbGlkPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJncmFkaWVudFwiIFtuZ0NsYXNzXT1cInsnZ3JhZGllbnRDb2xvclNlbGVjdGVkJzogc2VsZWN0ZWRDb2xvclR5cGUgPT09ICdHUkFESUVOVCd9XCIgKGNsaWNrKT1cInNlbGVjdGVkQ29sb3JUeXBlID0gJ0dSQURJRU5UJ1wiPkdyYWRpZW50PC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8YnV0dG9uIGNsYXNzPVwidG9vbCBjb2xvci1waWNrZXItYnRuXCIgKGNsaWNrKT1cIm9wZW5Db2xvclBpY2tlcigpXCIgKm5nSWY9XCJzZWxlY3RlZENvbG9yVHlwZSA9PT0gJ1NPTElEJ1wiPlxyXG4gICAgICA8bWF0LWljb24+Zm9ybWF0X2NvbG9yX3RleHQ8L21hdC1pY29uPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cImNvbG9yXCIgI2NvbG9yUGlja2VyIGNsYXNzPVwiaGlkZGVuLWNvbG9yLXBpY2tlclwiIChpbnB1dCk9XCJjaGFuZ2VDb2xvcigkZXZlbnQpXCIgWyhuZ01vZGVsKV09XCJ0b29sYmFyRGF0YS5zZWxlY3RlZENvbG9yXCI+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIFxyXG4gICAgPGRpdiBjbGFzcz1cImNvbG9yVHlwZVwiICpuZ0lmPVwic2VsZWN0ZWRDb2xvclR5cGUgPT09ICdHUkFESUVOVCdcIj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInRvb2wgY29sb3ItcGlja2VyLWJ0blwiIChjbGljayk9XCJvcGVuQ29sb3JQaWNrZXIoKTsgcHJpbWFyeUNvbG9yUGlja2VyLmNsaWNrKClcIj5cclxuICAgICAgICA8bWF0LWljb24gW3N0eWxlLmNvbG9yXT1cInByaW1hcnlDb2xvclwiPmZvcm1hdF9jb2xvcl90ZXh0PC9tYXQtaWNvbj5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cImNvbG9yXCIgI3ByaW1hcnlDb2xvclBpY2tlciBjbGFzcz1cImhpZGRlbi1jb2xvci1waWNrZXJcIiAoaW5wdXQpPVwiY2hhbmdlR3JhZGllbnRDb2xvcigpXCIgWyhuZ01vZGVsKV09XCJwcmltYXJ5Q29sb3JcIj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJ0b29sIGNvbG9yLXBpY2tlci1idG5cIiAoY2xpY2spPVwib3BlbkNvbG9yUGlja2VyKCk7IHNlY29uZGFyeUNvbG9yUGlja2VyLmNsaWNrKClcIj5cclxuICAgICAgICA8bWF0LWljb24gW3N0eWxlLmNvbG9yXT1cInNlY29uZGFyeUNvbG9yXCI+Zm9ybWF0X2NvbG9yX3RleHQ8L21hdC1pY29uPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwiY29sb3JcIiAjc2Vjb25kYXJ5Q29sb3JQaWNrZXIgY2xhc3M9XCJoaWRkZW4tY29sb3ItcGlja2VyXCIgKGlucHV0KT1cImNoYW5nZUdyYWRpZW50Q29sb3IoKVwiIFsobmdNb2RlbCldPVwic2Vjb25kYXJ5Q29sb3JcIj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInN1Z2dlc3Rpb24tYm94XCIgW25nU3R5bGVdPVwieyd0b3AucHgnOiBzdWdnZXN0aW9uWX1cIiBbc3R5bGUucmlnaHRdPVwicmlnaHRaZXJvID8gJzBweCcgOiAnYXV0bydcIiBbc3R5bGUubGVmdF09XCIhcmlnaHRaZXJvID8gJzBweCcgOiAnYXV0bydcIiAqbmdJZj1cImVkaXRhYmxlICYmIGxhYmVsICYmIHNob3dTdWdnZXN0aW9uXCIgI3N1Z2dlc3Rpb24+XHJcbiAgICA8ZGl2IGNsYXNzPVwic3VnZ2VzdGlvblwiIChjbGljayk9XCJyZWdlbmVyYXRlVGV4dCgpXCI+XHJcbiAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9wcm9kLXNpbXBvLnMzLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbS9wcm9kLWltYWdlcy84ODc0OTNjMTc0MjI3Mzk3MDE1MUZyYW1lJTIwMTI0NDgzMTc0MC5wbmdcIiBhbHQ9XCJcIj5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8cCBjbGFzcz1cIm5hbWVcIj5SZWdlbmVyYXRlIFRleHQ8L3A+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJkZXNjXCI+R2V0IGEgZnJlc2ggdmFyaWF0aW9uIG9mIGEgY3VycmVudCB0ZXh0PC9wPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
394
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lbGVtZW50cy90ZXh0LWVkaXRvci90ZXh0LWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL3RleHQtZWRpdG9yL3RleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3RJLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN6RixPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7QUFnQnZELE1BQU0sT0FBTyxtQkFBbUI7SUFnQzlCLFlBQW9CLGFBQW9DLEVBQ3pCLFVBQWtCO1FBRDdCLGtCQUFhLEdBQWIsYUFBYSxDQUF1QjtRQUN6QixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBMUJ4QyxVQUFLLEdBQVcscUNBQXFDLENBQUM7UUFDckQsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzFDLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFJbkMsU0FBSSxHQUFHLEtBQUssQ0FBQztRQUNiLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFDYixnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUNoQixjQUFTLEdBQVksSUFBSSxDQUFDO1FBQzFCLG1CQUFjLEdBQVksS0FB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LEtBQUs7c0JBQWIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNFLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT3V0cHV0LCBQTEFURk9STV9JRCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29udGVudGVkaXRhYmxlVmFsdWVBY2Nlc3NvciB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50ZWRpdGFibGUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbGVtZW50U2VydmljZVNlcnZpY2UgfSBmcm9tICcuLi9lZGl0b3Itc2VydmljZS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ltcG8tdGV4dC1lZGl0b3InLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBDb250ZW50ZWRpdGFibGVWYWx1ZUFjY2Vzc29yLFxyXG4gICAgTWF0SWNvbk1vZHVsZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vdGV4dC1lZGl0b3IuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFRleHRFZGl0b3JDb21wb25lbnQge1xyXG4gIEBWaWV3Q2hpbGQoJ3Rvb2xiYXInLCB7IHN0YXRpYzogZmFsc2UgfSkgdG9vbGJhciE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnZWRpdG9yJywgeyBzdGF0aWM6IGZhbHNlIH0pIGVkaXRvciE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnY29sb3JQaWNrZXInKSBjb2xvclBpY2tlciE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgncGFyZW50RWxlbWVudCcpIHBhcmVudEVsZW1lbnQhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ3N1Z2dlc3Rpb24nLCB7IHN0YXRpYzogZmFsc2UgfSkgc3VnZ2VzdGlvbiE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBJbnB1dCgpIHZhbHVlOiBzdHJpbmcgPSAnPHA+SGVsbG8gdGhpcyBpcyBwYWxhc2ggbWFraGlqYTwvcD4nO1xyXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBJbnB1dCgpIGVkaXRhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2VjdGlvbklkPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGxhYmVsPzogc3RyaW5nO1xyXG5cclxuICBzaG93ID0gZmFsc2U7XHJcbiAgdG9vbGJhclkgPSAwO1xyXG4gIHN1Z2dlc3Rpb25ZID0gMDtcclxuICByaWdodFplcm86IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHNob3dTdWdnZXN0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdG9vbGJhckRhdGE6IGFueSA9IHtcclxuICAgIHNlbGVjdGVkSGVhZGluZzogJycsXHJcbiAgICBpc0JvbGQ6IGZhbHNlLFxyXG4gICAgaXNJdGFsaWM6IGZhbHNlLFxyXG4gICAgaXNVbmRlcmxpbmVkOiBmYWxzZSxcclxuICAgIHNlbGVjdGVkU2l6ZTogJycsXHJcbiAgICBzZWxlY3RlZExpc3Q6ICcnLFxyXG4gICAgc2VsZWN0ZWRBbGlnbm1lbnQ6ICcnLFxyXG4gICAgc2VsZWN0ZWRDb2xvcjogJyMwMDAwMDAnXHJcbiAgfVxyXG4gIHNlbGVjdGVkQ29sb3JUeXBlOiAnU09MSUQnIHwgJ0dSQURJRU5UJyA9ICdTT0xJRCc7XHJcbiAgcHJpbWFyeUNvbG9yOiBzdHJpbmcgPSAnIzAwMDAwMCc7XHJcbiAgc2Vjb25kYXJ5Q29sb3I6IHN0cmluZyA9ICcjMDAwMDAwJztcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlZGl0b3JTZXJ2aWNlOiBFbGVtZW50U2VydmljZVNlcnZpY2UsXHJcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IE9iamVjdFxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcclxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5oaWRlVG9vbGJhci5iaW5kKHRoaXMpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcclxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5oaWRlVG9vbGJhci5iaW5kKHRoaXMpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBzaG93VG9vbGJhcihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpIHx8ICF0aGlzLmVkaXRhYmxlKSByZXR1cm47XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xyXG4gICAgaWYgKHNlbGVjdGlvbiA9PSBudWxsKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTtcclxuICAgIGNvbnN0IHJlY3QgPSByYW5nZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IHBhcmVudFJlY3QgPSB0aGlzLnBhcmVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IHRvcEZyb21QYXJlbnQgPSByZWN0LnRvcCAtIHBhcmVudFJlY3QudG9wO1xyXG5cclxuICAgIGlmIChzZWxlY3Rpb24gJiYgc2VsZWN0aW9uLnJhbmdlQ291bnQgPiAwKSB7XHJcbiAgICAgIHRoaXMuc3VnZ2VzdGlvblkgPSB0b3BGcm9tUGFyZW50ICsgMzA7XHJcbiAgICAgIHRoaXMuc2hvd1N1Z2dlc3Rpb24gPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzZWxlY3Rpb24gJiYgc2VsZWN0aW9uLnRvU3RyaW5nKCkudHJpbSgpICE9PSAnJykge1xyXG4gICAgICBjb25zdCB0b29sYmFyV2lkdGggPSA1NDE7XHJcblxyXG4gICAgICBjb25zdCB2aWV3cG9ydFdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgICAgIGNvbnN0IHJpZ2h0UG9zaXRvbiA9IHZpZXdwb3J0V2lkdGggLSBwYXJlbnRSZWN0LmxlZnQ7XHJcbiAgICAgIGlmIChyaWdodFBvc2l0b24gKyB0b29sYmFyV2lkdGggPiB2aWV3cG9ydFdpZHRoKSB7XHJcbiAgICAgICAgdGhpcy5yaWdodFplcm8gPSBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJpZ2h0WmVybyA9IHRydWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudG9vbGJhclkgPSB0b3BGcm9tUGFyZW50ICsgMzA7XHJcblxyXG4gICAgICB0aGlzLnJlRm9ybWF0dGluZ0RhdGEoKTtcclxuICAgICAgdGhpcy5yZWFkRm9ybWF0dGluZ1Byb3BlcnRpZXMoKTtcclxuXHJcbiAgICAgIHRoaXMuc2hvdyA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNob3cgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhpZGVUb29sYmFyKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgfHwgIXRoaXMuZWRpdGFibGUpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBjbGlja2VkSW5zaWRlRWRpdG9yID0gdGhpcy5lZGl0b3I/Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcclxuICAgIGNvbnN0IGNsaWNrZWRJbnNpZGVUb29sYmFyID0gdGhpcy50b29sYmFyPy5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCk7XHJcbiAgICBjb25zdCBjbGlja2VkSW5zaWRlU3VnZ2VzdGlvbiA9IHRoaXMuc3VnZ2VzdGlvbj8ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpO1xyXG5cclxuICAgIC8vIEhpZGUgdGhlIHRvb2xiYXIgaWYgdGhlIGNsaWNrIGlzIG91dHNpZGUgYm90aCB0aGUgZWRpdG9yIGFuZCB0b29sYmFyXHJcbiAgICBpZiAoIWNsaWNrZWRJbnNpZGVFZGl0b3IgJiYgIWNsaWNrZWRJbnNpZGVUb29sYmFyKSB7XHJcbiAgICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKCFjbGlja2VkSW5zaWRlRWRpdG9yICYmICFjbGlja2VkSW5zaWRlU3VnZ2VzdGlvbikge1xyXG4gICAgICB0aGlzLnNob3dTdWdnZXN0aW9uID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb3JtYXRUZXh0KGNvbW1hbmQ6IHN0cmluZywgdmFsdWU6IHN0cmluZyA9ICcnKSB7XHJcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcclxuXHJcbiAgICAvLyAgIGlmIChjb21tYW5kID09PSAnZm9ybWF0QmxvY2snKSB7XHJcbiAgICAvLyAgICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xyXG4gICAgLy8gICAgIGlmICghc2VsZWN0aW9uIHx8IHNlbGVjdGlvbi5yYW5nZUNvdW50ID09PSAwKSByZXR1cm47XHJcblxyXG4gICAgLy8gICAgIGNvbnN0IHJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7XHJcbiAgICAvLyAgICAgY29uc3Qgc2VsZWN0ZWRUZXh0ID0gc2VsZWN0aW9uLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgLy8gICAgIGlmIChzZWxlY3RlZFRleHQpIHtcclxuICAgIC8vICAgICAgICAgY29uc3QgbmV3RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodmFsdWUpO1xyXG4gICAgLy8gICAgICAgICBuZXdFbGVtZW50LnRleHRDb250ZW50ID0gc2VsZWN0ZWRUZXh0O1xyXG5cclxuICAgIC8vICAgICAgICAgcmFuZ2UuZGVsZXRlQ29udGVudHMoKTtcclxuICAgIC8vICAgICAgICAgcmFuZ2UuaW5zZXJ0Tm9kZShuZXdFbGVtZW50KTtcclxuXHJcbiAgICAvLyAgICAgICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRIZWFkaW5nID0gdmFsdWU7XHJcbiAgICAvLyAgICAgICAgIHJldHVybjtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyB9XHJcbiAgICBkb2N1bWVudC5leGVjQ29tbWFuZChjb21tYW5kLCBmYWxzZSwgdmFsdWUpO1xyXG5cclxuICAgIGlmIChjb21tYW5kID09PSAnYm9sZCcpXHJcbiAgICAgIHRoaXMudG9vbGJhckRhdGEuaXNCb2xkID0gIXRoaXMudG9vbGJhckRhdGEuaXNCb2xkO1xyXG4gICAgaWYgKGNvbW1hbmQgPT09ICdpdGFsaWMnKVxyXG4gICAgICB0aGlzLnRvb2xiYXJEYXRhLmlzSXRhbGljID0gIXRoaXMudG9vbGJhckRhdGEuaXNJdGFsaWM7XHJcbiAgICBpZiAoY29tbWFuZCA9PT0gJ3VuZGVybGluZScpXHJcbiAgICAgIHRoaXMudG9vbGJhckRhdGEuaXNVbmRlcmxpbmVkID0gIXRoaXMudG9vbGJhckRhdGEuaXNVbmRlcmxpbmVkXHJcbiAgICBpZiAoY29tbWFuZCA9PT0gJ2luc2VydE9yZGVyZWRMaXN0JyB8fCBjb21tYW5kID09PSAnaW5zZXJ0VW5vcmRlcmVkTGlzdCcpXHJcbiAgICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRMaXN0ID0gY29tbWFuZCA9PT0gdGhpcy50b29sYmFyRGF0YS5zZWxlY3RlZExpc3QgPyAnJyA6IGNvbW1hbmQ7XHJcbiAgICBpZiAoY29tbWFuZCA9PT0gJ2p1c3RpZnlMZWZ0JyB8fCBjb21tYW5kID09PSAnanVzdGlmeUNlbnRlcicgfHwgY29tbWFuZCA9PT0gJ2p1c3RpZnlSaWdodCcpXHJcbiAgICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRBbGlnbm1lbnQgPSBjb21tYW5kID09PSB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkQWxpZ25tZW50ID8gJycgOiBjb21tYW5kO1xyXG4gICAgaWYgKGNvbW1hbmQgPT09ICdmb3JtYXRCbG9jaycpXHJcbiAgICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRIZWFkaW5nID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VGb250U2l6ZShldmVudDogYW55KSB7XHJcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBzaXplID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG5cclxuICAgIC8vIEFwcGx5IGEgZGVmYXVsdCBzaXplIG9mIDQgKG5lZWRlZCBmb3IgZXhlY0NvbW1hbmQgdG8gd29yaylcclxuICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdmb250U2l6ZScsIGZhbHNlLCAnNCcpO1xyXG5cclxuICAgIC8vIENvbnZlcnQgc2VsZWN0ZWQgZm9udCBlbGVtZW50cyB0byBoYXZlIGFjdHVhbCBmb250LXNpemUgaW5zdGVhZCBvZiBcInNpemVcIiBhdHRyaWJ1dGVcclxuICAgIGNvbnN0IGVsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcImZvbnRbc2l6ZT0nNCddXCIpO1xyXG4gICAgZWxlbWVudHMuZm9yRWFjaChlbCA9PiB7XHJcbiAgICAgIGNvbnN0IGh0bWxFbGVtZW50ID0gZWwgYXMgSFRNTEVsZW1lbnQ7IC8vIOKchSBFeHBsaWNpdGx5IGNhc3QgdG8gSFRNTEVsZW1lbnRcclxuICAgICAgaHRtbEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdzaXplJyk7IC8vIFJlbW92ZSBvbGQgc2l6ZSBhdHRyaWJ1dGVcclxuICAgICAgaHRtbEVsZW1lbnQuc3R5bGUuZm9udFNpemUgPSBzaXplOyAvLyBBcHBseSBDU1MgZm9udCBzaXplXHJcbiAgICB9KTtcclxuICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRTaXplID0gc2l6ZTtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmVkaXRvci5uYXRpdmVFbGVtZW50LmlubmVySFRNTCk7XHJcbiAgICAvLyB0aGlzLnNob3cgPSBmYWxzZTsgLy8gSGlkZSB0b29sYmFyIGFmdGVyIGFjdGlvblxyXG4gIH1cclxuXHJcbiAgY2hhbmdlQ29sb3IoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XHJcbiAgICB0aGlzLnJlc3RvcmVTZWxlY3Rpb24oKTsgLy8gUmVzdG9yZSBzZWxlY3Rpb24gYmVmb3JlIHRvdWNoaW5nIERPTVxyXG5cclxuICAgIGNvbnN0IGNvbG9yID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgLy8gR3JhYiBjdXJyZW50IHNlbGVjdGlvblxyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xyXG4gICAgaWYgKHNlbGVjdGlvbiAmJiBzZWxlY3Rpb24ucmFuZ2VDb3VudCA+IDApIHtcclxuICAgICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTtcclxuICAgICAgbGV0IHRhcmdldE5vZGU6IE5vZGUgfCBudWxsID0gcmFuZ2UuY29tbW9uQW5jZXN0b3JDb250YWluZXI7XHJcblxyXG4gICAgICBpZiAoIXRhcmdldE5vZGUpIHJldHVybjtcclxuICAgICAgLy8gSWYgaXQncyBhIHRleHQgbm9kZSwgd29yayB3aXRoIGl0cyBwYXJlbnQgZWxlbWVudFxyXG4gICAgICBpZiAodGFyZ2V0Tm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUgJiYgdGFyZ2V0Tm9kZS5wYXJlbnRFbGVtZW50KSB7XHJcbiAgICAgICAgdGFyZ2V0Tm9kZSA9IHRhcmdldE5vZGUucGFyZW50RWxlbWVudDtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRhcmdldE5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xyXG4gICAgICAgIGNvbnN0IGVsID0gdGFyZ2V0Tm9kZSBhcyBIVE1MRWxlbWVudDtcclxuXHJcbiAgICAgICAgLy8gMSkgSWYgaXQgKmhhcyogZ3JhZGllbnQgc3R5bGluZywgc3RyaXAgaXQgb2ZmIGFuZCBpbW1lZGlhdGVseSBhcHBseSB5b3VyIHNvbGlkIGNvbG9yXHJcbiAgICAgICAgY29uc3QgaGFzR3JhZGllbnQgPVxyXG4gICAgICAgICAgZWwuc3R5bGUuYmFja2dyb3VuZENsaXAgPT09ICd0ZXh0JyB8fFxyXG4gICAgICAgICAgZWwuc3R5bGUud2Via2l0QmFja2dyb3VuZENsaXAgPT09ICd0ZXh0JztcclxuXHJcbiAgICAgICAgaWYgKGhhc0dyYWRpZW50KSB7XHJcbiAgICAgICAgICBlbC5zdHlsZS5iYWNrZ3JvdW5kID0gJyc7XHJcbiAgICAgICAgICBlbC5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9ICcnO1xyXG4gICAgICAgICAgZWwuc3R5bGUud2Via2l0QmFja2dyb3VuZENsaXAgPSAnJztcclxuICAgICAgICAgIGVsLnN0eWxlLndlYmtpdFRleHRGaWxsQ29sb3IgPSAnJztcclxuICAgICAgICAgIGVsLnN0eWxlLmNvbG9yID0gY29sb3I7XHJcblxyXG4gICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMuZWRpdG9yLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MKTtcclxuICAgICAgICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRDb2xvciA9IGNvbG9yO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gMikgSWYgKm5vKiBncmFkaWVudCBzdHlsaW5nLCBsb29rIGZvciBhbnkgPHNwYW4+IHdyYXBwZXJzIGFuZCB1bndyYXAgdGhlbVxyXG4gICAgICAgIC8vICAgIHNvIHRoYXQgb3VyIGV4ZWNDb21tYW5kKCdmb3JlQ29sb3InKSBjYW4gY2xlYW5seSBhcHBseSB0byBwbGFpbiB0ZXh0XHJcblxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBzcGFucyA9IHRoaXMuZWRpdG9yLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnc3BhbicpO1xyXG4gICAgc3BhbnMuZm9yRWFjaCgoc3BhbjogYW55KSA9PiB7XHJcbiAgICAgIC8vIE9ubHkgdW53cmFwIHNwYW5zIHRoYXQgKmRvbuKAmXQqIGNhcnJ5IGdyYWRpZW504oCUaS5lLiBzdHJpcHMgYW55IHJlc2lkdWFsIHRhZ3NcclxuICAgICAgY29uc3QgcGFyZW50ID0gc3Bhbi5wYXJlbnROb2RlITtcclxuICAgICAgd2hpbGUgKHNwYW4uZmlyc3RDaGlsZCkge1xyXG4gICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoc3Bhbi5maXJzdENoaWxkLCBzcGFuKTtcclxuICAgICAgfVxyXG4gICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQoc3Bhbik7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyAzKSBGaW5hbGx5LCB1c2UgdGhlIGxlZ2FjeSBleGVjQ29tbWFuZCBmb3Igc29saWQgY29sb3JcclxuICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdmb3JlQ29sb3InLCBmYWxzZSwgY29sb3IpO1xyXG5cclxuICAgIC8vIFVwZGF0ZSB0b29sYmFyIHN0YXRlXHJcbiAgICB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkQ29sb3IgPSBjb2xvcjtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmVkaXRvci5uYXRpdmVFbGVtZW50LmlubmVySFRNTCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVUZXh0KGV2ZW50OiBFdmVudCkge1xyXG4gICAgLy8gY29uc29sZS5sb2codGhpcy5lZGl0b3IubmF0aXZlRWxlbWVudC5pbm5lckhUTUwpXHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy5lZGl0b3IubmF0aXZlRWxlbWVudC5pbm5lckhUTUwpO1xyXG4gIH1cclxuXHJcbiAgb25Gb3JtYXRDaGFuZ2UoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZFZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MU2VsZWN0RWxlbWVudCkudmFsdWU7XHJcbiAgICB0aGlzLmZvcm1hdFRleHQoJ2Zvcm1hdEJsb2NrJywgc2VsZWN0ZWRWYWx1ZSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgb3BlbkNvbG9yUGlja2VyKCkge1xyXG4gICAgLy8gdGhpcy5jb2xvclBpY2tlci5uYXRpdmVFbGVtZW50LmNsaWNrKCk7IC8vIFByb2dyYW1tYXRpY2FsbHkgdHJpZ2dlciBpbnB1dFxyXG4gICAgdGhpcy5zYXZlU2VsZWN0aW9uKCk7IC8vIFNhdmUgdGhlIGN1cnJlbnQgc2VsZWN0aW9uXHJcbiAgfVxyXG5cclxuICByZWFkRm9ybWF0dGluZ1Byb3BlcnRpZXMoKSB7XHJcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XHJcbiAgICBpZiAoIXNlbGVjdGlvbikgcmV0dXJuO1xyXG4gICAgY29uc3Qgbm9kZSA9IHNlbGVjdGlvbi5mb2N1c05vZGUgYXMgSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgLy8gQ2hlY2sgaWYgbm9kZSBpcyBudWxsXHJcbiAgICBpZiAoIW5vZGUpIHJldHVybjtcclxuXHJcbiAgICBsZXQgZWxlbWVudCA9IG5vZGUucGFyZW50RWxlbWVudDtcclxuICAgIHdoaWxlIChlbGVtZW50KSB7XHJcbiAgICAgIGNvbnN0IG5vZGVOYW1lID0gZWxlbWVudC5ub2RlTmFtZTtcclxuXHJcbiAgICAgIGlmIChub2RlTmFtZSA9PT0gJ0gxJyB8fCBub2RlTmFtZSA9PT0gJ0gyJyB8fCBub2RlTmFtZSA9PT0gJ0gzJykge1xyXG4gICAgICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRIZWFkaW5nID0gbm9kZU5hbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAobm9kZU5hbWUgPT09ICdCJyB8fCBub2RlTmFtZSA9PT0gJ1NUUk9ORycpIHtcclxuICAgICAgICB0aGlzLnRvb2xiYXJEYXRhLmlzQm9sZCA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSBpZiAobm9kZU5hbWUgPT09ICdJJyB8fCBub2RlTmFtZSA9PT0gJ0VNJykge1xyXG4gICAgICAgIHRoaXMudG9vbGJhckRhdGEuaXNJdGFsaWMgPSB0cnVlO1xyXG4gICAgICB9IGVsc2UgaWYgKG5vZGVOYW1lID09PSAnVScpIHtcclxuICAgICAgICB0aGlzLnRvb2xiYXJEYXRhLmlzVW5kZXJsaW5lZCA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSBpZiAobm9kZU5hbWUgPT09ICdPTCcpIHtcclxuICAgICAgICB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkTGlzdCA9ICdpbnNlcnRPcmRlcmVkTGlzdCc7XHJcbiAgICAgIH0gZWxzZSBpZiAobm9kZU5hbWUgPT09ICdVTCcpIHtcclxuICAgICAgICB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkTGlzdCA9ICdpbnNlcnRVbm9yZGVyZWRMaXN0JztcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnN0eWxlLnRleHRBbGlnbikge1xyXG4gICAgICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRBbGlnbm1lbnQgPSBganVzdGlmeSR7ZWxlbWVudC5zdHlsZS50ZXh0QWxpZ24uY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBlbGVtZW50LnN0eWxlLnRleHRBbGlnbi5zbGljZSgxKX1gO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuc3R5bGUuZm9udFNpemUpIHtcclxuICAgICAgICB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkU2l6ZSA9IGVsZW1lbnQuc3R5bGUuZm9udFNpemU7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5zdHlsZS5jb2xvcikge1xyXG4gICAgICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRDb2xvciA9IGVsZW1lbnQuc3R5bGUuY29sb3JcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICAgIGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZUZvcm1hdHRpbmdEYXRhKCkge1xyXG4gICAgdGhpcy50b29sYmFyRGF0YSA9IHtcclxuICAgICAgc2VsZWN0ZWRIZWFkaW5nOiAnJyxcclxuICAgICAgaXNCb2xkOiBmYWxzZSxcclxuICAgICAgaXNJdGFsaWM6IGZhbHNlLFxyXG4gICAgICBpc1VuZGVybGluZWQ6IGZhbHNlLFxyXG4gICAgICBzZWxlY3RlZFNpemU6ICcnLFxyXG4gICAgICBzZWxlY3RlZExpc3Q6ICcnLFxyXG4gICAgICBzZWxlY3RlZEFsaWdubWVudDogJycsXHJcbiAgICAgIHNlbGVjdGVkQ29sb3I6ICcnXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VHcmFkaWVudENvbG9yKCkge1xyXG4gICAgdGhpcy5yZXN0b3JlU2VsZWN0aW9uKCk7IC8vIFJlc3RvcmUgdGhlIHNlbGVjdGlvbiBiZWZvcmUgYXBwbHlpbmcgZ3JhZGllbnRcclxuICAgIGNvbnN0IGNvbG9yID0gYGxpbmVhci1ncmFkaWVudCg5MGRlZywgJHt0aGlzLnByaW1hcnlDb2xvcn0gMCUsICR7dGhpcy5zZWNvbmRhcnlDb2xvcn0gMTAwJSlgXHJcbiAgICB0aGlzLmFwcGx5R3JhZGllbnRUb1RleHQoY29sb3IpXHJcbiAgfVxyXG5cclxuICBhcHBseUdyYWRpZW50VG9UZXh0KGdyYWRpZW50VmFsdWU6IHN0cmluZykge1xyXG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xyXG4gICAgaWYgKCFzZWxlY3Rpb24gfHwgc2VsZWN0aW9uLnJhbmdlQ291bnQgPT09IDApIHJldHVybjtcclxuXHJcbiAgICAvLyBHZXQgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIHJhbmdlXHJcbiAgICBjb25zdCByYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApO1xyXG5cclxuICAgIC8vIENoZWNrIGlmIHRoZSByYW5nZSBpcyB2YWxpZCBmb3Igd3JhcHBpbmdcclxuICAgIGlmICghcmFuZ2UgfHwgcmFuZ2UuY29sbGFwc2VkKSByZXR1cm47XHJcblxyXG4gICAgLy8gRXh0cmFjdCB0aGUgc2VsZWN0ZWQgY29udGVudFxyXG4gICAgY29uc3Qgc2VsZWN0ZWRDb250ZW50ID0gcmFuZ2UuZXh0cmFjdENvbnRlbnRzKCk7XHJcblxyXG4gICAgY29uc3Qgc3BhbnMgPSB0aGlzLmVkaXRvci5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3NwYW4nKTtcclxuICAgIHNwYW5zLmZvckVhY2goKHNwYW46IGFueSkgPT4ge1xyXG4gICAgICAvLyBPbmx5IHVud3JhcCBzcGFucyB0aGF0ICpkb27igJl0KiBjYXJyeSBncmFkaWVudOKAlGkuZS4gc3RyaXBzIGFueSByZXNpZHVhbCB0YWdzXHJcbiAgICAgIGNvbnN0IHBhcmVudCA9IHNwYW4ucGFyZW50Tm9kZSE7XHJcbiAgICAgIHdoaWxlIChzcGFuLmZpcnN0Q2hpbGQpIHtcclxuICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKHNwYW4uZmlyc3RDaGlsZCwgc3Bhbik7XHJcbiAgICAgIH1cclxuICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKHNwYW4pO1xyXG4gICAgfSk7XHJcblxyXG5cclxuICAgIC8vIENyZWF0ZSBhIG5ldyA8c3Bhbj4gZWxlbWVudCB0byB3cmFwIHRoZSBzZWxlY3RlZCB0ZXh0XHJcbiAgICBjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xyXG4gICAgc3Bhbi5zdHlsZS5iYWNrZ3JvdW5kID0gZ3JhZGllbnRWYWx1ZTtcclxuICAgIHNwYW4uc3R5bGUuYmFja2dyb3VuZENsaXAgPSAndGV4dCc7XHJcbiAgICBzcGFuLnN0eWxlLndlYmtpdEJhY2tncm91bmRDbGlwID0gJ3RleHQnO1xyXG4gICAgc3Bhbi5zdHlsZS5jb2xvciA9ICd0cmFuc3BhcmVudCc7XHJcbiAgICBzcGFuLnN0eWxlLndlYmtpdFRleHRGaWxsQ29sb3IgPSAndHJhbnNwYXJlbnQnO1xyXG5cclxuICAgIC8vIEFwcGVuZCB0aGUgc2VsZWN0ZWQgY29udGVudCB0byB0aGUgPHNwYW4+XHJcbiAgICBzcGFuLmFwcGVuZENoaWxkKHNlbGVjdGVkQ29udGVudCk7XHJcblxyXG4gICAgLy8gSW5zZXJ0IHRoZSA8c3Bhbj4gYmFjayBpbnRvIHRoZSByYW5nZVxyXG4gICAgcmFuZ2UuaW5zZXJ0Tm9kZShzcGFuKTtcclxuXHJcbiAgICAvLyBDbGVhciB0aGUgc2VsZWN0aW9uXHJcbiAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7XHJcblxyXG4gICAgLy8gRW1pdCB0aGUgdXBkYXRlZCBIVE1MIGNvbnRlbnRcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmVkaXRvci5uYXRpdmVFbGVtZW50LmlubmVySFRNTCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcmVnZW5lcmF0ZVRleHQoKSB7XHJcbiAgICBsZXQgcGF5bG9hZCA9IHtcclxuICAgICAgYnVzaW5lc3NJZDogbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2J1c2luZXNzSWQnKSxcclxuICAgICAgZGF0YUlkOiB0aGlzLnNlY3Rpb25JZCxcclxuICAgICAgc3ViSW5kdXN0cnlJZDogbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3N1YkluZHVzdHJ5SWQnKSxcclxuICAgICAgc3VnZ2VzdGVkRGF0YVR5cGU6ICdDT01QT05FTlQnLFxyXG4gICAgICB0b25lOiAnUFJPRkVTU0lPTkFMJyxcclxuICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXHJcbiAgICAgIGxhYmVsOiB0aGlzLmxhYmVsXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnJlZ2VuZXJhdGVUZXh0KHBheWxvYWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy52YWx1ZSA9IHJlcy5kYXRhO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2F2ZWRSYW5nZTogUmFuZ2UgfCBudWxsID0gbnVsbDtcclxuXHJcblxyXG4gIHNhdmVTZWxlY3Rpb24oKTogdm9pZCB7XHJcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XHJcbiAgICBpZiAoc2VsZWN0aW9uICYmIHNlbGVjdGlvbi5yYW5nZUNvdW50ID4gMCkge1xyXG4gICAgICB0aGlzLnNhdmVkUmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc3RvcmVTZWxlY3Rpb24oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zYXZlZFJhbmdlKSB7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcclxuICAgICAgc2VsZWN0aW9uPy5yZW1vdmVBbGxSYW5nZXMoKTtcclxuICAgICAgc2VsZWN0aW9uPy5hZGRSYW5nZSh0aGlzLnNhdmVkUmFuZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpIHtcclxuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xyXG5cclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBjb25zdCBodG1sID0gZXZlbnQuY2xpcGJvYXJkRGF0YT8uZ2V0RGF0YSgndGV4dC9odG1sJykgfHwgJyc7XHJcbiAgICBjb25zdCBjbGVhbkh0bWwgPSB0aGlzLnN0cmlwU3R5bGVzKGh0bWwpO1xyXG5cclxuICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdpbnNlcnRIVE1MJywgZmFsc2UsIGNsZWFuSHRtbCk7XHJcbiAgfVxyXG5cclxuICBzdHJpcFN0eWxlcyhodG1sOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZG9jID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhodG1sLCAndGV4dC9odG1sJyk7XHJcbiAgICBjb25zdCBlbGVtZW50cyA9IGRvYy5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoJyonKTtcclxuICAgIGVsZW1lbnRzLmZvckVhY2goZWwgPT4ge1xyXG4gICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoJ3N0eWxlJyk7IC8vIFJlbW92ZSBhbGwgaW5saW5lIHN0eWxlc1xyXG4gICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoJ2NsYXNzJyk7IC8vIE9wdGlvbmFsXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBkb2MuYm9keS5pbm5lckhUTUw7XHJcbiAgfVxyXG5cclxuICBnZXRUZXh0KCkge1xyXG4gICAgY29uc3QgdGV4dENvbnRlbnQgPSB0aGlzLnZhbHVlPy5yZXBsYWNlKC88XFwvP1tePl0rKD58JCkvZywgXCJcIik/LnJlcGxhY2UoL1xccysvZywgJyAnKS50cmltKCkgPz8gXCJcIjtcclxuICAgIGlmICghdGV4dENvbnRlbnQpIHtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy52YWx1ZTtcclxuICB9XHJcblxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZWRpdG9yLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cInsnYm9yZGVyJzogZWRpdGFibGV9XCIgI3BhcmVudEVsZW1lbnQgW2NsYXNzLmQtbm9uZV09XCIhZWRpdGFibGUgJiYgZ2V0VGV4dCgpID09ICcnXCI+XHJcbiAgPGRpdiBbY29udGVudGVkaXRhYmxlXT1cImVkaXRhYmxlXCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiIGNsYXNzPVwiZWRpdGFibGUtdGV4dFwiIChtb3VzZXVwKT1cInNob3dUb29sYmFyKCRldmVudClcIiAjZWRpdG9yXHJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVUZXh0KCRldmVudClcIiAobW91c2Vkb3duKT1cImhpZGVUb29sYmFyKCRldmVudClcIiAocGFzdGUpPVwib25QYXN0ZSgkZXZlbnQpXCI+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJ0b29sYmFyXCIgKm5nSWY9XCJlZGl0YWJsZSAmJiBzaG93XCIgW25nU3R5bGVdPVwieyd0b3AucHgnOiB0b29sYmFyWX1cIiBbc3R5bGUucmlnaHRdPVwicmlnaHRaZXJvID8gJzBweCcgOiAnYXV0bydcIiBbc3R5bGUubGVmdF09XCIhcmlnaHRaZXJvID8gJzBweCcgOiAnYXV0bydcIiAjdG9vbGJhciA+XHJcbiAgICA8IS0tIDxzZWxlY3QgY2xhc3M9XCJ0b29sXCIgKGNoYW5nZSk9XCJvbkZvcm1hdENoYW5nZSgkZXZlbnQpXCIgWyhuZ01vZGVsKV09XCJ0b29sYmFyRGF0YS5zZWxlY3RlZEhlYWRpbmdcIj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cIkgxXCI+SGVhZGluZzE8L29wdGlvbj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cIkgyXCI+SGVhZGluZzI8L29wdGlvbj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cIkgzXCI+SGVhZGluZzM8L29wdGlvbj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cImRpdlwiPlRleHQ8L29wdGlvbj5cclxuICAgIDwvc2VsZWN0PiAtLT5cclxuXHJcbiAgICA8YnV0dG9uIGNsYXNzPVwidG9vbFwiIChjbGljayk9XCJmb3JtYXRUZXh0KCdib2xkJylcIiBbbmdDbGFzc109XCJ7J3NlbGVjdGVkVG9vbCc6IHRvb2xiYXJEYXRhLmlzQm9sZH1cIj48bWF0LWljb24+IGZvcm1hdF9ib2xkPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgIDxidXR0b24gY2xhc3M9XCJ0b29sXCIgKGNsaWNrKT1cImZvcm1hdFRleHQoJ2l0YWxpYycpXCIgW25nQ2xhc3NdPVwieydzZWxlY3RlZFRvb2wnOiB0b29sYmFyRGF0YS5pc0l0YWxpY31cIj48bWF0LWljb24+IGZvcm1hdF9pdGFsaWM8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cInRvb2xcIiAoY2xpY2spPVwiZm9ybWF0VGV4dCgndW5kZXJsaW5lJylcIiBbbmdDbGFzc109XCJ7J3NlbGVjdGVkVG9vbCc6IHRvb2xiYXJEYXRhLmlzVW5kZXJsaW5lZH1cIj48bWF0LWljb24+IGZvcm1hdF91bmRlcmxpbmVkPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuXHJcbiAgICA8c2VsZWN0IGNsYXNzPVwidG9vbFwiIChjaGFuZ2UpPVwiY2hhbmdlRm9udFNpemUoJGV2ZW50KVwiIFsobmdNb2RlbCldPVwidG9vbGJhckRhdGEuc2VsZWN0ZWRTaXplXCI+XHJcbiAgICAgIDxvcHRpb24gdmFsdWU9XCJcIiBzZWxlY3RlZD5EZWZhdWx0PC9vcHRpb24+XHJcbiAgICAgIDxvcHRpb24gdmFsdWU9XCJjbGFtcCgwLjc1cmVtLCAydncsIDFyZW0pXCI+U21hbGw8L29wdGlvbj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cImNsYW1wKDAuNzVyZW0sIDJ2dywgMS4yNXJlbSlcIj5NZWRpdW08L29wdGlvbj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cImNsYW1wKDFyZW0sIDN2dywgMS41cmVtKVwiPlNlbWkgTGFyZ2U8L29wdGlvbj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cImNsYW1wKDEuMjVyZW0sIDR2dywgMnJlbSlcIj5MYXJnZTwvb3B0aW9uPlxyXG4gICAgICA8b3B0aW9uIHZhbHVlPVwiY2xhbXAoMnJlbSwgNXZ3LCAzcmVtKVwiPkV4dHJhIExhcmdlPC9vcHRpb24+XHJcbiAgICAgIDxvcHRpb24gdmFsdWU9XCJjbGFtcCgzLjFyZW0sIDd2dywgNC41cmVtKVwiPkh1Z2U8L29wdGlvbj5cclxuICAgIDwvc2VsZWN0PlxyXG5cclxuICAgIDxidXR0b24gY2xhc3M9XCJ0b29sXCIgKGNsaWNrKT1cImZvcm1hdFRleHQoJ2luc2VydE9yZGVyZWRMaXN0JylcIiBbbmdDbGFzc109XCJ7J3NlbGVjdGVkVG9vbCc6IHRvb2xiYXJEYXRhLnNlbGVjdGVkTGlzdCA9PT0gJ2luc2VydE9yZGVyZWRMaXN0J31cIj48bWF0LWljb24+Zm9ybWF0X2xpc3RfbnVtYmVyZWQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cInRvb2xcIiAoY2xpY2spPVwiZm9ybWF0VGV4dCgnaW5zZXJ0VW5vcmRlcmVkTGlzdCcpXCIgW25nQ2xhc3NdPVwieydzZWxlY3RlZFRvb2wnOiB0b29sYmFyRGF0YS5zZWxlY3RlZExpc3QgPT09ICdpbnNlcnRVbm9yZGVyZWRMaXN0J31cIj48bWF0LWljb24+IGZvcm1hdF9saXN0X2J1bGxldGVkPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuXHJcbiAgICA8YnV0dG9uIGNsYXNzPVwidG9vbFwiIChjbGljayk9XCJmb3JtYXRUZXh0KCdqdXN0aWZ5TGVmdCcpXCIgW25nQ2xhc3NdPVwieydzZWxlY3RlZFRvb2wnOiB0b29sYmFyRGF0YS5zZWxlY3RlZEFsaWdubWVudCA9PT0gJ2p1c3RpZnlMZWZ0J31cIj48bWF0LWljb24+IGZvcm1hdF9hbGlnbl9sZWZ0PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgIDxidXR0b24gY2xhc3M9XCJ0b29sXCIgKGNsaWNrKT1cImZvcm1hdFRleHQoJ2p1c3RpZnlDZW50ZXInKVwiIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWRUb29sJzogdG9vbGJhckRhdGEuc2VsZWN0ZWRBbGlnbm1lbnQgPT09ICdqdXN0aWZ5Q2VudGVyJ31cIj48bWF0LWljb24+IGZvcm1hdF9hbGlnbl9jZW50ZXI8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cInRvb2xcIiAoY2xpY2spPVwiZm9ybWF0VGV4dCgnanVzdGlmeVJpZ2h0JylcIiBbbmdDbGFzc109XCJ7J3NlbGVjdGVkVG9vbCc6IHRvb2xiYXJEYXRhLnNlbGVjdGVkQWxpZ25tZW50ID09PSAnanVzdGlmeVJpZ2h0J31cIj48bWF0LWljb24+IGZvcm1hdF9hbGlnbl9yaWdodDwvbWF0LWljb24+PC9idXR0b24+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImNvbG9yVHlwZVwiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwic29saWRcIiBbbmdDbGFzc109XCJ7J3NvbGlkQ29sb3JTZWxlY3RlZCc6IHNlbGVjdGVkQ29sb3JUeXBlID09PSAnU09MSUQnfVwiIChjbGljayk9XCJzZWxlY3RlZENvbG9yVHlwZSA9ICdTT0xJRCdcIj5Tb2xpZDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwiZ3JhZGllbnRcIiBbbmdDbGFzc109XCJ7J2dyYWRpZW50Q29sb3JTZWxlY3RlZCc6IHNlbGVjdGVkQ29sb3JUeXBlID09PSAnR1JBRElFTlQnfVwiIChjbGljayk9XCJzZWxlY3RlZENvbG9yVHlwZSA9ICdHUkFESUVOVCdcIj5HcmFkaWVudDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cInRvb2wgY29sb3ItcGlja2VyLWJ0blwiIChjbGljayk9XCJvcGVuQ29sb3JQaWNrZXIoKVwiICpuZ0lmPVwic2VsZWN0ZWRDb2xvclR5cGUgPT09ICdTT0xJRCdcIj5cclxuICAgICAgPG1hdC1pY29uPmZvcm1hdF9jb2xvcl90ZXh0PC9tYXQtaWNvbj5cclxuICAgICAgPGlucHV0IHR5cGU9XCJjb2xvclwiICNjb2xvclBpY2tlciBjbGFzcz1cImhpZGRlbi1jb2xvci1waWNrZXJcIiAoaW5wdXQpPVwiY2hhbmdlQ29sb3IoJGV2ZW50KVwiIFsobmdNb2RlbCldPVwidG9vbGJhckRhdGEuc2VsZWN0ZWRDb2xvclwiPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJjb2xvclR5cGVcIiAqbmdJZj1cInNlbGVjdGVkQ29sb3JUeXBlID09PSAnR1JBRElFTlQnXCI+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJ0b29sIGNvbG9yLXBpY2tlci1idG5cIiAoY2xpY2spPVwib3BlbkNvbG9yUGlja2VyKCk7IHByaW1hcnlDb2xvclBpY2tlci5jbGljaygpXCI+XHJcbiAgICAgICAgPG1hdC1pY29uIFtzdHlsZS5jb2xvcl09XCJwcmltYXJ5Q29sb3JcIj5mb3JtYXRfY29sb3JfdGV4dDwvbWF0LWljb24+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJjb2xvclwiICNwcmltYXJ5Q29sb3JQaWNrZXIgY2xhc3M9XCJoaWRkZW4tY29sb3ItcGlja2VyXCIgKGlucHV0KT1cImNoYW5nZUdyYWRpZW50Q29sb3IoKVwiIFsobmdNb2RlbCldPVwicHJpbWFyeUNvbG9yXCI+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwidG9vbCBjb2xvci1waWNrZXItYnRuXCIgKGNsaWNrKT1cIm9wZW5Db2xvclBpY2tlcigpOyBzZWNvbmRhcnlDb2xvclBpY2tlci5jbGljaygpXCI+XHJcbiAgICAgICAgPG1hdC1pY29uIFtzdHlsZS5jb2xvcl09XCJzZWNvbmRhcnlDb2xvclwiPmZvcm1hdF9jb2xvcl90ZXh0PC9tYXQtaWNvbj5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cImNvbG9yXCIgI3NlY29uZGFyeUNvbG9yUGlja2VyIGNsYXNzPVwiaGlkZGVuLWNvbG9yLXBpY2tlclwiIChpbnB1dCk9XCJjaGFuZ2VHcmFkaWVudENvbG9yKClcIiBbKG5nTW9kZWwpXT1cInNlY29uZGFyeUNvbG9yXCI+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJzdWdnZXN0aW9uLWJveFwiIFtuZ1N0eWxlXT1cInsndG9wLnB4Jzogc3VnZ2VzdGlvbll9XCIgW3N0eWxlLnJpZ2h0XT1cInJpZ2h0WmVybyA/ICcwcHgnIDogJ2F1dG8nXCIgW3N0eWxlLmxlZnRdPVwiIXJpZ2h0WmVybyA/ICcwcHgnIDogJ2F1dG8nXCIgKm5nSWY9XCJlZGl0YWJsZSAmJiBsYWJlbCAmJiBzaG93U3VnZ2VzdGlvblwiICNzdWdnZXN0aW9uPlxyXG4gICAgPGRpdiBjbGFzcz1cInN1Z2dlc3Rpb25cIiAoY2xpY2spPVwicmVnZW5lcmF0ZVRleHQoKVwiPlxyXG4gICAgICA8aW1nIHNyYz1cImh0dHBzOi8vcHJvZC1zaW1wby5zMy5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20vcHJvZC1pbWFnZXMvODg3NDkzYzE3NDIyNzM5NzAxNTFGcmFtZSUyMDEyNDQ4MzE3NDAucG5nXCIgYWx0PVwiXCI+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJuYW1lXCI+UmVnZW5lcmF0ZSBUZXh0PC9wPlxyXG4gICAgICAgIDxwIGNsYXNzPVwiZGVzY1wiPkdldCBhIGZyZXNoIHZhcmlhdGlvbiBvZiBhIGN1cnJlbnQgdGV4dDwvcD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==