glass-easel-devtools-panel 0.10.2 → 0.12.1

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.
@@ -1 +1,2 @@
1
+ export declare const viewUtils: {};
1
2
  export declare const componentDefinition: {};
package/dist/index.css CHANGED
@@ -1,19 +1,23 @@
1
1
  [wx-host="A"]{display:block;}
2
2
 
3
- [wx-host="C"]{display:inline-block;cursor:text;position:relative;}
4
- [wx-host="D"]{display:block;}
5
3
 
4
+ [wx-host="D"]{display:block;}
5
+ [wx-host="E"]{display:block;position:absolute;left:0;top:100%;width:auto;}
6
6
  [wx-host="F"]{display:block;}
7
+ [wx-host="G"]{display:inline-block;cursor:text;position:relative;}
7
8
 
8
- [wx-host="H"]{display:block;}
9
9
 
10
- @keyframes update-ani{to{background:transparent;}}.A--updated{background-color:#dd8;animation-duration:1s;animation-fill-mode:both;animation-name:update-ani;animation-timing-function:ease;}@media(prefers-color-scheme: dark){.A--updated{background-color:#772;}}.A--tag{color:#808080;white-space:nowrap;}@media(prefers-color-scheme: dark){.A--tag{color:#808080;}}.A--fold-arrow{display:inline-block;width:1em;height:1em;line-height:1em;color:#444;text-align:center;}.A--fold-arrow-icon{width:1em;transition:transform 200ms ease;}.A--fold-arrow-icon_open{transform:rotate(90deg);}.A--tag-body{display:inline-block;}.A--tag-body_hover{background-color:#ace;}@media(prefers-color-scheme: dark){.A--tag-body_hover{background-color:#246;}}.A--tag-body_selected{background-color:#add;}@media(prefers-color-scheme: dark){.A--tag-body_selected{background-color:#255;}}.A--tag-body_highlight{background-color:rgba(0,128,192,0.25);}@media(prefers-color-scheme: dark){.A--tag-body_highlight{background-color:rgba(128,192,255,0.25);}}.A--tag-text{display:inline;}.A--tag-name{display:inline-block;color:#408;}@media(prefers-color-scheme: dark){.A--tag-name{color:#c8e;}}.A--tag-var-name-wrapper{display:inline;}.A--tag-var-name{display:inline-block;margin-left:0.25em;height:1em;line-height:1em;min-width:1em;text-align:center;font-size:0.8em;font-style:italic;color:#222;}@media(prefers-color-scheme: dark){.A--tag-var-name{color:#ddd;}}.A--tag-var-name_hover{background-color:#ace;}@media(prefers-color-scheme: dark){.A--tag-var-name_hover{background-color:#246;}}.A--attribute{display:inline-block;margin-left:0.5em;}.A--attribute-name{display:inline-block;color:#084;}@media(prefers-color-scheme: dark){.A--attribute-name{color:#6ea;}}.A--attribute-name_property{color:#06a;}@media(prefers-color-scheme: dark){.A--attribute-name_property{color:#6ce;}}.A--attribute-value{display:inline-block;color:#840;}@media(prefers-color-scheme: dark){.A--attribute-value{color:#ea6;}}.A--children{margin-left:1em;}.A--virtual-tag-name{display:inline-block;font-style:italic;}.A--virtual-tag-name_hover{background-color:#add;}@media(prefers-color-scheme: dark){.A--virtual-tag-name_hover{background-color:#255;}}.A--text-content{color:#222;padding:1px 0;}@media(prefers-color-scheme: dark){.A--text-content{color:#ddd;}}
11
- body{margin:0;height:100vh;}.wrapper{font-family:monospace;font-size:12px;background-color:#eee;height:100%;cursor:default;user-select:none;}@media(prefers-color-scheme: dark){.wrapper{background-color:#222;}}.empty{color:#808080;font-style:italic;padding:5px;}@media(prefers-color-scheme: dark){.empty{color:#808080;}}.main{height:100%;}.tree-detail{display:flex;height:100%;overflow:hidden;}.tree-detail-split{width:2px;background-color:#888;cursor:w-resize;}.left{flex:1 1 0;display:flex;flex-direction:column;overflow-x:hidden;}.toolbar{flex:none;background-color:#ccc;color:#222;border-bottom:2px solid#888;display:flex;}@media(prefers-color-scheme: dark){.toolbar{background-color:#444;}}@media(prefers-color-scheme: dark){.toolbar{color:#ddd;}}.tool-space{flex:auto;}.tool{flex:none;display:inline-block;padding:5px 10px;}.tool_hover{background-color:#ace;}@media(prefers-color-scheme: dark){.tool_hover{background-color:#246;}}.tool_active{background-color:#add;}@media(prefers-color-scheme: dark){.tool_active{background-color:#255;}}.tree{flex:auto;margin:5px;overflow:auto;user-select:text;}.detail{flex:none;box-sizing:border-box;overflow:auto;}
12
- .C--measure{color:transparent;position:absolute;left:0;top:0;font-family:monospace;white-space:nowrap;}.C--edit{box-sizing:content-box;position:absolute;left:-2px;top:-2px;right:-2px;border:1px solid#808080;padding:1px;background-color:#ccc;color:#222;font-size:1em;font-family:monospace;border-radius:none;outline:none;}@media(prefers-color-scheme: dark){.C--edit{background-color:#444;}}@media(prefers-color-scheme: dark){.C--edit{color:#ddd;}}
10
+ [wx-host="J"]{display:block;}
11
+
12
+ @keyframes update-ani{to{background:transparent;}}.A--updated{background-color:#dd8;animation-duration:1s;animation-fill-mode:both;animation-name:update-ani;animation-timing-function:ease;}@media(prefers-color-scheme: dark){.A--updated{background-color:#772;}}.A--tag{color:#808080;white-space:nowrap;}@media(prefers-color-scheme: dark){.A--tag{color:#808080;}}.A--fold-arrow{display:inline-block;width:1em;height:1em;line-height:1em;color:#444;text-align:center;user-select:none;}.A--fold-arrow-icon{width:1em;transition:transform 200ms ease;}.A--fold-arrow-icon_open{transform:rotate(90deg);}.A--tag-body{display:inline-block;}.A--tag-body_hover{background-color:#ace;}@media(prefers-color-scheme: dark){.A--tag-body_hover{background-color:#246;}}.A--tag-body_selected{background-color:#add;}@media(prefers-color-scheme: dark){.A--tag-body_selected{background-color:#255;}}.A--tag-body_highlight{background-color:rgba(0,128,192,0.25);}@media(prefers-color-scheme: dark){.A--tag-body_highlight{background-color:rgba(128,192,255,0.25);}}.A--tag-text{display:inline;}.A--tag-name{display:inline-block;color:#408;}@media(prefers-color-scheme: dark){.A--tag-name{color:#c8e;}}.A--tag-var-name-wrapper{display:inline;}.A--tag-var-name{display:inline-block;margin-left:0.25em;height:1em;line-height:1em;min-width:1em;text-align:center;font-size:0.8em;font-style:italic;color:#222;}@media(prefers-color-scheme: dark){.A--tag-var-name{color:#ddd;}}.A--tag-var-name_hover{background-color:#ace;}@media(prefers-color-scheme: dark){.A--tag-var-name_hover{background-color:#246;}}.A--attribute{display:inline-block;margin-left:0.5em;}.A--attribute-name{display:inline-block;color:#084;}@media(prefers-color-scheme: dark){.A--attribute-name{color:#6ea;}}.A--attribute-name_property{color:#06a;}@media(prefers-color-scheme: dark){.A--attribute-name_property{color:#6ce;}}.A--attribute-value{display:inline-block;color:#840;}@media(prefers-color-scheme: dark){.A--attribute-value{color:#ea6;}}.A--children_indent{margin-left:1em;}.A--virtual-tag-name{display:inline-block;font-style:italic;}.A--virtual-tag-name_hover{background-color:#add;}@media(prefers-color-scheme: dark){.A--virtual-tag-name_hover{background-color:#255;}}.A--text-content{color:#222;padding:1px 0;}@media(prefers-color-scheme: dark){.A--text-content{color:#ddd;}}
13
+ body{margin:0;height:100vh;}.wrapper{font-family:monospace;font-size:12px;background-color:#eee;height:100%;cursor:default;user-select:none;}@media(prefers-color-scheme: dark){.wrapper{background-color:#222;}}.empty{color:#808080;font-style:italic;padding:5px;}@media(prefers-color-scheme: dark){.empty{color:#808080;}}.main{height:100%;}.tree-detail{display:flex;height:100%;overflow:hidden;}.tree-detail-split{width:2px;background-color:#888;cursor:w-resize;}.left{flex:1 1 0;display:flex;flex-direction:column;overflow-x:hidden;}.toolbar{flex:none;background-color:#ccc;color:#222;border-bottom:2px solid#888;display:flex;}@media(prefers-color-scheme: dark){.toolbar{background-color:#444;}}@media(prefers-color-scheme: dark){.toolbar{color:#ddd;}}.tool-space{flex:auto;}.tool{flex:none;display:inline-block;padding:5px 10px;position:relative;}.tool_hover{background-color:#ace;}@media(prefers-color-scheme: dark){.tool_hover{background-color:#246;}}.tool_active{background-color:#add;}@media(prefers-color-scheme: dark){.tool_active{background-color:#255;}}.tree{flex:auto;margin:5px;overflow:auto;user-select:text;}.detail{flex:none;box-sizing:border-box;overflow:auto;}
14
+ .C--wrapper{display:block;white-space:nowrap;padding:3px;}.C--hover{background-color:rgba(0,128,192,0.25);}@media(prefers-color-scheme: dark){.C--hover{background-color:rgba(128,192,255,0.25);}}.C--check{display:inline-block;width:1em;height:1em;vertical-align:middle;margin:0 0.5em;border:1px solid transparent;border-color:#222;color:#222;line-height:1em;text-align:center;}@media(prefers-color-scheme: dark){.C--check{border-color:#ddd;}}@media(prefers-color-scheme: dark){.C--check{color:#ddd;}}
13
15
  .D--section{margin-bottom:2px;color:#808080;}@media(prefers-color-scheme: dark){.D--section{color:#808080;}}.D--section-item{white-space:nowrap;user-select:text;}.D--section-key{display:inline;color:#06a;}@media(prefers-color-scheme: dark){.D--section-key{color:#6ce;}}.D--section-key-core{display:inline;color:#084;}@media(prefers-color-scheme: dark){.D--section-key-core{color:#6ea;}}.D--section-value{display:inline;color:#840;}@media(prefers-color-scheme: dark){.D--section-value{color:#ea6;}}.D--section-value-extra{color:#222;}@media(prefers-color-scheme: dark){.D--section-value-extra{color:#ddd;}}.D--section-empty{text-align:center;font-style:italic;}.D--box-model{margin:0 auto;}.D--box-model-text{flex:none;text-align:center;white-space:nowrap;color:#222;margin:1px;}@media(prefers-color-scheme: dark){.D--box-model-text{color:#ddd;}}.D--box-model-content{display:flex;border:1px solid#888;padding:1px;}.D--box-model-padding{border:1px solid#888;padding:1px;background-color:#eee;}@media(prefers-color-scheme: dark){.D--box-model-padding{background-color:#222;}}.D--box-model-border{border:1px solid#888;padding:1px;background-color:#ccc;}@media(prefers-color-scheme: dark){.D--box-model-border{background-color:#444;}}.D--box-model-margin{padding:1px;}.D--box-model-line{display:flex;justify-content:center;align-items:center;}.D--class-external-hint{display:inline;font-style:italic;}.D--class-value-item{color:#840;}@media(prefers-color-scheme: dark){.D--class-value-item{color:#ea6;}}.D--style-rule{margin:5px 0;user-select:text;}.D--style-rule_inactive{opacity:0.5;}.D--style-rule-prefix{font-style:italic;user-select:none;}.D--style-rule-disabled{display:inline-block;width:1em;height:1em;line-height:1em;text-align:center;cursor:pointer;user-select:none;color:#a40;}@media(prefers-color-scheme: dark){.D--style-rule-disabled{color:#e82;}}.D--style-rule-enabled{display:inline-block;width:1em;height:1em;line-height:1em;text-align:center;cursor:pointer;user-select:none;color:transparent;}.D--style-rule-enabled_hover{color:#a40;}@media(prefers-color-scheme: dark){.D--style-rule-enabled_hover{color:#e82;}}.D--style-rule-scope{display:inline;font-style:italic;user-select:none;}.D--style-rule-title{display:inline;color:#222;}@media(prefers-color-scheme: dark){.D--style-rule-title{color:#ddd;}}.D--style-rule-property_disabled{opacity:0.5;}.D--style-rule-item-add{display:inline-block;cursor:text;}.D--style-rule-inline-add{font-style:normal;display:inline-block;}.D--style-rule-inline-add_hover{background-color:#ace;}@media(prefers-color-scheme: dark){.D--style-rule-inline-add_hover{background-color:#246;}}
14
- @keyframes value-update-ani{to{background-color:transparent;}}.E--updated{background-color:#dd8;animation-duration:1s;animation-fill-mode:both;animation-name:value-update-ani;animation-timing-function:ease;}@media(prefers-color-scheme: dark){.E--updated{background-color:#772;}}.E--wrapper{display:inline-block;}.E--slice{display:inline;color:#808080;}@media(prefers-color-scheme: dark){.E--slice{color:#808080;}}.E--slice_dynamic{color:#840;}@media(prefers-color-scheme: dark){.E--slice_dynamic{color:#ea6;}}.E--var-name{display:inline-block;margin-left:0.25em;height:1em;line-height:1em;min-width:1em;text-align:center;font-size:0.8em;font-style:italic;color:#222;}@media(prefers-color-scheme: dark){.E--var-name{color:#ddd;}}.E--var-name_hover{background-color:#ace;}@media(prefers-color-scheme: dark){.E--var-name_hover{background-color:#246;}}
16
+ .E--wrapper{background-color:#ccc;border:2px solid#888;padding:2px;}@media(prefers-color-scheme: dark){.E--wrapper{background-color:#444;}}
15
17
  .F--title{padding:0 5px;background-color:#ccc;color:#222;line-height:1.5;white-space:nowrap;}@media(prefers-color-scheme: dark){.F--title{background-color:#444;}}@media(prefers-color-scheme: dark){.F--title{color:#ddd;}}.F--title-text{display:inline-block;}.F--title-refresh{display:inline-block;font-size:1.5em;width:1em;height:1em;line-height:1;text-align:center;margin-left:0.5em;}.F--title-refresh_hover{background-color:#ace;}@media(prefers-color-scheme: dark){.F--title-refresh_hover{background-color:#246;}}.F--arrow{display:inline-block;width:1em;height:1.5em;text-align:center;transition:transform 200ms ease;margin-right:0.25em;}.F--arrow_open{transform:rotate(90deg);}.F--body{padding:0 5px;overflow:hidden;}.F--body_collapsed{height:0;}
18
+ .G--measure{color:transparent;position:absolute;left:0;top:0;font-family:monospace;white-space:nowrap;}.G--edit{box-sizing:content-box;position:absolute;left:-2px;top:-2px;right:-2px;border:1px solid#808080;padding:1px;background-color:#ccc;color:#222;font-size:1em;font-family:monospace;border-radius:none;outline:none;}@media(prefers-color-scheme: dark){.G--edit{background-color:#444;}}@media(prefers-color-scheme: dark){.G--edit{color:#ddd;}}
19
+ @keyframes value-update-ani{to{background-color:transparent;}}.H--updated{background-color:#dd8;animation-duration:1s;animation-fill-mode:both;animation-name:value-update-ani;animation-timing-function:ease;}@media(prefers-color-scheme: dark){.H--updated{background-color:#772;}}.H--wrapper{display:inline-block;}.H--slice{display:inline;color:#808080;}@media(prefers-color-scheme: dark){.H--slice{color:#808080;}}.H--slice_dynamic{color:#840;}@media(prefers-color-scheme: dark){.H--slice_dynamic{color:#ea6;}}.H--var-name{display:inline-block;margin-left:0.25em;height:1em;line-height:1em;min-width:1em;text-align:center;font-size:0.8em;font-style:italic;color:#222;}@media(prefers-color-scheme: dark){.H--var-name{color:#ddd;}}.H--var-name_hover{background-color:#ace;}@media(prefers-color-scheme: dark){.H--var-name_hover{background-color:#246;}}
20
+ .I--base:focus{outline:none;}
16
21
 
17
22
 
18
-
19
- /*# sourceMappingURL=data:application/json;charset=utf-8;base64,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RixDQUlBLGdDSG5IRSxzQkdtSEYsQ0hsSEUsbUVBQ0Usc0JBREYsQ0FBb0MsQztBSWZ0Qyw0QkFHRSxHQUNFLDZCQURGLENBSEYsQ0FPQSxZSk9FLHNCSUxBLHNCQUNBLHlCQUNBLGdDQUNBLCtCQUxGLENKUUUsK0NBQ0Usc0JBREYsQ0FBb0MsQ0lBdEMsWUFDRSxxQkFERixDQUlBLFVBQ0UsZUpOQSxjSUtGLENKSkUsNkNBQ0UsY0FERixDQUFvQyxDSVF0QyxrQkpURSxXSVNGLENKUkUscURBQ0UsV0FERixDQUFvQyxDSVl0QyxhQUNFLHFCQUNBLG1CQUNBLFdBQ0EsZ0JBQ0EsY0FDQSxrQkFDQSxnQkFDQSxrQkpyQkEsV0lhRixDSlpFLGdEQUNFLFdBREYsQ0FBb0MsQ0l1QnRDLG1CSnhCRSxzQkl3QkYsQ0p2QkUsc0RBQ0Usc0JBREYsQ0FBb0MsQztBS1h0QyxVQUNFLGNMU0EsaUNLTkEsZ0JBQ0EsbUJBTEYsQ0xXRSw2Q0FDRSxzQkFERixDQUFvQyxDQUFwQyw2Q0FDRSxXQURGLENBQW9DLENLSnRDLGVBQ0UscUJBREYsQ0FHQSxrQkFDRSxxQkFDQSxnQkFDQSxVQUNBLFdBQ0EsY0FDQSxrQkFDQSxrQkFQRixDQVNBLHdCTFRFLHNCS1NGLENMUkUsMkRBQ0Usc0JBREYsQ0FBb0MsQ0tXdEMsVUFDRSxxQkFDQSxVQUNBLGFBQ0Esa0JBQ0EsZ0NBQ0Esb0JBTkYsQ0FRQSxlQUNFLHdCQURGLENBSUEsU0FDRSxjQUNBLGdCQUZGLENBSUEsbUJBQ0UsU0FERixDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZ2xhc3MtZWFzZWwtZGV2dG9vbHMtcGFuZWwvLi9zcmMvX19nbGFzc19lYXNlbF9ob3N0X3N0eWxlc19fLnd4c3MiLCJ3ZWJwYWNrOi8vZ2xhc3MtZWFzZWwtZGV2dG9vbHMtcGFuZWwvLi9zcmMvcGFnZXMvdHJlZS9lbGVtZW50Lnd4c3MiLCJ3ZWJwYWNrOi8vZ2xhc3MtZWFzZWwtZGV2dG9vbHMtcGFuZWwvLi9zcmMvcGFnZXMvY29tbW9uLnd4c3MiLCJ3ZWJwYWNrOi8vZ2xhc3MtZWFzZWwtZGV2dG9vbHMtcGFuZWwvLi9zcmMvcGFnZXMvaW5kZXgvaW5kZXgud3hzcyIsIndlYnBhY2s6Ly9nbGFzcy1lYXNlbC1kZXZ0b29scy1wYW5lbC8uL3NyYy9wYWdlcy9kZXRhaWwvZWRpdGFibGUud3hzcyIsIndlYnBhY2s6Ly9nbGFzcy1lYXNlbC1kZXZ0b29scy1wYW5lbC8uL3NyYy9wYWdlcy9kZXRhaWwvZGV0YWlsLnd4c3MiLCJ3ZWJwYWNrOi8vZ2xhc3MtZWFzZWwtZGV2dG9vbHMtcGFuZWwvLi9zcmMvcGFnZXMvZGV0YWlsL3ZhbHVlLnd4c3MiLCJ3ZWJwYWNrOi8vZ2xhc3MtZWFzZWwtZGV2dG9vbHMtcGFuZWwvLi9zcmMvcGFnZXMvZGV0YWlsL3NlY3Rpb24ud3hzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJbd3gtaG9zdD1cIkFcIl17ZGlzcGxheTpibG9jazt9XG5cblt3eC1ob3N0PVwiQ1wiXXtkaXNwbGF5OmlubGluZS1ibG9jaztjdXJzb3I6dGV4dDtwb3NpdGlvbjpyZWxhdGl2ZTt9XG5bd3gtaG9zdD1cIkRcIl17ZGlzcGxheTpibG9jazt9XG5cblt3eC1ob3N0PVwiRlwiXXtkaXNwbGF5OmJsb2NrO31cblxuW3d4LWhvc3Q9XCJIXCJde2Rpc3BsYXk6YmxvY2s7fSIsIkBpbXBvcnQgdXJsKCcuLi9jb21tb24ud3hzcycpO1xuXG5Aa2V5ZnJhbWVzIHVwZGF0ZS1hbmkge1xuICBmcm9tIHtcbiAgfVxuICB0byB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIH1cbn1cbi51cGRhdGVkIHtcbiAgLmNvbG9yLW1vZGUoYmFja2dyb3VuZC1jb2xvciwgQHVwZGF0ZS1iZyk7XG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogMXM7XG4gIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XG4gIGFuaW1hdGlvbi1uYW1lOiB1cGRhdGUtYW5pO1xuICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlO1xufVxuXG46aG9zdCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4udGFnIHtcbiAgLmNvbG9yLW1vZGUoY29sb3IsICBAY29tbW9uLXRleHQpO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4uZm9sZC1hcnJvdyB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDFlbTtcbiAgaGVpZ2h0OiAxZW07XG4gIGxpbmUtaGVpZ2h0OiAxZW07XG4gIGNvbG9yOiAjNDQ0O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4uZm9sZC1hcnJvdy1pY29uIHtcbiAgd2lkdGg6IDFlbTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDIwMG1zIGVhc2U7XG59XG4uZm9sZC1hcnJvdy1pY29uX29wZW4ge1xuICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XG59XG5cbi50YWctYm9keSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi50YWctYm9keV9ob3ZlciB7XG4gIC5jb2xvci1tb2RlKGJhY2tncm91bmQtY29sb3IsIEBob3Zlci1iZyk7XG59XG4udGFnLWJvZHlfc2VsZWN0ZWQge1xuICAuY29sb3ItbW9kZShiYWNrZ3JvdW5kLWNvbG9yLCBAc2VsZWN0ZWQtYmcpO1xufVxuLnRhZy1ib2R5X2hpZ2hsaWdodCB7XG4gIC5jb2xvci1tb2RlKGJhY2tncm91bmQtY29sb3IsIEBoaWdobGlnaHQtYmcpO1xufVxuLnRhZy10ZXh0IHtcbiAgZGlzcGxheTogaW5saW5lO1xufVxuLnRhZy1uYW1lIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAuY29sb3ItbW9kZShjb2xvciwgQHRhZy1uYW1lKTtcbn1cblxuLnRhZy12YXItbmFtZS13cmFwcGVyIHtcbiAgZGlzcGxheTogaW5saW5lO1xufVxuLnRhZy12YXItbmFtZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWxlZnQ6IDAuMjVlbTtcbiAgaGVpZ2h0OiAxZW07XG4gIGxpbmUtaGVpZ2h0OiAxZW07XG4gIG1pbi13aWR0aDogMWVtO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMC44ZW07XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgLmNvbG9yLW1vZGUoY29sb3IsIEBpbXBvcnRhbnQtdGV4dCk7XG59XG4udGFnLXZhci1uYW1lX2hvdmVyIHtcbiAgLmNvbG9yLW1vZGUoYmFja2dyb3VuZC1jb2xvciwgQGhvdmVyLWJnKTtcbn1cblxuLmF0dHJpYnV0ZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWxlZnQ6IDAuNWVtO1xufVxuLmF0dHJpYnV0ZS1uYW1lIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAuY29sb3ItbW9kZShjb2xvciwgQGNvcmUtYXR0cmlidXRlLW5hbWUpO1xufVxuLmF0dHJpYnV0ZS1uYW1lX3Byb3BlcnR5IHtcbiAgLmNvbG9yLW1vZGUoY29sb3IsIEBwcm9wZXJ0eS1uYW1lKTtcbn1cbi5hdHRyaWJ1dGUtdmFsdWUge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIC5jb2xvci1tb2RlKGNvbG9yLCBAYXR0cmlidXRlLXZhbHVlKTtcbn1cblxuLmNoaWxkcmVuIHtcbiAgbWFyZ2luLWxlZnQ6IDFlbTtcbn1cblxuLnZpcnR1YWwtdGFnLW5hbWUge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cbi52aXJ0dWFsLXRhZy1uYW1lX2hvdmVyIHtcbiAgLmNvbG9yLW1vZGUoYmFja2dyb3VuZC1jb2xvciwgQHNlbGVjdGVkLWJnKTtcbn1cblxuLnRleHQtY29udGVudCB7XG4gIC5jb2xvci1tb2RlKGNvbG9yLCBAaW1wb3J0YW50LXRleHQpO1xuICBwYWRkaW5nOiAxcHggMDtcbn1cbiIsIkBjb21tb24tdGV4dDogeyBkZWZhdWx0OiAjODA4MDgwOyBkYXJrOiAjODA4MDgwOyB9O1xuQGltcG9ydGFudC10ZXh0OiB7IGRlZmF1bHQ6ICMyMjI7IGRhcms6ICNkZGQ7IH07XG5Ad2Fybi10ZXh0OiB7IGRlZmF1bHQ6ICNhNDA7IGRhcms6ICNlODI7IH07XG5AcHJpbWFyeS1iZzogeyBkZWZhdWx0OiAjZWVlOyBkYXJrOiAjMjIyOyB9O1xuQHNlY29uZGFyeS1iZzogeyBkZWZhdWx0OiAjY2NjOyBkYXJrOiAjNDQ0OyB9O1xuQHNlbGVjdGVkLWJnOiB7IGRlZmF1bHQ6ICNhZGQ7IGRhcms6ICMyNTU7IH07XG5AaG92ZXItYmc6IHsgZGVmYXVsdDogI2FjZTsgZGFyazogIzI0NjsgfTtcbkB1cGRhdGUtYmc6IHsgZGVmYXVsdDogI2RkODsgZGFyazogIzc3MjsgfTtcbkBoaWdobGlnaHQtYmc6IHsgZGVmYXVsdDogcmdiYSgwLCAxMjgsIDE5MiwgMC4yNSk7IGRhcms6IHJnYmEoMTI4LCAxOTIsIDI1NSwgMC4yNSk7IH07XG5cbkB0YWctbmFtZTogeyBkZWZhdWx0OiAjNDA4OyBkYXJrOiAjYzhlOyB9O1xuQGNvcmUtYXR0cmlidXRlLW5hbWU6IHsgZGVmYXVsdDogIzA4NDsgZGFyazogIzZlYTsgfTtcbkBwcm9wZXJ0eS1uYW1lOiB7IGRlZmF1bHQ6ICMwNmE7IGRhcms6ICM2Y2U7IH07XG5AYXR0cmlidXRlLXZhbHVlOiB7IGRlZmF1bHQ6ICM4NDA7IGRhcms6ICNlYTY7IH07XG5cbi5jb2xvci1tb2RlKEBwLCBAdikge1xuICBAe3B9OiBAdltkZWZhdWx0XTtcbiAgQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xuICAgIEB7cH06IEB2W2RhcmtdO1xuICB9XG59XG4iLCJAaW1wb3J0IHVybCgnLi4vY29tbW9uLnd4c3MnKTtcblxuYm9keSB7XG4gIG1hcmdpbjogMDtcbiAgaGVpZ2h0OiAxMDB2aDtcbn1cblxuLndyYXBwZXIge1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlO1xuICBmb250LXNpemU6IDEycHg7XG4gIC5jb2xvci1tb2RlKGJhY2tncm91bmQtY29sb3IsIEBwcmltYXJ5LWJnKTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBjdXJzb3I6IGRlZmF1bHQ7XG4gIHVzZXItc2VsZWN0OiBub25lO1xufVxuLmVtcHR5IHtcbiAgLmNvbG9yLW1vZGUoY29sb3IsIEBjb21tb24tdGV4dCk7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgcGFkZGluZzogNXB4O1xufVxuXG4ubWFpbiB7XG4gIGhlaWdodDogMTAwJTtcbn1cbi50cmVlLWRldGFpbCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGhlaWdodDogMTAwJTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi50cmVlLWRldGFpbC1zcGxpdCB7XG4gIHdpZHRoOiAycHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4ODg7XG4gIGN1cnNvcjogdy1yZXNpemU7XG59XG4ubGVmdCB7XG4gIGZsZXg6IDEgMSAwO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG59XG5cbi50b29sYmFyIHtcbiAgZmxleDogbm9uZTtcbiAgLmNvbG9yLW1vZGUoYmFja2dyb3VuZC1jb2xvciwgQHNlY29uZGFyeS1iZyk7XG4gIC5jb2xvci1tb2RlKGNvbG9yLCBAaW1wb3J0YW50LXRleHQpO1xuICBib3JkZXItYm90dG9tOiAycHggc29saWQgIzg4ODtcbiAgZGlzcGxheTogZmxleDtcbn1cbi50b29sLXNwYWNlIHtcbiAgZmxleDogYXV0bztcbn1cbi50b29sIHtcbiAgZmxleDogbm9uZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nOiA1cHggMTBweDtcbn1cbi50b29sX2hvdmVyIHtcbiAgLmNvbG9yLW1vZGUoYmFja2dyb3VuZC1jb2xvciwgQGhvdmVyLWJnKTtcbn1cbi50b29sX2FjdGl2ZSB7XG4gIC5jb2xvci1tb2RlKGJhY2tncm91bmQtY29sb3IsIEBzZWxlY3RlZC1iZyk7XG59XG5cbi50cmVlIHtcbiAgZmxleDogYXV0bztcbiAgbWFyZ2luOiA1cHg7XG4gIG92ZXJmbG93OiBhdXRvO1xuICB1c2VyLXNlbGVjdDogdGV4dDtcbn1cblxuLmRldGFpbCB7XG4gIGZsZXg6IG5vbmU7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuIiwiQGltcG9ydCB1cmwoJy4uL2NvbW1vbi53eHNzJyk7XG5cbjpob3N0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBjdXJzb3I6IHRleHQ7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLm1lYXN1cmUge1xuICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4uZWRpdCB7XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IC0ycHg7XG4gIHRvcDogLTJweDtcbiAgcmlnaHQ6IC0ycHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICM4MDgwODA7XG4gIHBhZGRpbmc6IDFweDtcbiAgLmNvbG9yLW1vZGUoYmFja2dyb3VuZC1jb2xvciwgQHNlY29uZGFyeS1iZyk7XG4gIC5jb2xvci1tb2RlKGNvbG9yLCBAaW1wb3J0YW50LXRleHQpO1xuICBmb250LXNpemU6IDFlbTtcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTtcbiAgYm9yZGVyLXJhZGl1czogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbn1cbiIsIkBpbXBvcnQgdXJsKCcuLi9jb21tb24ud3hzcycpO1xuXG46aG9zdCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uc2VjdGlvbiB7XG4gIG1hcmdpbi1ib3R0b206IDJweDtcbiAgLmNvbG9yLW1vZGUoY29sb3IsIEBjb21tb24tdGV4dCk7XG59XG4uc2VjdGlvbi1pdGVtIHtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgdXNlci1zZWxlY3Q6IHRleHQ7XG59XG4uc2VjdGlvbi1rZXkge1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIC5jb2xvci1tb2RlKGNvbG9yLCBAcHJvcGVydHktbmFtZSk7XG59XG4uc2VjdGlvbi1rZXktY29yZSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbiAgLmNvbG9yLW1vZGUoY29sb3IsIEBjb3JlLWF0dHJpYnV0ZS1uYW1lKTtcbn1cbi5zZWN0aW9uLXZhbHVlIHtcbiAgZGlzcGxheTogaW5saW5lO1xuICAuY29sb3ItbW9kZShjb2xvciwgQGF0dHJpYnV0ZS12YWx1ZSk7XG59XG4uc2VjdGlvbi12YWx1ZS1leHRyYSB7XG4gIC5jb2xvci1tb2RlKGNvbG9yLCBAaW1wb3J0YW50LXRleHQpO1xufVxuXG4uc2VjdGlvbi1lbXB0eSB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4uYm94LW1vZGVsIHtcbiAgbWFyZ2luOiAwIGF1dG87XG59XG4uYm94LW1vZGVsLXRleHQge1xuICBmbGV4OiBub25lO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIC5jb2xvci1tb2RlKGNvbG9yLCBAaW1wb3J0YW50LXRleHQpO1xuICBtYXJnaW46IDFweDtcbn1cbi5ib3gtbW9kZWwtY29udGVudCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICM4ODg7XG4gIHBhZGRpbmc6IDFweDtcbn1cbi5ib3gtbW9kZWwtcGFkZGluZyB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICM4ODg7XG4gIHBhZGRpbmc6IDFweDtcbiAgLmNvbG9yLW1vZGUoYmFja2dyb3VuZC1jb2xvciwgQHByaW1hcnktYmcpO1xufVxuLmJveC1tb2RlbC1ib3JkZXIge1xuICBib3JkZXI6IDFweCBzb2xpZCAjODg4O1xuICBwYWRkaW5nOiAxcHg7XG4gIC5jb2xvci1tb2RlKGJhY2tncm91bmQtY29sb3IsIEBzZWNvbmRhcnktYmcpO1xufVxuLmJveC1tb2RlbC1tYXJnaW4ge1xuICBwYWRkaW5nOiAxcHg7XG59XG4uYm94LW1vZGVsLWxpbmUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLmNsYXNzLWV4dGVybmFsLWhpbnQge1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cbi5jbGFzcy12YWx1ZS1pdGVtIHtcbiAgLmNvbG9yLW1vZGUoY29sb3IsIEBhdHRyaWJ1dGUtdmFsdWUpO1xufVxuXG4uc3R5bGUtcnVsZSB7XG4gIG1hcmdpbjogNXB4IDA7XG4gIHVzZXItc2VsZWN0OiB0ZXh0O1xufVxuLnN0eWxlLXJ1bGVfaW5hY3RpdmUge1xuICBvcGFjaXR5OiAwLjU7XG59XG4uc3R5bGUtcnVsZS1wcmVmaXgge1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIHVzZXItc2VsZWN0OiBub25lO1xufVxuLnN0eWxlLXJ1bGUtZGlzYWJsZWQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAxZW07XG4gIGhlaWdodDogMWVtO1xuICBsaW5lLWhlaWdodDogMWVtO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC5jb2xvci1tb2RlKGNvbG9yLCBAd2Fybi10ZXh0KTtcbn1cbi5zdHlsZS1ydWxlLWVuYWJsZWQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAxZW07XG4gIGhlaWdodDogMWVtO1xuICBsaW5lLWhlaWdodDogMWVtO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIGNvbG9yOiB0cmFuc3BhcmVudDtcbn1cbi5zdHlsZS1ydWxlLWVuYWJsZWRfaG92ZXIge1xuICAuY29sb3ItbW9kZShjb2xvciwgQHdhcm4tdGV4dCk7XG59XG4uc3R5bGUtcnVsZS1zY29wZSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cbi5zdHlsZS1ydWxlLXRpdGxlIHtcbiAgZGlzcGxheTogaW5saW5lO1xuICAuY29sb3ItbW9kZShjb2xvciwgQGltcG9ydGFudC10ZXh0KTtcbn1cbi5zdHlsZS1ydWxlLXByb3BlcnR5X2Rpc2FibGVkIHtcbiAgb3BhY2l0eTogMC41O1xufVxuLnN0eWxlLXJ1bGUtaXRlbS1hZGQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGN1cnNvcjogdGV4dDtcbn1cbi5zdHlsZS1ydWxlLWlubGluZS1hZGQge1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5zdHlsZS1ydWxlLWlubGluZS1hZGRfaG92ZXIge1xuICAuY29sb3ItbW9kZShiYWNrZ3JvdW5kLWNvbG9yLCBAaG92ZXItYmcpO1xufVxuIiwiQGltcG9ydCB1cmwoJy4uL2NvbW1vbi53eHNzJyk7XG5cbkBrZXlmcmFtZXMgdmFsdWUtdXBkYXRlLWFuaSB7XG4gIGZyb20ge1xuICB9XG4gIHRvIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgfVxufVxuLnVwZGF0ZWQge1xuICAuY29sb3ItbW9kZShiYWNrZ3JvdW5kLWNvbG9yLCBAdXBkYXRlLWJnKTtcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAxcztcbiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDtcbiAgYW5pbWF0aW9uLW5hbWU6IHZhbHVlLXVwZGF0ZS1hbmk7XG4gIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2U7XG59XG5cbi53cmFwcGVyIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uc2xpY2Uge1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIC5jb2xvci1tb2RlKGNvbG9yLCBAY29tbW9uLXRleHQpO1xufVxuLnNsaWNlX2R5bmFtaWMge1xuICAuY29sb3ItbW9kZShjb2xvciwgQGF0dHJpYnV0ZS12YWx1ZSk7XG59XG5cbi52YXItbmFtZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWxlZnQ6IDAuMjVlbTtcbiAgaGVpZ2h0OiAxZW07XG4gIGxpbmUtaGVpZ2h0OiAxZW07XG4gIG1pbi13aWR0aDogMWVtO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMC44ZW07XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgLmNvbG9yLW1vZGUoY29sb3IsIEBpbXBvcnRhbnQtdGV4dCk7XG59XG4udmFyLW5hbWVfaG92ZXIge1xuICAuY29sb3ItbW9kZShiYWNrZ3JvdW5kLWNvbG9yLCBAaG92ZXItYmcpO1xufVxuIiwiQGltcG9ydCB1cmwoJy4uL2NvbW1vbi53eHNzJyk7XG5cbjpob3N0IHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi50aXRsZSB7XG4gIHBhZGRpbmc6IDAgNXB4O1xuICAuY29sb3ItbW9kZShiYWNrZ3JvdW5kLWNvbG9yLCBAc2Vjb25kYXJ5LWJnKTtcbiAgLmNvbG9yLW1vZGUoY29sb3IsIEBpbXBvcnRhbnQtdGV4dCk7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4udGl0bGUtdGV4dCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi50aXRsZS1yZWZyZXNoIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXNpemU6IDEuNWVtO1xuICB3aWR0aDogMWVtO1xuICBoZWlnaHQ6IDFlbTtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWFyZ2luLWxlZnQ6IDAuNWVtO1xufVxuLnRpdGxlLXJlZnJlc2hfaG92ZXIge1xuICAuY29sb3ItbW9kZShiYWNrZ3JvdW5kLWNvbG9yLCBAaG92ZXItYmcpO1xufVxuLmFycm93IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMWVtO1xuICBoZWlnaHQ6IDEuNWVtO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAyMDBtcyBlYXNlO1xuICBtYXJnaW4tcmlnaHQ6IDAuMjVlbTtcbn1cbi5hcnJvd19vcGVuIHtcbiAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xufVxuXG4uYm9keSB7XG4gIHBhZGRpbmc6IDAgNXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLmJvZHlfY29sbGFwc2VkIHtcbiAgaGVpZ2h0OiAwO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/
23
+ /*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY3NzIiwibWFwcGluZ3MiOiJBQUFBLGNBQWMsYUFBYSxDQUFDOzs7QUFHNUIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxhQUFhLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7QUFDekUsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUM7OztBQUdqRSxjQUFjLGFBQWEsQ0FBQyxDOztBQ1A1QixzQkFHRSxHQUNFLHVCQURGLENBSEYsQ0FPQSxZQ09FLHNCRExBLHNCQUNBLHlCQUNBLDBCQUNBLCtCQUxGLENDUUUsK0NBQ0Usc0JBREYsQ0FBb0MsQ0RJdEMsUUNMRSxjRE9BLG1CQUZGLENDSkUsMkNBQ0UsY0FERixDQUFvQyxDRFN0QyxlQUNFLHFCQUNBLFVBQ0EsV0FDQSxnQkFDQSxXQUNBLGtCQUNBLGlCQVBGLENBU0Esb0JBQ0UsVUFDQSxnQ0FGRixDQUlBLHlCQUNFLHdCQURGLENBSUEsYUFDRSxxQkFERixDQUdBLG1CQzlCRSxzQkQ4QkYsQ0M3QkUsc0RBQ0Usc0JBREYsQ0FBb0MsQ0RnQ3RDLHNCQ2pDRSxzQkRpQ0YsQ0NoQ0UseURBQ0Usc0JBREYsQ0FBb0MsQ0RtQ3RDLHVCQ3BDRSxzQ0RvQ0YsQ0NuQ0UsMERBQ0Usd0NBREYsQ0FBb0MsQ0RzQ3RDLGFBQ0UsZUFERixDQUdBLGFBQ0UscUJDM0NBLFdEMENGLENDekNFLGdEQUNFLFdBREYsQ0FBb0MsQ0Q4Q3RDLHlCQUNFLGVBREYsQ0FHQSxpQkFDRSxxQkFDQSxtQkFDQSxXQUNBLGdCQUNBLGNBQ0Esa0JBQ0EsZ0JBQ0Esa0JDMURBLFdEa0RGLENDakRFLG9EQUNFLFdBREYsQ0FBb0MsQ0Q0RHRDLHVCQzdERSxzQkQ2REYsQ0M1REUsMERBQ0Usc0JBREYsQ0FBb0MsQ0RnRXRDLGNBQ0UscUJBQ0Esa0JBRkYsQ0FJQSxtQkFDRSxxQkN0RUEsV0RxRUYsQ0NwRUUsc0RBQ0UsV0FERixDQUFvQyxDRHdFdEMsNEJDekVFLFdEeUVGLENDeEVFLCtEQUNFLFdBREYsQ0FBb0MsQ0QyRXRDLG9CQUNFLHFCQzdFQSxXRDRFRixDQzNFRSx1REFDRSxXQURGLENBQW9DLENEZ0Z0QyxvQkFDRSxnQkFERixDQUlBLHFCQUNFLHFCQUNBLGtCQUZGLENBSUEsMkJDekZFLHNCRHlGRixDQ3hGRSw4REFDRSxzQkFERixDQUFvQyxDRDRGdEMsaUJDN0ZFLFdEK0ZBLGNBRkYsQ0M1RkUsb0RBQ0UsV0FERixDQUFvQyxDO0FDZnRDLEtBQ0UsU0FDQSxhQUZGLENBS0EsU0FDRSxzQkFDQSxlRE9BLHNCQ0xBLFlBQ0EsZUFDQSxpQkFORixDRFVFLDRDQUNFLHNCQURGLENBQW9DLENDRnRDLE9EQ0UsY0NDQSxrQkFDQSxZQUhGLENERUUsMENBQ0UsY0FERixDQUFvQyxDQ0l0QyxNQUNFLFlBREYsQ0FHQSxhQUNFLGFBQ0EsWUFDQSxnQkFIRixDQUtBLG1CQUNFLFVBQ0Esc0JBQ0EsZ0JBSEYsQ0FLQSxNQUNFLFdBQ0EsYUFDQSxzQkFDQSxrQkFKRixDQU9BLFNBQ0UsVUQxQkEsaUNDNkJBLDRCQUNBLGFBTEYsQ0R4QkUsNENBQ0Usc0JBREYsQ0FBb0MsQ0FBcEMsNENBQ0UsV0FERixDQUFvQyxDQytCdEMsWUFDRSxVQURGLENBR0EsTUFDRSxVQUNBLHFCQUNBLGlCQUNBLGtCQUpGLENBTUEsWUR6Q0Usc0JDeUNGLENEeENFLCtDQUNFLHNCQURGLENBQW9DLENDMkN0QyxhRDVDRSxzQkM0Q0YsQ0QzQ0UsZ0RBQ0Usc0JBREYsQ0FBb0MsQ0MrQ3RDLE1BQ0UsVUFDQSxXQUNBLGNBQ0EsaUJBSkYsQ0FPQSxRQUNFLFVBQ0Esc0JBQ0EsY0FIRixDO0FDckVBLFlBQ0UsY0FDQSxtQkFDQSxZQUhGLENBTUEsVUZRRSxzQ0VSRixDRlNFLDZDQUNFLHdDQURGLENBQW9DLENFTHRDLFVBQ0UscUJBQ0EsVUFDQSxXQUNBLHNCQUNBLGVBQ0EsNkJGRkEsNkJFS0EsZ0JBQ0Esa0JBVkYsQ0ZLRSw2Q0FDRSxrQkFERixDQUFvQyxDQUFwQyw2Q0FDRSxXQURGLENBQW9DLEM7QUdYdEMsWUFDRSxrQkhTQSxjR1ZGLENIV0UsK0NBQ0UsY0FERixDQUFvQyxDR1B0QyxpQkFDRSxtQkFDQSxpQkFGRixDQUlBLGdCQUNFLGVIQ0EsV0dGRixDSEdFLG1EQUNFLFdBREYsQ0FBb0MsQ0dDdEMscUJBQ0UsZUhIQSxXR0VGLENIREUsd0RBQ0UsV0FERixDQUFvQyxDR0t0QyxrQkFDRSxlSFBBLFdHTUYsQ0hMRSxxREFDRSxXQURGLENBQW9DLENHU3RDLHdCSFZFLFdHVUYsQ0hURSwyREFDRSxXQURGLENBQW9DLENHYXRDLGtCQUNFLGtCQUNBLGtCQUZGLENBS0EsY0FDRSxjQURGLENBR0EsbUJBQ0UsVUFDQSxrQkFDQSxtQkh6QkEsV0cyQkEsV0FMRixDSHJCRSxzREFDRSxXQURGLENBQW9DLENHNEJ0QyxzQkFDRSxhQUNBLHFCQUNBLFlBSEYsQ0FLQSxzQkFDRSxxQkFDQSxZSHBDQSxzQkdrQ0YsQ0hqQ0UseURBQ0Usc0JBREYsQ0FBb0MsQ0dzQ3RDLHFCQUNFLHFCQUNBLFlIekNBLHNCR3VDRixDSHRDRSx3REFDRSxzQkFERixDQUFvQyxDRzJDdEMscUJBQ0UsWUFERixDQUdBLG1CQUNFLGFBQ0EsdUJBQ0EsbUJBSEYsQ0FNQSx3QkFDRSxlQUNBLGtCQUZGLENBSUEscUJIekRFLFdHeURGLENIeERFLHdEQUNFLFdBREYsQ0FBb0MsQ0c0RHRDLGVBQ0UsYUFDQSxpQkFGRixDQUlBLHdCQUNFLFlBREYsQ0FHQSxzQkFDRSxrQkFDQSxpQkFGRixDQUlBLHdCQUNFLHFCQUNBLFVBQ0EsV0FDQSxnQkFDQSxrQkFDQSxlQUNBLGlCSC9FQSxXR3dFRixDSHZFRSwyREFDRSxXQURGLENBQW9DLENHaUZ0Qyx1QkFDRSxxQkFDQSxVQUNBLFdBQ0EsZ0JBQ0Esa0JBQ0EsZUFDQSxpQkFDQSxrQkFSRixDQVVBLDZCSDVGRSxXRzRGRixDSDNGRSxnRUFDRSxXQURGLENBQW9DLENHOEZ0QyxxQkFDRSxlQUNBLGtCQUNBLGlCQUhGLENBS0EscUJBQ0UsZUhyR0EsV0dvR0YsQ0huR0Usd0RBQ0UsV0FERixDQUFvQyxDR3VHdEMsaUNBQ0UsWUFERixDQUdBLHdCQUNFLHFCQUNBLFlBRkYsQ0FJQSwwQkFDRSxrQkFDQSxxQkFGRixDQUlBLGdDSG5IRSxzQkdtSEYsQ0hsSEUsbUVBQ0Usc0JBREYsQ0FBb0MsQztBSVB0QyxZSk1FLHNCSUpBLHFCQUNBLFlBSEYsQ0pPRSwrQ0FDRSxzQkFERixDQUFvQyxDO0FLWHRDLFVBQ0UsY0xTQSxpQ0tOQSxnQkFDQSxtQkFMRixDTFdFLDZDQUNFLHNCQURGLENBQW9DLENBQXBDLDZDQUNFLFdBREYsQ0FBb0MsQ0tKdEMsZUFDRSxxQkFERixDQUdBLGtCQUNFLHFCQUNBLGdCQUNBLFVBQ0EsV0FDQSxjQUNBLGtCQUNBLGtCQVBGLENBU0Esd0JMVEUsc0JLU0YsQ0xSRSwyREFDRSxzQkFERixDQUFvQyxDS1d0QyxVQUNFLHFCQUNBLFVBQ0EsYUFDQSxrQkFDQSxnQ0FDQSxvQkFORixDQVFBLGVBQ0Usd0JBREYsQ0FJQSxTQUNFLGNBQ0EsZ0JBRkYsQ0FJQSxtQkFDRSxTQURGLEM7QUNwQ0EsWUFDRSxrQkFDQSxrQkFDQSxPQUNBLE1BQ0Esc0JBQ0EsbUJBTkYsQ0FTQSxTQUNFLHVCQUNBLGtCQUNBLFVBQ0EsU0FDQSxXQUNBLHdCQUNBLFlOUkEsaUNNV0EsY0FDQSxzQkFDQSxtQkFDQSxhQWJGLENOQUUsNENBQ0Usc0JBREYsQ0FBb0MsQ0FBcEMsNENBQ0UsV0FERixDQUFvQyxDO0FPZnRDLDRCQUdFLEdBQ0UsNkJBREYsQ0FIRixDQU9BLFlQT0Usc0JPTEEsc0JBQ0EseUJBQ0EsZ0NBQ0EsK0JBTEYsQ1BRRSwrQ0FDRSxzQkFERixDQUFvQyxDT0F0QyxZQUNFLHFCQURGLENBSUEsVUFDRSxlUE5BLGNPS0YsQ1BKRSw2Q0FDRSxjQURGLENBQW9DLENPUXRDLGtCUFRFLFdPU0YsQ1BSRSxxREFDRSxXQURGLENBQW9DLENPWXRDLGFBQ0UscUJBQ0EsbUJBQ0EsV0FDQSxnQkFDQSxjQUNBLGtCQUNBLGdCQUNBLGtCUHJCQSxXT2FGLENQWkUsZ0RBQ0UsV0FERixDQUFvQyxDT3VCdEMsbUJQeEJFLHNCT3dCRixDUHZCRSxzREFDRSxzQkFERixDQUFvQyxDO0FRakJ0QyxlQUNFLGFBREcsQyIsInNvdXJjZXMiOlsid2VicGFjazovL2dsYXNzLWVhc2VsLWRldnRvb2xzLXBhbmVsLy4vc3JjL19fZ2xhc3NfZWFzZWxfaG9zdF9zdHlsZXNfXy53eHNzIiwid2VicGFjazovL2dsYXNzLWVhc2VsLWRldnRvb2xzLXBhbmVsLy4vc3JjL3BhZ2VzL3RyZWUvZWxlbWVudC53eHNzIiwid2VicGFjazovL2dsYXNzLWVhc2VsLWRldnRvb2xzLXBhbmVsLy4vc3JjL3BhZ2VzL2NvbW1vbi53eHNzIiwid2VicGFjazovL2dsYXNzLWVhc2VsLWRldnRvb2xzLXBhbmVsLy4vc3JjL3BhZ2VzL2luZGV4L2luZGV4Lnd4c3MiLCJ3ZWJwYWNrOi8vZ2xhc3MtZWFzZWwtZGV2dG9vbHMtcGFuZWwvLi9zcmMvcGFnZXMvaW5kZXgvY2hlY2tib3gud3hzcyIsIndlYnBhY2s6Ly9nbGFzcy1lYXNlbC1kZXZ0b29scy1wYW5lbC8uL3NyYy9wYWdlcy9kZXRhaWwvZGV0YWlsLnd4c3MiLCJ3ZWJwYWNrOi8vZ2xhc3MtZWFzZWwtZGV2dG9vbHMtcGFuZWwvLi9zcmMvcGFnZXMvaW5kZXgvb3B0aW9ucy53eHNzIiwid2VicGFjazovL2dsYXNzLWVhc2VsLWRldnRvb2xzLXBhbmVsLy4vc3JjL3BhZ2VzL2RldGFpbC9zZWN0aW9uLnd4c3MiLCJ3ZWJwYWNrOi8vZ2xhc3MtZWFzZWwtZGV2dG9vbHMtcGFuZWwvLi9zcmMvcGFnZXMvZGV0YWlsL2VkaXRhYmxlLnd4c3MiLCJ3ZWJwYWNrOi8vZ2xhc3MtZWFzZWwtZGV2dG9vbHMtcGFuZWwvLi9zcmMvcGFnZXMvZGV0YWlsL3ZhbHVlLnd4c3MiLCJ3ZWJwYWNrOi8vZ2xhc3MtZWFzZWwtZGV2dG9vbHMtcGFuZWwvLi9zcmMvZ2xvYmFsX2NvbXBvbmVudHMvdmlldy92aWV3Lnd4c3MiXSwic291cmNlc0NvbnRlbnQiOlsiW3d4LWhvc3Q9XCJBXCJde2Rpc3BsYXk6YmxvY2s7fVxuXG5cblt3eC1ob3N0PVwiRFwiXXtkaXNwbGF5OmJsb2NrO31cblt3eC1ob3N0PVwiRVwiXXtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MTAwJTt3aWR0aDphdXRvO31cblt3eC1ob3N0PVwiRlwiXXtkaXNwbGF5OmJsb2NrO31cblt3eC1ob3N0PVwiR1wiXXtkaXNwbGF5OmlubGluZS1ibG9jaztjdXJzb3I6dGV4dDtwb3NpdGlvbjpyZWxhdGl2ZTt9XG5cblxuW3d4LWhvc3Q9XCJKXCJde2Rpc3BsYXk6YmxvY2s7fSIsIkBpbXBvcnQgdXJsKCcuLi9jb21tb24ud3hzcycpO1xuXG5Aa2V5ZnJhbWVzIHVwZGF0ZS1hbmkge1xuICBmcm9tIHtcbiAgfVxuICB0byB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIH1cbn1cbi51cGRhdGVkIHtcbiAgLmNvbG9yLW1vZGUoYmFja2dyb3VuZC1jb2xvciwgQHVwZGF0ZS1iZyk7XG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogMXM7XG4gIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XG4gIGFuaW1hdGlvbi1uYW1lOiB1cGRhdGUtYW5pO1xuICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlO1xufVxuXG46aG9zdCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4udGFnIHtcbiAgLmNvbG9yLW1vZGUoY29sb3IsICBAY29tbW9uLXRleHQpO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4uZm9sZC1hcnJvdyB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDFlbTtcbiAgaGVpZ2h0OiAxZW07XG4gIGxpbmUtaGVpZ2h0OiAxZW07XG4gIGNvbG9yOiAjNDQ0O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHVzZXItc2VsZWN0OiBub25lO1xufVxuLmZvbGQtYXJyb3ctaWNvbiB7XG4gIHdpZHRoOiAxZW07XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAyMDBtcyBlYXNlO1xufVxuLmZvbGQtYXJyb3ctaWNvbl9vcGVuIHtcbiAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xufVxuXG4udGFnLWJvZHkge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4udGFnLWJvZHlfaG92ZXIge1xuICAuY29sb3ItbW9kZShiYWNrZ3JvdW5kLWNvbG9yLCBAaG92ZXItYmcpO1xufVxuLnRhZy1ib2R5X3NlbGVjdGVkIHtcbiAgLmNvbG9yLW1vZGUoYmFja2dyb3VuZC1jb2xvciwgQHNlbGVjdGVkLWJnKTtcbn1cbi50YWctYm9keV9oaWdobGlnaHQge1xuICAuY29sb3ItbW9kZShiYWNrZ3JvdW5kLWNvbG9yLCBAaGlnaGxpZ2h0LWJnKTtcbn1cbi50YWctdGV4dCB7XG4gIGRpc3BsYXk6IGlubGluZTtcbn1cbi50YWctbmFtZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgLmNvbG9yLW1vZGUoY29sb3IsIEB0YWctbmFtZSk7XG59XG5cbi50YWctdmFyLW5hbWUtd3JhcHBlciB7XG4gIGRpc3BsYXk6IGlubGluZTtcbn1cbi50YWctdmFyLW5hbWUge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1sZWZ0OiAwLjI1ZW07XG4gIGhlaWdodDogMWVtO1xuICBsaW5lLWhlaWdodDogMWVtO1xuICBtaW4td2lkdGg6IDFlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXNpemU6IDAuOGVtO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIC5jb2xvci1tb2RlKGNvbG9yLCBAaW1wb3J0YW50LXRleHQpO1xufVxuLnRhZy12YXItbmFtZV9ob3ZlciB7XG4gIC5jb2xvci1tb2RlKGJhY2tncm91bmQtY29sb3IsIEBob3Zlci1iZyk7XG59XG5cbi5hdHRyaWJ1dGUge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1sZWZ0OiAwLjVlbTtcbn1cbi5hdHRyaWJ1dGUtbmFtZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgLmNvbG9yLW1vZGUoY29sb3IsIEBjb3JlLWF0dHJpYnV0ZS1uYW1lKTtcbn1cbi5hdHRyaWJ1dGUtbmFtZV9wcm9wZXJ0eSB7XG4gIC5jb2xvci1tb2RlKGNvbG9yLCBAcHJvcGVydHktbmFtZSk7XG59XG4uYXR0cmlidXRlLXZhbHVlIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAuY29sb3ItbW9kZShjb2xvciwgQGF0dHJpYnV0ZS12YWx1ZSk7XG59XG5cbi5jaGlsZHJlbl9pbmRlbnQge1xuICBtYXJnaW4tbGVmdDogMWVtO1xufVxuXG4udmlydHVhbC10YWctbmFtZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuLnZpcnR1YWwtdGFnLW5hbWVfaG92ZXIge1xuICAuY29sb3ItbW9kZShiYWNrZ3JvdW5kLWNvbG9yLCBAc2VsZWN0ZWQtYmcpO1xufVxuXG4udGV4dC1jb250ZW50IHtcbiAgLmNvbG9yLW1vZGUoY29sb3IsIEBpbXBvcnRhbnQtdGV4dCk7XG4gIHBhZGRpbmc6IDFweCAwO1xufVxuIiwiQGNvbW1vbi10ZXh0OiB7IGRlZmF1bHQ6ICM4MDgwODA7IGRhcms6ICM4MDgwODA7IH07XG5AaW1wb3J0YW50LXRleHQ6IHsgZGVmYXVsdDogIzIyMjsgZGFyazogI2RkZDsgfTtcbkB3YXJuLXRleHQ6IHsgZGVmYXVsdDogI2E0MDsgZGFyazogI2U4MjsgfTtcbkBwcmltYXJ5LWJnOiB7IGRlZmF1bHQ6ICNlZWU7IGRhcms6ICMyMjI7IH07XG5Ac2Vjb25kYXJ5LWJnOiB7IGRlZmF1bHQ6ICNjY2M7IGRhcms6ICM0NDQ7IH07XG5Ac2VsZWN0ZWQtYmc6IHsgZGVmYXVsdDogI2FkZDsgZGFyazogIzI1NTsgfTtcbkBob3Zlci1iZzogeyBkZWZhdWx0OiAjYWNlOyBkYXJrOiAjMjQ2OyB9O1xuQHVwZGF0ZS1iZzogeyBkZWZhdWx0OiAjZGQ4OyBkYXJrOiAjNzcyOyB9O1xuQGhpZ2hsaWdodC1iZzogeyBkZWZhdWx0OiByZ2JhKDAsIDEyOCwgMTkyLCAwLjI1KTsgZGFyazogcmdiYSgxMjgsIDE5MiwgMjU1LCAwLjI1KTsgfTtcblxuQHRhZy1uYW1lOiB7IGRlZmF1bHQ6ICM0MDg7IGRhcms6ICNjOGU7IH07XG5AY29yZS1hdHRyaWJ1dGUtbmFtZTogeyBkZWZhdWx0OiAjMDg0OyBkYXJrOiAjNmVhOyB9O1xuQHByb3BlcnR5LW5hbWU6IHsgZGVmYXVsdDogIzA2YTsgZGFyazogIzZjZTsgfTtcbkBhdHRyaWJ1dGUtdmFsdWU6IHsgZGVmYXVsdDogIzg0MDsgZGFyazogI2VhNjsgfTtcblxuLmNvbG9yLW1vZGUoQHAsIEB2KSB7XG4gIEB7cH06IEB2W2RlZmF1bHRdO1xuICBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XG4gICAgQHtwfTogQHZbZGFya107XG4gIH1cbn1cbiIsIkBpbXBvcnQgdXJsKCcuLi9jb21tb24ud3hzcycpO1xuXG5ib2R5IHtcbiAgbWFyZ2luOiAwO1xuICBoZWlnaHQ6IDEwMHZoO1xufVxuXG4ud3JhcHBlciB7XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgLmNvbG9yLW1vZGUoYmFja2dyb3VuZC1jb2xvciwgQHByaW1hcnktYmcpO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGN1cnNvcjogZGVmYXVsdDtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG4uZW1wdHkge1xuICAuY29sb3ItbW9kZShjb2xvciwgQGNvbW1vbi10ZXh0KTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICBwYWRkaW5nOiA1cHg7XG59XG5cbi5tYWluIHtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuLnRyZWUtZGV0YWlsIHtcbiAgZGlzcGxheTogZmxleDtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLnRyZWUtZGV0YWlsLXNwbGl0IHtcbiAgd2lkdGg6IDJweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzg4ODtcbiAgY3Vyc29yOiB3LXJlc2l6ZTtcbn1cbi5sZWZ0IHtcbiAgZmxleDogMSAxIDA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcbn1cblxuLnRvb2xiYXIge1xuICBmbGV4OiBub25lO1xuICAuY29sb3ItbW9kZShiYWNrZ3JvdW5kLWNvbG9yLCBAc2Vjb25kYXJ5LWJnKTtcbiAgLmNvbG9yLW1vZGUoY29sb3IsIEBpbXBvcnRhbnQtdGV4dCk7XG4gIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjODg4O1xuICBkaXNwbGF5OiBmbGV4O1xufVxuLnRvb2wtc3BhY2Uge1xuICBmbGV4OiBhdXRvO1xufVxuLnRvb2wge1xuICBmbGV4OiBub25lO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmc6IDVweCAxMHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4udG9vbF9ob3ZlciB7XG4gIC5jb2xvci1tb2RlKGJhY2tncm91bmQtY29sb3IsIEBob3Zlci1iZyk7XG59XG4udG9vbF9hY3RpdmUge1xuICAuY29sb3ItbW9kZShiYWNrZ3JvdW5kLWNvbG9yLCBAc2VsZWN0ZWQtYmcpO1xufVxuXG4udHJlZSB7XG4gIGZsZXg6IGF1dG87XG4gIG1hcmdpbjogNXB4O1xuICBvdmVyZmxvdzogYXV0bztcbiAgdXNlci1zZWxlY3Q6IHRleHQ7XG59XG5cbi5kZXRhaWwge1xuICBmbGV4OiBub25lO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBvdmVyZmxvdzogYXV0bztcbn1cbiIsIkBpbXBvcnQgdXJsKCcuLi9jb21tb24ud3hzcycpO1xuXG4ud3JhcHBlciB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBwYWRkaW5nOiAzcHg7XG59XG5cbi5ob3ZlciB7XG4gIC5jb2xvci1tb2RlKGJhY2tncm91bmQtY29sb3IsIEBoaWdobGlnaHQtYmcpO1xufVxuXG4uY2hlY2sge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAxZW07XG4gIGhlaWdodDogMWVtO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBtYXJnaW46IDAgMC41ZW07XG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAuY29sb3ItbW9kZShib3JkZXItY29sb3IsIEBpbXBvcnRhbnQtdGV4dCk7XG4gIC5jb2xvci1tb2RlKGNvbG9yLCBAaW1wb3J0YW50LXRleHQpO1xuICBsaW5lLWhlaWdodDogMWVtO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4iLCJAaW1wb3J0IHVybCgnLi4vY29tbW9uLnd4c3MnKTtcblxuOmhvc3Qge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLnNlY3Rpb24ge1xuICBtYXJnaW4tYm90dG9tOiAycHg7XG4gIC5jb2xvci1tb2RlKGNvbG9yLCBAY29tbW9uLXRleHQpO1xufVxuLnNlY3Rpb24taXRlbSB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHVzZXItc2VsZWN0OiB0ZXh0O1xufVxuLnNlY3Rpb24ta2V5IHtcbiAgZGlzcGxheTogaW5saW5lO1xuICAuY29sb3ItbW9kZShjb2xvciwgQHByb3BlcnR5LW5hbWUpO1xufVxuLnNlY3Rpb24ta2V5LWNvcmUge1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIC5jb2xvci1tb2RlKGNvbG9yLCBAY29yZS1hdHRyaWJ1dGUtbmFtZSk7XG59XG4uc2VjdGlvbi12YWx1ZSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbiAgLmNvbG9yLW1vZGUoY29sb3IsIEBhdHRyaWJ1dGUtdmFsdWUpO1xufVxuLnNlY3Rpb24tdmFsdWUtZXh0cmEge1xuICAuY29sb3ItbW9kZShjb2xvciwgQGltcG9ydGFudC10ZXh0KTtcbn1cblxuLnNlY3Rpb24tZW1wdHkge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLmJveC1tb2RlbCB7XG4gIG1hcmdpbjogMCBhdXRvO1xufVxuLmJveC1tb2RlbC10ZXh0IHtcbiAgZmxleDogbm9uZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAuY29sb3ItbW9kZShjb2xvciwgQGltcG9ydGFudC10ZXh0KTtcbiAgbWFyZ2luOiAxcHg7XG59XG4uYm94LW1vZGVsLWNvbnRlbnQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjODg4O1xuICBwYWRkaW5nOiAxcHg7XG59XG4uYm94LW1vZGVsLXBhZGRpbmcge1xuICBib3JkZXI6IDFweCBzb2xpZCAjODg4O1xuICBwYWRkaW5nOiAxcHg7XG4gIC5jb2xvci1tb2RlKGJhY2tncm91bmQtY29sb3IsIEBwcmltYXJ5LWJnKTtcbn1cbi5ib3gtbW9kZWwtYm9yZGVyIHtcbiAgYm9yZGVyOiAxcHggc29saWQgIzg4ODtcbiAgcGFkZGluZzogMXB4O1xuICAuY29sb3ItbW9kZShiYWNrZ3JvdW5kLWNvbG9yLCBAc2Vjb25kYXJ5LWJnKTtcbn1cbi5ib3gtbW9kZWwtbWFyZ2luIHtcbiAgcGFkZGluZzogMXB4O1xufVxuLmJveC1tb2RlbC1saW5lIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5jbGFzcy1leHRlcm5hbC1oaW50IHtcbiAgZGlzcGxheTogaW5saW5lO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG4uY2xhc3MtdmFsdWUtaXRlbSB7XG4gIC5jb2xvci1tb2RlKGNvbG9yLCBAYXR0cmlidXRlLXZhbHVlKTtcbn1cblxuLnN0eWxlLXJ1bGUge1xuICBtYXJnaW46IDVweCAwO1xuICB1c2VyLXNlbGVjdDogdGV4dDtcbn1cbi5zdHlsZS1ydWxlX2luYWN0aXZlIHtcbiAgb3BhY2l0eTogMC41O1xufVxuLnN0eWxlLXJ1bGUtcHJlZml4IHtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cbi5zdHlsZS1ydWxlLWRpc2FibGVkIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMWVtO1xuICBoZWlnaHQ6IDFlbTtcbiAgbGluZS1oZWlnaHQ6IDFlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICAuY29sb3ItbW9kZShjb2xvciwgQHdhcm4tdGV4dCk7XG59XG4uc3R5bGUtcnVsZS1lbmFibGVkIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMWVtO1xuICBoZWlnaHQ6IDFlbTtcbiAgbGluZS1oZWlnaHQ6IDFlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICBjb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4uc3R5bGUtcnVsZS1lbmFibGVkX2hvdmVyIHtcbiAgLmNvbG9yLW1vZGUoY29sb3IsIEB3YXJuLXRleHQpO1xufVxuLnN0eWxlLXJ1bGUtc2NvcGUge1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG4uc3R5bGUtcnVsZS10aXRsZSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbiAgLmNvbG9yLW1vZGUoY29sb3IsIEBpbXBvcnRhbnQtdGV4dCk7XG59XG4uc3R5bGUtcnVsZS1wcm9wZXJ0eV9kaXNhYmxlZCB7XG4gIG9wYWNpdHk6IDAuNTtcbn1cbi5zdHlsZS1ydWxlLWl0ZW0tYWRkIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBjdXJzb3I6IHRleHQ7XG59XG4uc3R5bGUtcnVsZS1pbmxpbmUtYWRkIHtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4uc3R5bGUtcnVsZS1pbmxpbmUtYWRkX2hvdmVyIHtcbiAgLmNvbG9yLW1vZGUoYmFja2dyb3VuZC1jb2xvciwgQGhvdmVyLWJnKTtcbn1cbiIsIkBpbXBvcnQgdXJsKCcuLi9jb21tb24ud3hzcycpO1xuXG46aG9zdCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMTAwJTtcbiAgd2lkdGg6IGF1dG87XG59XG5cbi53cmFwcGVyIHtcbiAgLmNvbG9yLW1vZGUoYmFja2dyb3VuZC1jb2xvciwgQHNlY29uZGFyeS1iZyk7XG4gIGJvcmRlcjogMnB4IHNvbGlkICM4ODg7XG4gIHBhZGRpbmc6IDJweDtcbn1cbiIsIkBpbXBvcnQgdXJsKCcuLi9jb21tb24ud3hzcycpO1xuXG46aG9zdCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4udGl0bGUge1xuICBwYWRkaW5nOiAwIDVweDtcbiAgLmNvbG9yLW1vZGUoYmFja2dyb3VuZC1jb2xvciwgQHNlY29uZGFyeS1iZyk7XG4gIC5jb2xvci1tb2RlKGNvbG9yLCBAaW1wb3J0YW50LXRleHQpO1xuICBsaW5lLWhlaWdodDogMS41O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuLnRpdGxlLXRleHQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4udGl0bGUtcmVmcmVzaCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAxLjVlbTtcbiAgd2lkdGg6IDFlbTtcbiAgaGVpZ2h0OiAxZW07XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG1hcmdpbi1sZWZ0OiAwLjVlbTtcbn1cbi50aXRsZS1yZWZyZXNoX2hvdmVyIHtcbiAgLmNvbG9yLW1vZGUoYmFja2dyb3VuZC1jb2xvciwgQGhvdmVyLWJnKTtcbn1cbi5hcnJvdyB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDFlbTtcbiAgaGVpZ2h0OiAxLjVlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMjAwbXMgZWFzZTtcbiAgbWFyZ2luLXJpZ2h0OiAwLjI1ZW07XG59XG4uYXJyb3dfb3BlbiB7XG4gIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtcbn1cblxuLmJvZHkge1xuICBwYWRkaW5nOiAwIDVweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5ib2R5X2NvbGxhcHNlZCB7XG4gIGhlaWdodDogMDtcbn1cbiIsIkBpbXBvcnQgdXJsKCcuLi9jb21tb24ud3hzcycpO1xuXG46aG9zdCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgY3Vyc29yOiB0ZXh0O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5tZWFzdXJlIHtcbiAgY29sb3I6IHRyYW5zcGFyZW50O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLmVkaXQge1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAtMnB4O1xuICB0b3A6IC0ycHg7XG4gIHJpZ2h0OiAtMnB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjODA4MDgwO1xuICBwYWRkaW5nOiAxcHg7XG4gIC5jb2xvci1tb2RlKGJhY2tncm91bmQtY29sb3IsIEBzZWNvbmRhcnktYmcpO1xuICAuY29sb3ItbW9kZShjb2xvciwgQGltcG9ydGFudC10ZXh0KTtcbiAgZm9udC1zaXplOiAxZW07XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XG4gIGJvcmRlci1yYWRpdXM6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG59XG4iLCJAaW1wb3J0IHVybCgnLi4vY29tbW9uLnd4c3MnKTtcblxuQGtleWZyYW1lcyB2YWx1ZS11cGRhdGUtYW5pIHtcbiAgZnJvbSB7XG4gIH1cbiAgdG8ge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICB9XG59XG4udXBkYXRlZCB7XG4gIC5jb2xvci1tb2RlKGJhY2tncm91bmQtY29sb3IsIEB1cGRhdGUtYmcpO1xuICBhbmltYXRpb24tZHVyYXRpb246IDFzO1xuICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xuICBhbmltYXRpb24tbmFtZTogdmFsdWUtdXBkYXRlLWFuaTtcbiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZTtcbn1cblxuLndyYXBwZXIge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbi5zbGljZSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbiAgLmNvbG9yLW1vZGUoY29sb3IsIEBjb21tb24tdGV4dCk7XG59XG4uc2xpY2VfZHluYW1pYyB7XG4gIC5jb2xvci1tb2RlKGNvbG9yLCBAYXR0cmlidXRlLXZhbHVlKTtcbn1cblxuLnZhci1uYW1lIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tbGVmdDogMC4yNWVtO1xuICBoZWlnaHQ6IDFlbTtcbiAgbGluZS1oZWlnaHQ6IDFlbTtcbiAgbWluLXdpZHRoOiAxZW07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZm9udC1zaXplOiAwLjhlbTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICAuY29sb3ItbW9kZShjb2xvciwgQGltcG9ydGFudC10ZXh0KTtcbn1cbi52YXItbmFtZV9ob3ZlciB7XG4gIC5jb2xvci1tb2RlKGJhY2tncm91bmQtY29sb3IsIEBob3Zlci1iZyk7XG59XG4iLCIuYmFzZTpmb2N1cyB7XG4gIG91dGxpbmU6IG5vbmU7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/
@@ -0,0 +1 @@
1
+ export declare const componentDefinition: {};
@@ -0,0 +1 @@
1
+ export declare const componentDefinition: {};
@@ -1,9 +1,16 @@
1
1
  import { type protocol } from 'glass-easel-devtools-agent';
2
+ export type UserConfig = {
3
+ hideInherit: boolean;
4
+ hideVirtual: boolean;
5
+ showComposed: boolean;
6
+ };
2
7
  export declare const store: {
3
8
  selectedNodeId: protocol.NodeId;
4
9
  highlightNodeId: protocol.NodeId;
5
10
  sideBarShown: boolean;
11
+ userConfig: UserConfig;
6
12
  selectNode(n: protocol.NodeId): void;
7
13
  hideSideBar(): void;
8
14
  setHighlightNode(n: protocol.NodeId): void;
15
+ setUserConfig(userConfig: UserConfig): void;
9
16
  };
package/package.json CHANGED
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "glass-easel-devtools-panel",
3
- "version": "0.10.2",
3
+ "version": "0.12.1",
4
4
  "main": "dist/bootstrap.js",
5
5
  "devDependencies": {
6
6
  "css-loader": "^7.1.2",
7
- "glass-easel": "^0.10.2",
8
- "glass-easel-miniprogram-adapter": "^0.10.2",
9
- "glass-easel-miniprogram-webpack-plugin": "^0.10.2",
7
+ "glass-easel": ">=0.12.0",
8
+ "glass-easel-miniprogram-adapter": ">=0.12.0",
9
+ "glass-easel-miniprogram-webpack-plugin": ">=0.12.0",
10
10
  "less": "^4.2.0",
11
11
  "less-loader": "^12.2.0",
12
12
  "mini-css-extract-plugin": "^2.9.1",
13
13
  "mobx-miniprogram": "^6.12.3",
14
14
  "mobx-miniprogram-bindings": "^3.0.1",
15
- "glass-easel-devtools-agent": "0.10.2"
15
+ "glass-easel-devtools-agent": "0.12.1"
16
16
  },
17
17
  "scripts": {
18
18
  "build": "webpack --config webpack.config.js",
package/src/events.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  import { type builder } from 'glass-easel-miniprogram-adapter/dist/glass_easel_miniprogram_adapter'
2
2
  import { type protocol, setEventHandler } from './message_channel'
3
3
 
4
+ const deepCopy = <T>(x: T) => JSON.parse(JSON.stringify(x)) as T
5
+
4
6
  export class EventDispatcher<
5
7
  N extends string,
6
8
  K extends string | number,
@@ -38,7 +40,7 @@ export class EventDispatcher<
38
40
 
39
41
  dispatch(args: T) {
40
42
  const funcArr = this.listeners[args[this.keyName]]
41
- funcArr?.forEach((f) => f(args))
43
+ funcArr?.forEach((f) => f(deepCopy(args)))
42
44
  }
43
45
  }
44
46
 
@@ -1,3 +1,9 @@
1
+ interface ViewUtils {
2
+ focus(): void
3
+ }
4
+
5
+ export const viewUtils = Behavior.trait<ViewUtils>()
6
+
1
7
  export const componentDefinition = Component()
2
8
  .options({
3
9
  virtualHost: true,
@@ -5,10 +11,11 @@ export const componentDefinition = Component()
5
11
  .externalClasses(['class', 'hover-class'])
6
12
  .property('style', String)
7
13
  .property('hidden', Boolean)
14
+ .property('focusEnabled', Boolean)
8
15
  .data(() => ({
9
16
  hover: false,
10
17
  }))
11
- .init(({ self, setData, listener }) => {
18
+ .init(({ self, setData, listener, implement }) => {
12
19
  const hoverStart = listener((ev) => {
13
20
  setData({ hover: true })
14
21
  self.triggerEvent('mouseenter', ev.detail, {})
@@ -35,6 +42,31 @@ export const componentDefinition = Component()
35
42
  const touchend = listener((ev) => {
36
43
  self.triggerEvent('touchend', ev.detail, {})
37
44
  })
38
- return { hoverStart, hoverEnd, mousedown, mousemove, mouseup, touchstart, touchmove, touchend }
45
+ const bindfocus = listener(() => {
46
+ self.triggerEvent('focus', undefined, {})
47
+ })
48
+ const bindblur = listener(() => {
49
+ self.triggerEvent('blur', undefined, {})
50
+ })
51
+ implement(viewUtils, {
52
+ focus() {
53
+ const be = self._$.getShadowRoot()?.childNodes[0]?.getBackendElement()
54
+ if (be instanceof HTMLElement) {
55
+ be.focus()
56
+ }
57
+ },
58
+ })
59
+ return {
60
+ hoverStart,
61
+ hoverEnd,
62
+ mousedown,
63
+ mousemove,
64
+ mouseup,
65
+ touchstart,
66
+ touchmove,
67
+ touchend,
68
+ bindfocus,
69
+ bindblur,
70
+ }
39
71
  })
40
72
  .register()
@@ -1,6 +1,7 @@
1
1
  <div
2
- class="class {{ hover ? 'hover-class' : '' }}"
2
+ class="base class {{ hover ? 'hover-class' : '' }}"
3
3
  style="{{ hidden ? 'display: none;' : '' }}{{ style }}"
4
+ tabindex="{{ focusEnabled ? '-1' : '' }}"
4
5
  bind:mouseenter="hoverStart"
5
6
  bind:mouseleave="hoverEnd"
6
7
  bind:mousedown="mousedown"
@@ -9,6 +10,8 @@
9
10
  bind:touchstart="touchstart"
10
11
  bind:touchmove="touchmove"
11
12
  bind:touchend="touchend"
13
+ bind:focus="bindfocus"
14
+ bind:blur="bindblur"
12
15
  >
13
16
  <slot/>
14
17
  </div>
@@ -0,0 +1,3 @@
1
+ .base:focus {
2
+ outline: none;
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "component": true
3
+ }
@@ -0,0 +1,9 @@
1
+ export const componentDefinition = Component()
2
+ .property('checked', Boolean)
3
+ .init(({ listener, self }) => {
4
+ const check = listener(() => {
5
+ self.setData({ checked: !self.data.checked })
6
+ })
7
+ return { check }
8
+ })
9
+ .register()
@@ -0,0 +1,4 @@
1
+ <view class="wrapper" hover-class="hover" bind:tap="check">
2
+ <view class="check">{{ checked ? '✔' : '' }}</view>
3
+ <slot />
4
+ </view>
@@ -0,0 +1,24 @@
1
+ @import url('../common.wxss');
2
+
3
+ .wrapper {
4
+ display: block;
5
+ white-space: nowrap;
6
+ padding: 3px;
7
+ }
8
+
9
+ .hover {
10
+ .color-mode(background-color, @highlight-bg);
11
+ }
12
+
13
+ .check {
14
+ display: inline-block;
15
+ width: 1em;
16
+ height: 1em;
17
+ vertical-align: middle;
18
+ margin: 0 0.5em;
19
+ border: 1px solid transparent;
20
+ .color-mode(border-color, @important-text);
21
+ .color-mode(color, @important-text);
22
+ line-height: 1em;
23
+ text-align: center;
24
+ }
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "usingComponents": {
3
3
  "element": "/pages/tree/element",
4
- "detail": "/pages/detail/detail"
4
+ "detail": "/pages/detail/detail",
5
+ "options": "./options"
5
6
  }
6
7
  }
@@ -15,6 +15,7 @@ export const componentDefinition = Component()
15
15
  mountPoints: [] as protocol.dom.Node[],
16
16
  inSelectMode: false,
17
17
  detailWidth: 300,
18
+ showOptions: false,
18
19
  }))
19
20
  .init((ctx) => {
20
21
  const { self, data, setData, method, listener } = ctx
@@ -64,9 +65,11 @@ export const componentDefinition = Component()
64
65
  })
65
66
  setEventHandler('Overlay.inspectNodeRequested', ({ backendNodeId }) => {
66
67
  const nodePath: protocol.dom.Node[] = []
68
+ const inComposedTree = store.userConfig.showComposed
67
69
  const rec = async (backendNodeId: protocol.NodeId) => {
68
70
  const { node } = await sendRequest('DOM.describeNode', { backendNodeId, depth: 2 })
69
- if (node.parentId) await rec(node.parentId)
71
+ const parentId = inComposedTree ? node.glassEaselNonInheritComposedParentId : node.parentId
72
+ if (parentId) await rec(parentId)
70
73
  nodePath.push(node)
71
74
  }
72
75
  // eslint-disable-next-line @typescript-eslint/no-floating-promises, promise/catch-or-return
@@ -74,7 +77,7 @@ export const componentDefinition = Component()
74
77
  await rec(backendNodeId)
75
78
  const tree = self.selectComponent(`#mount-point-${nodePath[0].nodeId}`, treeCompDef)
76
79
  if (tree) {
77
- await tree.visitChildNodePath(nodePath)
80
+ await tree.visitChildNodePath(nodePath, inComposedTree)
78
81
  } else {
79
82
  error(`cannot find child node id ${nodePath[0].nodeId}`)
80
83
  }
@@ -82,6 +85,11 @@ export const componentDefinition = Component()
82
85
  })
83
86
  })
84
87
 
88
+ // handling options
89
+ const showOptions = listener(() => {
90
+ setData({ showOptions: !data.showOptions })
91
+ })
92
+
85
93
  // split drag & resize
86
94
  let startPosX: null | number = null
87
95
  const splitDragStart = listener<{ clientX: number; clientY: number; button: number }>((ev) => {
@@ -111,6 +119,7 @@ export const componentDefinition = Component()
111
119
 
112
120
  return {
113
121
  toggleSelectMode,
122
+ showOptions,
114
123
  closeSideBar,
115
124
  splitDragStart,
116
125
  splitDragMove,
@@ -8,6 +8,10 @@
8
8
  <view class="left">
9
9
  <view class="toolbar">
10
10
  <view class="tool {{ inSelectMode ? 'tool_active' : '' }}" hover-class="tool_hover" catch:tap="toggleSelectMode">Tap Select</view>
11
+ <view class="tool" hover-class="tool_hover">
12
+ <view catch:tap="showOptions">Options</view>
13
+ <options model:shown="{{ showOptions }}" />
14
+ </view>
11
15
  <view class="tool-space" />
12
16
  <view hidden="{{ !selectedNodeId || !sideBarShown }}" class="tool" hover-class="tool_hover" catch:tap="closeSideBar">▶</view>
13
17
  </view>
@@ -53,6 +53,7 @@ body {
53
53
  flex: none;
54
54
  display: inline-block;
55
55
  padding: 5px 10px;
56
+ position: relative;
56
57
  }
57
58
  .tool_hover {
58
59
  .color-mode(background-color, @hover-bg);
@@ -0,0 +1,6 @@
1
+ {
2
+ "component": true,
3
+ "usingComponents": {
4
+ "checkbox": "./checkbox"
5
+ }
6
+ }
@@ -0,0 +1,31 @@
1
+ import { componentDefinition as view, viewUtils } from '../../global_components/view/view'
2
+ import { type UserConfig, store } from '../store'
3
+
4
+ export const componentDefinition = Component()
5
+ .property('shown', Boolean)
6
+ .property('options', {
7
+ type: Object,
8
+ value: {
9
+ hideInherit: true,
10
+ hideVirtual: false,
11
+ showComposed: false,
12
+ } as UserConfig,
13
+ })
14
+ .init(({ self, observer, listener }) => {
15
+ observer('shown', (shown) => {
16
+ if (shown) {
17
+ setTimeout(() => {
18
+ const wrapper = self.selectComponent('.wrapper', view)!.traitBehavior(viewUtils)!
19
+ wrapper.focus()
20
+ }, 0)
21
+ }
22
+ })
23
+ const blur = listener(() => {
24
+ self.setData({ shown: false })
25
+ })
26
+ observer('options.**', (options) => {
27
+ store.setUserConfig(options)
28
+ })
29
+ return { blur }
30
+ })
31
+ .register()
@@ -0,0 +1,7 @@
1
+ <view class="wrapper" hidden="{{ !shown }}" focus-enabled bind:blur="blur">
2
+ <view class="list">
3
+ <checkbox model:checked="{{ options.hideInherit }}">Hide syntax virtual nodes</checkbox>
4
+ <checkbox model:checked="{{ options.hideVirtual }}">Hide all virtual nodes</checkbox>
5
+ <checkbox model:checked="{{ options.showComposed }}">Display composed tree</checkbox>
6
+ </view>
7
+ </view>
@@ -0,0 +1,15 @@
1
+ @import url('../common.wxss');
2
+
3
+ :host {
4
+ display: block;
5
+ position: absolute;
6
+ left: 0;
7
+ top: 100%;
8
+ width: auto;
9
+ }
10
+
11
+ .wrapper {
12
+ .color-mode(background-color, @secondary-bg);
13
+ border: 2px solid #888;
14
+ padding: 2px;
15
+ }
@@ -2,10 +2,21 @@ import { makeAutoObservable } from 'mobx-miniprogram'
2
2
  import { type protocol } from 'glass-easel-devtools-agent'
3
3
  import { sendRequest } from '../message_channel'
4
4
 
5
+ export type UserConfig = {
6
+ hideInherit: boolean
7
+ hideVirtual: boolean
8
+ showComposed: boolean
9
+ }
10
+
5
11
  export const store = makeAutoObservable({
6
12
  selectedNodeId: 0 as protocol.NodeId,
7
13
  highlightNodeId: 0 as protocol.NodeId,
8
14
  sideBarShown: false,
15
+ userConfig: {
16
+ hideInherit: true,
17
+ hideVirtual: false,
18
+ showComposed: false,
19
+ } as UserConfig,
9
20
 
10
21
  selectNode(n: protocol.NodeId) {
11
22
  this.selectedNodeId = n
@@ -30,4 +41,8 @@ export const store = makeAutoObservable({
30
41
  sendRequest('Overlay.hideHighlight', {})
31
42
  }
32
43
  },
44
+
45
+ setUserConfig(userConfig: UserConfig) {
46
+ this.userConfig = { ...userConfig }
47
+ },
33
48
  })
@@ -11,7 +11,7 @@ import {
11
11
  } from '../../events'
12
12
  import { sendRequest } from '../../message_channel'
13
13
  import { error, warn } from '../../utils'
14
- import { store } from '../store'
14
+ import { store, type UserConfig } from '../store'
15
15
 
16
16
  type AttributeMeta = { name: string; value: string; isProperty: boolean; updateAniTs: number }
17
17
 
@@ -19,6 +19,7 @@ const enum DisplayKind {
19
19
  Text = 0,
20
20
  Tag = 1,
21
21
  VirtualTag = 2,
22
+ InheritVirtualTag = 3,
22
23
  }
23
24
 
24
25
  export const compDef = Component()
@@ -27,6 +28,7 @@ export const compDef = Component()
27
28
  propertyPassingDeepCopy: DeepCopyKind.None,
28
29
  propertyEarlyInit: true,
29
30
  })
31
+ .property('isShadowRoot', Boolean)
30
32
  .property('nodeInfo', {
31
33
  type: Object,
32
34
  value: null as protocol.dom.Node | null,
@@ -44,6 +46,7 @@ export const compDef = Component()
44
46
  children: [] as protocol.dom.Node[],
45
47
  tagVarName: '',
46
48
  tagUpdateHighlight: false,
49
+ hideSelf: false,
47
50
  }))
48
51
  .init((ctx) => {
49
52
  // eslint-disable-next-line @typescript-eslint/unbound-method
@@ -60,7 +63,7 @@ export const compDef = Component()
60
63
  // store bindings
61
64
  initStoreBindings(ctx, {
62
65
  store,
63
- fields: ['selectedNodeId', 'highlightNodeId'],
66
+ fields: ['selectedNodeId', 'highlightNodeId', 'userConfig'],
64
67
  })
65
68
 
66
69
  // child nodes listeners
@@ -206,8 +209,9 @@ export const compDef = Component()
206
209
  } else {
207
210
  let tagName = nodeInfo?.nodeName ?? ''
208
211
  if (nodeType === protocol.dom.GlassEaselNodeType.Unknown) tagName = 'unknown'
212
+ const isInherit = nodeType === protocol.dom.GlassEaselNodeType.InheritVirtualNode
209
213
  setData({
210
- kind: DisplayKind.VirtualTag,
214
+ kind: isInherit ? DisplayKind.InheritVirtualTag : DisplayKind.VirtualTag,
211
215
  tagName,
212
216
  })
213
217
  }
@@ -228,11 +232,42 @@ export const compDef = Component()
228
232
  }
229
233
  })
230
234
 
235
+ // hide self node mode for virtual nodes
236
+ observer(
237
+ ['kind', 'isShadowRoot', 'userConfig'] as any,
238
+ (kind: DisplayKind, isShadowRoot: boolean, userConfig: UserConfig) => {
239
+ let hideSelf = false
240
+ if (userConfig) {
241
+ if (
242
+ userConfig.showComposed &&
243
+ (kind === DisplayKind.InheritVirtualTag || kind === DisplayKind.VirtualTag)
244
+ ) {
245
+ hideSelf = true
246
+ } else if (!isShadowRoot) {
247
+ if (userConfig.hideVirtual) {
248
+ if (kind === DisplayKind.InheritVirtualTag || kind === DisplayKind.VirtualTag) {
249
+ hideSelf = true
250
+ }
251
+ } else if (userConfig.hideInherit) {
252
+ if (kind === DisplayKind.InheritVirtualTag) hideSelf = true
253
+ }
254
+ }
255
+ }
256
+ if (!data.hideSelf && hideSelf) {
257
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises, promise/catch-or-return
258
+ Promise.resolve().then(updateChildren)
259
+ }
260
+ setData({ hideSelf })
261
+ },
262
+ )
263
+
231
264
  // toggle children events
232
265
  const updateChildren = async () => {
233
266
  const distributedNodes = data.nodeInfo?.distributedNodes
234
267
  if (distributedNodes) {
235
- const { nodes } = await sendRequest('DOM.getGlassEaselComposedChildren', { nodeId })
268
+ const { nodes } = await sendRequest('DOM.getGlassEaselNonInheritComposedChildren', {
269
+ nodeId,
270
+ })
236
271
  setData({ children: nodes })
237
272
  } else {
238
273
  // eslint-disable-next-line @typescript-eslint/no-floating-promises
@@ -248,7 +283,7 @@ export const compDef = Component()
248
283
  Promise.resolve().then(updateChildren)
249
284
  }
250
285
  })
251
- const visitChildNodePath = method(async (nodePath: protocol.dom.Node[]) => {
286
+ const visitChildNodePath = method(async (nodePath: protocol.dom.Node[], composed: boolean) => {
252
287
  const [node, ...childPath] = nodePath
253
288
  if (childPath.length === 0) {
254
289
  setData({ children: node.children })
@@ -259,9 +294,12 @@ export const compDef = Component()
259
294
  showChildNodes: true,
260
295
  children: node.children,
261
296
  })
297
+ if (composed && data.nodeInfo?.distributedNodes) {
298
+ await updateChildren()
299
+ }
262
300
  const childComp = self.selectComponent(`#child-${childPath[0].nodeId}`, compDef)
263
301
  if (childComp) {
264
- await childComp.visitChildNodePath(childPath)
302
+ await childComp.visitChildNodePath(childPath, composed)
265
303
  } else {
266
304
  error(`cannot find child node id ${childPath[0].nodeId}`)
267
305
  }