@import url(https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300;0,400;0,700;1,300;1,400&display=swap);.btn,button{background-color:#e2e8f0;border:0;border-radius:3px;box-sizing:border-box;color:#000;cursor:pointer;filter:drop-shadow(.1rem .1rem .08rem #334155);font-size:16px;padding:.4rem .8rem;text-align:center;touch-action:manipulation;transition:transform 10ms;user-select:none;-webkit-user-select:none}button:not(:disabled):hover{background:#94a3b8;filter:drop-shadow(.1rem .1rem .005rem #0f172a);transform:translate(.05rem,.05rem)}button:disabled{cursor:not-allowed;filter:saturate(.2) opacity(.5);-webkit-filter:saturate(.2) opacity(.5)}.btn{cursor:text;font-size:small;padding:.2rem .33rem}input[type=range]{-webkit-appearance:none;background:#f8fafc;border-radius:5px;height:10px;opacity:.7;outline:none;-webkit-transition:.2s;transition:opacity .2s;width:100%}input[type=range]:hover{opacity:1}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background:#94a3b8;border-radius:50%;cursor:pointer;filter:drop-shadow(.1rem .1rem .08rem black);height:15px;width:15px}input[type=range]::-moz-range-thumb{background:#94a3b8;border-radius:50%;cursor:pointer;filter:drop-shadow(.1rem .1rem .08rem black);height:15px;width:15px}input[type=range]:disabled{cursor:not-allowed;filter:saturate(.2) opacity(.5);-webkit-filter:saturate(.2) opacity(.5)}.accordion{background-color:#e2e8f0;border:none;color:#444;cursor:pointer;filter:none;font-family:Open Sans,sans-serif;font-size:large;font-weight:700;outline:none;padding:18px;text-align:left;transition:.4s;width:100%}.accordion__more{float:right}.accordion:not(:disabled):hover{background:#cbd5e1;filter:none}.panel{background-color:#f8fafc;max-height:0;overflow:hidden;transition:max-height .4s ease-out}.panel img{width:100%}.panel>*{padding:0 36px}.panel__attribution{font-size:small;text-align:center}html{box-sizing:border-box;scroll-behavior:smooth}*,:after,:before{box-sizing:inherit}body{background-color:#f8fafc;font-family:Open Sans,sans-serif;font-size:normal;margin:0;overflow-x:hidden;padding:0 0 3rem}h1,h2,h3,h4,h5,h6{text-align:center;width:100%}reset{margin:0;padding:0}.container{display:grid;gap:0;grid-template-columns:1fr min(72ch,100%) 1fr}.container>*{grid-column:2}.full-bleed{grid-column:1/-1!important;margin:.5em 0;width:100%}.model-vis{padding-top:.6em;position:relative}.model-vis #model-vis-container canvas{width:100%}.model-vis .sidebar{background:#cbd5e1;border-radius:.5rem;filter:drop-shadow(.1rem .1rem .08rem black);padding:1rem;right:0;top:0}@media(max-width:767px){.model-vis .sidebar{margin:1rem;width:calc(100% - 2rem)}}@media(min-width:768px)and (max-width:1023px){.model-vis .sidebar{margin:1rem auto;max-width:560px}}@media(min-width:1024px){.model-vis .sidebar{margin:1rem;position:absolute;right:0;top:0;width:250px}}.model-vis .sidebar__text{min-width:30%}.model-vis .sidebar__item{align-items:center;display:flex;justify-content:space-between;pointer-events:none}.model-vis .sidebar__item canvas{background:#f1f5f9;cursor:pointer;height:128px;image-rendering:crisp-edges;image-rendering:pixelated;pointer-events:auto;width:128px}.model-vis .sidebar__buttons{display:flex;gap:.5em;height:2em;justify-content:center;margin:1rem 0;width:100%}.model-vis .sidebar__debug{font-size:small;line-height:.5em;margin:1.4em 0}.model-vis .sidebar__debug>*{display:flex;flex-direction:row;justify-content:space-between}#editor{background-color:#cbd5e1;border-radius:1rem;filter:drop-shadow(.1rem .1rem .08rem black);left:1rem;padding:1rem;position:fixed;top:1rem}#editor #close{background-color:#bef264;bottom:20px;font-size:x-large;font-weight:700;padding:.8rem 1.1rem;position:absolute;right:20px}#editor #close:not(:disabled):focus,#editor #close:not(:disabled):hover{background:#a3e635}#editor .editor-wrapper{align-items:center;display:flex;flex-direction:column;gap:1rem;justify-content:center;pointer-events:none;width:100%}#editor .editor-wrapper>*{pointer-events:auto}#editor .editor-wrapper .canvas-cont{display:block;position:relative}#editor .editor-wrapper .canvas-cont canvas{image-rendering:crisp-edges;image-rendering:pixelated;left:0;position:absolute;top:0}#editor .editor-wrapper .canvas-cont canvas:first-child{filter:drop-shadow(.1rem .1rem .08rem black)}#tools{align-items:center;display:flex;flex-direction:column;justify-content:center;position:relative}#tools p{margin:0}#tools .vertical-container{flex-direction:column;gap:.5rem;margin:1rem .5rem 0}#tools .row,#tools .vertical-container{align-items:center;display:flex;justify-content:center}#tools .row{gap:.8em;position:relative;width:100%}#tools .row:nth-child(3){margin-top:.8em}#tools .commit{background-color:#d9f99d}#tools .commit:hover{background-color:#bef264}#tools .cancel{background-color:#94a3b8}#tools .cancel:hover{background-color:#64748b}#tools .color-picker{display:flex}#tools .color-picker .swatch{height:1rem;width:1rem}#tools .color-picker .highlight{border:1px solid red}#tools .color-picker .chosen{border:1px solid #b00}#activations canvas{image-rendering:crisp-edges;image-rendering:pixelated;min-height:32px;min-width:32px}.hide{display:none!important}.show{display:block}.flex{display:flex}.active{background:#d47970!important;filter:drop-shadow(.1rem .1rem .005rem #0f172a)!important;transform:translate(.05rem,.05rem)!important}.active:after{content:" ✓"}.look-at-me{background:#bef264!important}.tooltip{background:#f7fee7;border-radius:.5rem;filter:drop-shadow(.1rem .1rem .08rem black);padding:15px;position:fixed;width:360px;z-index:10}.loading__wrapper{background:rgba(0,0,0,.6);height:100vh;left:0;position:static;top:0;width:100vw}.loading__text{align-items:center;background:#f8fafc;border-radius:.5rem;display:flex;filter:drop-shadow(.1rem .1rem .08rem black);height:200px;justify-content:center;left:50%;padding:20px;position:fixed;text-align:center;top:50%;transform:translate(-50%,-50%);width:300px;z-index:100}.hideOverflow{overflow:hidden}.draggable{position:absolute}
/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZhdGlvbnMuY3NzIiwibWFwcGluZ3MiOiJxSEFLUSxZQ0hSLHdCQ1VZLENERlYsUUFDQSxDQ0NVLGlCRFBWLENBSUEscUJBQ0EsQ0FKQSxVQUNBLGVBQ0EsQ0FPQSw4Q0NvQ2MsQ0R4Q2QsY0FDQSxDQVBBLG1CQUNBLENBRUEsaUJBQ0EsQ0FLQSx5QkFDQSxDQ29DYywwQkR2Q2QsZ0JBQ0EseUJBSUEsNkJBSUYsa0JDUFksZ0RBc0NLLG1DRDVCZixpQkFLQSxtQkFGRiwrQkFDRSx3Q0FFQSxNQUtBLFlBRkYsZUFDRSxxQkFFQSxtQkVsQ0YsdUJBQ0UsQ0FHQSxrQkRJUyxDQ0xULGlCQUNBLENBRkEsV0FDQSxDQUdBLFVBQ0EsQ0RDUyxZQ0ZULENBQ0Esc0JBQ0Esd0JBUEEsVUFRQSx5QkFFQSxTQUNFLHlDQUdGLHVCQUNFLGdCQUNBLENBR0Esa0JEUlEsQ0NPUixpQkFDQSxDRFJRLGNDVVIsOENBSkEsV0FDQSxDQUZBLFVEOEJLLHFDQ2xCTCxrQkRqQlEsQ0NnQlIsaUJBQ0EsQ0RqQlEsY0NtQlIsOENBSkEsV0FDQSxDQUZGLFVEcUJPLDRCQ1ZMLG1CQUZGLCtCQUNFLHdDQUVBLFlDdENKLHdCRlVZLENFTlYsV0FDQSxDQU1BLFVBQ0EsQ0ZGVSxjRVJWLENBVUEsWUFKQSxnQ0FDQSxnQkFDQSxnQkFDQSxDQUxBLFlBQ0EsQ0FMQSxZQUNBLENBRUEsZUFDQSxDQUNBLGNBQ0EsQ0FMQSxVQVVBLGtCQUVBLFdBQ0UsaUNBR0Ysa0JGUlUsWUVVUixRQUlKLHdCRmpCVyxDRW1CVCxZQUNBLENGcEJTLGVFbUJULENBQ0Esa0NBQ0EsWUFFQSxVQUNFLFVBR0YsY0FDRSxxQkFHRixlQUNFLGtCQUNBLE1KOUJKLHFCQUNFLHVCQUNBLGtCQUVGLGtCQUdFLE1BSUEsd0JFZFMsQ0ZpQlQsZ0NBQ0Esa0JBTkYsUUFDRSxDQUdBLGlCQUNBLENFakJTLGdCRm1CVCxtQkFTQSxrQkFORixVQU9FLE9BSUEsU0FERixTQUVFLFlBR0YsWUFDRSxNQUNBLDZDQUNBLGNBRUEsYUFDRSxhQUtGLDBCQUNBLGVBRkYsVUFHRSxZQUlBLGlCQURGLGlCQUVFLHdDQUdFLFVBQ0UscUJBUUYsa0JFaEVRLENGK0RSLG1CQUNBLENFaEVRLDZDRjhEUixZQUNBLENBRkEsT0FDQSxDQUZGLEtFeEJPLHlCR3NoQkwsb0JMcmZFLFlBVEosdUJBVUksZ0RLb2ZGLG9CTDlmRixnQkFjSSxnQkFDQSwyQksrZUYsb0JMeGVFLFlBdEJKLGlCQW1CSSxDQUNBLE9BQ0EsQ0FGQSxLQUNBLENBQ0EsV0FFQSw0QkFHRixhQUNFLDJCQUtBLG1CQUZBLFlBQ0EsOEJBQ0EsQ0FIRixtQkFJRSxrQ0FDQSxrQkVoR00sQ0Z1R0osZUFMQSxZQUNBLENBQ0EsMkJBRUEsMEJBQ0EsQ0FKQSxtQkFDQSxDRXBHSSxXRnlHSiw4QkFNRixZQUNBLENBQ0EsU0FIQSxVQUNBLENBQ0Esc0JBQ0EsQ0FMRixhQUNFLFdBS0EsNEJBR0EsZUFDQSxrQkFGRixjQUdFLDhCQUVBLFlBQ0UsbUJBQ0EsOEJBQ0EsU0FRTix3QkVsSVUsQ0ZvSVYsa0JBQ0EsOENBSkEsU0FDQSxDRWxJVSxZRm9JVixDQUxGLGNBQ0UsU0U1Rk8sZ0JGdUdMLHdCRXJITyxDRm1IUCxXQUNBLENBSUEsa0JBREEsZUFDQSxDRXhITyxvQkZ1SFAsQ0FMRixpQkFDRSxDQUNBLFVBS0EseUVBR0Ysa0JFM0hTLHlCRm9JUCxrQkFDQSxDQUpBLFlBQ0Esc0JBQ0EsQ0FFQSxRQUNBLENBSEEsc0JBQ0EsQ0FKRixtQkFDRSxDQUtBLFVBQ0EsMkJBRUEsbUJBQ0Usc0NBSUEsY0FERixpQkFFRSw2Q0FLRSwyQkFDQSwyQkFGQSxNQUNBLENBSEYsaUJBQ0UsTUFJQSx5REFHRiw0Q0U1SUcsUUZvSlAsa0JBQ0EsQ0FGRixZQUNFLENBR0Esc0JBRkEsc0JBQ0Esa0JBRUEsVUFFQSxRQUNFLDRCQUlBLHFCQUNBLENBR0EsVUFEQSxtQkFFQSx3Q0FKQSxrQkFDQSxDQUhGLFlBQ0UsQ0FFQSxzQkFZQSxDQVRBLFlBUUEsU0FEQSxpQkFDQSxDQUxGLFVBTUUsMEJBRUEsZUFDRSxnQkFJSix3QkVuTVMsc0JGc01QLHdCRXJNTyxnQkYwTVQsd0JFL05VLHNCRmtPUix3QkVqT1Esc0JGc09WLFlBQ0UsOEJBR0UsWUFERixVQUVFLGlDQUVGLG9CQUNFLDhCQUVGLHFCQUNFLHFCQVFGLDJCQUVBLDJCQUhBLGVBQ0EsQ0FGRixjQUtFLE9BSUosc0JBQ0UsT0FHRixhQUNFLE9BR0YsWUFDRSxTQUtBLDZCQUZGLHlEQUNFLDZDQUtBLGVBRUEsWUFDRSxhQUlKLDRCQUNFLFVBSUEsa0JFN1FRLENGaVJSLG1CQUNBLDhDQUZBLFlBQ0EsQ0FMRixjQUNFLENBRUEsV0FDQSxDRWhSUSxVQWlCRCxtQkYyUUwsMEJBSkEsWUFDQSxDQUVBLE1BQ0EsQ0FIQSxlQUNBLE1BQ0EsQ0FKRixXQU1FLGdCQWdCQSxrQkFDQSxDQVRBLGtCRTNUTyxDQXVDRixtQkZ1UkwsQ0FJQSxZQUNBLENFblVPLDRDQXVDRixDRmtSTCxZQUNBLENBVUEsdUJBSkEsUUFDQSxDQVBBLFlBQ0EsQ0FMRixjQUNFLENBT0EsaUJBQ0EsUUFDQSxDQUNBLDhCQUNBLENBVkEsV0FDQSxDQUZBLFdBY0EsZUFJSixlQUNFLFlBUUYsaUJBQ0UiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9nbC1hY3RpdmF0aW9uLW1hcC12aWV3ZXIvLi9zcmMvc3R5bGVzL21haW4uc2NzcyIsIndlYnBhY2s6Ly9nbC1hY3RpdmF0aW9uLW1hcC12aWV3ZXIvLi9zcmMvc3R5bGVzL2J1dHRvbi5zY3NzIiwid2VicGFjazovL2dsLWFjdGl2YXRpb24tbWFwLXZpZXdlci8uL3NyYy9zdHlsZXMvdmFyaWFibGVzLnNjc3MiLCJ3ZWJwYWNrOi8vZ2wtYWN0aXZhdGlvbi1tYXAtdmlld2VyLy4vc3JjL3N0eWxlcy9zbGlkZXIuc2NzcyIsIndlYnBhY2s6Ly9nbC1hY3RpdmF0aW9uLW1hcC12aWV3ZXIvLi9zcmMvc3R5bGVzL2FjY29yZGlhbi5zY3NzIiwid2VicGFjazovL2dsLWFjdGl2YXRpb24tbWFwLXZpZXdlci8uL25vZGVfbW9kdWxlcy8ucG5wbS9pbmNsdWRlLW1lZGlhQDIuMC4wL25vZGVfbW9kdWxlcy9pbmNsdWRlLW1lZGlhL2Rpc3QvX2luY2x1ZGUtbWVkaWEuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICd2YXJpYWJsZXMnO1xuQHVzZSAnYnV0dG9uJztcbkB1c2UgJ3NsaWRlcic7XG5AdXNlICdhY2NvcmRpYW4nO1xuQHVzZSAnfmluY2x1ZGUtbWVkaWEvZGlzdC9faW5jbHVkZS1tZWRpYS5zY3NzJztcbkBpbXBvcnQgdXJsKCdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PU9wZW4rU2FuczppdGFsLHdnaHRAMCwzMDA7MCw0MDA7MCw3MDA7MSwzMDA7MSw0MDAmZGlzcGxheT1zd2FwJyk7XG5cbi8qICRicmVha3BvaW50czogKCAqL1xuLyogICAncGhvbmUnOiAzMjBweCwgKi9cbi8qICAgJ3RhYmxldCc6IDc2OHB4LCAqL1xuLyogICAnZGVza3RvcCc6IDEwMjRweCAqL1xuLyogKSAhZGVmYXVsdDsgKi9cblxuaHRtbCB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHNjcm9sbC1iZWhhdmlvcjogc21vb3RoO1xufVxuKixcbio6YWZ0ZXIsXG4qOmJlZm9yZSB7XG4gIGJveC1zaXppbmc6IGluaGVyaXQ7XG59XG5ib2R5IHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXJpYWJsZXMuJHNsYXRlLTUwO1xuICBwYWRkaW5nLWJvdHRvbTogM3JlbTtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBmb250LWZhbWlseTogJ09wZW4gU2FucycsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogbm9ybWFsO1xufVxuXG5oMSxcbmgyLFxuaDMsXG5oNCxcbmg1LFxuaDYge1xuICB3aWR0aDogMTAwJTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG5yZXNldCB7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbn1cblxuLmNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdhcDogMDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgbWluKDcyY2gsIDEwMCUpIDFmcjtcblxuICAmID4gKiB7XG4gICAgZ3JpZC1jb2x1bW46IDI7XG4gIH1cbn1cblxuLmZ1bGwtYmxlZWQge1xuICB3aWR0aDogMTAwJTtcbiAgZ3JpZC1jb2x1bW46IDEgLyAtMSAhaW1wb3J0YW50O1xuICBtYXJnaW46IDAuNWVtIDAgMC41ZW0gMDtcbn1cblxuLm1vZGVsLXZpcyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZy10b3A6IDAuNmVtO1xuXG4gICNtb2RlbC12aXMtY29udGFpbmVyIHtcbiAgICBjYW52YXMge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuICB9XG5cbiAgLnNpZGViYXIge1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICBwYWRkaW5nOiAxcmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcbiAgICBiYWNrZ3JvdW5kOiB2YXJpYWJsZXMuJG1vZGFsLWJnO1xuICAgIGZpbHRlcjogdmFyaWFibGVzLiRzaGFkb3c7XG5cbiAgICBAaW5jbHVkZSBpbmNsdWRlLW1lZGlhLm1lZGlhKCc8dGFibGV0Jykge1xuICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDJyZW0pO1xuICAgICAgbWFyZ2luOiAxcmVtO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGluY2x1ZGUtbWVkaWEubWVkaWEoJz49dGFibGV0JywgJzxkZXNrdG9wJykge1xuICAgICAgbWFyZ2luOiAxcmVtIGF1dG87XG4gICAgICBtYXgtd2lkdGg6IDU2MHB4O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGluY2x1ZGUtbWVkaWEubWVkaWEoJz49ZGVza3RvcCcpIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMDtcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgd2lkdGg6IDI1MHB4O1xuICAgICAgbWFyZ2luOiAxcmVtO1xuICAgIH1cblxuICAgICZfX3RleHQge1xuICAgICAgbWluLXdpZHRoOiAzMCU7XG4gICAgfVxuICAgICZfX2l0ZW0ge1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGNhbnZhcyB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcmlhYmxlcy4kc2xhdGUtMTAwO1xuICAgICAgICB3aWR0aDogMTI4cHg7XG4gICAgICAgIGhlaWdodDogMTI4cHg7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuXG4gICAgICAgIGltYWdlLXJlbmRlcmluZzogY3Jpc3AtZWRnZXM7IC8qIGZvciBmaXJlZm94ICovXG4gICAgICAgIGltYWdlLXJlbmRlcmluZzogcGl4ZWxhdGVkOyAvKiBmb3IgZXZlcnl0aGluZyBlbHNlICovXG5cbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgfVxuICAgIH1cbiAgICAmX19idXR0b25zIHtcbiAgICAgIG1hcmdpbjogMXJlbSAwO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDJlbTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIGdhcDogMC41ZW07XG4gICAgfVxuICAgICZfX2RlYnVnIHtcbiAgICAgIG1hcmdpbjogMS40ZW0gMDtcbiAgICAgIGZvbnQtc2l6ZTogc21hbGw7XG4gICAgICBsaW5lLWhlaWdodDogMC41ZW07XG5cbiAgICAgICYgPiAqIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuI2VkaXRvciB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAxcmVtO1xuICBsZWZ0OiAxcmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXJpYWJsZXMuJG1vZGFsLWJnO1xuICBwYWRkaW5nOiAxcmVtO1xuICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICBmaWx0ZXI6IHZhcmlhYmxlcy4kc2hhZG93O1xuXG4gICNjbG9zZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvdHRvbTogMjBweDtcbiAgICByaWdodDogMjBweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXJpYWJsZXMuJGxpbWUtMzAwO1xuICAgIHBhZGRpbmc6IDAuOHJlbSAxLjFyZW07XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgZm9udC1zaXplOiB4LWxhcmdlO1xuICB9XG5cbiAgI2Nsb3NlOm5vdCg6ZGlzYWJsZWQpOmhvdmVyLFxuICAjY2xvc2U6bm90KDpkaXNhYmxlZCk6Zm9jdXMge1xuICAgIGJhY2tncm91bmQ6IHZhcmlhYmxlcy4kbGltZS00MDA7XG4gIH1cblxuICAuZWRpdG9yLXdyYXBwZXIge1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMXJlbTtcbiAgICB3aWR0aDogMTAwJTtcblxuICAgICYgPiAqIHtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICAgIH1cblxuICAgIC5jYW52YXMtY29udCB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgY2FudmFzIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIGltYWdlLXJlbmRlcmluZzogY3Jpc3AtZWRnZXM7IC8qIGZvciBmaXJlZm94ICovXG4gICAgICAgIGltYWdlLXJlbmRlcmluZzogcGl4ZWxhdGVkOyAvKiBmb3IgZXZlcnl0aGluZyBlbHNlICovXG4gICAgICB9XG5cbiAgICAgIGNhbnZhczpmaXJzdC1jaGlsZCB7XG4gICAgICAgIGZpbHRlcjogdmFyaWFibGVzLiRzaGFkb3c7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbiN0b29scyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgcCB7XG4gICAgbWFyZ2luOiAwO1xuICB9XG5cbiAgLnZlcnRpY2FsLWNvbnRhaW5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgbWFyZ2luOiAxcmVtIDAuNXJlbSAwIDAuNXJlbTtcbiAgICBnYXA6IDAuNXJlbTtcbiAgfVxuXG4gIC5yb3cge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZ2FwOiAwLjhlbTtcblxuICAgICY6bnRoLWNoaWxkKDMpIHtcbiAgICAgIG1hcmdpbi10b3A6IDAuOGVtO1xuICAgIH1cbiAgfVxuXG4gIC5jb21taXQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcmlhYmxlcy4kbGltZS0yMDA7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcmlhYmxlcy4kbGltZS0zMDA7XG4gICAgfVxuICB9XG5cbiAgLmNhbmNlbCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyaWFibGVzLiRzbGF0ZS00MDA7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcmlhYmxlcy4kc2xhdGUtNTAwO1xuICAgIH1cbiAgfVxuXG4gIC5jb2xvci1waWNrZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG5cbiAgICAuc3dhdGNoIHtcbiAgICAgIHdpZHRoOiAxcmVtO1xuICAgICAgaGVpZ2h0OiAxcmVtO1xuICAgIH1cbiAgICAuaGlnaGxpZ2h0IHtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJlZDtcbiAgICB9XG4gICAgLmNob3NlbiB7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjYjAwO1xuICAgIH1cbiAgfVxufVxuXG4jYWN0aXZhdGlvbnMge1xuICBjYW52YXMge1xuICAgIG1pbi13aWR0aDogMzJweDtcbiAgICBtaW4taGVpZ2h0OiAzMnB4O1xuXG4gICAgaW1hZ2UtcmVuZGVyaW5nOiBjcmlzcC1lZGdlczsgLyogZm9yIGZpcmVmb3ggKi9cbiAgICBpbWFnZS1yZW5kZXJpbmc6IHBpeGVsYXRlZDsgLyogZm9yIGV2ZXJ5dGhpbmcgZWxzZSAqL1xuICB9XG59XG5cbi5oaWRlIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4uc2hvdyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uZmxleCB7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG5cbi5hY3RpdmUge1xuICBmaWx0ZXI6IHZhcmlhYmxlcy4kYnV0dG9uLXByZXNzZWQgIWltcG9ydGFudDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoXG4gICAgdmFyaWFibGVzLiRidXR0b24tb2Zmc2V0LFxuICAgIHZhcmlhYmxlcy4kYnV0dG9uLW9mZnNldFxuICApICFpbXBvcnRhbnQ7XG4gIGJhY2tncm91bmQ6IHZhcmlhYmxlcy4kYWNjZW50ICFpbXBvcnRhbnQ7XG5cbiAgJjphZnRlciB7XG4gICAgY29udGVudDogJyBcXDAyNzEzJztcbiAgfVxufVxuXG4ubG9vay1hdC1tZSB7XG4gIGJhY2tncm91bmQ6IHZhcmlhYmxlcy4kbGltZS0zMDAgIWltcG9ydGFudDtcbn1cblxuLnRvb2x0aXAge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGJhY2tncm91bmQ6IHZhcmlhYmxlcy4kbGltZS01MDtcbiAgei1pbmRleDogMTA7XG4gIHdpZHRoOiAzNjBweDtcbiAgcGFkZGluZzogMTVweDtcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xuICBmaWx0ZXI6IHZhcmlhYmxlcy4kc2hhZG93O1xufVxuXG4ubG9hZGluZyB7XG4gICZfX3dyYXBwZXIge1xuICAgIHdpZHRoOiAxMDB2dztcbiAgICBoZWlnaHQ6IDEwMHZoO1xuICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjYpO1xuICB9XG5cbiAgJl9fdGV4dCB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHotaW5kZXg6IDEwMDtcbiAgICB3aWR0aDogMzAwcHg7XG4gICAgaGVpZ2h0OiAyMDBweDtcbiAgICBwYWRkaW5nOiAyMHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcmlhYmxlcy4kd2hpdGU7XG4gICAgZmlsdGVyOiB2YXJpYWJsZXMuJHNoYWRvdztcbiAgICBib3JkZXItcmFkaXVzOiAwLjVyZW07XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cbn1cblxuLmhpZGVPdmVyZmxvdyB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbnNlY3Rpb24ge1xuICAmX19pbm5lciB7XG4gIH1cbn1cblxuLmRyYWdnYWJsZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cbiIsIkB1c2UgXCJ2YXJpYWJsZXNcIjtcblxuLmJ0bixcbmJ1dHRvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcmlhYmxlcy4kc2xhdGUtMjAwO1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIHBhZGRpbmc6IDAuNHJlbSAwLjhyZW07XG4gIGNvbG9yOiAjMDAwO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYm9yZGVyOiAwO1xuICBmb250LXNpemU6IDE2cHg7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjtcbiAgZmlsdGVyOiB2YXJpYWJsZXMuJGJ1dHRvbi1ib3JkZXI7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAxMG1zO1xufVxuXG4vKiBidXR0b246bm90KDpkaXNhYmxlZCk6Zm9jdXMgeyAqL1xuYnV0dG9uOm5vdCg6ZGlzYWJsZWQpOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogdmFyaWFibGVzLiRzbGF0ZS00MDA7XG4gIGZpbHRlcjogdmFyaWFibGVzLiRidXR0b24tcHJlc3NlZDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUodmFyaWFibGVzLiRidXR0b24tb2Zmc2V0LCB2YXJpYWJsZXMuJGJ1dHRvbi1vZmZzZXQpO1xufVxuXG5idXR0b246ZGlzYWJsZWQge1xuICBmaWx0ZXI6IHNhdHVyYXRlKDAuMikgb3BhY2l0eSgwLjUpO1xuICAtd2Via2l0LWZpbHRlcjogc2F0dXJhdGUoMC4yKSBvcGFjaXR5KDAuNSk7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbi5idG4ge1xuICBmb250LXNpemU6IHNtYWxsO1xuICBwYWRkaW5nOiAwLjJyZW0gMC4zM3JlbTtcbiAgY3Vyc29yOiB0ZXh0O1xufVxuIiwiJGxpZ2h0Z3JleTogI2VlZTtcbiRkYXJrZ3JleTogI2RkZDtcbiRkYXJrOiAjNjA5NmI0O1xuJGRhcmstZGFyazogIzRiODE5ZTtcbiRtaWQ6ICM5M2JmY2Y7XG4kZ3JleTogI2JkY2RkNjtcbiRsaWdodDogI2VlZTlkYTtcbiRhY2NlbnQ6ICNkNDc5NzA7XG4kYWNjZW50LWRhcms6ICMzZjc0OTE7XG5cbiRzbGF0ZS01MDogI2Y4ZmFmYztcbiRzbGF0ZS0xMDA6ICNmMWY1Zjk7XG4kc2xhdGUtMjAwOiAjZTJlOGYwO1xuJHNsYXRlLTMwMDogI2NiZDVlMTtcbiRzbGF0ZS00MDA6ICM5NGEzYjg7XG4kc2xhdGUtNTAwOiAjNjQ3NDhiO1xuJHNsYXRlLTYwMDogIzQ3NTU2OTtcbiRzbGF0ZS03MDA6ICMzMzQxNTU7XG4kc2xhdGUtODAwOiAjMWUyOTNiO1xuJHNsYXRlLTkwMDogIzBmMTcyYTtcblxuJHRlYWwtNTA6ICNmMGZkZmE7XG4kdGVhbC0xMDA6ICNjY2ZiZjE7XG4kdGVhbC0yMDA6ICM5OWY2ZTQ7XG4kdGVhbC0zMDA6ICM1ZWVhZDQ7XG4kdGVhbC00MDA6ICMyZGQ0YmY7XG4kdGVhbC01MDA6ICMxNGI4YTY7XG4kdGVhbC02MDA6ICMwZDk0ODg7XG4kdGVhbC03MDA6ICMwZjc2NmU7XG4kdGVhbC04MDA6ICMxMTVlNTk7XG4kdGVhbC05MDA6ICMxMzRlNGE7XG5cbiRsaW1lLTUwOiAjZjdmZWU3O1xuJGxpbWUtMTAwOiAjZWNmY2NiO1xuJGxpbWUtMjAwOiAjZDlmOTlkO1xuJGxpbWUtMzAwOiAjYmVmMjY0O1xuJGxpbWUtNDAwOiAjYTNlNjM1O1xuJGxpbWUtNTAwOiAjODRjYzE2O1xuJGxpbWUtNjAwOiAjNjVhMzBkO1xuJGxpbWUtNzAwOiAjNGQ3YzBmO1xuJGxpbWUtODAwOiAjM2Y2MjEyO1xuJGxpbWUtOTAwOiAjMzY1MzE0O1xuXG4kd2hpdGU6ICRzbGF0ZS01MDtcbiRibGFjazogIzIyMjtcbiRtb2RhbC1iZzogJHNsYXRlLTMwMDtcblxuJHNoYWRvdy1vZmZzZXQ6IDAuMXJlbTtcbiRidXR0b24tb2Zmc2V0OiAwLjA1cmVtO1xuJHNoYWRvdzogZHJvcC1zaGFkb3coJHNoYWRvdy1vZmZzZXQgJHNoYWRvdy1vZmZzZXQgMC4wOHJlbSBibGFjayk7XG4kc2hhZG93LXByZXNzZWQ6IGRyb3Atc2hhZG93KCRzaGFkb3ctb2Zmc2V0ICRzaGFkb3ctb2Zmc2V0IDAuMDA1cmVtIGJsYWNrKTtcbiRidXR0b24tYm9yZGVyOiBkcm9wLXNoYWRvdygkc2hhZG93LW9mZnNldCAkc2hhZG93LW9mZnNldCAwLjA4cmVtICRzbGF0ZS03MDApO1xuJGJ1dHRvbi1wcmVzc2VkOiBkcm9wLXNoYWRvdygkc2hhZG93LW9mZnNldCAkc2hhZG93LW9mZnNldCAwLjAwNXJlbSAkc2xhdGUtOTAwKTtcblxuLyogJGJyZWFrcG9pbnRzOiAoICovXG4vKiAgICdwaG9uZSc6IDMyMHB4LCAqL1xuLyogICAndGFibGV0JzogNzY4cHgsICovXG4vKiAgICdkZXNrdG9wJzogMTAyNHB4LCAqL1xuLyogKSAhZGVmYXVsdDsgKi9cbiIsIkB1c2UgXCJ2YXJpYWJsZXNcIjtcblxuaW5wdXRbdHlwZT0ncmFuZ2UnXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTBweDtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBiYWNrZ3JvdW5kOiB2YXJpYWJsZXMuJHNsYXRlLTUwO1xuICBvdXRsaW5lOiBub25lO1xuICBvcGFjaXR5OiAwLjc7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogMC4ycztcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzO1xuXG4gICY6aG92ZXIge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICAmOjotd2Via2l0LXNsaWRlci10aHVtYiB7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gICAgd2lkdGg6IDE1cHg7XG4gICAgaGVpZ2h0OiAxNXB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBiYWNrZ3JvdW5kOiB2YXJpYWJsZXMuJHNsYXRlLTQwMDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZmlsdGVyOiB2YXJpYWJsZXMuJHNoYWRvdztcbiAgfVxuXG4gICY6Oi1tb3otcmFuZ2UtdGh1bWIge1xuICAgIHdpZHRoOiAxNXB4O1xuICAgIGhlaWdodDogMTVweDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYmFja2dyb3VuZDogdmFyaWFibGVzLiRzbGF0ZS00MDA7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGZpbHRlcjogdmFyaWFibGVzLiRzaGFkb3c7XG4gIH1cblxuICAmOmRpc2FibGVkIHtcbiAgICBmaWx0ZXI6IHNhdHVyYXRlKDAuMikgb3BhY2l0eSgwLjUpO1xuICAgIC13ZWJraXQtZmlsdGVyOiBzYXR1cmF0ZSgwLjIpIG9wYWNpdHkoMC41KTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICB9XG59XG4iLCJAdXNlIFwidmFyaWFibGVzXCI7XG5cbi5hY2NvcmRpb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXJpYWJsZXMuJHNsYXRlLTIwMDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBwYWRkaW5nOiAxOHB4O1xuICB3aWR0aDogMTAwJTtcbiAgYm9yZGVyOiBub25lO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBvdXRsaW5lOiBub25lO1xuICB0cmFuc2l0aW9uOiAwLjRzO1xuICBmb250LWZhbWlseTogJ09wZW4gU2FucycsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogbGFyZ2U7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBjb2xvcjogIzQ0NDtcbiAgZmlsdGVyOiBub25lO1xuXG4gICZfX21vcmUge1xuICAgIGZsb2F0OiByaWdodDtcbiAgfVxuXG4gICY6bm90KDpkaXNhYmxlZCk6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHZhcmlhYmxlcy4kc2xhdGUtMzAwO1xuICAgIGZpbHRlcjogbm9uZTtcbiAgfVxufVxuXG4ucGFuZWwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXJpYWJsZXMuJHdoaXRlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBtYXgtaGVpZ2h0OiAwO1xuICB0cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IDAuNHMgZWFzZS1vdXQ7XG5cbiAgaW1nIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gICYgPiAqIHtcbiAgICBwYWRkaW5nOiAwIDM2cHg7XG4gIH1cblxuICAmX19hdHRyaWJ1dGlvbiB7XG4gICAgZm9udC1zaXplOiBzbWFsbDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cbn1cbiIsIi8vICAgICBfICAgICAgICAgICAgXyAgICAgICAgICAgXyAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gX1xuLy8gICAgKF8pICAgICAgICAgIHwgfCAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IChfKVxuLy8gICAgIF8gXyBfXyAgIF9fX3wgfF8gICBfICBfX3wgfCBfX18gICBfIF9fIF9fXyAgIF9fXyAgX198IHxfICBfXyBfXG4vLyAgICB8IHwgJ18gXFwgLyBfX3wgfCB8IHwgfC8gX2AgfC8gXyBcXCB8ICdfIGAgXyBcXCAvIF8gXFwvIF9gIHwgfC8gX2AgfFxuLy8gICAgfCB8IHwgfCB8IChfX3wgfCB8X3wgfCAoX3wgfCAgX18vIHwgfCB8IHwgfCB8ICBfXy8gKF98IHwgfCAoX3wgfFxuLy8gICAgfF98X3wgfF98XFxfX198X3xcXF9fLF98XFxfXyxffFxcX19ffCB8X3wgfF98IHxffFxcX19ffFxcX18sX3xffFxcX18sX3xcbi8vXG4vLyAgICAgIFNpbXBsZSwgZWxlZ2FudCBhbmQgbWFpbnRhaW5hYmxlIG1lZGlhIHF1ZXJpZXMgaW4gU2Fzc1xuLy8gICAgICAgICAgICAgICAgICAgICAgICB2Mi4wLjBcbi8vXG4vLyAgICAgICAgaHR0cHM6Ly9lZHVhcmRvYm91Y2FzLmdpdGh1Yi5pby9pbmNsdWRlLW1lZGlhXG4vL1xuLy8gICAgICAgICBBdXRob3JzOiBFZHVhcmRvIEJvdWNhcyAoQGVkdWFyZG9ib3VjYXMpXG4vLyAgICAgICAgICAgICAgICAgIEtpdHR5IEdpcmF1ZGVsIChAa2l0dHlnaXJhdWRlbClcbi8vXG4vLyAgICAgIFRoaXMgcHJvamVjdCBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIE1JVCBsaWNlbnNlXG5AY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLy9cbi8vLyBpbmNsdWRlLW1lZGlhIGxpYnJhcnkgcHVibGljIGNvbmZpZ3VyYXRpb25cbi8vLyBAYXV0aG9yIEVkdWFyZG8gQm91Y2FzXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLy9cbkB1c2UgJ3Nhc3M6bWF0aCc7XG5AdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOmxpc3QnO1xuQHVzZSAnc2FzczpzdHJpbmcnO1xuQHVzZSAnc2FzczptZXRhJztcblxuLy8vXG4vLy8gQ3JlYXRlcyBhIGxpc3Qgb2YgZ2xvYmFsIGJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gQ3JlYXRlcyBhIHNpbmdsZSBicmVha3BvaW50IHdpdGggdGhlIGxhYmVsIGBwaG9uZWBcbi8vLyAgJGJyZWFrcG9pbnRzOiAoJ3Bob25lJzogMzIwcHgpO1xuLy8vXG4kYnJlYWtwb2ludHM6IChcbiAgJ3Bob25lJzogMzIwcHgsXG4gICd0YWJsZXQnOiA3NjhweCxcbiAgJ2Rlc2t0b3AnOiAxMDI0cHgsXG4pICFkZWZhdWx0O1xuXG4vLy9cbi8vLyBDcmVhdGVzIGEgbGlzdCBvZiBzdGF0aWMgZXhwcmVzc2lvbnMgb3IgbWVkaWEgdHlwZXNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBDcmVhdGVzIGEgc2luZ2xlIG1lZGlhIHR5cGUgKHNjcmVlbilcbi8vLyAgJG1lZGlhLWV4cHJlc3Npb25zOiAoJ3NjcmVlbic6ICdzY3JlZW4nKTtcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBDcmVhdGVzIGEgc3RhdGljIGV4cHJlc3Npb24gd2l0aCBsb2dpY2FsIGRpc2p1bmN0aW9uIChPUiBvcGVyYXRvcilcbi8vLyAgJG1lZGlhLWV4cHJlc3Npb25zOiAoXG4vLy8gICAgJ3JldGluYTJ4JzogJygtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpLCAobWluLXJlc29sdXRpb246IDE5MmRwaSknXG4vLy8gICk7XG4vLy9cbiRtZWRpYS1leHByZXNzaW9uczogKFxuICAnc2NyZWVuJzogJ3NjcmVlbicsXG4gICdwcmludCc6ICdwcmludCcsXG4gICdoYW5kaGVsZCc6ICdoYW5kaGVsZCcsXG4gICdsYW5kc2NhcGUnOiAnKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJyxcbiAgJ3BvcnRyYWl0JzogJyhvcmllbnRhdGlvbjogcG9ydHJhaXQpJyxcbiAgJ3JldGluYTJ4JzpcbiAgICAnKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMiksIChtaW4tcmVzb2x1dGlvbjogMTkyZHBpKSwgKG1pbi1yZXNvbHV0aW9uOiAyZHBweCknLFxuICAncmV0aW5hM3gnOlxuICAgICcoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAzKSwgKG1pbi1yZXNvbHV0aW9uOiAzNTBkcGkpLCAobWluLXJlc29sdXRpb246IDNkcHB4KScsXG4pICFkZWZhdWx0O1xuXG4vLy9cbi8vLyBEZWZpbmVzIGEgbnVtYmVyIHRvIGJlIGFkZGVkIG9yIHN1YnRyYWN0ZWQgZnJvbSBlYWNoIHVuaXQgd2hlbiBkZWNsYXJpbmcgYnJlYWtwb2ludHMgd2l0aCBleGNsdXNpdmUgaW50ZXJ2YWxzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gSW50ZXJ2YWwgZm9yIHBpeGVscyBpcyBkZWZpbmVkIGFzIGAxYCBieSBkZWZhdWx0XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+MTI4cHgnKSB7fVxuLy8vXG4vLy8gIC8qIEdlbmVyYXRlczogKi9cbi8vLyAgQG1lZGlhIChtaW4td2lkdGg6IDEyOXB4KSB7fVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIEludGVydmFsIGZvciBlbXMgaXMgZGVmaW5lZCBhcyBgMC4wMWAgYnkgZGVmYXVsdFxuLy8vICBAaW5jbHVkZSBtZWRpYSgnPjIwZW0nKSB7fVxuLy8vXG4vLy8gIC8qIEdlbmVyYXRlczogKi9cbi8vLyAgQG1lZGlhIChtaW4td2lkdGg6IDIwLjAxZW0pIHt9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gSW50ZXJ2YWwgZm9yIHJlbXMgaXMgZGVmaW5lZCBhcyBgMC4xYCBieSBkZWZhdWx0LCB0byBiZSB1c2VkIHdpdGggYGZvbnQtc2l6ZTogNjIuNSU7YFxuLy8vICBAaW5jbHVkZSBtZWRpYSgnPjIuMHJlbScpIHt9XG4vLy9cbi8vLyAgLyogR2VuZXJhdGVzOiAqL1xuLy8vICBAbWVkaWEgKG1pbi13aWR0aDogMi4xcmVtKSB7fVxuLy8vXG4kdW5pdC1pbnRlcnZhbHM6IChcbiAgJ3B4JzogMSxcbiAgJ2VtJzogMC4wMSxcbiAgJ3JlbSc6IDAuMSxcbiAgJyc6IDAsXG4pICFkZWZhdWx0O1xuXG4vLy9cbi8vLyBEZWZpbmVzIHdoZXRoZXIgc3VwcG9ydCBmb3IgbWVkaWEgcXVlcmllcyBpcyBhdmFpbGFibGUsIHVzZWZ1bCBmb3IgY3JlYXRpbmcgc2VwYXJhdGUgc3R5bGVzaGVldHNcbi8vLyBmb3IgYnJvd3NlcnMgdGhhdCBkb24ndCBzdXBwb3J0IG1lZGlhIHF1ZXJpZXMuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gRGlzYWJsZXMgc3VwcG9ydCBmb3IgbWVkaWEgcXVlcmllc1xuLy8vICAkaW0tbWVkaWEtc3VwcG9ydDogZmFsc2U7XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyAgLyogR2VuZXJhdGVzOiAqL1xuLy8vICAuZm9vIHtcbi8vLyAgICBjb2xvcjogdG9tYXRvO1xuLy8vICB9XG4vLy9cbiRpbS1tZWRpYS1zdXBwb3J0OiB0cnVlICFkZWZhdWx0O1xuXG4vLy9cbi8vLyBTZWxlY3RzIHdoaWNoIGJyZWFrcG9pbnQgdG8gZW11bGF0ZSB3aGVuIHN1cHBvcnQgZm9yIG1lZGlhIHF1ZXJpZXMgaXMgZGlzYWJsZWQuIE1lZGlhIHF1ZXJpZXMgdGhhdCBzdGFydCBhdCBvclxuLy8vIGludGVyY2VwdCB0aGUgYnJlYWtwb2ludCB3aWxsIGJlIGRpc3BsYXllZCwgYW55IG90aGVycyB3aWxsIGJlIGlnbm9yZWQuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVGhpcyBtZWRpYSBxdWVyeSB3aWxsIHNob3cgYmVjYXVzZSBpdCBpbnRlcmNlcHRzIHRoZSBzdGF0aWMgYnJlYWtwb2ludFxuLy8vICAkaW0tbWVkaWEtc3VwcG9ydDogZmFsc2U7XG4vLy8gICRpbS1uby1tZWRpYS1icmVha3BvaW50OiAnZGVza3RvcCc7XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyAgLyogR2VuZXJhdGVzOiAqL1xuLy8vICAuZm9vIHtcbi8vLyAgICBjb2xvcjogdG9tYXRvO1xuLy8vICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVGhpcyBtZWRpYSBxdWVyeSB3aWxsIE5PVCBzaG93IGJlY2F1c2UgaXQgZG9lcyBub3QgaW50ZXJjZXB0IHRoZSBkZXNrdG9wIGJyZWFrcG9pbnRcbi8vLyAgJGltLW1lZGlhLXN1cHBvcnQ6IGZhbHNlO1xuLy8vICAkaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ3RhYmxldCc7XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PWRlc2t0b3AnKSB7XG4vLy8gICAgLmZvbyB7XG4vLy8gICAgICBjb2xvcjogdG9tYXRvO1xuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gIC8qIE5vIG91dHB1dCAqL1xuLy8vXG4kaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ2Rlc2t0b3AnICFkZWZhdWx0O1xuXG4vLy9cbi8vLyBTZWxlY3RzIHdoaWNoIG1lZGlhIGV4cHJlc3Npb25zIGFyZSBhbGxvd2VkIGluIGFuIGV4cHJlc3Npb24gZm9yIGl0IHRvIGJlIHVzZWQgd2hlbiBtZWRpYSBxdWVyaWVzXG4vLy8gYXJlIG5vdCBzdXBwb3J0ZWQuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVGhpcyBtZWRpYSBxdWVyeSB3aWxsIHNob3cgYmVjYXVzZSBpdCBpbnRlcmNlcHRzIHRoZSBzdGF0aWMgYnJlYWtwb2ludCBhbmQgY29udGFpbnMgb25seSBhY2NlcHRlZCBtZWRpYSBleHByZXNzaW9uc1xuLy8vICAkaW0tbWVkaWEtc3VwcG9ydDogZmFsc2U7XG4vLy8gICRpbS1uby1tZWRpYS1icmVha3BvaW50OiAnZGVza3RvcCc7XG4vLy8gICRpbS1uby1tZWRpYS1leHByZXNzaW9uczogKCdzY3JlZW4nKTtcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0JywgJ3NjcmVlbicpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyAgIC8qIEdlbmVyYXRlczogKi9cbi8vLyAgIC5mb28ge1xuLy8vICAgICBjb2xvcjogdG9tYXRvO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFRoaXMgbWVkaWEgcXVlcnkgd2lsbCBOT1Qgc2hvdyBiZWNhdXNlIGl0IGludGVyY2VwdHMgdGhlIHN0YXRpYyBicmVha3BvaW50IGJ1dCBjb250YWlucyBhIG1lZGlhIGV4cHJlc3Npb24gdGhhdCBpcyBub3QgYWNjZXB0ZWRcbi8vLyAgJGltLW1lZGlhLXN1cHBvcnQ6IGZhbHNlO1xuLy8vICAkaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ2Rlc2t0b3AnO1xuLy8vICAkaW0tbm8tbWVkaWEtZXhwcmVzc2lvbnM6ICgnc2NyZWVuJyk7XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcsICdyZXRpbmEyeCcpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyAgLyogTm8gb3V0cHV0ICovXG4vLy9cbiRpbS1uby1tZWRpYS1leHByZXNzaW9uczogKCdzY3JlZW4nLCAncG9ydHJhaXQnLCAnbGFuZHNjYXBlJykgIWRlZmF1bHQ7XG5cbi8vLy9cbi8vLyBDcm9zcy1lbmdpbmUgbG9nZ2luZyBlbmdpbmVcbi8vLyBAYXV0aG9yIEtpdHR5IEdpcmF1ZGVsXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8vXG5cbi8vL1xuLy8vIExvZyBhIG1lc3NhZ2UgZWl0aGVyIHdpdGggYEBlcnJvcmAgaWYgc3VwcG9ydGVkXG4vLy8gZWxzZSB3aXRoIGBAd2FybmAsIHVzaW5nIGBmZWF0dXJlLWV4aXN0cygnYXQtZXJyb3InKWBcbi8vLyB0byBkZXRlY3Qgc3VwcG9ydC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbWVzc2FnZSAtIE1lc3NhZ2UgdG8gbG9nXG4vLy9cbkBmdW5jdGlvbiBpbS1sb2coJG1lc3NhZ2UpIHtcbiAgQGlmIG1ldGEuZmVhdHVyZS1leGlzdHMoJ2F0LWVycm9yJykge1xuICAgIEBlcnJvciAkbWVzc2FnZTtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gJG1lc3NhZ2U7XG4gICAgJF86IG5vb3AoKTtcbiAgfVxuXG4gIEByZXR1cm4gJG1lc3NhZ2U7XG59XG5cbi8vL1xuLy8vIFdyYXBwZXIgbWl4aW4gZm9yIHRoZSBsb2cgZnVuY3Rpb24gc28gaXQgY2FuIGJlIHVzZWQgd2l0aCBhIG1vcmUgZnJpZW5kbHlcbi8vLyBBUEkgdGhhbiBgQGlmIGltLWxvZygnLi4nKSB7fWAgb3IgYCRfOiBpbS1sb2coJy4uJylgLiBCYXNpY2FsbHksIHVzZSB0aGUgZnVuY3Rpb25cbi8vLyB3aXRoaW4gZnVuY3Rpb25zIGJlY2F1c2UgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGluY2x1ZGUgYSBtaXhpbiBpbiBhIGZ1bmN0aW9uXG4vLy8gYW5kIHVzZSB0aGUgbWl4aW4gZXZlcnl3aGVyZSBlbHNlIGJlY2F1c2UgaXQncyBtdWNoIG1vcmUgZWxlZ2FudC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbWVzc2FnZSAtIE1lc3NhZ2UgdG8gbG9nXG4vLy9cbkBtaXhpbiBsb2coJG1lc3NhZ2UpIHtcbiAgQGlmIGltLWxvZygkbWVzc2FnZSkge1xuICB9XG59XG5cbi8vL1xuLy8vIEZ1bmN0aW9uIHdpdGggbm8gYEByZXR1cm5gIGNhbGxlZCBuZXh0IHRvIGBAd2FybmAgaW4gU2FzcyAzLjNcbi8vLyB0byB0cmlnZ2VyIGEgY29tcGlsaW5nIGVycm9yIGFuZCBzdG9wIHRoZSBwcm9jZXNzLlxuLy8vXG5AZnVuY3Rpb24gbm9vcCgpIHtcbn1cblxuLy8vXG4vLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIGEgbGlzdCBvZiBjb25kaXRpb25zIGlzIGludGVyY2VwdGVkIGJ5IHRoZSBzdGF0aWMgYnJlYWtwb2ludC5cbi8vL1xuLy8vIEBwYXJhbSB7QXJnbGlzdH0gICAkY29uZGl0aW9ucyAgLSBNZWRpYSBxdWVyeSBjb25kaXRpb25zXG4vLy9cbi8vLyBAcmV0dXJuIHtCb29sZWFufSAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgY29uZGl0aW9ucyBhcmUgaW50ZXJjZXB0ZWQgYnkgdGhlIHN0YXRpYyBicmVha3BvaW50XG4vLy9cbkBmdW5jdGlvbiBpbS1pbnRlcmNlcHRzLXN0YXRpYy1icmVha3BvaW50KCRjb25kaXRpb25zLi4uKSB7XG4gICRuby1tZWRpYS1icmVha3BvaW50LXZhbHVlOiBtYXAuZ2V0KCRicmVha3BvaW50cywgJGltLW5vLW1lZGlhLWJyZWFrcG9pbnQpO1xuXG4gIEBpZiBub3QgJG5vLW1lZGlhLWJyZWFrcG9pbnQtdmFsdWUge1xuICAgIEBpZiBpbS1sb2coJ2AjeyRpbS1uby1tZWRpYS1icmVha3BvaW50fWAgaXMgbm90IGEgdmFsaWQgYnJlYWtwb2ludC4nKSB7XG4gICAgfVxuICB9XG5cbiAgQGVhY2ggJGNvbmRpdGlvbiBpbiAkY29uZGl0aW9ucyB7XG4gICAgQGlmIG5vdCBtYXAuaGFzLWtleSgkbWVkaWEtZXhwcmVzc2lvbnMsICRjb25kaXRpb24pIHtcbiAgICAgICRvcGVyYXRvcjogZ2V0LWV4cHJlc3Npb24tb3BlcmF0b3IoJGNvbmRpdGlvbik7XG4gICAgICAkcHJlZml4OiBnZXQtZXhwcmVzc2lvbi1wcmVmaXgoJG9wZXJhdG9yKTtcbiAgICAgICR2YWx1ZTogZ2V0LWV4cHJlc3Npb24tdmFsdWUoJGNvbmRpdGlvbiwgJG9wZXJhdG9yKTtcblxuICAgICAgQGlmICgkcHJlZml4ID09ICdtYXgnIGFuZCAkdmFsdWUgPD0gJG5vLW1lZGlhLWJyZWFrcG9pbnQtdmFsdWUpIG9yXG4gICAgICAgICgkcHJlZml4ID09ICdtaW4nIGFuZCAkdmFsdWUgPiAkbm8tbWVkaWEtYnJlYWtwb2ludC12YWx1ZSlcbiAgICAgIHtcbiAgICAgICAgQHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIGlmIG5vdCBsaXN0LmluZGV4KCRpbS1uby1tZWRpYS1leHByZXNzaW9ucywgJGNvbmRpdGlvbikge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIHRydWU7XG59XG5cbi8vLy9cbi8vLyBQYXJzaW5nIGVuZ2luZVxuLy8vIEBhdXRob3IgS2l0dHkgR2lyYXVkZWxcbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLy9cblxuLy8vXG4vLy8gR2V0IG9wZXJhdG9yIG9mIGFuIGV4cHJlc3Npb25cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZXhwcmVzc2lvbiAtIEV4cHJlc3Npb24gdG8gZXh0cmFjdCBvcGVyYXRvciBmcm9tXG4vLy9cbi8vLyBAcmV0dXJuIHtTdHJpbmd9IC0gQW55IG9mIGA+PWAsIGA+YCwgYDw9YCwgYDxgLCBg4omlYCwgYOKJpGBcbi8vL1xuQGZ1bmN0aW9uIGdldC1leHByZXNzaW9uLW9wZXJhdG9yKCRleHByZXNzaW9uKSB7XG4gIEBlYWNoICRvcGVyYXRvciBpbiAoJz49JywgJz4nLCAnPD0nLCAnPCcsICfiiaUnLCAn4omkJykge1xuICAgIEBpZiBzdHJpbmcuaW5kZXgoJGV4cHJlc3Npb24sICRvcGVyYXRvcikge1xuICAgICAgQHJldHVybiAkb3BlcmF0b3I7XG4gICAgfVxuICB9XG5cbiAgLy8gSXQgaXMgbm90IHBvc3NpYmxlIHRvIGluY2x1ZGUgYSBtaXhpbiBpbnNpZGUgYSBmdW5jdGlvbiwgc28gd2UgaGF2ZSB0b1xuICAvLyByZWx5IG9uIHRoZSBgaW0tbG9nKC4uKWAgZnVuY3Rpb24gcmF0aGVyIHRoYW4gdGhlIGBsb2coLi4pYCBtaXhpbi4gQmVjYXVzZVxuICAvLyBmdW5jdGlvbnMgY2Fubm90IGJlIGNhbGxlZCBhbnl3aGVyZSBpbiBTYXNzLCB3ZSBuZWVkIHRvIGhhY2sgdGhlIGNhbGwgaW5cbiAgLy8gYSBkdW1teSB2YXJpYWJsZSwgc3VjaCBhcyBgJF9gLiBJZiBhbnlib2R5IGV2ZXIgcmFpc2UgYSBzY29waW5nIGlzc3VlIHdpdGhcbiAgLy8gU2FzcyAzLjMsIGNoYW5nZSB0aGlzIGxpbmUgaW4gYEBpZiBpbS1sb2coLi4pIHt9YCBpbnN0ZWFkLlxuICAkXzogaW0tbG9nKCdObyBvcGVyYXRvciBmb3VuZCBpbiBgI3skZXhwcmVzc2lvbn1gLicpO1xufVxuXG4vLy9cbi8vLyBHZXQgZGltZW5zaW9uIG9mIGFuIGV4cHJlc3Npb24sIGJhc2VkIG9uIGEgZm91bmQgb3BlcmF0b3Jcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZXhwcmVzc2lvbiAtIEV4cHJlc3Npb24gdG8gZXh0cmFjdCBkaW1lbnNpb24gZnJvbVxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkb3BlcmF0b3IgLSBPcGVyYXRvciBmcm9tIGAkZXhwcmVzc2lvbmBcbi8vL1xuLy8vIEByZXR1cm4ge1N0cmluZ30gLSBgd2lkdGhgIG9yIGBoZWlnaHRgIChvciBwb3RlbnRpYWxseSBhbnl0aGluZyBlbHNlKVxuLy8vXG5AZnVuY3Rpb24gZ2V0LWV4cHJlc3Npb24tZGltZW5zaW9uKCRleHByZXNzaW9uLCAkb3BlcmF0b3IpIHtcbiAgJG9wZXJhdG9yLWluZGV4OiBzdHJpbmcuaW5kZXgoJGV4cHJlc3Npb24sICRvcGVyYXRvcik7XG4gICRwYXJzZWQtZGltZW5zaW9uOiBzdHJpbmcuc2xpY2UoJGV4cHJlc3Npb24sIDAsICRvcGVyYXRvci1pbmRleCAtIDEpO1xuICAkZGltZW5zaW9uOiAnd2lkdGgnO1xuXG4gIEBpZiBzdHJpbmcubGVuZ3RoKCRwYXJzZWQtZGltZW5zaW9uKSA+IDAge1xuICAgICRkaW1lbnNpb246ICRwYXJzZWQtZGltZW5zaW9uO1xuICB9XG5cbiAgQHJldHVybiAkZGltZW5zaW9uO1xufVxuXG4vLy9cbi8vLyBHZXQgZGltZW5zaW9uIHByZWZpeCBiYXNlZCBvbiBhbiBvcGVyYXRvclxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvcGVyYXRvciAtIE9wZXJhdG9yXG4vLy9cbi8vLyBAcmV0dXJuIHtTdHJpbmd9IC0gYG1pbmAgb3IgYG1heGBcbi8vL1xuQGZ1bmN0aW9uIGdldC1leHByZXNzaW9uLXByZWZpeCgkb3BlcmF0b3IpIHtcbiAgQHJldHVybiBpZihsaXN0LmluZGV4KCgnPCcsICc8PScsICfiiaQnKSwgJG9wZXJhdG9yKSwgJ21heCcsICdtaW4nKTtcbn1cblxuLy8vXG4vLy8gR2V0IHZhbHVlIG9mIGFuIGV4cHJlc3Npb24sIGJhc2VkIG9uIGEgZm91bmQgb3BlcmF0b3Jcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZXhwcmVzc2lvbiAtIEV4cHJlc3Npb24gdG8gZXh0cmFjdCB2YWx1ZSBmcm9tXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvcGVyYXRvciAtIE9wZXJhdG9yIGZyb20gYCRleHByZXNzaW9uYFxuLy8vXG4vLy8gQHJldHVybiB7TnVtYmVyfSAtIEEgbnVtZXJpYyB2YWx1ZVxuLy8vXG5AZnVuY3Rpb24gZ2V0LWV4cHJlc3Npb24tdmFsdWUoJGV4cHJlc3Npb24sICRvcGVyYXRvcikge1xuICAkb3BlcmF0b3ItaW5kZXg6IHN0cmluZy5pbmRleCgkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKTtcbiAgJHZhbHVlOiBzdHJpbmcuc2xpY2UoJGV4cHJlc3Npb24sICRvcGVyYXRvci1pbmRleCArIHN0cmluZy5sZW5ndGgoJG9wZXJhdG9yKSk7XG5cbiAgQGlmIG1hcC5oYXMta2V5KCRicmVha3BvaW50cywgJHZhbHVlKSB7XG4gICAgJHZhbHVlOiBtYXAuZ2V0KCRicmVha3BvaW50cywgJHZhbHVlKTtcbiAgfSBAZWxzZSB7XG4gICAgJHZhbHVlOiB0by1udW1iZXIoJHZhbHVlKTtcbiAgfVxuXG4gICRpbnRlcnZhbDogbWFwLmdldCgkdW5pdC1pbnRlcnZhbHMsIG1hdGgudW5pdCgkdmFsdWUpKTtcblxuICBAaWYgbm90ICRpbnRlcnZhbCB7XG4gICAgLy8gSXQgaXMgbm90IHBvc3NpYmxlIHRvIGluY2x1ZGUgYSBtaXhpbiBpbnNpZGUgYSBmdW5jdGlvbiwgc28gd2UgaGF2ZSB0b1xuICAgIC8vIHJlbHkgb24gdGhlIGBpbS1sb2coLi4pYCBmdW5jdGlvbiByYXRoZXIgdGhhbiB0aGUgYGxvZyguLilgIG1peGluLiBCZWNhdXNlXG4gICAgLy8gZnVuY3Rpb25zIGNhbm5vdCBiZSBjYWxsZWQgYW55d2hlcmUgaW4gU2Fzcywgd2UgbmVlZCB0byBoYWNrIHRoZSBjYWxsIGluXG4gICAgLy8gYSBkdW1teSB2YXJpYWJsZSwgc3VjaCBhcyBgJF9gLiBJZiBhbnlib2R5IGV2ZXIgcmFpc2UgYSBzY29waW5nIGlzc3VlIHdpdGhcbiAgICAvLyBTYXNzIDMuMywgY2hhbmdlIHRoaXMgbGluZSBpbiBgQGlmIGltLWxvZyguLikge31gIGluc3RlYWQuXG4gICAgJF86IGltLWxvZygnVW5rbm93biB1bml0IGAje21hdGgudW5pdCgkdmFsdWUpfWAuJyk7XG4gIH1cblxuICBAaWYgJG9wZXJhdG9yID09ICc+JyB7XG4gICAgJHZhbHVlOiAkdmFsdWUgKyAkaW50ZXJ2YWw7XG4gIH0gQGVsc2UgaWYgJG9wZXJhdG9yID09ICc8JyB7XG4gICAgJHZhbHVlOiAkdmFsdWUgLSAkaW50ZXJ2YWw7XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZTtcbn1cblxuLy8vXG4vLy8gUGFyc2UgYW4gZXhwcmVzc2lvbiB0byByZXR1cm4gYSB2YWxpZCBtZWRpYS1xdWVyeSBleHByZXNzaW9uXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGV4cHJlc3Npb24gLSBFeHByZXNzaW9uIHRvIHBhcnNlXG4vLy9cbi8vLyBAcmV0dXJuIHtTdHJpbmd9IC0gVmFsaWQgbWVkaWEgcXVlcnlcbi8vL1xuQGZ1bmN0aW9uIHBhcnNlLWV4cHJlc3Npb24oJGV4cHJlc3Npb24pIHtcbiAgLy8gSWYgaXQgaXMgcGFydCBvZiAkbWVkaWEtZXhwcmVzc2lvbnMsIGl0IGhhcyBubyBvcGVyYXRvclxuICAvLyB0aGVuIHRoZXJlIGlzIG5vIG5lZWQgdG8gZ28gYW55IGZ1cnRoZXIsIGp1c3QgcmV0dXJuIHRoZSB2YWx1ZVxuICBAaWYgbWFwLmhhcy1rZXkoJG1lZGlhLWV4cHJlc3Npb25zLCAkZXhwcmVzc2lvbikge1xuICAgIEByZXR1cm4gbWFwLmdldCgkbWVkaWEtZXhwcmVzc2lvbnMsICRleHByZXNzaW9uKTtcbiAgfVxuXG4gICRvcGVyYXRvcjogZ2V0LWV4cHJlc3Npb24tb3BlcmF0b3IoJGV4cHJlc3Npb24pO1xuICAkZGltZW5zaW9uOiBnZXQtZXhwcmVzc2lvbi1kaW1lbnNpb24oJGV4cHJlc3Npb24sICRvcGVyYXRvcik7XG4gICRwcmVmaXg6IGdldC1leHByZXNzaW9uLXByZWZpeCgkb3BlcmF0b3IpO1xuICAkdmFsdWU6IGdldC1leHByZXNzaW9uLXZhbHVlKCRleHByZXNzaW9uLCAkb3BlcmF0b3IpO1xuXG4gIEByZXR1cm4gJygjeyRwcmVmaXh9LSN7JGRpbWVuc2lvbn06ICN7JHZhbHVlfSknO1xufVxuXG4vLy9cbi8vLyBTbGljZSBgJGxpc3RgIGJldHdlZW4gYCRzdGFydGAgYW5kIGAkZW5kYCBpbmRleGVzXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJGxpc3QgLSBMaXN0IHRvIHNsaWNlXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzdGFydCBbMV0gLSBTdGFydCBpbmRleFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZW5kIFtsZW5ndGgoJGxpc3QpXSAtIEVuZCBpbmRleFxuLy8vXG4vLy8gQHJldHVybiB7TGlzdH0gU2xpY2VkIGxpc3Rcbi8vL1xuQGZ1bmN0aW9uIHNsaWNlKCRsaXN0LCAkc3RhcnQ6IDEsICRlbmQ6IGxpc3QubGVuZ3RoKCRsaXN0KSkge1xuICBAaWYgbGlzdC5sZW5ndGgoJGxpc3QpIDwgMSBvciAkc3RhcnQgPiAkZW5kIHtcbiAgICBAcmV0dXJuICgpO1xuICB9XG5cbiAgJHJlc3VsdDogKCk7XG5cbiAgQGZvciAkaSBmcm9tICRzdGFydCB0aHJvdWdoICRlbmQge1xuICAgICRyZXN1bHQ6IGxpc3QuYXBwZW5kKCRyZXN1bHQsIGxpc3QubnRoKCRsaXN0LCAkaSksIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJHJlc3VsdDtcbn1cblxuLy8vL1xuLy8vIFN0cmluZyB0byBudW1iZXIgY29udmVydGVyXG4vLy8gQGF1dGhvciBLaXR0eSBHaXJhdWRlbFxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vL1xuXG4vLy9cbi8vLyBDYXN0cyBhIHN0cmluZyBpbnRvIGEgbnVtYmVyXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZyB8IE51bWJlcn0gJHZhbHVlIC0gVmFsdWUgdG8gYmUgcGFyc2VkXG4vLy9cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9XG4vLy9cblxuQGZ1bmN0aW9uIHRvLW51bWJlcigkdmFsdWUpIHtcbiAgQGlmIG1ldGEudHlwZS1vZigkdmFsdWUpID09ICdudW1iZXInIHtcbiAgICBAcmV0dXJuICR2YWx1ZTtcbiAgfSBAZWxzZSBpZiBtZXRhLnR5cGUtb2YoJHZhbHVlKSAhPSAnc3RyaW5nJyB7XG4gICAgJF86IGltLWxvZygnVmFsdWUgZm9yIGB0by1udW1iZXJgIHNob3VsZCBiZSBhIG51bWJlciBvciBhIHN0cmluZy4nKTtcbiAgfVxuXG4gICRmaXJzdC1jaGFyYWN0ZXI6IHN0cmluZy5zbGljZSgkdmFsdWUsIDEsIDEpO1xuICAkcmVzdWx0OiAwO1xuICAkZGlnaXRzOiAwO1xuICAkbWludXM6ICgkZmlyc3QtY2hhcmFjdGVyID09ICctJyk7XG4gICRudW1iZXJzOiAoXG4gICAgJzAnOiAwLFxuICAgICcxJzogMSxcbiAgICAnMic6IDIsXG4gICAgJzMnOiAzLFxuICAgICc0JzogNCxcbiAgICAnNSc6IDUsXG4gICAgJzYnOiA2LFxuICAgICc3JzogNyxcbiAgICAnOCc6IDgsXG4gICAgJzknOiA5LFxuICApO1xuXG4gIC8vIFJlbW92ZSArLy0gc2lnbiBpZiBwcmVzZW50IGF0IGZpcnN0IGNoYXJhY3RlclxuICBAaWYgKCRmaXJzdC1jaGFyYWN0ZXIgPT0gJysnIG9yICRmaXJzdC1jaGFyYWN0ZXIgPT0gJy0nKSB7XG4gICAgJHZhbHVlOiBzdHJpbmcuc2xpY2UoJHZhbHVlLCAyKTtcbiAgfVxuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggc3RyaW5nLmxlbmd0aCgkdmFsdWUpIHtcbiAgICAkY2hhcmFjdGVyOiBzdHJpbmcuc2xpY2UoJHZhbHVlLCAkaSwgJGkpO1xuXG4gICAgQGlmIG5vdChsaXN0LmluZGV4KG1hcC5rZXlzKCRudW1iZXJzKSwgJGNoYXJhY3Rlcikgb3IgJGNoYXJhY3RlciA9PSAnLicpIHtcbiAgICAgIEByZXR1cm4gdG8tbGVuZ3RoKGlmKCRtaW51cywgLSRyZXN1bHQsICRyZXN1bHQpLCBzdHJpbmcuc2xpY2UoJHZhbHVlLCAkaSkpO1xuICAgIH1cblxuICAgIEBpZiAkY2hhcmFjdGVyID09ICcuJyB7XG4gICAgICAkZGlnaXRzOiAxO1xuICAgIH0gQGVsc2UgaWYgJGRpZ2l0cyA9PSAwIHtcbiAgICAgICRyZXN1bHQ6ICRyZXN1bHQgKiAxMCArIG1hcC5nZXQoJG51bWJlcnMsICRjaGFyYWN0ZXIpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJGRpZ2l0czogJGRpZ2l0cyAqIDEwO1xuICAgICAgJHJlc3VsdDogJHJlc3VsdCArIG1hdGguZGl2KG1hcC5nZXQoJG51bWJlcnMsICRjaGFyYWN0ZXIpLCAkZGlnaXRzKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIGlmKCRtaW51cywgLSRyZXN1bHQsICRyZXN1bHQpO1xufVxuXG4vLy9cbi8vLyBBZGQgYCR1bml0YCB0byBgJHZhbHVlYFxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR2YWx1ZSAtIFZhbHVlIHRvIGFkZCB1bml0IHRvXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR1bml0IC0gU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB1bml0XG4vLy9cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IC0gYCR2YWx1ZWAgZXhwcmVzc2VkIGluIGAkdW5pdGBcbi8vL1xuQGZ1bmN0aW9uIHRvLWxlbmd0aCgkdmFsdWUsICR1bml0KSB7XG4gICR1bml0czogKFxuICAgICdweCc6IDFweCxcbiAgICAnY20nOiAxY20sXG4gICAgJ21tJzogMW1tLFxuICAgICclJzogMSUsXG4gICAgJ2NoJzogMWNoLFxuICAgICdwYyc6IDFwYyxcbiAgICAnaW4nOiAxaW4sXG4gICAgJ2VtJzogMWVtLFxuICAgICdyZW0nOiAxcmVtLFxuICAgICdwdCc6IDFwdCxcbiAgICAnZXgnOiAxZXgsXG4gICAgJ3Z3JzogMXZ3LFxuICAgICd2aCc6IDF2aCxcbiAgICAndm1pbic6IDF2bWluLFxuICAgICd2bWF4JzogMXZtYXgsXG4gICk7XG5cbiAgQGlmIG5vdCBsaXN0LmluZGV4KG1hcC5rZXlzKCR1bml0cyksICR1bml0KSB7XG4gICAgJF86IGltLWxvZygnSW52YWxpZCB1bml0IGAjeyR1bml0fWAuJyk7XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZSAqIG1hcC5nZXQoJHVuaXRzLCAkdW5pdCk7XG59XG5cbi8vL1xuLy8vIFRoaXMgbWl4aW4gYWltcyBhdCByZWRlZmluaW5nIHRoZSBjb25maWd1cmF0aW9uIGp1c3QgZm9yIHRoZSBzY29wZSBvZlxuLy8vIHRoZSBjYWxsLiBJdCBpcyBoZWxwZnVsIHdoZW4gaGF2aW5nIGEgY29tcG9uZW50IG5lZWRpbmcgYW4gZXh0ZW5kZWRcbi8vLyBjb25maWd1cmF0aW9uIHN1Y2ggYXMgY3VzdG9tIGJyZWFrcG9pbnRzIChyZWZlcnJlZCB0byBhcyB0d2Vha3BvaW50cylcbi8vLyBmb3IgaW5zdGFuY2UuXG4vLy9cbi8vLyBAYXV0aG9yIEtpdHR5IEdpcmF1ZGVsXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJHR3ZWFrcG9pbnRzIFsoKV0gLSBNYXAgb2YgdHdlYWtwb2ludHMgdG8gYmUgbWVyZ2VkIHdpdGggYCRicmVha3BvaW50c2Bcbi8vLyBAcGFyYW0ge01hcH0gJHR3ZWFrLW1lZGlhLWV4cHJlc3Npb25zIFsoKV0gLSBNYXAgb2YgdHdlYWtlZCBtZWRpYSBleHByZXNzaW9ucyB0byBiZSBtZXJnZWQgd2l0aCBgJG1lZGlhLWV4cHJlc3Npb25gXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gRXh0ZW5kIHRoZSBnbG9iYWwgYnJlYWtwb2ludHMgd2l0aCBhIHR3ZWFrcG9pbnRcbi8vLyAgQGluY2x1ZGUgbWVkaWEtY29udGV4dCgoJ2N1c3RvbSc6IDY3OHB4KSkge1xuLy8vICAgIC5mb28ge1xuLy8vICAgICAgQGluY2x1ZGUgbWVkaWEoJz5waG9uZScsICc8PWN1c3RvbScpIHtcbi8vLyAgICAgICAvLyAuLi5cbi8vLyAgICAgIH1cbi8vLyAgICB9XG4vLy8gIH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBFeHRlbmQgdGhlIGdsb2JhbCBtZWRpYSBleHByZXNzaW9ucyB3aXRoIGEgY3VzdG9tIG9uZVxuLy8vICBAaW5jbHVkZSBtZWRpYS1jb250ZXh0KCR0d2Vhay1tZWRpYS1leHByZXNzaW9uczogKCdhbGwnOiAnYWxsJykpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIEBpbmNsdWRlIG1lZGlhKCdhbGwnLCAnPnBob25lJykge1xuLy8vICAgICAgIC8vIC4uLlxuLy8vICAgICAgfVxuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIEV4dGVuZCBib3RoIGNvbmZpZ3VyYXRpb24gbWFwc1xuLy8vICBAaW5jbHVkZSBtZWRpYS1jb250ZXh0KCgnY3VzdG9tJzogNjc4cHgpLCAoJ2FsbCc6ICdhbGwnKSkge1xuLy8vICAgIC5mb28ge1xuLy8vICAgICAgQGluY2x1ZGUgbWVkaWEoJ2FsbCcsICc+cGhvbmUnLCAnPD1jdXN0b20nKSB7XG4vLy8gICAgICAgLy8gLi4uXG4vLy8gICAgICB9XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbkBtaXhpbiBtZWRpYS1jb250ZXh0KCR0d2Vha3BvaW50czogKCksICR0d2Vhay1tZWRpYS1leHByZXNzaW9uczogKCkpIHtcbiAgLy8gU2F2ZSBnbG9iYWwgY29uZmlndXJhdGlvblxuICAkZ2xvYmFsLWJyZWFrcG9pbnRzOiAkYnJlYWtwb2ludHM7XG4gICRnbG9iYWwtbWVkaWEtZXhwcmVzc2lvbnM6ICRtZWRpYS1leHByZXNzaW9ucztcblxuICAvLyBVcGRhdGUgZ2xvYmFsIGNvbmZpZ3VyYXRpb25cbiAgJGJyZWFrcG9pbnRzOiBtYXAubWVyZ2UoJGJyZWFrcG9pbnRzLCAkdHdlYWtwb2ludHMpICFnbG9iYWw7XG4gICRtZWRpYS1leHByZXNzaW9uczogbWFwLm1lcmdlKCRtZWRpYS1leHByZXNzaW9ucywgJHR3ZWFrLW1lZGlhLWV4cHJlc3Npb25zKSAhZ2xvYmFsO1xuXG4gIEBjb250ZW50O1xuXG4gIC8vIFJlc3RvcmUgZ2xvYmFsIGNvbmZpZ3VyYXRpb25cbiAgJGJyZWFrcG9pbnRzOiAkZ2xvYmFsLWJyZWFrcG9pbnRzICFnbG9iYWw7XG4gICRtZWRpYS1leHByZXNzaW9uczogJGdsb2JhbC1tZWRpYS1leHByZXNzaW9ucyAhZ2xvYmFsO1xufVxuXG4vLy8vXG4vLy8gaW5jbHVkZS1tZWRpYSBwdWJsaWMgZXhwb3NlZCBBUElcbi8vLyBAYXV0aG9yIEVkdWFyZG8gQm91Y2FzXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLy9cblxuLy8vXG4vLy8gR2VuZXJhdGVzIGEgbWVkaWEgcXVlcnkgYmFzZWQgb24gYSBsaXN0IG9mIGNvbmRpdGlvbnNcbi8vL1xuLy8vIEBwYXJhbSB7QXJnbGlzdH0gICAkY29uZGl0aW9ucyAgLSBNZWRpYSBxdWVyeSBjb25kaXRpb25zXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gV2l0aCBhIHNpbmdsZSBzZXQgYnJlYWtwb2ludFxuLy8vICBAaW5jbHVkZSBtZWRpYSgnPnBob25lJykgeyB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gV2l0aCB0d28gc2V0IGJyZWFrcG9pbnRzXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+cGhvbmUnLCAnPD10YWJsZXQnKSB7IH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBXaXRoIGN1c3RvbSB2YWx1ZXNcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz49MzU4cHgnLCAnPDg1MHB4JykgeyB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gV2l0aCBzZXQgYnJlYWtwb2ludHMgd2l0aCBjdXN0b20gdmFsdWVzXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+ZGVza3RvcCcsICc8PTEzNTBweCcpIHsgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFdpdGggYSBzdGF0aWMgZXhwcmVzc2lvblxuLy8vICBAaW5jbHVkZSBtZWRpYSgncmV0aW5hMngnKSB7IH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBNaXhpbmcgZXZlcnl0aGluZ1xuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj0zNTBweCcsICc8dGFibGV0JywgJ3JldGluYTN4JykgeyB9XG4vLy9cbkBtaXhpbiBtZWRpYSgkY29uZGl0aW9ucy4uLikge1xuICBAaWYgKCRpbS1tZWRpYS1zdXBwb3J0IGFuZCBsaXN0Lmxlbmd0aCgkY29uZGl0aW9ucykgPT0gMCkgb3JcbiAgICAobm90ICRpbS1tZWRpYS1zdXBwb3J0IGFuZCBpbS1pbnRlcmNlcHRzLXN0YXRpYy1icmVha3BvaW50KCRjb25kaXRpb25zLi4uKSlcbiAge1xuICAgIEBjb250ZW50O1xuICB9IEBlbHNlIGlmICgkaW0tbWVkaWEtc3VwcG9ydCBhbmQgbGlzdC5sZW5ndGgoJGNvbmRpdGlvbnMpID4gMCkge1xuICAgIEBtZWRpYSAje3N0cmluZy51bnF1b3RlKHBhcnNlLWV4cHJlc3Npb24obGlzdC5udGgoJGNvbmRpdGlvbnMsIDEpKSl9IHtcbiAgICAgIC8vIFJlY3Vyc2l2ZSBjYWxsXG4gICAgICBAaW5jbHVkZSBtZWRpYShzbGljZSgkY29uZGl0aW9ucywgMikuLi4pIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/