From 2ed924ee983bc80ee70009afd2df15aeee427619 Mon Sep 17 00:00:00 2001
From: jt <jt@activesoft.com>
Date: 星期六, 08 十月 2022 09:22:34 +0800
Subject: [PATCH] test

---
 unpackage/dist/dev/app-plus/app-service.js | 1199 ++++++++++++++++++++++++++++++++---------------------------
 1 files changed, 650 insertions(+), 549 deletions(-)

diff --git a/unpackage/dist/dev/app-plus/app-service.js b/unpackage/dist/dev/app-plus/app-service.js
index ac51854..96c3c79 100644
--- a/unpackage/dist/dev/app-plus/app-service.js
+++ b/unpackage/dist/dev/app-plus/app-service.js
@@ -2260,11 +2260,112 @@
                                           blur: _vm.onevent
                                         }
                                       })
-                                    : _vm._e()
+                                    : _vm._e(),
+                                  _c(
+                                    "div",
+                                    {
+                                      staticClass: _vm._$s(
+                                        "21-" + $30 + "-" + $31,
+                                        "sc",
+                                        "input_vallist"
+                                      ),
+                                      attrs: { _i: "21-" + $30 + "-" + $31 }
+                                    },
+                                    _vm._l(
+                                      _vm._$s(22 + "-" + $30 + "-" + $31, "f", {
+                                        forItems: _vm.inputValList
+                                      }),
+                                      function(inputval, vindex, $22, $32) {
+                                        return _c(
+                                          "ul",
+                                          {
+                                            key: _vm._$s(
+                                              22 + "-" + $30 + "-" + $31,
+                                              "f",
+                                              {
+                                                forIndex: $22,
+                                                key:
+                                                  22 +
+                                                  "-" +
+                                                  $30 +
+                                                  "-" +
+                                                  $31 +
+                                                  "-" +
+                                                  $32
+                                              }
+                                            )
+                                          },
+                                          [
+                                            _c("li", [
+                                              _c("span", [
+                                                _vm._v(
+                                                  _vm._$s(
+                                                    "24-" +
+                                                      $30 +
+                                                      "-" +
+                                                      $31 +
+                                                      "-" +
+                                                      $32,
+                                                    "t0-0",
+                                                    _vm._s(inputval.Name)
+                                                  )
+                                                )
+                                              ]),
+                                              _c(
+                                                "a",
+                                                {
+                                                  attrs: {
+                                                    _i:
+                                                      "25-" +
+                                                      $30 +
+                                                      "-" +
+                                                      $31 +
+                                                      "-" +
+                                                      $32
+                                                  },
+                                                  on: {
+                                                    click: function($event) {
+                                                      return _vm.inputValListIsDel(
+                                                        vindex
+                                                      )
+                                                    }
+                                                  }
+                                                },
+                                                [
+                                                  _c("i", {
+                                                    staticClass: _vm._$s(
+                                                      "26-" +
+                                                        $30 +
+                                                        "-" +
+                                                        $31 +
+                                                        "-" +
+                                                        $32,
+                                                      "sc",
+                                                      "ace-icon fa fa-times"
+                                                    ),
+                                                    attrs: {
+                                                      _i:
+                                                        "26-" +
+                                                        $30 +
+                                                        "-" +
+                                                        $31 +
+                                                        "-" +
+                                                        $32
+                                                    }
+                                                  })
+                                                ]
+                                              )
+                                            ])
+                                          ]
+                                        )
+                                      }
+                                    ),
+                                    0
+                                  )
                                 ])
                               : _vm._e(),
                             _vm._$s(
-                              "21-" + $30 + "-" + $31,
+                              "27-" + $30 + "-" + $31,
                               "i",
                               classattr.control_style == "宸﹀彸甯冨眬"
                             )
@@ -2273,21 +2374,21 @@
                                     "p",
                                     {
                                       staticClass: _vm._$s(
-                                        "22-" + $30 + "-" + $31,
+                                        "28-" + $30 + "-" + $31,
                                         "sc",
                                         "tx_title2"
                                       ),
                                       style: _vm._$s(
-                                        "22-" + $30 + "-" + $31,
+                                        "28-" + $30 + "-" + $31,
                                         "s",
                                         { width: classattr.title_p_wdith + "%" }
                                       ),
-                                      attrs: { _i: "22-" + $30 + "-" + $31 }
+                                      attrs: { _i: "28-" + $30 + "-" + $31 }
                                     },
                                     [
                                       _vm._v(
                                         _vm._$s(
-                                          "22-" + $30 + "-" + $31,
+                                          "28-" + $30 + "-" + $31,
                                           "t0-0",
                                           _vm._s(attr.DispName)
                                         )
@@ -2295,18 +2396,18 @@
                                     ]
                                   ),
                                   _vm._$s(
-                                    "23-" + $30 + "-" + $31,
+                                    "29-" + $30 + "-" + $31,
                                     "i",
                                     attr.Height == "1"
                                   )
                                     ? _c("input", {
                                         staticClass: _vm._$s(
-                                          "23-" + $30 + "-" + $31,
+                                          "29-" + $30 + "-" + $31,
                                           "sc",
                                           "attr_field"
                                         ),
                                         style: _vm._$s(
-                                          "23-" + $30 + "-" + $31,
+                                          "29-" + $30 + "-" + $31,
                                           "s",
                                           {
                                             width:
@@ -2321,26 +2422,26 @@
                                         ),
                                         attrs: {
                                           value: _vm._$s(
-                                            "23-" + $30 + "-" + $31,
+                                            "29-" + $30 + "-" + $31,
                                             "a-value",
                                             attr.Value
                                           ),
                                           "data-index": _vm._$s(
-                                            "23-" + $30 + "-" + $31,
+                                            "29-" + $30 + "-" + $31,
                                             "a-data-index",
                                             index
                                           ),
                                           "data-iindex": _vm._$s(
-                                            "23-" + $30 + "-" + $31,
+                                            "29-" + $30 + "-" + $31,
                                             "a-data-iindex",
                                             iindex
                                           ),
                                           disabled: _vm._$s(
-                                            "23-" + $30 + "-" + $31,
+                                            "29-" + $30 + "-" + $31,
                                             "a-disabled",
                                             attr.edit ? false : true
                                           ),
-                                          _i: "23-" + $30 + "-" + $31
+                                          _i: "29-" + $30 + "-" + $31
                                         },
                                         on: {
                                           focus: _vm.ontap,
@@ -2348,18 +2449,18 @@
                                         }
                                       })
                                     : _vm._$s(
-                                        "24-" + $30 + "-" + $31,
+                                        "30-" + $30 + "-" + $31,
                                         "e",
                                         attr.Height == "2"
                                       )
                                     ? _c("textarea", {
                                         staticClass: _vm._$s(
-                                          "24-" + $30 + "-" + $31,
+                                          "30-" + $30 + "-" + $31,
                                           "sc",
                                           "attr_field"
                                         ),
                                         style: _vm._$s(
-                                          "24-" + $30 + "-" + $31,
+                                          "30-" + $30 + "-" + $31,
                                           "s",
                                           {
                                             width:
@@ -2374,26 +2475,26 @@
                                         ),
                                         attrs: {
                                           value: _vm._$s(
-                                            "24-" + $30 + "-" + $31,
+                                            "30-" + $30 + "-" + $31,
                                             "a-value",
                                             attr.Value
                                           ),
                                           "data-index": _vm._$s(
-                                            "24-" + $30 + "-" + $31,
+                                            "30-" + $30 + "-" + $31,
                                             "a-data-index",
                                             index
                                           ),
                                           "data-iindex": _vm._$s(
-                                            "24-" + $30 + "-" + $31,
+                                            "30-" + $30 + "-" + $31,
                                             "a-data-iindex",
                                             iindex
                                           ),
                                           disabled: _vm._$s(
-                                            "24-" + $30 + "-" + $31,
+                                            "30-" + $30 + "-" + $31,
                                             "a-disabled",
                                             attr.edit ? false : true
                                           ),
-                                          _i: "24-" + $30 + "-" + $31
+                                          _i: "30-" + $30 + "-" + $31
                                         },
                                         on: {
                                           focus: _vm.ontap,
@@ -2401,18 +2502,18 @@
                                         }
                                       })
                                     : _vm._$s(
-                                        "25-" + $30 + "-" + $31,
+                                        "31-" + $30 + "-" + $31,
                                         "e",
                                         attr.Height == "3"
                                       )
                                     ? _c("textarea", {
                                         staticClass: _vm._$s(
-                                          "25-" + $30 + "-" + $31,
+                                          "31-" + $30 + "-" + $31,
                                           "sc",
                                           "attr_field"
                                         ),
                                         style: _vm._$s(
-                                          "25-" + $30 + "-" + $31,
+                                          "31-" + $30 + "-" + $31,
                                           "s",
                                           {
                                             width:
@@ -2427,26 +2528,26 @@
                                         ),
                                         attrs: {
                                           value: _vm._$s(
-                                            "25-" + $30 + "-" + $31,
+                                            "31-" + $30 + "-" + $31,
                                             "a-value",
                                             attr.Value
                                           ),
                                           "data-index": _vm._$s(
-                                            "25-" + $30 + "-" + $31,
+                                            "31-" + $30 + "-" + $31,
                                             "a-data-index",
                                             index
                                           ),
                                           "data-iindex": _vm._$s(
-                                            "25-" + $30 + "-" + $31,
+                                            "31-" + $30 + "-" + $31,
                                             "a-data-iindex",
                                             iindex
                                           ),
                                           disabled: _vm._$s(
-                                            "25-" + $30 + "-" + $31,
+                                            "31-" + $30 + "-" + $31,
                                             "a-disabled",
                                             attr.edit ? false : true
                                           ),
-                                          _i: "25-" + $30 + "-" + $31
+                                          _i: "31-" + $30 + "-" + $31
                                         },
                                         on: {
                                           focus: _vm.ontap,
@@ -2455,7 +2556,7 @@
                                       })
                                     : _vm._e(),
                                   _vm._$s(
-                                    "26-" + $30 + "-" + $31,
+                                    "32-" + $30 + "-" + $31,
                                     "i",
                                     attr.ext_button == true
                                   )
@@ -2463,18 +2564,18 @@
                                         "div",
                                         {
                                           staticClass: _vm._$s(
-                                            "26-" + $30 + "-" + $31,
+                                            "32-" + $30 + "-" + $31,
                                             "sc",
                                             "text-right2"
                                           ),
-                                          attrs: { _i: "26-" + $30 + "-" + $31 }
+                                          attrs: { _i: "32-" + $30 + "-" + $31 }
                                         },
                                         [
                                           _c(
                                             "a",
                                             {
                                               attrs: {
-                                                _i: "27-" + $30 + "-" + $31
+                                                _i: "33-" + $30 + "-" + $31
                                               },
                                               on: {
                                                 click: function($event) {
@@ -2488,12 +2589,12 @@
                                             [
                                               _c("i", {
                                                 staticClass: _vm._$s(
-                                                  "28-" + $30 + "-" + $31,
+                                                  "34-" + $30 + "-" + $31,
                                                   "sc",
                                                   "ace-icon fa fa-plus-circle"
                                                 ),
                                                 attrs: {
-                                                  _i: "28-" + $30 + "-" + $31
+                                                  _i: "34-" + $30 + "-" + $31
                                                 }
                                               })
                                             ]
@@ -2502,17 +2603,17 @@
                                       )
                                     : _vm._e(),
                                   _vm._$s(
-                                    "29-" + $30 + "-" + $31,
+                                    "35-" + $30 + "-" + $31,
                                     "i",
                                     attr.notempty == true
                                   )
                                     ? _c("i", {
                                         staticClass: _vm._$s(
-                                          "29-" + $30 + "-" + $31,
+                                          "35-" + $30 + "-" + $31,
                                           "sc",
                                           "i_tishi"
                                         ),
-                                        attrs: { _i: "29-" + $30 + "-" + $31 }
+                                        attrs: { _i: "35-" + $30 + "-" + $31 }
                                       })
                                     : _vm._e()
                                 ])
@@ -2520,106 +2621,7 @@
                           ]
                         )
                       : _vm._e(),
-                    _vm._$s("30-" + $30 + "-" + $31, "i", attr.Type == "甯冨皵鍊�)
-                      ? _c(
-                          "view",
-                          {
-                            staticClass: _vm._$s(
-                              "30-" + $30 + "-" + $31,
-                              "sc",
-                              "form-group"
-                            ),
-                            style: _vm._$s("30-" + $30 + "-" + $31, "s", {
-                              display: attr.hidden == "True" ? "none" : ""
-                            }),
-                            attrs: { _i: "30-" + $30 + "-" + $31 }
-                          },
-                          [
-                            _c(
-                              "checkbox-group",
-                              {
-                                staticClass: _vm._$s(
-                                  "31-" + $30 + "-" + $31,
-                                  "sc",
-                                  "check_rememberPwd"
-                                ),
-                                style: _vm._$s("31-" + $30 + "-" + $31, "s", {
-                                  "margin-left":
-                                    classattr.control_style == "宸﹀彸甯冨眬"
-                                      ? classattr.title_p_wdith + 2 + "%"
-                                      : "10rpx"
-                                }),
-                                attrs: {
-                                  "data-ischeck": _vm._$s(
-                                    "31-" + $30 + "-" + $31,
-                                    "a-data-ischeck",
-                                    attr.Value
-                                  ),
-                                  "data-index": _vm._$s(
-                                    "31-" + $30 + "-" + $31,
-                                    "a-data-index",
-                                    index
-                                  ),
-                                  "data-iindex": _vm._$s(
-                                    "31-" + $30 + "-" + $31,
-                                    "a-data-iindex",
-                                    iindex
-                                  ),
-                                  _i: "31-" + $30 + "-" + $31
-                                },
-                                on: { change: _vm.oncheck }
-                              },
-                              [
-                                _c("label", [
-                                  _c("checkbox", {
-                                    attrs: {
-                                      value: _vm._$s(
-                                        "33-" + $30 + "-" + $31,
-                                        "a-value",
-                                        attr.Value
-                                      ),
-                                      checked: _vm._$s(
-                                        "33-" + $30 + "-" + $31,
-                                        "a-checked",
-                                        attr.Value
-                                      ),
-                                      _i: "33-" + $30 + "-" + $31
-                                    }
-                                  }),
-                                  _c("text", [
-                                    _vm._v(
-                                      _vm._$s(
-                                        "34-" + $30 + "-" + $31,
-                                        "t0-0",
-                                        _vm._s(attr.DispName)
-                                      )
-                                    ),
-                                    _vm._$s(
-                                      "35-" + $30 + "-" + $31,
-                                      "i",
-                                      attr.notempty == true
-                                    )
-                                      ? _c("i", {
-                                          staticClass: _vm._$s(
-                                            "35-" + $30 + "-" + $31,
-                                            "sc",
-                                            "i_tishi"
-                                          ),
-                                          attrs: { _i: "35-" + $30 + "-" + $31 }
-                                        })
-                                      : _vm._e()
-                                  ])
-                                ])
-                              ]
-                            )
-                          ]
-                        )
-                      : _vm._e(),
-                    _vm._$s(
-                      "36-" + $30 + "-" + $31,
-                      "i",
-                      attr.Type == "鏃ユ湡" || attr.Type == "鏃堕棿"
-                    )
+                    _vm._$s("36-" + $30 + "-" + $31, "i", attr.Type == "甯冨皵鍊�)
                       ? _c(
                           "view",
                           {
@@ -2634,8 +2636,107 @@
                             attrs: { _i: "36-" + $30 + "-" + $31 }
                           },
                           [
+                            _c(
+                              "checkbox-group",
+                              {
+                                staticClass: _vm._$s(
+                                  "37-" + $30 + "-" + $31,
+                                  "sc",
+                                  "check_rememberPwd"
+                                ),
+                                style: _vm._$s("37-" + $30 + "-" + $31, "s", {
+                                  "margin-left":
+                                    classattr.control_style == "宸﹀彸甯冨眬"
+                                      ? classattr.title_p_wdith + 2 + "%"
+                                      : "10rpx"
+                                }),
+                                attrs: {
+                                  "data-ischeck": _vm._$s(
+                                    "37-" + $30 + "-" + $31,
+                                    "a-data-ischeck",
+                                    attr.Value
+                                  ),
+                                  "data-index": _vm._$s(
+                                    "37-" + $30 + "-" + $31,
+                                    "a-data-index",
+                                    index
+                                  ),
+                                  "data-iindex": _vm._$s(
+                                    "37-" + $30 + "-" + $31,
+                                    "a-data-iindex",
+                                    iindex
+                                  ),
+                                  _i: "37-" + $30 + "-" + $31
+                                },
+                                on: { change: _vm.oncheck }
+                              },
+                              [
+                                _c("label", [
+                                  _c("checkbox", {
+                                    attrs: {
+                                      value: _vm._$s(
+                                        "39-" + $30 + "-" + $31,
+                                        "a-value",
+                                        attr.Value
+                                      ),
+                                      checked: _vm._$s(
+                                        "39-" + $30 + "-" + $31,
+                                        "a-checked",
+                                        attr.Value
+                                      ),
+                                      _i: "39-" + $30 + "-" + $31
+                                    }
+                                  }),
+                                  _c("text", [
+                                    _vm._v(
+                                      _vm._$s(
+                                        "40-" + $30 + "-" + $31,
+                                        "t0-0",
+                                        _vm._s(attr.DispName)
+                                      )
+                                    ),
+                                    _vm._$s(
+                                      "41-" + $30 + "-" + $31,
+                                      "i",
+                                      attr.notempty == true
+                                    )
+                                      ? _c("i", {
+                                          staticClass: _vm._$s(
+                                            "41-" + $30 + "-" + $31,
+                                            "sc",
+                                            "i_tishi"
+                                          ),
+                                          attrs: { _i: "41-" + $30 + "-" + $31 }
+                                        })
+                                      : _vm._e()
+                                  ])
+                                ])
+                              ]
+                            )
+                          ]
+                        )
+                      : _vm._e(),
+                    _vm._$s(
+                      "42-" + $30 + "-" + $31,
+                      "i",
+                      attr.Type == "鏃ユ湡" || attr.Type == "鏃堕棿"
+                    )
+                      ? _c(
+                          "view",
+                          {
+                            staticClass: _vm._$s(
+                              "42-" + $30 + "-" + $31,
+                              "sc",
+                              "form-group"
+                            ),
+                            style: _vm._$s("42-" + $30 + "-" + $31, "s", {
+                              display: attr.hidden == "True" ? "none" : ""
+                            }),
+                            attrs: { _i: "42-" + $30 + "-" + $31 }
+                          },
+                          [
                             _vm._$s(
-                              "37-" + $30 + "-" + $31,
+                              "43-" + $30 + "-" + $31,
                               "i",
                               classattr.control_style == "涓婁笅甯冨眬"
                             )
@@ -2644,38 +2745,38 @@
                                     "text",
                                     {
                                       staticClass: _vm._$s(
-                                        "38-" + $30 + "-" + $31,
+                                        "44-" + $30 + "-" + $31,
                                         "sc",
                                         "tx_title"
                                       ),
                                       style: _vm._$s(
-                                        "38-" + $30 + "-" + $31,
+                                        "44-" + $30 + "-" + $31,
                                         "s",
                                         { width: classattr.title_p_wdith + "%" }
                                       ),
-                                      attrs: { _i: "38-" + $30 + "-" + $31 }
+                                      attrs: { _i: "44-" + $30 + "-" + $31 }
                                     },
                                     [
                                       _vm._v(
                                         _vm._$s(
-                                          "38-" + $30 + "-" + $31,
+                                          "44-" + $30 + "-" + $31,
                                           "t0-0",
                                           _vm._s(attr.DispName)
                                         )
                                       ),
                                       _vm._$s(
-                                        "39-" + $30 + "-" + $31,
+                                        "45-" + $30 + "-" + $31,
                                         "i",
                                         attr.notempty == true
                                       )
                                         ? _c("i", {
                                             staticClass: _vm._$s(
-                                              "39-" + $30 + "-" + $31,
+                                              "45-" + $30 + "-" + $31,
                                               "sc",
                                               "i_tishi"
                                             ),
                                             attrs: {
-                                              _i: "39-" + $30 + "-" + $31
+                                              _i: "45-" + $30 + "-" + $31
                                             }
                                           })
                                         : _vm._e()
@@ -2685,32 +2786,32 @@
                                     "picker",
                                     {
                                       staticClass: _vm._$s(
-                                        "40-" + $30 + "-" + $31,
+                                        "46-" + $30 + "-" + $31,
                                         "sc",
                                         "date_iput"
                                       ),
                                       style: _vm._$s(
-                                        "40-" + $30 + "-" + $31,
+                                        "46-" + $30 + "-" + $31,
                                         "s",
                                         { width: attr.Width }
                                       ),
                                       attrs: {
                                         value: _vm._$s(
-                                          "40-" + $30 + "-" + $31,
+                                          "46-" + $30 + "-" + $31,
                                           "a-value",
                                           attr.Value
                                         ),
                                         "data-index": _vm._$s(
-                                          "40-" + $30 + "-" + $31,
+                                          "46-" + $30 + "-" + $31,
                                           "a-data-index",
                                           index
                                         ),
                                         "data-iindex": _vm._$s(
-                                          "40-" + $30 + "-" + $31,
+                                          "46-" + $30 + "-" + $31,
                                           "a-data-iindex",
                                           iindex
                                         ),
-                                        _i: "40-" + $30 + "-" + $31
+                                        _i: "46-" + $30 + "-" + $31
                                       },
                                       on: { change: _vm.ondateTime }
                                     },
@@ -2719,16 +2820,16 @@
                                         "view",
                                         {
                                           staticClass: _vm._$s(
-                                            "41-" + $30 + "-" + $31,
+                                            "47-" + $30 + "-" + $31,
                                             "sc",
                                             "picker"
                                           ),
-                                          attrs: { _i: "41-" + $30 + "-" + $31 }
+                                          attrs: { _i: "47-" + $30 + "-" + $31 }
                                         },
                                         [
                                           _vm._v(
                                             _vm._$s(
-                                              "41-" + $30 + "-" + $31,
+                                              "47-" + $30 + "-" + $31,
                                               "t0-0",
                                               _vm._s(attr.Value)
                                             )
@@ -2740,7 +2841,7 @@
                                 ])
                               : _vm._e(),
                             _vm._$s(
-                              "42-" + $30 + "-" + $31,
+                              "48-" + $30 + "-" + $31,
                               "i",
                               classattr.control_style == "宸﹀彸甯冨眬"
                             )
@@ -2749,21 +2850,21 @@
                                     "p",
                                     {
                                       staticClass: _vm._$s(
-                                        "43-" + $30 + "-" + $31,
+                                        "49-" + $30 + "-" + $31,
                                         "sc",
                                         "tx_title2"
                                       ),
                                       style: _vm._$s(
-                                        "43-" + $30 + "-" + $31,
+                                        "49-" + $30 + "-" + $31,
                                         "s",
                                         { width: classattr.title_p_wdith + "%" }
                                       ),
-                                      attrs: { _i: "43-" + $30 + "-" + $31 }
+                                      attrs: { _i: "49-" + $30 + "-" + $31 }
                                     },
                                     [
                                       _vm._v(
                                         _vm._$s(
-                                          "43-" + $30 + "-" + $31,
+                                          "49-" + $30 + "-" + $31,
                                           "t0-0",
                                           _vm._s(attr.DispName)
                                         )
@@ -2774,12 +2875,12 @@
                                     "picker",
                                     {
                                       staticClass: _vm._$s(
-                                        "44-" + $30 + "-" + $31,
+                                        "50-" + $30 + "-" + $31,
                                         "sc",
                                         "date_iput attr_field"
                                       ),
                                       style: _vm._$s(
-                                        "44-" + $30 + "-" + $31,
+                                        "50-" + $30 + "-" + $31,
                                         "s",
                                         {
                                           width:
@@ -2791,21 +2892,21 @@
                                       ),
                                       attrs: {
                                         value: _vm._$s(
-                                          "44-" + $30 + "-" + $31,
+                                          "50-" + $30 + "-" + $31,
                                           "a-value",
                                           attr.Value
                                         ),
                                         "data-index": _vm._$s(
-                                          "44-" + $30 + "-" + $31,
+                                          "50-" + $30 + "-" + $31,
                                           "a-data-index",
                                           index
                                         ),
                                         "data-iindex": _vm._$s(
-                                          "44-" + $30 + "-" + $31,
+                                          "50-" + $30 + "-" + $31,
                                           "a-data-iindex",
                                           iindex
                                         ),
-                                        _i: "44-" + $30 + "-" + $31
+                                        _i: "50-" + $30 + "-" + $31
                                       },
                                       on: { change: _vm.ondateTime }
                                     },
@@ -2814,16 +2915,16 @@
                                         "view",
                                         {
                                           staticClass: _vm._$s(
-                                            "45-" + $30 + "-" + $31,
+                                            "51-" + $30 + "-" + $31,
                                             "sc",
                                             "picker"
                                           ),
-                                          attrs: { _i: "45-" + $30 + "-" + $31 }
+                                          attrs: { _i: "51-" + $30 + "-" + $31 }
                                         },
                                         [
                                           _vm._v(
                                             _vm._$s(
-                                              "45-" + $30 + "-" + $31,
+                                              "51-" + $30 + "-" + $31,
                                               "t0-0",
                                               _vm._s(attr.Value)
                                             )
@@ -2833,17 +2934,17 @@
                                     ]
                                   ),
                                   _vm._$s(
-                                    "46-" + $30 + "-" + $31,
+                                    "52-" + $30 + "-" + $31,
                                     "i",
                                     attr.notempty == true
                                   )
                                     ? _c("i", {
                                         staticClass: _vm._$s(
-                                          "46-" + $30 + "-" + $31,
+                                          "52-" + $30 + "-" + $31,
                                           "sc",
                                           "i_tishi"
                                         ),
-                                        attrs: { _i: "46-" + $30 + "-" + $31 }
+                                        attrs: { _i: "52-" + $30 + "-" + $31 }
                                       })
                                     : _vm._e()
                                 ])
@@ -2852,7 +2953,7 @@
                         )
                       : _vm._e(),
                     _vm._$s(
-                      "47-" + $30 + "-" + $31,
+                      "53-" + $30 + "-" + $31,
                       "i",
                       attr.Type == "瀛楀吀" || attr.Type == "瀛楀吀-瀛楃涓�
                     )
@@ -2860,18 +2961,18 @@
                           "view",
                           {
                             staticClass: _vm._$s(
-                              "47-" + $30 + "-" + $31,
+                              "53-" + $30 + "-" + $31,
                               "sc",
                               "form-group"
                             ),
-                            style: _vm._$s("47-" + $30 + "-" + $31, "s", {
+                            style: _vm._$s("53-" + $30 + "-" + $31, "s", {
                               display: attr.hidden == "True" ? "none" : ""
                             }),
-                            attrs: { _i: "47-" + $30 + "-" + $31 }
+                            attrs: { _i: "53-" + $30 + "-" + $31 }
                           },
                           [
                             _vm._$s(
-                              "48-" + $30 + "-" + $31,
+                              "54-" + $30 + "-" + $31,
                               "i",
                               classattr.control_style == "涓婁笅甯冨眬"
                             )
@@ -2882,151 +2983,9 @@
                                       "text",
                                       {
                                         staticClass: _vm._$s(
-                                          "49-" + $30 + "-" + $31,
+                                          "55-" + $30 + "-" + $31,
                                           "sc",
                                           "tx_title"
-                                        ),
-                                        attrs: { _i: "49-" + $30 + "-" + $31 }
-                                      },
-                                      [
-                                        _vm._v(
-                                          _vm._$s(
-                                            "49-" + $30 + "-" + $31,
-                                            "t0-0",
-                                            _vm._s(attr.DispName)
-                                          )
-                                        ),
-                                        _vm._$s(
-                                          "50-" + $30 + "-" + $31,
-                                          "i",
-                                          attr.notempty == true
-                                        )
-                                          ? _c("i", {
-                                              staticClass: _vm._$s(
-                                                "50-" + $30 + "-" + $31,
-                                                "sc",
-                                                "i_tishi"
-                                              ),
-                                              attrs: {
-                                                _i: "50-" + $30 + "-" + $31
-                                              }
-                                            })
-                                          : _vm._e()
-                                      ]
-                                    ),
-                                    _vm._$s(
-                                      "51-" + $30 + "-" + $31,
-                                      "i",
-                                      attr.select == false
-                                    )
-                                      ? _c(
-                                          "picker",
-                                          {
-                                            staticClass: _vm._$s(
-                                              "51-" + $30 + "-" + $31,
-                                              "sc",
-                                              "section_iput"
-                                            ),
-                                            style: _vm._$s(
-                                              "51-" + $30 + "-" + $31,
-                                              "s",
-                                              { width: attr.Width }
-                                            ),
-                                            attrs: {
-                                              range: _vm._$s(
-                                                "51-" + $30 + "-" + $31,
-                                                "a-range",
-                                                attr.dictitem
-                                              ),
-                                              "data-index": _vm._$s(
-                                                "51-" + $30 + "-" + $31,
-                                                "a-data-index",
-                                                index
-                                              ),
-                                              "data-iindex": _vm._$s(
-                                                "51-" + $30 + "-" + $31,
-                                                "a-data-iindex",
-                                                iindex
-                                              ),
-                                              disabled: _vm._$s(
-                                                "51-" + $30 + "-" + $31,
-                                                "a-disabled",
-                                                attr.edit ? false : true
-                                              ),
-                                              _i: "51-" + $30 + "-" + $31
-                                            },
-                                            on: { change: _vm.onchange }
-                                          },
-                                          [
-                                            _c("label", [
-                                              _vm._v(
-                                                _vm._$s(
-                                                  "52-" + $30 + "-" + $31,
-                                                  "t0-0",
-                                                  _vm._s(attr.Value)
-                                                )
-                                              )
-                                            ])
-                                          ]
-                                        )
-                                      : _vm._$s(
-                                          "53-" + $30 + "-" + $31,
-                                          "e",
-                                          attr.select == true
-                                        )
-                                      ? _c("select-cy", {
-                                          style: _vm._$s(
-                                            "53-" + $30 + "-" + $31,
-                                            "s",
-                                            { width: attr.Width }
-                                          ),
-                                          attrs: {
-                                            value: attr.Value,
-                                            name: attr.Name,
-                                            options: attr.dictitem,
-                                            showClearIcon: "true",
-                                            "data-index": _vm._$s(
-                                              "53-" + $30 + "-" + $31,
-                                              "a-data-index",
-                                              index
-                                            ),
-                                            "data-iindex": _vm._$s(
-                                              "53-" + $30 + "-" + $31,
-                                              "a-data-iindex",
-                                              iindex
-                                            ),
-                                            disabled: attr.edit ? false : true,
-                                            _i: "53-" + $30 + "-" + $31
-                                          },
-                                          on: { change: _vm.onchange2 }
-                                        })
-                                      : _vm._e()
-                                  ],
-                                  1
-                                )
-                              : _vm._e(),
-                            _vm._$s(
-                              "54-" + $30 + "-" + $31,
-                              "i",
-                              classattr.control_style == "宸﹀彸甯冨眬"
-                            )
-                              ? _c(
-                                  "view",
-                                  [
-                                    _c(
-                                      "p",
-                                      {
-                                        staticClass: _vm._$s(
-                                          "55-" + $30 + "-" + $31,
-                                          "sc",
-                                          "tx_title2"
-                                        ),
-                                        style: _vm._$s(
-                                          "55-" + $30 + "-" + $31,
-                                          "s",
-                                          {
-                                            width: classattr.title_p_wdith + "%"
-                                          }
                                         ),
                                         attrs: { _i: "55-" + $30 + "-" + $31 }
                                       },
@@ -3037,11 +2996,27 @@
                                             "t0-0",
                                             _vm._s(attr.DispName)
                                           )
+                                        ),
+                                        _vm._$s(
+                                          "56-" + $30 + "-" + $31,
+                                          "i",
+                                          attr.notempty == true
                                         )
+                                          ? _c("i", {
+                                              staticClass: _vm._$s(
+                                                "56-" + $30 + "-" + $31,
+                                                "sc",
+                                                "i_tishi"
+                                              ),
+                                              attrs: {
+                                                _i: "56-" + $30 + "-" + $31
+                                              }
+                                            })
+                                          : _vm._e()
                                       ]
                                     ),
                                     _vm._$s(
-                                      "56-" + $30 + "-" + $31,
+                                      "57-" + $30 + "-" + $31,
                                       "i",
                                       attr.select == false
                                     )
@@ -3049,12 +3024,138 @@
                                           "picker",
                                           {
                                             staticClass: _vm._$s(
-                                              "56-" + $30 + "-" + $31,
+                                              "57-" + $30 + "-" + $31,
+                                              "sc",
+                                              "section_iput"
+                                            ),
+                                            style: _vm._$s(
+                                              "57-" + $30 + "-" + $31,
+                                              "s",
+                                              { width: attr.Width }
+                                            ),
+                                            attrs: {
+                                              range: _vm._$s(
+                                                "57-" + $30 + "-" + $31,
+                                                "a-range",
+                                                attr.dictitem
+                                              ),
+                                              "data-index": _vm._$s(
+                                                "57-" + $30 + "-" + $31,
+                                                "a-data-index",
+                                                index
+                                              ),
+                                              "data-iindex": _vm._$s(
+                                                "57-" + $30 + "-" + $31,
+                                                "a-data-iindex",
+                                                iindex
+                                              ),
+                                              disabled: _vm._$s(
+                                                "57-" + $30 + "-" + $31,
+                                                "a-disabled",
+                                                attr.edit ? false : true
+                                              ),
+                                              _i: "57-" + $30 + "-" + $31
+                                            },
+                                            on: { change: _vm.onchange }
+                                          },
+                                          [
+                                            _c("label", [
+                                              _vm._v(
+                                                _vm._$s(
+                                                  "58-" + $30 + "-" + $31,
+                                                  "t0-0",
+                                                  _vm._s(attr.Value)
+                                                )
+                                              )
+                                            ])
+                                          ]
+                                        )
+                                      : _vm._$s(
+                                          "59-" + $30 + "-" + $31,
+                                          "e",
+                                          attr.select == true
+                                        )
+                                      ? _c("select-cy", {
+                                          style: _vm._$s(
+                                            "59-" + $30 + "-" + $31,
+                                            "s",
+                                            { width: attr.Width }
+                                          ),
+                                          attrs: {
+                                            value: attr.Value,
+                                            name: attr.Name,
+                                            options: attr.dictitem,
+                                            showClearIcon: "true",
+                                            "data-index": _vm._$s(
+                                              "59-" + $30 + "-" + $31,
+                                              "a-data-index",
+                                              index
+                                            ),
+                                            "data-iindex": _vm._$s(
+                                              "59-" + $30 + "-" + $31,
+                                              "a-data-iindex",
+                                              iindex
+                                            ),
+                                            disabled: attr.edit ? false : true,
+                                            _i: "59-" + $30 + "-" + $31
+                                          },
+                                          on: { change: _vm.onchange2 }
+                                        })
+                                      : _vm._e()
+                                  ],
+                                  1
+                                )
+                              : _vm._e(),
+                            _vm._$s(
+                              "60-" + $30 + "-" + $31,
+                              "i",
+                              classattr.control_style == "宸﹀彸甯冨眬"
+                            )
+                              ? _c(
+                                  "view",
+                                  [
+                                    _c(
+                                      "p",
+                                      {
+                                        staticClass: _vm._$s(
+                                          "61-" + $30 + "-" + $31,
+                                          "sc",
+                                          "tx_title2"
+                                        ),
+                                        style: _vm._$s(
+                                          "61-" + $30 + "-" + $31,
+                                          "s",
+                                          {
+                                            width: classattr.title_p_wdith + "%"
+                                          }
+                                        ),
+                                        attrs: { _i: "61-" + $30 + "-" + $31 }
+                                      },
+                                      [
+                                        _vm._v(
+                                          _vm._$s(
+                                            "61-" + $30 + "-" + $31,
+                                            "t0-0",
+                                            _vm._s(attr.DispName)
+                                          )
+                                        )
+                                      ]
+                                    ),
+                                    _vm._$s(
+                                      "62-" + $30 + "-" + $31,
+                                      "i",
+                                      attr.select == false
+                                    )
+                                      ? _c(
+                                          "picker",
+                                          {
+                                            staticClass: _vm._$s(
+                                              "62-" + $30 + "-" + $31,
                                               "sc",
                                               "section_iput attr_field"
                                             ),
                                             style: _vm._$s(
-                                              "56-" + $30 + "-" + $31,
+                                              "62-" + $30 + "-" + $31,
                                               "s",
                                               {
                                                 width:
@@ -3068,21 +3169,21 @@
                                             ),
                                             attrs: {
                                               range: _vm._$s(
-                                                "56-" + $30 + "-" + $31,
+                                                "62-" + $30 + "-" + $31,
                                                 "a-range",
                                                 attr.dictitem
                                               ),
                                               "data-index": _vm._$s(
-                                                "56-" + $30 + "-" + $31,
+                                                "62-" + $30 + "-" + $31,
                                                 "a-data-index",
                                                 index
                                               ),
                                               "data-iindex": _vm._$s(
-                                                "56-" + $30 + "-" + $31,
+                                                "62-" + $30 + "-" + $31,
                                                 "a-data-iindex",
                                                 iindex
                                               ),
-                                              _i: "56-" + $30 + "-" + $31
+                                              _i: "62-" + $30 + "-" + $31
                                             },
                                             on: { change: _vm.onchange }
                                           },
@@ -3090,7 +3191,7 @@
                                             _c("label", [
                                               _vm._v(
                                                 _vm._$s(
-                                                  "57-" + $30 + "-" + $31,
+                                                  "63-" + $30 + "-" + $31,
                                                   "t0-0",
                                                   _vm._s(attr.Value)
                                                 )
@@ -3099,13 +3200,13 @@
                                           ]
                                         )
                                       : _vm._$s(
-                                          "58-" + $30 + "-" + $31,
+                                          "64-" + $30 + "-" + $31,
                                           "e",
                                           attr.select == true
                                         )
                                       ? _c("select-cy", {
                                           style: _vm._$s(
-                                            "58-" + $30 + "-" + $31,
+                                            "64-" + $30 + "-" + $31,
                                             "s",
                                             { width: attr.Width }
                                           ),
@@ -3115,32 +3216,32 @@
                                             options: attr.dictitem,
                                             showClearIcon: "true",
                                             "data-index": _vm._$s(
-                                              "58-" + $30 + "-" + $31,
+                                              "64-" + $30 + "-" + $31,
                                               "a-data-index",
                                               index
                                             ),
                                             "data-iindex": _vm._$s(
-                                              "58-" + $30 + "-" + $31,
+                                              "64-" + $30 + "-" + $31,
                                               "a-data-iindex",
                                               iindex
                                             ),
-                                            _i: "58-" + $30 + "-" + $31
+                                            _i: "64-" + $30 + "-" + $31
                                           },
                                           on: { change: _vm.onchange2 }
                                         })
                                       : _vm._e(),
                                     _vm._$s(
-                                      "59-" + $30 + "-" + $31,
+                                      "65-" + $30 + "-" + $31,
                                       "i",
                                       attr.notempty == true
                                     )
                                       ? _c("i", {
                                           staticClass: _vm._$s(
-                                            "59-" + $30 + "-" + $31,
+                                            "65-" + $30 + "-" + $31,
                                             "sc",
                                             "i_tishi"
                                           ),
-                                          attrs: { _i: "59-" + $30 + "-" + $31 }
+                                          attrs: { _i: "65-" + $30 + "-" + $31 }
                                         })
                                       : _vm._e()
                                   ],
@@ -3151,7 +3252,7 @@
                         )
                       : _vm._e(),
                     _vm._$s(
-                      "60-" + $30 + "-" + $31,
+                      "66-" + $30 + "-" + $31,
                       "i",
                       attr.Type == "寮曠敤瀵硅薄(鍗曚釜)" ||
                         attr.Type == "寮曠敤瀵硅薄(澶氫釜)"
@@ -3160,18 +3261,18 @@
                           "view",
                           {
                             staticClass: _vm._$s(
-                              "60-" + $30 + "-" + $31,
+                              "66-" + $30 + "-" + $31,
                               "sc",
                               "form-group"
                             ),
-                            style: _vm._$s("60-" + $30 + "-" + $31, "s", {
+                            style: _vm._$s("66-" + $30 + "-" + $31, "s", {
                               display: attr.hidden == "True" ? "none" : ""
                             }),
-                            attrs: { _i: "60-" + $30 + "-" + $31 }
+                            attrs: { _i: "66-" + $30 + "-" + $31 }
                           },
                           [
                             _vm._$s(
-                              "61-" + $30 + "-" + $31,
+                              "67-" + $30 + "-" + $31,
                               "i",
                               classattr.control_style == "涓婁笅甯冨眬"
                             )
@@ -3180,40 +3281,40 @@
                                     "text",
                                     {
                                       staticClass: _vm._$s(
-                                        "62-" + $30 + "-" + $31,
+                                        "68-" + $30 + "-" + $31,
                                         "sc",
                                         "tx_title"
                                       ),
-                                      attrs: { _i: "62-" + $30 + "-" + $31 }
+                                      attrs: { _i: "68-" + $30 + "-" + $31 }
                                     },
                                     [
                                       _vm._v(
                                         _vm._$s(
-                                          "62-" + $30 + "-" + $31,
+                                          "68-" + $30 + "-" + $31,
                                           "t0-0",
                                           _vm._s(attr.DispName)
                                         )
                                       ),
                                       _vm._$s(
-                                        "63-" + $30 + "-" + $31,
+                                        "69-" + $30 + "-" + $31,
                                         "i",
                                         attr.notempty == true
                                       )
                                         ? _c("i", {
                                             staticClass: _vm._$s(
-                                              "63-" + $30 + "-" + $31,
+                                              "69-" + $30 + "-" + $31,
                                               "sc",
                                               "i_tishi"
                                             ),
                                             attrs: {
-                                              _i: "63-" + $30 + "-" + $31
+                                              _i: "69-" + $30 + "-" + $31
                                             }
                                           })
                                         : _vm._e()
                                     ]
                                   ),
                                   _vm._$s(
-                                    "64-" + $30 + "-" + $31,
+                                    "70-" + $30 + "-" + $31,
                                     "i",
                                     attr.Type == "寮曠敤瀵硅薄(鍗曚釜)"
                                   )
@@ -3221,11 +3322,11 @@
                                         "div",
                                         {
                                           staticClass: _vm._$s(
-                                            "64-" + $30 + "-" + $31,
+                                            "70-" + $30 + "-" + $31,
                                             "sc",
                                             "text-right"
                                           ),
-                                          attrs: { _i: "64-" + $30 + "-" + $31 }
+                                          attrs: { _i: "70-" + $30 + "-" + $31 }
                                         },
                                         [
                                           _c(
@@ -3233,16 +3334,16 @@
                                             {
                                               attrs: {
                                                 "data-classid": _vm._$s(
-                                                  "65-" + $30 + "-" + $31,
+                                                  "71-" + $30 + "-" + $31,
                                                   "a-data-classid",
                                                   attr.RelCls.split("|")[0]
                                                 ),
                                                 "data-classname": _vm._$s(
-                                                  "65-" + $30 + "-" + $31,
+                                                  "71-" + $30 + "-" + $31,
                                                   "a-data-classname",
                                                   attr.RelCls.split("|")[1]
                                                 ),
-                                                _i: "65-" + $30 + "-" + $31
+                                                _i: "71-" + $30 + "-" + $31
                                               },
                                               on: {
                                                 click: _vm.classAttr_AddRef
@@ -3251,12 +3352,12 @@
                                             [
                                               _c("i", {
                                                 staticClass: _vm._$s(
-                                                  "66-" + $30 + "-" + $31,
+                                                  "72-" + $30 + "-" + $31,
                                                   "sc",
                                                   "ace-icon fa fa-plus-circle"
                                                 ),
                                                 attrs: {
-                                                  _i: "66-" + $30 + "-" + $31
+                                                  _i: "72-" + $30 + "-" + $31
                                                 }
                                               })
                                             ]
@@ -3265,7 +3366,7 @@
                                       )
                                     : _vm._e(),
                                   _vm._$s(
-                                    "67-" + $30 + "-" + $31,
+                                    "73-" + $30 + "-" + $31,
                                     "i",
                                     attr.Type == "寮曠敤瀵硅薄(澶氫釜)"
                                   )
@@ -3273,38 +3374,38 @@
                                         "div",
                                         {
                                           staticClass: _vm._$s(
-                                            "67-" + $30 + "-" + $31,
+                                            "73-" + $30 + "-" + $31,
                                             "sc",
                                             "text-right"
                                           ),
-                                          attrs: { _i: "67-" + $30 + "-" + $31 }
+                                          attrs: { _i: "73-" + $30 + "-" + $31 }
                                         },
                                         [
                                           _c(
                                             "picker",
                                             {
                                               staticClass: _vm._$s(
-                                                "68-" + $30 + "-" + $31,
+                                                "74-" + $30 + "-" + $31,
                                                 "sc",
                                                 "select"
                                               ),
                                               attrs: {
                                                 range: _vm._$s(
-                                                  "68-" + $30 + "-" + $31,
+                                                  "74-" + $30 + "-" + $31,
                                                   "a-range",
                                                   attr.RelClsList
                                                 ),
                                                 "data-index": _vm._$s(
-                                                  "68-" + $30 + "-" + $31,
+                                                  "74-" + $30 + "-" + $31,
                                                   "a-data-index",
                                                   index
                                                 ),
                                                 "data-iindex": _vm._$s(
-                                                  "68-" + $30 + "-" + $31,
+                                                  "74-" + $30 + "-" + $31,
                                                   "a-data-iindex",
                                                   iindex
                                                 ),
-                                                _i: "68-" + $30 + "-" + $31
+                                                _i: "74-" + $30 + "-" + $31
                                               },
                                               on: {
                                                 change: _vm.classAttr_AddRef
@@ -3314,7 +3415,7 @@
                                               _c("label", [
                                                 _vm._v(
                                                   _vm._$s(
-                                                    "69-" + $30 + "-" + $31,
+                                                    "75-" + $30 + "-" + $31,
                                                     "t0-0",
                                                     _vm._s(attr.Value)
                                                   )
@@ -3326,23 +3427,23 @@
                                             "a",
                                             {
                                               staticClass: _vm._$s(
-                                                "70-" + $30 + "-" + $31,
+                                                "76-" + $30 + "-" + $31,
                                                 "sc",
                                                 "class_attr_add_ref"
                                               ),
                                               attrs: {
-                                                _i: "70-" + $30 + "-" + $31
+                                                _i: "76-" + $30 + "-" + $31
                                               }
                                             },
                                             [
                                               _c("i", {
                                                 staticClass: _vm._$s(
-                                                  "71-" + $30 + "-" + $31,
+                                                  "77-" + $30 + "-" + $31,
                                                   "sc",
                                                   "ace-icon fa fa-plus-circle"
                                                 ),
                                                 attrs: {
-                                                  _i: "71-" + $30 + "-" + $31
+                                                  _i: "77-" + $30 + "-" + $31
                                                 }
                                               })
                                             ]
@@ -3352,28 +3453,28 @@
                                     : _vm._e(),
                                   _c("input", {
                                     style: _vm._$s(
-                                      "72-" + $30 + "-" + $31,
+                                      "78-" + $30 + "-" + $31,
                                       "s",
                                       { width: attr.Width }
                                     ),
                                     attrs: {
                                       "data-index": _vm._$s(
-                                        "72-" + $30 + "-" + $31,
+                                        "78-" + $30 + "-" + $31,
                                         "a-data-index",
                                         index
                                       ),
                                       "data-iindex": _vm._$s(
-                                        "72-" + $30 + "-" + $31,
+                                        "78-" + $30 + "-" + $31,
                                         "a-data-iindex",
                                         iindex
                                       ),
-                                      _i: "72-" + $30 + "-" + $31
+                                      _i: "78-" + $30 + "-" + $31
                                     }
                                   })
                                 ])
                               : _vm._e(),
                             _vm._$s(
-                              "73-" + $30 + "-" + $31,
+                              "79-" + $30 + "-" + $31,
                               "i",
                               classattr.control_style == "宸﹀彸甯冨眬"
                             )
@@ -3382,21 +3483,21 @@
                                     "p",
                                     {
                                       staticClass: _vm._$s(
-                                        "74-" + $30 + "-" + $31,
+                                        "80-" + $30 + "-" + $31,
                                         "sc",
                                         "tx_title2"
                                       ),
                                       style: _vm._$s(
-                                        "74-" + $30 + "-" + $31,
+                                        "80-" + $30 + "-" + $31,
                                         "s",
                                         { width: classattr.title_p_wdith + "%" }
                                       ),
-                                      attrs: { _i: "74-" + $30 + "-" + $31 }
+                                      attrs: { _i: "80-" + $30 + "-" + $31 }
                                     },
                                     [
                                       _vm._v(
                                         _vm._$s(
-                                          "74-" + $30 + "-" + $31,
+                                          "80-" + $30 + "-" + $31,
                                           "t0-0",
                                           _vm._s(attr.DispName)
                                         )
@@ -3405,12 +3506,12 @@
                                   ),
                                   _c("input", {
                                     staticClass: _vm._$s(
-                                      "75-" + $30 + "-" + $31,
+                                      "81-" + $30 + "-" + $31,
                                       "sc",
                                       "attr_field"
                                     ),
                                     style: _vm._$s(
-                                      "75-" + $30 + "-" + $31,
+                                      "81-" + $30 + "-" + $31,
                                       "s",
                                       {
                                         width:
@@ -3423,20 +3524,20 @@
                                     ),
                                     attrs: {
                                       "data-index": _vm._$s(
-                                        "75-" + $30 + "-" + $31,
+                                        "81-" + $30 + "-" + $31,
                                         "a-data-index",
                                         index
                                       ),
                                       "data-iindex": _vm._$s(
-                                        "75-" + $30 + "-" + $31,
+                                        "81-" + $30 + "-" + $31,
                                         "a-data-iindex",
                                         iindex
                                       ),
-                                      _i: "75-" + $30 + "-" + $31
+                                      _i: "81-" + $30 + "-" + $31
                                     }
                                   }),
                                   _vm._$s(
-                                    "76-" + $30 + "-" + $31,
+                                    "82-" + $30 + "-" + $31,
                                     "i",
                                     attr.Type == "寮曠敤瀵硅薄(鍗曚釜)"
                                   )
@@ -3444,11 +3545,11 @@
                                         "div",
                                         {
                                           staticClass: _vm._$s(
-                                            "76-" + $30 + "-" + $31,
+                                            "82-" + $30 + "-" + $31,
                                             "sc",
                                             "text-right2"
                                           ),
-                                          attrs: { _i: "76-" + $30 + "-" + $31 }
+                                          attrs: { _i: "82-" + $30 + "-" + $31 }
                                         },
                                         [
                                           _c(
@@ -3456,16 +3557,16 @@
                                             {
                                               attrs: {
                                                 "data-classid": _vm._$s(
-                                                  "77-" + $30 + "-" + $31,
+                                                  "83-" + $30 + "-" + $31,
                                                   "a-data-classid",
                                                   attr.RelCls.split("|")[0]
                                                 ),
                                                 "data-classname": _vm._$s(
-                                                  "77-" + $30 + "-" + $31,
+                                                  "83-" + $30 + "-" + $31,
                                                   "a-data-classname",
                                                   attr.RelCls.split("|")[1]
                                                 ),
-                                                _i: "77-" + $30 + "-" + $31
+                                                _i: "83-" + $30 + "-" + $31
                                               },
                                               on: {
                                                 click: _vm.classAttr_AddRef
@@ -3474,12 +3575,12 @@
                                             [
                                               _c("i", {
                                                 staticClass: _vm._$s(
-                                                  "78-" + $30 + "-" + $31,
+                                                  "84-" + $30 + "-" + $31,
                                                   "sc",
                                                   "ace-icon fa fa-plus-circle"
                                                 ),
                                                 attrs: {
-                                                  _i: "78-" + $30 + "-" + $31
+                                                  _i: "84-" + $30 + "-" + $31
                                                 }
                                               })
                                             ]
@@ -3488,7 +3589,7 @@
                                       )
                                     : _vm._e(),
                                   _vm._$s(
-                                    "79-" + $30 + "-" + $31,
+                                    "85-" + $30 + "-" + $31,
                                     "i",
                                     attr.Type == "寮曠敤瀵硅薄(澶氫釜)"
                                   )
@@ -3496,38 +3597,38 @@
                                         "div",
                                         {
                                           staticClass: _vm._$s(
-                                            "79-" + $30 + "-" + $31,
+                                            "85-" + $30 + "-" + $31,
                                             "sc",
                                             "text-right2"
                                           ),
-                                          attrs: { _i: "79-" + $30 + "-" + $31 }
+                                          attrs: { _i: "85-" + $30 + "-" + $31 }
                                         },
                                         [
                                           _c(
                                             "picker",
                                             {
                                               staticClass: _vm._$s(
-                                                "80-" + $30 + "-" + $31,
+                                                "86-" + $30 + "-" + $31,
                                                 "sc",
                                                 "select"
                                               ),
                                               attrs: {
                                                 range: _vm._$s(
-                                                  "80-" + $30 + "-" + $31,
+                                                  "86-" + $30 + "-" + $31,
                                                   "a-range",
                                                   attr.RelClsList
                                                 ),
                                                 "data-index": _vm._$s(
-                                                  "80-" + $30 + "-" + $31,
+                                                  "86-" + $30 + "-" + $31,
                                                   "a-data-index",
                                                   index
                                                 ),
                                                 "data-iindex": _vm._$s(
-                                                  "80-" + $30 + "-" + $31,
+                                                  "86-" + $30 + "-" + $31,
                                                   "a-data-iindex",
                                                   iindex
                                                 ),
-                                                _i: "80-" + $30 + "-" + $31
+                                                _i: "86-" + $30 + "-" + $31
                                               },
                                               on: {
                                                 change: _vm.classAttr_AddRef
@@ -3537,7 +3638,7 @@
                                               _c("label", [
                                                 _vm._v(
                                                   _vm._$s(
-                                                    "81-" + $30 + "-" + $31,
+                                                    "87-" + $30 + "-" + $31,
                                                     "t0-0",
                                                     _vm._s(attr.Value)
                                                   )
@@ -3549,23 +3650,23 @@
                                             "a",
                                             {
                                               staticClass: _vm._$s(
-                                                "82-" + $30 + "-" + $31,
+                                                "88-" + $30 + "-" + $31,
                                                 "sc",
                                                 "class_attr_add_ref"
                                               ),
                                               attrs: {
-                                                _i: "82-" + $30 + "-" + $31
+                                                _i: "88-" + $30 + "-" + $31
                                               }
                                             },
                                             [
                                               _c("i", {
                                                 staticClass: _vm._$s(
-                                                  "83-" + $30 + "-" + $31,
+                                                  "89-" + $30 + "-" + $31,
                                                   "sc",
                                                   "ace-icon fa fa-plus-circle"
                                                 ),
                                                 attrs: {
-                                                  _i: "83-" + $30 + "-" + $31
+                                                  _i: "89-" + $30 + "-" + $31
                                                 }
                                               })
                                             ]
@@ -3574,17 +3675,17 @@
                                       )
                                     : _vm._e(),
                                   _vm._$s(
-                                    "84-" + $30 + "-" + $31,
+                                    "90-" + $30 + "-" + $31,
                                     "i",
                                     attr.notempty == true
                                   )
                                     ? _c("i", {
                                         staticClass: _vm._$s(
-                                          "84-" + $30 + "-" + $31,
+                                          "90-" + $30 + "-" + $31,
                                           "sc",
                                           "i_tishi"
                                         ),
-                                        attrs: { _i: "84-" + $30 + "-" + $31 }
+                                        attrs: { _i: "90-" + $30 + "-" + $31 }
                                       })
                                     : _vm._e()
                                 ])
@@ -3593,7 +3694,7 @@
                         )
                       : _vm._e(),
                     _vm._$s(
-                      "85-" + $30 + "-" + $31,
+                      "91-" + $30 + "-" + $31,
                       "i",
                       attr.Type == "寮曠敤浜哄憳"
                     )
@@ -3601,18 +3702,18 @@
                           "view",
                           {
                             staticClass: _vm._$s(
-                              "85-" + $30 + "-" + $31,
+                              "91-" + $30 + "-" + $31,
                               "sc",
                               "form-group"
                             ),
-                            style: _vm._$s("85-" + $30 + "-" + $31, "s", {
+                            style: _vm._$s("91-" + $30 + "-" + $31, "s", {
                               display: attr.hidden == "True" ? "none" : ""
                             }),
-                            attrs: { _i: "85-" + $30 + "-" + $31 }
+                            attrs: { _i: "91-" + $30 + "-" + $31 }
                           },
                           [
                             _vm._$s(
-                              "86-" + $30 + "-" + $31,
+                              "92-" + $30 + "-" + $31,
                               "i",
                               classattr.control_style == "涓婁笅甯冨眬"
                             )
@@ -3621,33 +3722,33 @@
                                     "text",
                                     {
                                       staticClass: _vm._$s(
-                                        "87-" + $30 + "-" + $31,
+                                        "93-" + $30 + "-" + $31,
                                         "sc",
                                         "tx_title"
                                       ),
-                                      attrs: { _i: "87-" + $30 + "-" + $31 }
+                                      attrs: { _i: "93-" + $30 + "-" + $31 }
                                     },
                                     [
                                       _vm._v(
                                         _vm._$s(
-                                          "87-" + $30 + "-" + $31,
+                                          "93-" + $30 + "-" + $31,
                                           "t0-0",
                                           _vm._s(attr.DispName)
                                         )
                                       ),
                                       _vm._$s(
-                                        "88-" + $30 + "-" + $31,
+                                        "94-" + $30 + "-" + $31,
                                         "i",
                                         attr.notempty == true
                                       )
                                         ? _c("i", {
                                             staticClass: _vm._$s(
-                                              "88-" + $30 + "-" + $31,
+                                              "94-" + $30 + "-" + $31,
                                               "sc",
                                               "i_tishi"
                                             ),
                                             attrs: {
-                                              _i: "88-" + $30 + "-" + $31
+                                              _i: "94-" + $30 + "-" + $31
                                             }
                                           })
                                         : _vm._e()
@@ -3657,23 +3758,23 @@
                                     "div",
                                     {
                                       staticClass: _vm._$s(
-                                        "89-" + $30 + "-" + $31,
+                                        "95-" + $30 + "-" + $31,
                                         "sc",
                                         "text-right"
                                       ),
-                                      attrs: { _i: "89-" + $30 + "-" + $31 }
+                                      attrs: { _i: "95-" + $30 + "-" + $31 }
                                     },
                                     [
                                       _c(
                                         "a",
                                         {
                                           staticClass: _vm._$s(
-                                            "90-" + $30 + "-" + $31,
+                                            "96-" + $30 + "-" + $31,
                                             "sc",
                                             "class_attr_add_per"
                                           ),
                                           attrs: {
-                                            _i: "90-" + $30 + "-" + $31
+                                            _i: "96-" + $30 + "-" + $31
                                           },
                                           on: {
                                             click: function($event) {
@@ -3687,12 +3788,12 @@
                                         [
                                           _c("i", {
                                             staticClass: _vm._$s(
-                                              "91-" + $30 + "-" + $31,
+                                              "97-" + $30 + "-" + $31,
                                               "sc",
                                               "ace-icon fa fa-plus-circle"
                                             ),
                                             attrs: {
-                                              _i: "91-" + $30 + "-" + $31
+                                              _i: "97-" + $30 + "-" + $31
                                             }
                                           })
                                         ]
@@ -3701,23 +3802,23 @@
                                   ),
                                   _c("input", {
                                     style: _vm._$s(
-                                      "92-" + $30 + "-" + $31,
+                                      "98-" + $30 + "-" + $31,
                                       "s",
                                       { width: attr.Width }
                                     ),
                                     attrs: {
                                       value: _vm._$s(
-                                        "92-" + $30 + "-" + $31,
+                                        "98-" + $30 + "-" + $31,
                                         "a-value",
                                         attr.Value
                                       ),
-                                      _i: "92-" + $30 + "-" + $31
+                                      _i: "98-" + $30 + "-" + $31
                                     }
                                   })
                                 ])
                               : _vm._e(),
                             _vm._$s(
-                              "93-" + $30 + "-" + $31,
+                              "99-" + $30 + "-" + $31,
                               "i",
                               classattr.control_style == "宸﹀彸甯冨眬"
                             )
@@ -3726,21 +3827,21 @@
                                     "p",
                                     {
                                       staticClass: _vm._$s(
-                                        "94-" + $30 + "-" + $31,
+                                        "100-" + $30 + "-" + $31,
                                         "sc",
                                         "tx_title2"
                                       ),
                                       style: _vm._$s(
-                                        "94-" + $30 + "-" + $31,
+                                        "100-" + $30 + "-" + $31,
                                         "s",
                                         { width: classattr.title_p_wdith + "%" }
                                       ),
-                                      attrs: { _i: "94-" + $30 + "-" + $31 }
+                                      attrs: { _i: "100-" + $30 + "-" + $31 }
                                     },
                                     [
                                       _vm._v(
                                         _vm._$s(
-                                          "94-" + $30 + "-" + $31,
+                                          "100-" + $30 + "-" + $31,
                                           "t0-0",
                                           _vm._s(attr.DispName)
                                         )
@@ -3749,12 +3850,12 @@
                                   ),
                                   _c("input", {
                                     staticClass: _vm._$s(
-                                      "95-" + $30 + "-" + $31,
+                                      "101-" + $30 + "-" + $31,
                                       "sc",
                                       "attr_field"
                                     ),
                                     style: _vm._$s(
-                                      "95-" + $30 + "-" + $31,
+                                      "101-" + $30 + "-" + $31,
                                       "s",
                                       {
                                         width:
@@ -3767,34 +3868,34 @@
                                     ),
                                     attrs: {
                                       value: _vm._$s(
-                                        "95-" + $30 + "-" + $31,
+                                        "101-" + $30 + "-" + $31,
                                         "a-value",
                                         attr.Value
                                       ),
-                                      _i: "95-" + $30 + "-" + $31
+                                      _i: "101-" + $30 + "-" + $31
                                     }
                                   }),
                                   _c(
                                     "div",
                                     {
                                       staticClass: _vm._$s(
-                                        "96-" + $30 + "-" + $31,
+                                        "102-" + $30 + "-" + $31,
                                         "sc",
                                         "text-right2"
                                       ),
-                                      attrs: { _i: "96-" + $30 + "-" + $31 }
+                                      attrs: { _i: "102-" + $30 + "-" + $31 }
                                     },
                                     [
                                       _c(
                                         "a",
                                         {
                                           staticClass: _vm._$s(
-                                            "97-" + $30 + "-" + $31,
+                                            "103-" + $30 + "-" + $31,
                                             "sc",
                                             "class_attr_add_per"
                                           ),
                                           attrs: {
-                                            _i: "97-" + $30 + "-" + $31
+                                            _i: "103-" + $30 + "-" + $31
                                           },
                                           on: {
                                             click: function($event) {
@@ -3808,12 +3909,12 @@
                                         [
                                           _c("i", {
                                             staticClass: _vm._$s(
-                                              "98-" + $30 + "-" + $31,
+                                              "104-" + $30 + "-" + $31,
                                               "sc",
                                               "ace-icon fa fa-plus-circle"
                                             ),
                                             attrs: {
-                                              _i: "98-" + $30 + "-" + $31
+                                              _i: "104-" + $30 + "-" + $31
                                             }
                                           })
                                         ]
@@ -3821,17 +3922,17 @@
                                     ]
                                   ),
                                   _vm._$s(
-                                    "99-" + $30 + "-" + $31,
+                                    "105-" + $30 + "-" + $31,
                                     "i",
                                     attr.notempty == true
                                   )
                                     ? _c("i", {
                                         staticClass: _vm._$s(
-                                          "99-" + $30 + "-" + $31,
+                                          "105-" + $30 + "-" + $31,
                                           "sc",
                                           "i_tishi"
                                         ),
-                                        attrs: { _i: "99-" + $30 + "-" + $31 }
+                                        attrs: { _i: "105-" + $30 + "-" + $31 }
                                       })
                                     : _vm._e()
                                 ])
@@ -3840,7 +3941,7 @@
                         )
                       : _vm._e(),
                     _vm._$s(
-                      "100-" + $30 + "-" + $31,
+                      "106-" + $30 + "-" + $31,
                       "i",
                       attr.Type == "寮曠敤椤圭洰"
                     )
@@ -3848,18 +3949,18 @@
                           "view",
                           {
                             staticClass: _vm._$s(
-                              "100-" + $30 + "-" + $31,
+                              "106-" + $30 + "-" + $31,
                               "sc",
                               "form-group"
                             ),
-                            style: _vm._$s("100-" + $30 + "-" + $31, "s", {
+                            style: _vm._$s("106-" + $30 + "-" + $31, "s", {
                               display: attr.hidden == "True" ? "none" : ""
                             }),
-                            attrs: { _i: "100-" + $30 + "-" + $31 }
+                            attrs: { _i: "106-" + $30 + "-" + $31 }
                           },
                           [
                             _vm._$s(
-                              "101-" + $30 + "-" + $31,
+                              "107-" + $30 + "-" + $31,
                               "i",
                               classattr.control_style == "涓婁笅甯冨眬"
                             )
@@ -3868,33 +3969,33 @@
                                     "text",
                                     {
                                       staticClass: _vm._$s(
-                                        "102-" + $30 + "-" + $31,
+                                        "108-" + $30 + "-" + $31,
                                         "sc",
                                         "tx_title"
                                       ),
-                                      attrs: { _i: "102-" + $30 + "-" + $31 }
+                                      attrs: { _i: "108-" + $30 + "-" + $31 }
                                     },
                                     [
                                       _vm._v(
                                         _vm._$s(
-                                          "102-" + $30 + "-" + $31,
+                                          "108-" + $30 + "-" + $31,
                                           "t0-0",
                                           _vm._s(attr.DispName)
                                         )
                                       ),
                                       _vm._$s(
-                                        "103-" + $30 + "-" + $31,
+                                        "109-" + $30 + "-" + $31,
                                         "i",
                                         attr.notempty == true
                                       )
                                         ? _c("i", {
                                             staticClass: _vm._$s(
-                                              "103-" + $30 + "-" + $31,
+                                              "109-" + $30 + "-" + $31,
                                               "sc",
                                               "i_tishi"
                                             ),
                                             attrs: {
-                                              _i: "103-" + $30 + "-" + $31
+                                              _i: "109-" + $30 + "-" + $31
                                             }
                                           })
                                         : _vm._e()
@@ -3904,23 +4005,23 @@
                                     "div",
                                     {
                                       staticClass: _vm._$s(
-                                        "104-" + $30 + "-" + $31,
+                                        "110-" + $30 + "-" + $31,
                                         "sc",
                                         "text-right"
                                       ),
-                                      attrs: { _i: "104-" + $30 + "-" + $31 }
+                                      attrs: { _i: "110-" + $30 + "-" + $31 }
                                     },
                                     [
                                       _c(
                                         "a",
                                         {
                                           staticClass: _vm._$s(
-                                            "105-" + $30 + "-" + $31,
+                                            "111-" + $30 + "-" + $31,
                                             "sc",
                                             "class_attr_add_prj"
                                           ),
                                           attrs: {
-                                            _i: "105-" + $30 + "-" + $31
+                                            _i: "111-" + $30 + "-" + $31
                                           },
                                           on: {
                                             click: function($event) {
@@ -3934,12 +4035,12 @@
                                         [
                                           _c("i", {
                                             staticClass: _vm._$s(
-                                              "106-" + $30 + "-" + $31,
+                                              "112-" + $30 + "-" + $31,
                                               "sc",
                                               "ace-icon fa fa-plus-circle"
                                             ),
                                             attrs: {
-                                              _i: "106-" + $30 + "-" + $31
+                                              _i: "112-" + $30 + "-" + $31
                                             }
                                           })
                                         ]
@@ -3948,23 +4049,23 @@
                                   ),
                                   _c("input", {
                                     style: _vm._$s(
-                                      "107-" + $30 + "-" + $31,
+                                      "113-" + $30 + "-" + $31,
                                       "s",
                                       { width: attr.Width }
                                     ),
                                     attrs: {
                                       value: _vm._$s(
-                                        "107-" + $30 + "-" + $31,
+                                        "113-" + $30 + "-" + $31,
                                         "a-value",
                                         attr.Value
                                       ),
-                                      _i: "107-" + $30 + "-" + $31
+                                      _i: "113-" + $30 + "-" + $31
                                     }
                                   })
                                 ])
                               : _vm._e(),
                             _vm._$s(
-                              "108-" + $30 + "-" + $31,
+                              "114-" + $30 + "-" + $31,
                               "i",
                               classattr.control_style == "宸﹀彸甯冨眬"
                             )
@@ -3973,21 +4074,21 @@
                                     "p",
                                     {
                                       staticClass: _vm._$s(
-                                        "109-" + $30 + "-" + $31,
+                                        "115-" + $30 + "-" + $31,
                                         "sc",
                                         "tx_title2"
                                       ),
                                       style: _vm._$s(
-                                        "109-" + $30 + "-" + $31,
+                                        "115-" + $30 + "-" + $31,
                                         "s",
                                         { width: classattr.title_p_wdith + "%" }
                                       ),
-                                      attrs: { _i: "109-" + $30 + "-" + $31 }
+                                      attrs: { _i: "115-" + $30 + "-" + $31 }
                                     },
                                     [
                                       _vm._v(
                                         _vm._$s(
-                                          "109-" + $30 + "-" + $31,
+                                          "115-" + $30 + "-" + $31,
                                           "t0-0",
                                           _vm._s(attr.DispName)
                                         )
@@ -3996,12 +4097,12 @@
                                   ),
                                   _c("input", {
                                     staticClass: _vm._$s(
-                                      "110-" + $30 + "-" + $31,
+                                      "116-" + $30 + "-" + $31,
                                       "sc",
                                       "attr_field"
                                     ),
                                     style: _vm._$s(
-                                      "110-" + $30 + "-" + $31,
+                                      "116-" + $30 + "-" + $31,
                                       "s",
                                       {
                                         width:
@@ -4014,34 +4115,34 @@
                                     ),
                                     attrs: {
                                       value: _vm._$s(
-                                        "110-" + $30 + "-" + $31,
+                                        "116-" + $30 + "-" + $31,
                                         "a-value",
                                         attr.Value
                                       ),
-                                      _i: "110-" + $30 + "-" + $31
+                                      _i: "116-" + $30 + "-" + $31
                                     }
                                   }),
                                   _c(
                                     "div",
                                     {
                                       staticClass: _vm._$s(
-                                        "111-" + $30 + "-" + $31,
+                                        "117-" + $30 + "-" + $31,
                                         "sc",
                                         "text-right2"
                                       ),
-                                      attrs: { _i: "111-" + $30 + "-" + $31 }
+                                      attrs: { _i: "117-" + $30 + "-" + $31 }
                                     },
                                     [
                                       _c(
                                         "a",
                                         {
                                           staticClass: _vm._$s(
-                                            "112-" + $30 + "-" + $31,
+                                            "118-" + $30 + "-" + $31,
                                             "sc",
                                             "class_attr_add_prj"
                                           ),
                                           attrs: {
-                                            _i: "112-" + $30 + "-" + $31
+                                            _i: "118-" + $30 + "-" + $31
                                           },
                                           on: {
                                             click: function($event) {
@@ -4055,12 +4156,12 @@
                                         [
                                           _c("i", {
                                             staticClass: _vm._$s(
-                                              "113-" + $30 + "-" + $31,
+                                              "119-" + $30 + "-" + $31,
                                               "sc",
                                               "ace-icon fa fa-plus-circle"
                                             ),
                                             attrs: {
-                                              _i: "113-" + $30 + "-" + $31
+                                              _i: "119-" + $30 + "-" + $31
                                             }
                                           })
                                         ]
@@ -4068,17 +4169,17 @@
                                     ]
                                   ),
                                   _vm._$s(
-                                    "114-" + $30 + "-" + $31,
+                                    "120-" + $30 + "-" + $31,
                                     "i",
                                     attr.notempty == true
                                   )
                                     ? _c("i", {
                                         staticClass: _vm._$s(
-                                          "114-" + $30 + "-" + $31,
+                                          "120-" + $30 + "-" + $31,
                                           "sc",
                                           "i_tishi"
                                         ),
-                                        attrs: { _i: "114-" + $30 + "-" + $31 }
+                                        attrs: { _i: "120-" + $30 + "-" + $31 }
                                       })
                                     : _vm._e()
                                 ])
@@ -4086,23 +4187,23 @@
                           ]
                         )
                       : _vm._e(),
-                    _vm._$s("115-" + $30 + "-" + $31, "i", attr.Type == "缂栫爜")
+                    _vm._$s("121-" + $30 + "-" + $31, "i", attr.Type == "缂栫爜")
                       ? _c(
                           "view",
                           {
                             staticClass: _vm._$s(
-                              "115-" + $30 + "-" + $31,
+                              "121-" + $30 + "-" + $31,
                               "sc",
                               "form-group"
                             ),
-                            style: _vm._$s("115-" + $30 + "-" + $31, "s", {
+                            style: _vm._$s("121-" + $30 + "-" + $31, "s", {
                               display: attr.hidden == "True" ? "none" : ""
                             }),
-                            attrs: { _i: "115-" + $30 + "-" + $31 }
+                            attrs: { _i: "121-" + $30 + "-" + $31 }
                           },
                           [
                             _vm._$s(
-                              "116-" + $30 + "-" + $31,
+                              "122-" + $30 + "-" + $31,
                               "i",
                               classattr.control_style == "涓婁笅甯冨眬"
                             )
@@ -4111,33 +4212,33 @@
                                     "text",
                                     {
                                       staticClass: _vm._$s(
-                                        "117-" + $30 + "-" + $31,
+                                        "123-" + $30 + "-" + $31,
                                         "sc",
                                         "tx_title"
                                       ),
-                                      attrs: { _i: "117-" + $30 + "-" + $31 }
+                                      attrs: { _i: "123-" + $30 + "-" + $31 }
                                     },
                                     [
                                       _vm._v(
                                         _vm._$s(
-                                          "117-" + $30 + "-" + $31,
+                                          "123-" + $30 + "-" + $31,
                                           "t0-0",
                                           _vm._s(attr.DispName)
                                         )
                                       ),
                                       _vm._$s(
-                                        "118-" + $30 + "-" + $31,
+                                        "124-" + $30 + "-" + $31,
                                         "i",
                                         attr.notempty == true
                                       )
                                         ? _c("i", {
                                             staticClass: _vm._$s(
-                                              "118-" + $30 + "-" + $31,
+                                              "124-" + $30 + "-" + $31,
                                               "sc",
                                               "i_tishi"
                                             ),
                                             attrs: {
-                                              _i: "118-" + $30 + "-" + $31
+                                              _i: "124-" + $30 + "-" + $31
                                             }
                                           })
                                         : _vm._e()
@@ -4145,33 +4246,33 @@
                                   ),
                                   _c("input", {
                                     style: _vm._$s(
-                                      "119-" + $30 + "-" + $31,
+                                      "125-" + $30 + "-" + $31,
                                       "s",
                                       { width: attr.Width }
                                     ),
                                     attrs: {
                                       "data-index": _vm._$s(
-                                        "119-" + $30 + "-" + $31,
+                                        "125-" + $30 + "-" + $31,
                                         "a-data-index",
                                         index
                                       ),
                                       "data-iindex": _vm._$s(
-                                        "119-" + $30 + "-" + $31,
+                                        "125-" + $30 + "-" + $31,
                                         "a-data-iindex",
                                         iindex
                                       ),
                                       disabled: _vm._$s(
-                                        "119-" + $30 + "-" + $31,
+                                        "125-" + $30 + "-" + $31,
                                         "a-disabled",
                                         attr.edit ? false : true
                                       ),
-                                      _i: "119-" + $30 + "-" + $31
+                                      _i: "125-" + $30 + "-" + $31
                                     }
                                   })
                                 ])
                               : _vm._e(),
                             _vm._$s(
-                              "120-" + $30 + "-" + $31,
+                              "126-" + $30 + "-" + $31,
                               "i",
                               classattr.control_style == "宸﹀彸甯冨眬"
                             )
@@ -4180,21 +4281,21 @@
                                     "p",
                                     {
                                       staticClass: _vm._$s(
-                                        "121-" + $30 + "-" + $31,
+                                        "127-" + $30 + "-" + $31,
                                         "sc",
                                         "tx_title2"
                                       ),
                                       style: _vm._$s(
-                                        "121-" + $30 + "-" + $31,
+                                        "127-" + $30 + "-" + $31,
                                         "s",
                                         { width: classattr.title_p_wdith + "%" }
                                       ),
-                                      attrs: { _i: "121-" + $30 + "-" + $31 }
+                                      attrs: { _i: "127-" + $30 + "-" + $31 }
                                     },
                                     [
                                       _vm._v(
                                         _vm._$s(
-                                          "121-" + $30 + "-" + $31,
+                                          "127-" + $30 + "-" + $31,
                                           "t0-0",
                                           _vm._s(attr.DispName)
                                         )
@@ -4203,12 +4304,12 @@
                                   ),
                                   _c("input", {
                                     staticClass: _vm._$s(
-                                      "122-" + $30 + "-" + $31,
+                                      "128-" + $30 + "-" + $31,
                                       "sc",
                                       "attr_field"
                                     ),
                                     style: _vm._$s(
-                                      "122-" + $30 + "-" + $31,
+                                      "128-" + $30 + "-" + $31,
                                       "s",
                                       {
                                         width:
@@ -4220,35 +4321,35 @@
                                     ),
                                     attrs: {
                                       "data-index": _vm._$s(
-                                        "122-" + $30 + "-" + $31,
+                                        "128-" + $30 + "-" + $31,
                                         "a-data-index",
                                         index
                                       ),
                                       "data-iindex": _vm._$s(
-                                        "122-" + $30 + "-" + $31,
+                                        "128-" + $30 + "-" + $31,
                                         "a-data-iindex",
                                         iindex
                                       ),
                                       disabled: _vm._$s(
-                                        "122-" + $30 + "-" + $31,
+                                        "128-" + $30 + "-" + $31,
                                         "a-disabled",
                                         attr.edit ? false : true
                                       ),
-                                      _i: "122-" + $30 + "-" + $31
+                                      _i: "128-" + $30 + "-" + $31
                                     }
                                   }),
                                   _vm._$s(
-                                    "123-" + $30 + "-" + $31,
+                                    "129-" + $30 + "-" + $31,
                                     "i",
                                     attr.notempty == true
                                   )
                                     ? _c("i", {
                                         staticClass: _vm._$s(
-                                          "123-" + $30 + "-" + $31,
+                                          "129-" + $30 + "-" + $31,
                                           "sc",
                                           "i_tishi"
                                         ),
-                                        attrs: { _i: "123-" + $30 + "-" + $31 }
+                                        attrs: { _i: "129-" + $30 + "-" + $31 }
                                       })
                                     : _vm._e()
                                 ])
@@ -4257,7 +4358,7 @@
                         )
                       : _vm._e(),
                     _vm._$s(
-                      "124-" + $30 + "-" + $31,
+                      "130-" + $30 + "-" + $31,
                       "i",
                       attr.Type == "鐪佸競鍖�
                     )
@@ -4265,18 +4366,18 @@
                           "view",
                           {
                             staticClass: _vm._$s(
-                              "124-" + $30 + "-" + $31,
+                              "130-" + $30 + "-" + $31,
                               "sc",
                               "form-group"
                             ),
-                            style: _vm._$s("124-" + $30 + "-" + $31, "s", {
+                            style: _vm._$s("130-" + $30 + "-" + $31, "s", {
                               display: attr.hidden == "True" ? "none" : ""
                             }),
-                            attrs: { _i: "124-" + $30 + "-" + $31 }
+                            attrs: { _i: "130-" + $30 + "-" + $31 }
                           },
                           [
                             _vm._$s(
-                              "125-" + $30 + "-" + $31,
+                              "131-" + $30 + "-" + $31,
                               "i",
                               classattr.control_style == "涓婁笅甯冨眬"
                             )
@@ -4287,33 +4388,33 @@
                                       "text",
                                       {
                                         staticClass: _vm._$s(
-                                          "126-" + $30 + "-" + $31,
+                                          "132-" + $30 + "-" + $31,
                                           "sc",
                                           "tx_title"
                                         ),
-                                        attrs: { _i: "126-" + $30 + "-" + $31 }
+                                        attrs: { _i: "132-" + $30 + "-" + $31 }
                                       },
                                       [
                                         _vm._v(
                                           _vm._$s(
-                                            "126-" + $30 + "-" + $31,
+                                            "132-" + $30 + "-" + $31,
                                             "t0-0",
                                             _vm._s(attr.DispName)
                                           )
                                         ),
                                         _vm._$s(
-                                          "127-" + $30 + "-" + $31,
+                                          "133-" + $30 + "-" + $31,
                                           "i",
                                           attr.notempty == true
                                         )
                                           ? _c("i", {
                                               staticClass: _vm._$s(
-                                                "127-" + $30 + "-" + $31,
+                                                "133-" + $30 + "-" + $31,
                                                 "sc",
                                                 "i_tishi"
                                               ),
                                               attrs: {
-                                                _i: "127-" + $30 + "-" + $31
+                                                _i: "133-" + $30 + "-" + $31
                                               }
                                             })
                                           : _vm._e()
@@ -4323,34 +4424,34 @@
                                       "pickerAddress",
                                       {
                                         staticClass: _vm._$s(
-                                          "128-" + $30 + "-" + $31,
+                                          "134-" + $30 + "-" + $31,
                                           "sc",
                                           "date_iput"
                                         ),
                                         style: _vm._$s(
-                                          "128-" + $30 + "-" + $31,
+                                          "134-" + $30 + "-" + $31,
                                           "s",
                                           { width: attr.Width }
                                         ),
                                         attrs: {
                                           "data-index": _vm._$s(
-                                            "128-" + $30 + "-" + $31,
+                                            "134-" + $30 + "-" + $31,
                                             "a-data-index",
                                             index
                                           ),
                                           "data-iindex": _vm._$s(
-                                            "128-" + $30 + "-" + $31,
+                                            "134-" + $30 + "-" + $31,
                                             "a-data-iindex",
                                             iindex
                                           ),
-                                          _i: "128-" + $30 + "-" + $31
+                                          _i: "134-" + $30 + "-" + $31
                                         },
                                         on: { change: _vm.addresschange }
                                       },
                                       [
                                         _vm._v(
                                           _vm._$s(
-                                            "128-" + $30 + "-" + $31,
+                                            "134-" + $30 + "-" + $31,
                                             "t0-0",
                                             _vm._s(attr.Value)
                                           )
@@ -4362,7 +4463,7 @@
                                 )
                               : _vm._e(),
                             _vm._$s(
-                              "129-" + $30 + "-" + $31,
+                              "135-" + $30 + "-" + $31,
                               "i",
                               classattr.control_style == "宸﹀彸甯冨眬"
                             )
@@ -4373,23 +4474,23 @@
                                       "p",
                                       {
                                         staticClass: _vm._$s(
-                                          "130-" + $30 + "-" + $31,
+                                          "136-" + $30 + "-" + $31,
                                           "sc",
                                           "tx_title2"
                                         ),
                                         style: _vm._$s(
-                                          "130-" + $30 + "-" + $31,
+                                          "136-" + $30 + "-" + $31,
                                           "s",
                                           {
                                             width: classattr.title_p_wdith + "%"
                                           }
                                         ),
-                                        attrs: { _i: "130-" + $30 + "-" + $31 }
+                                        attrs: { _i: "136-" + $30 + "-" + $31 }
                                       },
                                       [
                                         _vm._v(
                                           _vm._$s(
-                                            "130-" + $30 + "-" + $31,
+                                            "136-" + $30 + "-" + $31,
                                             "t0-0",
                                             _vm._s(attr.DispName)
                                           )
@@ -4400,12 +4501,12 @@
                                       "pickerAddress",
                                       {
                                         staticClass: _vm._$s(
-                                          "131-" + $30 + "-" + $31,
+                                          "137-" + $30 + "-" + $31,
                                           "sc",
                                           "date_iput attr_field"
                                         ),
                                         style: _vm._$s(
-                                          "131-" + $30 + "-" + $31,
+                                          "137-" + $30 + "-" + $31,
                                           "s",
                                           {
                                             width:
@@ -4417,23 +4518,23 @@
                                         ),
                                         attrs: {
                                           "data-index": _vm._$s(
-                                            "131-" + $30 + "-" + $31,
+                                            "137-" + $30 + "-" + $31,
                                             "a-data-index",
                                             index
                                           ),
                                           "data-iindex": _vm._$s(
-                                            "131-" + $30 + "-" + $31,
+                                            "137-" + $30 + "-" + $31,
                                             "a-data-iindex",
                                             iindex
                                           ),
-                                          _i: "131-" + $30 + "-" + $31
+                                          _i: "137-" + $30 + "-" + $31
                                         },
                                         on: { change: _vm.addresschange }
                                       },
                                       [
                                         _vm._v(
                                           _vm._$s(
-                                            "131-" + $30 + "-" + $31,
+                                            "137-" + $30 + "-" + $31,
                                             "t0-0",
                                             _vm._s(attr.Value)
                                           )
@@ -4441,18 +4542,18 @@
                                       ]
                                     ),
                                     _vm._$s(
-                                      "132-" + $30 + "-" + $31,
+                                      "138-" + $30 + "-" + $31,
                                       "i",
                                       attr.notempty == true
                                     )
                                       ? _c("i", {
                                           staticClass: _vm._$s(
-                                            "132-" + $30 + "-" + $31,
+                                            "138-" + $30 + "-" + $31,
                                             "sc",
                                             "i_tishi"
                                           ),
                                           attrs: {
-                                            _i: "132-" + $30 + "-" + $31
+                                            _i: "138-" + $30 + "-" + $31
                                           }
                                         })
                                       : _vm._e()
@@ -4472,11 +4573,11 @@
           _c(
             "button",
             {
-              staticClass: _vm._$s("133-" + $30, "sc", "btn_add"),
-              attrs: { _i: "133-" + $30 },
+              staticClass: _vm._$s("139-" + $30, "sc", "btn_add"),
+              attrs: { _i: "139-" + $30 },
               on: { click: _vm.sava }
             },
-            [_vm._v(_vm._$s("133-" + $30, "t0-0", _vm._s(_vm.title)))]
+            [_vm._v(_vm._$s("139-" + $30, "t0-0", _vm._s(_vm.title)))]
           )
         ]
       )
@@ -4774,7 +4875,7 @@
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-eval("/* WEBPACK VAR INJECTION */(function(__f__) {Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0;var _regenerator = _interopRequireDefault(__webpack_require__(/*! ./node_modules/@babel/runtime/regenerator */ 50));\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar _pickerAddress = _interopRequireDefault(__webpack_require__(/*! ../../js/pickerAddress/pickerAddress.vue */ 53));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {try {var info = gen[key](arg);var value = info.value;} catch (error) {reject(error);return;}if (info.done) {resolve(value);} else {Promise.resolve(value).then(_next, _throw);}}function _asyncToGenerator(fn) {return function () {var self = this,args = arguments;return new Promise(function (resolve, reject) {var gen = fn.apply(self, args);function _next(value) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);}function _throw(err) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);}_next(undefined);});};}var _default =\n{\n  components: {\n    pickerAddress: _pickerAddress.default },\n\n  data: function data() {\n    return {\n      title: '鏂板',\n      param: {},\n      classAttrList: [],\n      classGridStyle: [],\n      edit_inital_event: \"\", //寮圭獥鍒濆鍖栦簨浠禝D\n      edit_ok_event: \"\", //寮圭獥鐐瑰嚮OK 瑙﹀彂浜嬩欢ID\n      edit_select_compose_event: \"\", //閫夋嫨缁勬垚瀵硅薄鏃惰皟鐢╘n      edit_compose_cls_id: \"\",\n      global_attr: [],\n      refdatastore: [] //寮曠敤鏁版嵁瀛樺偍鍖�/ {attr:'G_PRJ_' + bindattr + '_ID', value:info.id}\n    };\n\n  },\n  onLoad: function onLoad(options) {\n    // console.log(options);\n    uni.setNavigationBarTitle({ title: options.titlename }); //璁剧疆椤堕儴鏍囬 \n    var param = JSON.parse(options.param);\n    this.$data.title = param.Add_BtnName ? param.Add_BtnName : options.titlename; //璁剧疆鎸夐挳鏂囧瓧\n    // console.log(param);\n    if (!param.EditDlgMode) {\n      uni.showModal({ title: \"鎻愮ず\", content: \"璇ュ姛鑳界偣鏈厤缃紪杈戠獥鍙o紝璇烽噸鏂伴厤缃紒\", showCancel: false, confirmText: \"鍙栨秷\" });\n      return;\n    }\n    if (!param.Edit_dlg.Name) {\n      uni.showModal({ title: \"鎻愮ず\", content: \"璇ュ姛鑳界偣鏈厤缃獥鍙f牱寮忥紝璇烽噸鏂伴厤缃紒\", showCancel: false, confirmText: \"鍙栨秷\" });\n      return;\n    }\n    this.$data.param = param;\n    var edit_dlg = {\n      Model: param.EditDlgMode,\n      Name: param.Edit_dlg.Name };\n\n    var dataInfo = {\n      class_id: param.clsid };\n\n    var $this = this;\n    $this.$store.state.thisareaFuncID = param.clsid;\n    // console.log($this.$store.getters.getclassAttrList);\n    //鑾峰彇\n    if ($this.$store.getters.getclassAttrList) {\n      $this.$data.classAttrList = $this.$store.getters.getclassAttrList.data;\n      $this.classGridStyleInfo();\n    } else\n    $this.$store.dispatch('classAttrList', dataInfo).then(function (success) {\n      // console.log(success);\n      if (success.code == '00000') {\n        $this.$data.classAttrList = success.data;\n\n        $this.classGridStyleInfo();\n      } else {\n        uni.showModal({ title: \"閿欒1\", content: success.msg, showCancel: false, confirmText: \"鍙栨秷\" });\n      }\n    }).catch(function (ex) {\n      // console.log(ex);\n      uni.showModal({ title: \"閿欒1.1\", content: ex.errMsg, showCancel: false, confirmText: \"鍙栨秷\" });\n    });\n\n  },\n  methods: {\n    classGridStyleInfo: function classGridStyleInfo() {var _this = this;return _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee() {var $this, gridstyleInfo;return _regenerator.default.wrap(function _callee$(_context) {while (1) {switch (_context.prev = _context.next) {case 0:\n                $this = _this;\n                gridstyleInfo = {\n                  class_id: $this.$data.param.clsid,\n                  name: $this.$data.param.Edit_dlg.Name,\n                  type: '2' };\n\n                $this.$store.state.thisEditName = $this.$data.param.Edit_dlg.Name;\n                // console.log($this.$store.getters.getclassGridStyleInfo);\n                //鑾峰彇\n                if ($this.$store.getters.getclassGridStyleInfo) {\n                  $this.$data.classGridStyle = $this.$store.getters.getclassGridStyleInfo.data;\n                  $this.class_attr_init();\n                } else {\n                  //console.log(gridstyleInfo);\n                  $this.$store.dispatch('classGridStyleInfo', gridstyleInfo).then(function (success) {\n                    // console.log(success);\n                    if (success.code == '00000') {\n                      success.data.StyleDef = JSON.parse(success.data.StyleDef);\n                      $this.$data.classGridStyle = success.data;\n\n                      $this.class_attr_init();\n                    } else {\n                      uni.showModal({ title: \"閿欒1.2\", content: success.msg, showCancel: false, confirmText: \"鍙栨秷\" });\n                    }\n                  }).catch(function (ex) {\n                    __f__(\"log\", ex, \" at pages/modal/classAttr.vue:432\");\n                    uni.showModal({ title: \"閿欒1.3\", content: ex.errMsg, showCancel: false, confirmText: \"鍙栨秷\" });\n                  });\n                }case 4:case \"end\":return _context.stop();}}}, _callee);}))();\n    },\n    ontap: function ontap(e) {var _this2 = this; //鎵爜鍔熻兘\n      //console.log(e.target)\n      getApp().onScan(function (result) {\n        //console.log(result.decodedata);\n        _this2.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = result.decodedata;\n      });\n    },\n    onarrow: function onarrow(index, open) {\n      // console.log(index+'--'+open);\n      this.$data.classAttrList[index].Open = open == true ? false : true;\n    },\n    ondateTime: function ondateTime(e) {\n      //console.log(e.target)\n      this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.target.value;\n    },\n    onchange: function onchange(e) {\n      __f__(\"log\", e.target, \" at pages/modal/classAttr.vue:453\");\n      var value = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].dictitem[e.target.value];\n      var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']];\n      __f__(\"log\", data_attr, \" at pages/modal/classAttr.vue:456\");\n      if (value.Name != data_attr.Value) {\n        this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = value.Name;\n        __f__(\"log\", this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value, \" at pages/modal/classAttr.vue:459\");\n        var eventid = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].action;\n        if (eventid) {\n          // self.event_no_sub = 1;\n          var req = [];\n          var attrlist = this.$data.classAttrList;\n          for (var i = 0; i < attrlist.length; i++) {\n            var attr = attrlist[i].Attr;\n            for (var j = 0; j < attr.length; j++) {\n              var ar = attr[j];\n              if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)')\n              if (ar.Value == '璇�) ar.Value = '';\n              if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰')\n              req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n              if (ar.Type == '甯冨皵鍊�)\n              req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n              req.push({ attr: ar.Name, val: ar.Value ? ar.Value : '' });\n            }\n          }\n          var info = {\n            eventid: eventid,\n            edtype: \"0\",\n            projectid: '',\n            rclsid: '',\n            robjid: '',\n            userlogin: '',\n            clsid: this.$data.param.clsid,\n            objid: \"\",\n            attr: req };\n\n          this.DataObjRunCustomEvent(info);\n        }\n      }\n\n    },\n    onchange2: function onchange2(item, value, delvalue) {\n      // console.log(item);\n      // console.log(value);\n      // console.log(delvalue);\n      if (item.length == 0) {//涓虹┖鏃讹紝娓呯┖灞炴�value\n        var index,iindex,dindex = 0;\n        for (var i in this.$data.classAttrList) {\n          for (var j in this.$data.classAttrList[i].Attr) {\n            for (var d in this.$data.classAttrList[i].Attr[j].dictitem) {\n              if (delvalue[0].Name == this.$data.classAttrList[i].Attr[j].dictitem[d].Name) {\n                this.$data.classAttrList[i].Attr[j].Value = \"\";\n              }\n            }\n          }\n        }\n      }\n\n      for (var v in item) {\n        var index,iindex,dindex = 0;\n        for (var i in this.$data.classAttrList) {\n          for (var j in this.$data.classAttrList[i].Attr) {\n            for (var d in this.$data.classAttrList[i].Attr[j].dictitem) {\n              if (item[v].Name == this.$data.classAttrList[i].Attr[j].dictitem[d].Name) {\n                index = i;iindex = j;dindex = d;\n              }\n            }\n          }\n        }\n        var itemvalue = item[v];\n        var data_attr = this.$data.classAttrList[index].Attr[iindex];\n\n        __f__(\"log\", data_attr, \" at pages/modal/classAttr.vue:526\");\n        if (itemvalue.Name != data_attr.Value) {\n          this.$data.classAttrList[index].Attr[iindex].Value = value;\n          __f__(\"log\", this.$data.classAttrList[index].Attr[iindex].Value, \" at pages/modal/classAttr.vue:529\");\n          var eventid = this.$data.classAttrList[index].Attr[iindex].action;\n          if (eventid) {\n            // self.event_no_sub = 1;\n            var req = [];\n            var attrlist = this.$data.classAttrList;\n            for (var i = 0; i < attrlist.length; i++) {\n              var attr = attrlist[i].Attr;\n              for (var j = 0; j < attr.length; j++) {\n                var ar = attr[j];\n                if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)')\n                if (ar.Value == '璇�) ar.Value = '';\n                if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰')\n                req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n                if (ar.Type == '甯冨皵鍊�)\n                req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n                if (ar.Type == '瀛楀吀' || ar.Type == '瀛楀吀-瀛楃涓�)\n                req.push({ attr: ar.Name, val: itemvalue.Name });else\n\n                req.push({ attr: ar.Name, val: ar.Value ? ar.Value : '' });\n              }\n            }\n            var info = {\n              eventid: eventid,\n              edtype: \"0\",\n              projectid: '',\n              rclsid: '',\n              robjid: '',\n              userlogin: '',\n              clsid: this.$data.param.clsid,\n              objid: \"\",\n              attr: req };\n\n            this.DataObjRunCustomEvent(info);\n          }\n        }\n      }\n\n\n    },\n    onevent: function onevent(e) {\n      // console.log(e.target);\n      var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']];\n      // console.log(data_attr);\n      if (e.target.value != data_attr.Value) {\n        this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.target.value;\n        var eventid = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].action;\n        if (eventid) {\n          // self.event_no_sub = 1;\n          var req = [];\n          var attrlist = this.$data.classAttrList;\n          for (var i = 0; i < attrlist.length; i++) {\n            var attr = attrlist[i].Attr;\n            for (var j = 0; j < attr.length; j++) {\n              var ar = attr[j];\n              if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)')\n              if (ar.Value == '璇�) ar.Value = '';\n              if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰')\n              req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n              if (ar.Type == '甯冨皵鍊�)\n              req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n              req.push({ attr: ar.Name, val: ar.Value ? ar.Value : '' });\n            }\n          }\n          var info = {\n            eventid: eventid,\n            edtype: \"0\",\n            projectid: '',\n            rclsid: '',\n            robjid: '',\n            userlogin: '',\n            clsid: this.$data.param.clsid,\n            objid: \"\",\n            attr: req };\n\n          this.DataObjRunCustomEvent(info, data_attr);\n        }\n      }\n\n    },\n    oncheck: function oncheck(e) {\n      // console.log(e.target);\n      var ischecked = e.target.dataset.ischeck ? false : true;\n      var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']];\n      // console.log(data_attr);\n      if (ischecked != data_attr.Value) {\n        this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = ischecked;\n        var eventid = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].action;\n        if (eventid) {\n          // self.event_no_sub = 1;\n          var req = [];\n          var attrlist = this.$data.classAttrList;\n          for (var i = 0; i < attrlist.length; i++) {\n            var attr = attrlist[i].Attr;\n            for (var j = 0; j < attr.length; j++) {\n              var ar = attr[j];\n              if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)')\n              if (ar.Value == '璇�) ar.Value = '';\n              if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰')\n              req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n              if (ar.Type == '甯冨皵鍊�)\n              req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n              req.push({ attr: ar.Name, val: ar.Value ? ar.Value : '' });\n\n            }\n          }\n          var info = {\n            eventid: eventid,\n            edtype: \"0\",\n            projectid: '',\n            rclsid: '',\n            robjid: '',\n            userlogin: '',\n            clsid: this.$data.param.clsid,\n            objid: \"\",\n            attr: req };\n\n          this.DataObjRunCustomEvent(info);\n        }\n      }\n\n    },\n    addresschange: function addresschange(e) {\n      // console.log(e.target);\n      __f__(\"log\", e.data.join(';'), \" at pages/modal/classAttr.vue:655\");\n      this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.data.join(';');\n    },\n    classAttr_extButton: function classAttr_extButton(index, iindex) {\n      var $this = this;\n      var before_click_button = $this.$data.classAttrList[index].Attr[iindex].before_click_button;\n      var button_callback = $this.$data.classAttrList[index].Attr[iindex].button_callback;\n      if (!before_click_button) {\n        uni.showModal({ title: \"鎻愮ず\", content: \"before_click_button-event_id涓虹┖锛乗", showCancel: false, confirmText: \"鍙栨秷\" });\n        return;\n      }\n      if (!button_callback) {\n        uni.showModal({ title: \"鎻愮ず\", content: \"button_callback-event_id涓虹┖锛乗", showCancel: false, confirmText: \"鍙栨秷\" });\n        return;\n      }\n      var data_attr = this.$data.classAttrList[index].Attr[iindex];\n      this.DataObjRunCustomEvent_Return(before_click_button, data_attr, button_callback, index, iindex);\n    },\n    classAttr_AddPer: function classAttr_AddPer(index, iindex) {\n      var param = { index: index, iindex: iindex };\n      var $this = this;\n      uni.navigateTo({\n        url: '../selpsn/index?mulit=false&param=' + JSON.stringify(param),\n        events: {\n          AddPer: function AddPer(data, param) {\n            // console.log(param);\n            __f__(\"log\", data, \" at pages/modal/classAttr.vue:681\");\n            $this.$data.classAttrList[param.index].Attr[param.iindex].Value = data[0].Name;\n            $this.$data.classAttrList[param.index].Attr[param.iindex].ValID = data[0].Login + ';' + data[0].Name;\n\n            var eventid = $this.$data.classAttrList[param.index].Attr[param.iindex].action;\n            if (eventid) {\n              eventid = eventid.trim();\n              if (eventid) {\n                var info = {\n                  eventid: eventid,\n                  edtype: \"4\",\n                  projectid: \"\",\n                  rclsid: \"\",\n                  robjid: \"\",\n                  userlogin: data[0].Login,\n                  clsid: $this.$data.param.clsid,\n                  objid: \"\",\n                  attr: [] };\n\n\n                // var data_attr = $this.$data.classAttrList[param.index].Attr[param.iindex];\n                $this.DataObjRunCustomEvent(info);\n              }\n            }\n          } } });\n\n\n    },\n    classAttr_AddRef: function classAttr_AddRef(e) {\n      __f__(\"log\", e.target, \" at pages/modal/classAttr.vue:710\");\n      uni.showModal({ title: \"鎻愮ず\", content: \"姝ゅ姛鑳借繕鏈疄鐜帮紒\", showCancel: false, confirmText: \"鍙栨秷\" });\n      // var value=this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].RelCls[e.target.value];\n      // this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value=value;\n    },\n    classAttr_AddPrj: function classAttr_AddPrj(index, iindex) {\n      var param = { index: index, iindex: iindex };\n      var $this = this;\n      uni.navigateTo({\n        url: '../selPrj/index?relation=-1&param=' + JSON.stringify(param),\n        events: {\n          AddPer: function AddPer(data, param) {\n            // console.log(param);\n            // console.log(data);\n            $this.$data.classAttrList[param.index].Attr[param.iindex].Value = data[0].Name;\n            $this.$data.classAttrList[param.index].Attr[param.iindex].ValID = data[0].ID + ';' + data[0].Name;\n\n            var eventid = $this.$data.classAttrList[param.index].Attr[param.iindex].action;\n            if (eventid) {\n              eventid = eventid.trim();\n              if (eventid) {\n                var info = {\n                  eventid: eventid,\n                  edtype: \"2\",\n                  projectid: data[0].ID,\n                  rclsid: \"\",\n                  robjid: \"\",\n                  userlogin: \"\",\n                  clsid: $this.$data.param.clsid,\n                  objid: \"\",\n                  attr: [] };\n\n\n                // var data_attr = $this.$data.classAttrList[param.index].Attr[param.iindex];\n                $this.DataObjRunCustomEvent(info);\n              }\n            }\n          } } });\n\n\n    },\n    sava: function sava() {\n      if (this.$data.edit_ok_event)\n      this.OKDataObjRunCustomEvent();else\n\n      this.add();\n    },\n    add: function add() {var _this3 = this;\n      uni.showLoading({\n        title: \"鍔犺浇涓�..\" });\n\n      var req = [];\n      var attrlist = this.$data.classAttrList;\n      for (var i = 0; i < attrlist.length; i++) {\n        var attr = attrlist[i].Attr;\n        for (var j = 0; j < attr.length; j++) {\n          var ar = attr[j];\n          if (ar.Value == '璇烽�鎷� || ar.Value == '鈥斺�璇烽�鎷┾�鈥�) ar.Value = '';\n          if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)')\n          if (ar.Value == '璇�) ar.Value = '';\n          if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰')\n          req.push({ name: ar.Name, value: ar.ValID ? ar.ValID : '' });else\n          if (ar.Type == '甯冨皵鍊�)\n          req.push({ name: ar.Name, value: ar.Value ? '1' : '0' });else\n          if (ar.Type == '瀛楀吀' || ar.Type == '瀛楀吀-瀛楃涓�) {\n            if (ar.select == true) {//鍒ゆ柇涓嬫媺鏄惁澶氶�\n              var valStr = \"\";\n              for (var v in ar.Value) {\n                if (valStr)\n                valStr += \";\";\n                valStr += ar.Value[v];\n              }\n              req.push({ name: ar.Name, value: valStr });\n            } else\n            req.push({ name: ar.Name, value: ar.Value });\n          } else\n\n          req.push({ name: ar.Name, value: ar.Value ? ar.Value : '' });\n\n          if ((ar.NotEmpty == '1' || ar.notempty == true) && !ar.Value) {\n            // if(ar.notEmpty=='1'){\n            uni.hideLoading();\n            // uni.showToast({title:ar.DispName+'涓嶈兘涓虹┖锛�,icon:\"success\",duration:3000});\n            uni.showModal({ title: \"鎻愮ず\", content: ar.DispName + '涓嶈兘涓虹┖锛�, showCancel: false, confirmText: \"鍙栨秷\" });\n            return;\n          }\n        }\n      }\n      var enviroment = {\n        'function': '3000', // 鍔熻兘鐐圭紪鍙穃n        cls_id: this.$data.param.clsid, // 鍔熻兘鐐逛富鏁版嵁绫绘爣璇哱n        'button': 'top', // top/bottom\n        button_name: '鏂板',\n        master: {\n          cls_id: this.$data.param.clsid } };\n\n\n\n      var dataInfo = {\n        class_id: this.$data.param.clsid, data_obj_id: '', masterclsid: '',\n        req: JSON.stringify(req), upfile: JSON.stringify([]), post_data: JSON.stringify({}),\n        compose: JSON.stringify([]), refdatastore: JSON.stringify([]), extinfo: JSON.stringify(enviroment),\n        not_trigger_sys_event: '' };\n\n\n      // return\n      __f__(\"log\", dataInfo, \" at pages/modal/classAttr.vue:816\");\n      this.$store.dispatch('addclassattr', dataInfo).then(function (success) {\n        __f__(\"log\", success, \" at pages/modal/classAttr.vue:818\");\n        uni.hideLoading();\n        if (success.code == '00000') {\n          var action = JSON.parse(success.data.Action);\n          if (action.ret == '0') {\n            if (action.result_type == '0') {\n              uni.showToast({ title: action.result, icon: \"success\", duration: 3000 });\n            }\n            // \"{\"ret\":0, \"result_type\":0, \"result\":\"鍒涘缓鎴愬姛123123123\",\"info\":\"\"}\"\n          }\n          //鍒锋柊\n          uni.redirectTo({\n            url: '../modal/classAttr?param=' + JSON.stringify(_this3.$data.param) + \"&titlename=\" + _this3.$data.title });\n\n          // this.class_attr_init();\n        } else {\n          uni.showModal({ title: \"閿欒\", content: success.msg, showCancel: false, confirmText: \"鍙栨秷\" });\n        }\n      }).catch(function (ex) {\n        __f__(\"log\", ex, \" at pages/modal/classAttr.vue:837\");\n        uni.hideLoading();\n        uni.showModal({ title: \"鎻愮ず\", content: ex.errMsg, showCancel: false, confirmText: \"鍙栨秷\" });\n      });\n    },\n    class_attr_init: function class_attr_init() {\n      var attrlist = this.$data.classGridStyle.StyleDef.show_style;\n      var newattrlist = [];\n      if (this.$data.classAttrList.length > 0) {\n        for (var i = 0; i < attrlist.length; i++) {\n          var open = attrlist[i].open;\n          var name = attrlist[i].attrgroup_name;\n          var attrs = attrlist[i].attrs;\n          for (var s = 0; s < this.$data.classAttrList.length; s++) {\n            var clsattr = this.$data.classAttrList[s];\n            if (name == clsattr.Name) {\n              var attr = [];\n              for (var j = 0; j < attrs.length; j++) {\n                for (var l = 0; l < clsattr.Attr.length; l++) {\n                  var ca = clsattr.Attr[l];\n                  if (attrs[j].attr == ca.Name) {\n                    ca.action = attrs[j].action;\n                    ca.edit = attrs[j].edit;\n                    ca.notempty = attrs[j].notempty;\n                    ca.ext_button = attrs[j].ext_button;\n                    ca.button_img = attrs[j].button_img;\n                    ca.button_tooltip = attrs[j].button_tooltip;\n                    ca.before_click_button = attrs[j].before_click_button;\n                    ca.button_callback = attrs[j].button_callback;\n                    ca.hidden = attrs[j].hidden;\n                    ca.select = attrs[j].select == undefined ? false : attrs[j].select;\n                    ca.Value = \"\";\n                    if (ca.dictitem) {\n                      var dictitemlist = [];\n                      for (var d = 0; d < ca.dictitem.length; d++) {\n                        ca.dictitem[d].label = ca.dictitem[d].CN_S_NAME;\n                        ca.dictitem[d].value = ca.dictitem[d].CN_S_NAME;\n                      }\n                      if (ca.select == true)\n                      ca.Value = []; //ca.dictitem[0].CN_S_NAME;\n                      else\n                        ca.Value = '璇烽�鎷�; //ca.dictitem[0].CN_S_NAME;\n                    }\n                    if (ca.Type == '鏃ユ湡' || ca.Type == '鏃堕棿') {\n                      var nowDate = new Date();\n                      var date = { year: nowDate.getFullYear(), month: nowDate.getMonth() + 1, day: nowDate.getDate() };\n                      ca.Value = date.year + '-' + (date.month >= 10 ? date.month : '0' + date.month) + '-' + (date.day >= 10 ? date.day : '0' + date.day);\n                    }\n                    if (ca.Type == '寮曠敤瀵硅薄(澶氫釜)') {\n                      var relClsList = [];\n                      var attr_rescls = ca.RelCls.split(',');\n                      for (var ii in attr_rescls) {\n                        var rescls = attr_rescls[ii].split('|');\n                        relClsList.push({ id: rescls[0], name: rescls[1] });\n                      }\n                      ca.RelClsList = relClsList;\n                      ca.Value = '璇�;\n                    }\n                    if (ca.Type == '鐪佸競鍖�)\n                    ca.Value = '璇烽�鎷�;\n                    if (ca.Type == '甯冨皵鍊�)\n                    ca.Value = false;\n\n                    attr.push(ca);\n                  }\n                }\n              }\n              newattrlist.push({\n                BkColor: clsattr.BkColor,\n                HasAce: clsattr.HasAce,\n                ImgFontStyle: clsattr.ImgFontStyle,\n                Name: clsattr.Name,\n                Order: clsattr.Order,\n                Open: open,\n                Attr: attr,\n                control_style: this.$data.classGridStyle.StyleDef.control_style,\n                title_p_wdith: this.$data.classGridStyle.StyleDef.title_p_wdith });\n\n            }\n          }\n        }\n        if (newattrlist.length > 0) {\n          this.$data.classAttrList = newattrlist;\n        }\n        var req = [];\n        if (this.$data.classGridStyle.StyleDef) {\n          if (this.$data.classGridStyle.StyleDef.show_style.length > 0) {\n            var attrlist = this.$data.classGridStyle.StyleDef.show_style;\n            // $el.find('.attr_field').prop('readonly', true);\n            // $el.find('.attr_field').prop('disabled', true);\n            for (var i = 0; i < attrlist.length; i++) {\n              var attr = attrlist[i].attrs;\n              for (var j = 0; j < attr.length; j++) {\n                var ar = attr[j];\n                req.push({ attr: ar.attr, val: ar.value ? ar.value : '' });\n              }\n            }\n          }\n        }\n\n        var eventlist = this.$data.classGridStyle.StyleDef.event;\n        if (eventlist) {\n          if (eventlist.length > 0) {\n            for (var i = 0; i < eventlist.length; i++) {\n              if (eventlist[i].event_id == 'before_ok') {\n                this.$data.edit_ok_event = eventlist[i];\n              } else if (eventlist[i].event_id == 'initial') {\n                this.$data.edit_inital_event = eventlist[i];\n              } else if (eventlist[i].event_id == 'before_select_compose') {\n                this.$data.edit_select_compose_event = eventlist[i].scrip_id;\n                this.$data.edit_compose_cls_id = eventlist[i].compose_cls_id;\n              }\n            }\n          }\n        }\n        __f__(\"log\", req, \" at pages/modal/classAttr.vue:952\");\n        if (this.$data.edit_inital_event) {\n          var eventid = this.$data.edit_inital_event.scrip_id;\n          var info = {\n            eventid: eventid,\n            edtype: \"0\",\n            projectid: '',\n            rclsid: '',\n            robjid: '',\n            userlogin: '',\n            clsid: this.$data.param.clsid,\n            objid: \"\",\n            attr: req };\n\n          this.ini_DataObjRunCustomEvent(info);\n        }\n        __f__(\"log\", this.$data.classGridStyle, \" at pages/modal/classAttr.vue:968\");\n        __f__(\"log\", this.$data.classAttrList, \" at pages/modal/classAttr.vue:969\");\n\n      } else {\n        uni.showModal({ title: \"鎻愮ず\", content: \"鏈壘鍒板彲鏄剧ず鐨勭殑灞炴�\", showCancel: false, confirmText: \"鍙栨秷\" });\n      }\n    },\n    ini_DataObjRunCustomEvent: function ini_DataObjRunCustomEvent(info) {var _this4 = this;\n      var param = {\n        EditStyle: this.$data.param.Edit_dlg.Name,\n        ViewStyle: this.$data.param.Edit_dlg.Name,\n        NotTriggerSysEvent: 0,\n        enviroment: {\n          'function': '3000', // 鍔熻兘鐐圭紪鍙穃n          cls_id: this.$data.param.clsid, // 鍔熻兘鐐逛富鏁版嵁绫绘爣璇哱n          'button': 'top', // top/bottom\n          button_name: '鏂板',\n          master: {\n            cls_id: this.$data.param.clsid // button=bottom鏃�master鐨刢ls_id\n            //obj_id: ''  // button=bottom鏃�master鐨刼bj_id\n          } } };\n\n\n      var inputparameter = '';\n      var global_attr = '';\n\n      var dataInfo = {\n        edtype: info.edtype, eventid: info.eventid, projectid: info.projectid,\n        rclsid: info.rclsid, robjid: info.robjid, userlogin: info.userlogin, clsid: info.clsid, objid: info.objid,\n        attr: JSON.stringify(info.attr), extinfo: JSON.stringify(param), inputparameter: inputparameter, global_attr: global_attr };\n\n      __f__(\"log\", dataInfo, \" at pages/modal/classAttr.vue:999\");\n      this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n        __f__(\"log\", success, \" at pages/modal/classAttr.vue:1001\");\n        if (success.code == '00000') {\n          var data = JSON.parse(success.data);\n          var actionlist = data.action;\n          if (actionlist) {\n            for (var j = 0; j < actionlist.length; j++) {\n              var action = actionlist[j];\n              var action_type = action.action_type;\n              var value = action.value;\n              if (action_type == 'set_dlg_attr') {\n                if (value) {\n                  var val = value;\n                  if (typeof value == 'string') {\n                    val = JSON.parse(value);\n                  }\n                  __f__(\"log\", val, \" at pages/modal/classAttr.vue:1016\");\n                  for (var i = 0; i < val.length; i++) {\n                    for (var a = 0; a < _this4.$data.classAttrList.length; a++) {\n                      for (var l = 0; l < _this4.$data.classAttrList[a].Attr.length; l++) {\n                        var ca = _this4.$data.classAttrList[a].Attr[l];\n                        if (val[i].attr == ca.Name) {\n                          if (ca.Type == '瀛楀吀' || ca.Type == '瀛楀吀-瀛楃涓�) {\n                            var dictItemList = [];\n                            for (var d in val[i].choice_list) {\n                              var val = val[i].choice_list[d];\n                              dictItemList.push({ \"CN_S_NAME\": val, \"Name\": val, \"label\": val, \"value\": val });\n\n                            }\n                            ca.dictitem = dictItemList;\n                            // attr[j].dictitem = val[i].choice_list;\n                          } else {\n                              // ca.value = val[i].value;\n                            }\n                        }\n                      }\n                    }\n\n                    var length = 0;\n                    if (!_this4.$data.refdatastore.filter(function (s) {\n                      return val[i].attr == s.attr;\n                    }).length) {\n                      length = 1;\n                      _this4.$data.refdatastore.push(val[i]);\n                    }\n                    if (length == 0) {\n                      for (var j = 0; j < _this4.$data.refdatastore.length; j++) {\n                        if (_this4.$data.refdatastore[j].attr == val[i].attr) {\n                          _this4.$data.refdatastore[j].value = val[i].value;\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n              if (action_type == 'open_select_userdlg') {\n                uni.showModal({ title: \"閿欒2.2\", content: \"open_select_userdlg杩欎釜action_type杩樻湭澶勭悊锛乗", showCancel: false, confirmText: \"鍙栨秷\" });\n              }\n            }\n          }\n\n        } else {\n          uni.showModal({ title: \"閿欒2\", content: success.msg, showCancel: false, confirmText: \"鍙栨秷\" });\n        }\n      }).catch(function (ex) {\n        // console.log(ex);\n        uni.showModal({ title: \"閿欒2.1\", content: ex.errMsg, showCancel: false, confirmText: \"鍙栨秷\" });\n      });\n    },\n    DataObjRunCustomEvent: function DataObjRunCustomEvent(info, data_attr) {\n      var $this = this;\n      var enviroment = {\n        'function': '3000', // 鍔熻兘鐐圭紪鍙穃n        cls_id: this.$data.param.clsid, // 鍔熻兘鐐逛富鏁版嵁绫绘爣璇哱n        'button': 'top', // top/bottom\n        button_name: '鏂板',\n        master: {\n          cls_id: this.$data.param.clsid // button=bottom鏃�master鐨刢ls_id\n          //obj_id: ''  // button=bottom鏃�master鐨刼bj_id\n        } };\n\n      if (data_attr) {\n        enviroment.edit_dlg = {\n          type: 'small', //灏忕獥鍙n          class_id: this.$data.param.clsid //褰撳墠鏁版嵁绫籭d\n        };\n        if (data_attr) {\n          enviroment.edit_dlg.form_control = { //鎵�睘鐨勮〃鍗曟帶浠禱n            name: data_attr.Name, //瀛楁灞炴�\n            text: data_attr.DispName, //鏄剧ず鏂囨湰\n            group_name: data_attr.GroupName, //灞炴�缁刓n            type: data_attr.Type, //瀛楁绫诲瀷\n            readonly: data_attr.ReadOnly, //鏄惁鍙\n            button_img: data_attr.button_img, //寮曠敤鎸夐挳鐨勫浘鏍嘰n            button_tooltip: data_attr.button_tooltip //寮曠敤鎸夐挳鐨則ooltip\n          };\n        }\n      }\n      var dataInfo = {\n        edtype: info.edtype, eventid: info.eventid, projectid: info.projectid.replace('{', '').replace('}', ''),\n        rclsid: info.rclsid, robjid: info.robjid, userlogin: info.userlogin, clsid: info.clsid, objid: info.objid,\n        attr: JSON.stringify(info.attr), extinfo: JSON.stringify(enviroment), inputparameter: '', global_attr: JSON.stringify(this.$data.global_attr) };\n\n      __f__(\"log\", dataInfo, \" at pages/modal/classAttr.vue:1103\");\n      this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n        __f__(\"log\", success, \" at pages/modal/classAttr.vue:1105\");\n        if (success.code == '00000') {\n          var data = JSON.parse(success.data);\n          var actionlist = data.action;\n\n          if (actionlist) {\n            __f__(\"log\", actionlist, \" at pages/modal/classAttr.vue:1111\");\n            for (var i = 0; i < actionlist.length; i++) {\n              var action = actionlist[i];\n              if (action.action_type == 'set_dlg_attr') {\n                var result = action.value;\n                for (var i = 0; i < result.length; i++) {\n                  if (result[i].choice_list) {\n                    for (var c = 0; c < $this.$data.classAttrList.length; c++) {\n                      var attr = $this.$data.classAttrList[c].Attr;\n                      for (var j = 0; j < attr.length; j++) {\n                        if (attr[j].Name == result[i].attr) {\n                          if (attr[j].Type == '瀛楀吀' || attr[j].Type == '瀛楀吀-瀛楃涓�) {\n                            var dictItemList = [];\n                            for (var d in result[i].choice_list) {\n                              var val = result[i].choice_list[d];\n                              dictItemList.push({ \"CN_S_NAME\": val, \"Name\": val, \"label\": val, \"value\": val });\n                            }\n                            attr[j].dictitem = dictItemList;\n                            // attr[j].dictitem = result[i].choice_list;\n                          }\n                        }\n                      }\n                    }\n                  }\n                  for (var c = 0; c < $this.$data.classAttrList.length; c++) {\n                    var attr = $this.$data.classAttrList[c].Attr;\n                    for (var j = 0; j < attr.length; j++) {\n                      __f__(\"log\", attr[j].Name + '==' + result[i].attr, \" at pages/modal/classAttr.vue:1138\");\n                      if (attr[j].Name == result[i].attr) {\n                        attr[j].Value = result[i].value;\n                      }\n                    }\n                  }\n                  var length = 0;\n                  if (!$this.$data.refdatastore.filter(function (s) {\n                    return result[i].attr == s.attr;\n                  }).length) {\n                    length = 1;\n                    $this.$data.refdatastore.push(result[i]);\n                  }\n                  if (length == 0) {\n                    for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n                      if ($this.$data.refdatastore[j].attr == result[i].attr) {\n                        $this.$data.refdatastore[j].value = result[i].value;\n                      }\n                    }\n                  }\n                }\n              } else if (data.action[i].action_type == 'set_global_attr') {\n                $this.$data.global_attr = data.action[i].value || [];\n              }\n            }\n          }\n\n          if (data.result) {\n            var result = data.result;\n            for (var i = 0; i < result.length; i++) {\n              for (var c = 0; c < $this.$data.classAttrList.length; c++) {\n                var attr = $this.$data.classAttrList[c].Attr;\n                for (var j = 0; j < attr.length; j++) {\n                  if (attr[j].Name == result[i].attr) {\n                    attr[j].Value = result[i].value;\n                  }\n                }\n              }\n\n              var length = 0;\n              if (!$this.$data.refdatastore.filter(function (s) {\n                return result[i].attr == s.attr;\n              }).length) {\n                length = 1;\n                $this.$data.refdatastore.push(result[i]);\n              }\n              if (length == 0) {\n                for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n                  if ($this.$data.refdatastore[j].attr == result[i].attr) {\n                    $this.$data.refdatastore[j].value = result[i].value;\n                  }\n                }\n              }\n            }\n          }\n        } else {\n          uni.showModal({ title: \"閿欒3\", content: success.msg, showCancel: false, confirmText: \"鍙栨秷\" });\n        }\n      }).catch(function (ex) {\n        // console.log(ex);\n        uni.showModal({ title: \"閿欒3.1\", content: ex.errMsg, showCancel: false, confirmText: \"鍙栨秷\" });\n      });\n    },\n    OKDataObjRunCustomEvent: function OKDataObjRunCustomEvent() {var _this5 = this;\n      var enviroment = {\n        'function': '3000', // 鍔熻兘鐐圭紪鍙穃n        cls_id: this.$data.param.clsid, // 鍔熻兘鐐逛富鏁版嵁绫绘爣璇哱n        'button': 'top', // top/bottom\n        button_name: '鏂板',\n        master: {\n          cls_id: this.$data.param.clsid // button=bottom鏃�master鐨刢ls_id\n        } };\n\n\n\n      var eventid = this.$data.edit_ok_event.scrip_id;\n      var req = [];\n      var attrlist = this.$data.classAttrList;\n      for (var i = 0; i < attrlist.length; i++) {\n        var attr = attrlist[i].Attr;\n        for (var j = 0; j < attr.length; j++) {\n          var ar = attr[j];\n          if (ar.Value == '璇烽�鎷� || ar.Value == '鈥斺�璇烽�鎷┾�鈥�) ar.Value = '';\n          if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)')\n          if (ar.Value == '璇�) ar.Value = '';\n          if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰')\n          req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n          if (ar.Type == '甯冨皵鍊�)\n          req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n          req.push({ attr: ar.Name, val: ar.Value });\n        }\n      }\n\n      if (this.$data.refdatastore.length > 0) {\n        for (var i = 0; i < this.$data.refdatastore.length; i++) {\n          if (!req.filter(function (s) {\n            return this.$data.refdatastore[i].attr == s.name;\n          }).length) {\n            length = 1;\n            req.push({ 'attr': this.$data.refdatastore[i].attr, 'val': this.$data.refdatastore[i].value });\n          }\n        }\n      }\n      var info = {\n        eventid: eventid,\n        edtype: \"0\",\n        projectid: '',\n        rclsid: '',\n        robjid: '',\n        userlogin: '',\n        clsid: this.$data.param.clsid,\n        objid: \"\",\n        attr: req };\n\n      var dataInfo = {\n        edtype: info.edtype, eventid: info.eventid, projectid: info.projectid, rclsid: info.rclsid,\n        robjid: info.robjid, userlogin: info.userlogin, clsid: info.clsid, objid: info.objid,\n        attr: JSON.stringify(info.attr), extinfo: JSON.stringify(enviroment), global_attr: JSON.stringify(this.$data.global_attr) };\n\n      __f__(\"log\", dataInfo, \" at pages/modal/classAttr.vue:1258\");\n      this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n        __f__(\"log\", success, \" at pages/modal/classAttr.vue:1260\");\n        if (success.code == '00000') {\n          var data = JSON.parse(success.data);\n          var result = data.result;\n          for (var i = 0; i < result.length; i++) {\n            // self.class_attr_ele.find('.attr_field[data-field=\"' + result[i].attr + '\"]').val(result[i].value).data('val', result[i].value);\n            var length = 0;\n            if (!_this5.$data.refdatastore.filter(function (s) {\n              return result[i].attr == s.attr;\n            }).length) {\n              length = 1;\n              _this5.$data.refdatastore.push(result[i]);\n            }\n            if (length == 0) {\n              for (var j = 0; j < _this5.$data.refdatastore.length; j++) {\n                if (_this5.$data.refdatastore[j].attr == result[i].attr) {\n                  _this5.$data.refdatastore[j].value = result[i].value;\n                }\n              }\n            }\n          }\n\n          _this5.add();\n        } else {\n          uni.showModal({ title: \"閿欒4\", content: success.msg, showCancel: false, confirmText: \"鍙栨秷\" });\n        }\n      }).catch(function (ex) {\n        // console.log(ex);\n        uni.showModal({ title: \"閿欒4.1\", content: ex.errMsg, showCancel: false, confirmText: \"鍙栨秷\" });\n      });\n    },\n    DataObjRunCustomEvent_Return: function DataObjRunCustomEvent_Return(eventid, data_attr, button_callback, index, iindex) {var _this6 = this;\n      var enviroment = {\n        'function': '3000', // 鍔熻兘鐐圭紪鍙穃n        cls_id: this.$data.param.clsid, // 鍔熻兘鐐逛富鏁版嵁绫绘爣璇哱n        'button': 'top', // top/bottom\n        button_name: '鏂板',\n        master: {\n          cls_id: this.$data.param.clsid // button=bottom鏃�master鐨刢ls_id\n          //obj_id: ''  // button=bottom鏃�master鐨刼bj_id\n        } };\n\n      var req = [];\n      var attrlist = this.$data.classAttrList;\n      for (var i = 0; i < attrlist.length; i++) {\n        var attr = attrlist[i].Attr;\n        for (var j = 0; j < attr.length; j++) {\n          var ar = attr[j];\n          if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)')\n          if (ar.Value == '璇�) ar.Value = '';\n          if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰')\n          req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n          if (ar.Type == '甯冨皵鍊�)\n          req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n          req.push({ attr: ar.Name, val: ar.Value });\n        }\n      }\n      if (this.$data.refdatastore.length > 0) {\n        for (var i = 0; i < this.$data.refdatastore.length; i++) {\n          if (!req.filter(function (s) {\n            return this.$data.refdatastore[i].attr == s.name;\n          }).length) {\n            length = 1;\n            req.push({ 'attr': this.$data.refdatastore[i].attr, 'val': this.$data.refdatastore[i].value });\n          }\n        }\n      }\n      var extinfo = enviroment;\n      extinfo.edit_dlg = {\n        type: 'small', //灏忕獥鍙n        class_id: this.$data.param.clsid //褰撳墠鏁版嵁绫籭d\n      };\n      if (data_attr) {\n        extinfo.edit_dlg.form_control = { //鎵�睘鐨勮〃鍗曟帶浠禱n          name: data_attr.Name, //瀛楁灞炴�\n          text: data_attr.DispName, //鏄剧ず鏂囨湰\n          group_name: data_attr.GroupName, //灞炴�缁刓n          type: data_attr.Type, //瀛楁绫诲瀷\n          readonly: data_attr.ReadOnly, //鏄惁鍙\n          button_img: data_attr.button_img, //寮曠敤鎸夐挳鐨勫浘鏍嘰n          button_tooltip: data_attr.button_tooltip //寮曠敤鎸夐挳鐨則ooltip\n        };\n      }\n      var dataInfo = {\n        edtype: \"0\", eventid: eventid, projectid: '', rclsid: '', robjid: '', userlogin: '',\n        clsid: this.$data.param.clsid, objid: '', attr: JSON.stringify(req),\n        extinfo: JSON.stringify(extinfo), global_attr: JSON.stringify(this.$data.global_attr) };\n\n      __f__(\"log\", dataInfo, \" at pages/modal/classAttr.vue:1349\");\n      this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n        __f__(\"log\", success, \" at pages/modal/classAttr.vue:1351\");\n        if (success.code == '00000') {\n          var data = JSON.parse(success.data);\n          if (data != \"\") {\n\n            var actions = data.action;\n            __f__(\"log\", actions, \" at pages/modal/classAttr.vue:1357\");\n            if (actions) {\n              for (var i = 0; i < actions.length; i++) {\n                var action = actions[i];\n                var val = action.value;\n                var enviroment = JSON.stringify(enviroment);\n\n                if (action.action_type == 'open_panel') {\n                  var d = dialog({\n                    title: '<i class=\"ace-icon fa fa-info-circle\"></i> ' + '鎻愮ず',\n                    content: action.action_type + '姝ction灏氭湭澶勭悊锛� });\n\n                  d.show();\n                } else\n                if (action.action_type == 'open_select_userdlg') {\n                  var style = val.style;\n                  // style == 'user' ? '閫夋嫨浜哄憳' : style == 'department' ? '閫夋嫨閮ㄩ棬' : style == 'role' ? '閫夋嫨瑙掕壊' : ''\n                  var $this = _this6;\n                  var param = {\n                    index: index,\n                    iindex: iindex,\n                    button_callback: button_callback,\n                    req: req,\n                    data_attr: data_attr };\n\n                  uni.navigateTo({\n                    url: '../selpsn/index?mulit=false&param=' + JSON.stringify(param),\n                    events: {\n                      AddPer: function AddPer(data, param) {\n                        // console.log(param);\n                        __f__(\"log\", data, \" at pages/modal/classAttr.vue:1387\");\n                        var callback_eventid = param.button_callback.trim();\n                        var info = {\n                          eventid: callback_eventid,\n                          edtype: \"0\",\n                          projectid: '',\n                          rclsid: '',\n                          robjid: '',\n                          userlogin: '',\n                          clsid: $this.$data.param.clsid,\n                          objid: \"\",\n                          attr: param.req,\n                          inputparameter: data };\n\n                        $this.DataObjRunCustomEvent(info, param.data_attr);\n                      } } });\n\n\n                } else\n                if (action.action_type == 'open_data_query_dlg') {\n\n                } else\n                if (action.action_type == 'open_common_dlg') {\n                  var value = action.value;\n                  var d = dialog({\n                    title: '<i class=\"ace-icon fa fa-info-circle\"></i> ' + '鎻愮ず',\n                    content: action.action_type + '姝ction灏氭湭澶勭悊锛� });\n\n                  d.show();\n                } else\n                if (action.action_type == 'open_project_query_dlg') {\n                  //console.log(action.value.select_range);\n                  //console.log(action.value.mulit_select);\n                  var priRel = '-1';\n                  if (action.value.select_range == '鍏ㄩ儴鐩稿叧')\n                  priRel = '0';else\n                  if (action.value.select_range == '鎴戣礋璐g殑椤圭洰')\n                  priRel = '1';else\n                  if (action.value.select_range == '鎴戝垱寤虹殑')\n                  priRel = '2';else\n                  if (action.value.select_range == '鎴戝弬涓庣殑' || action.value.select_range == '鎴戝弬鍔犵殑')\n                  priRel = '3';else\n                  if (action.value.select_range == '鎴戝叧娉ㄧ殑')\n                  priRel = '4';else\n                  if (action.value.select_range == '鎴戜笅灞炵殑椤圭洰')\n                  priRel = '5';\n\n                  var $this = _this6;\n                  var param_ = {\n                    index: index,\n                    iindex: iindex,\n                    button_callback: button_callback,\n                    req: req };\n\n                  uni.navigateTo({\n                    url: '../selPrj/index?relation=' + priRel + '&param=' + JSON.stringify(param_),\n                    events: {\n                      AddPer: function AddPer(data, param) {\n                        $this.$data.classAttrList[param.index].Attr[param.iindex].Value = data[0].Name;\n                        $this.$data.classAttrList[param.index].Attr[param.iindex].ValID = data[0].ID + ';' + data[0].Name;\n                        var callback_eventid = param.button_callback.trim();\n                        if (callback_eventid) {\n                          var info = {\n                            eventid: callback_eventid,\n                            edtype: \"2\",\n                            projectid: data[0].ID,\n                            rclsid: \"\",\n                            robjid: \"\",\n                            userlogin: \"\",\n                            clsid: $this.$data.param.clsid,\n                            objid: \"\",\n                            attr: param.req };\n\n\n                          $this.DataObjRunCustomEvent(info);\n                        }\n                      } } });\n\n\n                } else {\n                  var d = dialog({\n                    title: '<i class=\"ace-icon fa fa-info-circle\"></i> ' + '鎻愮ず',\n                    content: action.action_type + '姝ction灏氭湭澶勭悊锛� });\n\n                  d.show();\n                }\n              }\n            }\n          } else {\n            uni.showModal({ title: \"鎻愮ず5.2\", content: '璋冪敤 before_click_button 鑴氭湰杩斿洖绌猴紝event_id' + eventid, showCancel: false, confirmText: \"鍙栨秷\" });\n          }\n        } else {\n          uni.showModal({ title: \"閿欒5\", content: success.msg, showCancel: false, confirmText: \"鍙栨秷\" });\n        }\n      }).catch(function (ex) {\n        // console.log(ex);\n        uni.showModal({ title: \"鎻愮ず5.1\", content: ex.errMsg, showCancel: false, confirmText: \"鍙栨秷\" });\n      });\n    } } };exports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 13)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbW9kYWwvY2xhc3NBdHRyLnZ1ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFtVkEscUg7QUFDQTtBQUNBO0FBQ0EseUNBREEsRUFEQTs7QUFJQSxNQUpBLGtCQUlBO0FBQ0E7QUFDQSxpQkFEQTtBQUVBLGVBRkE7QUFHQSx1QkFIQTtBQUlBLHdCQUpBO0FBS0EsMkJBTEEsRUFLQTtBQUNBLHVCQU5BLEVBTUE7QUFDQSxtQ0FQQSxFQU9BO0FBQ0EsNkJBUkE7QUFTQSxxQkFUQTtBQVVBLHNCQVZBLENBVUE7QUFWQTs7QUFhQSxHQWxCQTtBQW1CQSxRQW5CQSxrQkFtQkEsT0FuQkEsRUFtQkE7QUFDQTtBQUNBLDREQUZBLENBRUE7QUFDQTtBQUNBLGlGQUpBLENBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBREE7QUFFQSwrQkFGQTs7QUFJQTtBQUNBLDJCQURBOztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FIQTtBQUlBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FKQSxNQUlBO0FBQ0E7QUFDQTtBQUNBLEtB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LG9EQUhBO0FBSUEsNEJBSkE7O0FBTUE7QUFDQSxrR0FEQTtBQUVBO0FBQ0EsNEJBREEsa0JBQ0EsSUFEQSxFQUNBLEtBREEsRUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxREFEQTtBQUVBLHVDQUZBO0FBR0EsaURBSEE7QUFJQSxzQ0FKQTtBQUtBLHNDQUxBO0FBTUEseUNBTkE7QUFPQSwwREFQQTtBQVFBLHFDQVJBO0FBU0EsMkNBVEE7OztBQVlBO0FBQ0E7QUFDQSx1QkFwQkEsRUFGQTs7O0FBeUJBLGlCQWpEQSxNQWlEQTtBQUNBO0FBQ0EsK0VBREE7QUFFQSxnRUFGQTs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBekhBLE1BeUhBO0FBQ0E7QUFDQTtBQUNBLFNBOUhBLE1BOEhBO0FBQ0E7QUFDQTtBQUNBLE9BbklBLEVBbUlBLEtBbklBLENBbUlBO0FBQ0E7QUFDQTtBQUNBLE9BdElBO0FBdUlBLEtBeGpDQSxFQWhFQSxFIiwiZmlsZSI6IjQ5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHN0eWxlPlxyXG5cdC5jbGFzc19hdHRyX3RpdGxlIHtcclxuXHRcdGZvbnQtc2l6ZTogNDRycHg7XHJcblx0ICAgIHBhZGRpbmctYm90dG9tOiAyMnJweDtcclxuXHQgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdH1cclxuXHQuY2xhc3NfYXR0cl90aXRsZSAudGl0bGVfbGluZSB7XHJcblx0ICAgIGJvcmRlci1ib3R0b206IDJycHggc29saWQgI2FhYTtcclxuXHQgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdCAgICBib3R0b206IC01MHJweDtcclxuXHQgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDI5MHJweCk7XHJcblx0ICAgIG1hcmdpbi1sZWZ0OiAxMDBweDtcclxuXHR9XHJcblx0LmNsYXNzX2F0dHJfdGl0bGUgLnRpdGxlX2ljb24ge1xyXG5cdCAgICBib3JkZXItcmFkaXVzOiA1MCU7XHJcblx0ICAgIHdpZHRoOiAxMDBycHg7XHJcblx0XHRsaW5lLWhlaWdodDogNjRycHg7XHJcblx0ICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHQgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuXHQgICAgcGFkZGluZy10b3A6IDEwcnB4OyAgICBcclxuXHRcdHBhZGRpbmctbGVmdDogMjBycHg7XHJcblx0ICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHQgICAgY29sb3I6ICNmZmY7XHJcblx0fVxyXG5cdC5jbGFzc19hdHRyX3RpdGxlIGkge1xyXG5cdCAgICBjb2xvcjogIzJjNmFhMCFpbXBvcnRhbnQ7XHJcblx0fVxyXG5cdC5jbGFzc19hdHRyX3RpdGxlIC50aXRsZV9pY29uIGkge1xyXG5cdCAgICBmb250LXNpemU6IDgwcnB4O1xyXG5cdH1cclxuXHQuY2xhc3NfYXR0cl90aXRsZSAudGl0bGUge1xyXG5cdCAgICBwYWRkaW5nLXJpZ2h0OiAyMnJweDtcclxuXHQgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdCAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xyXG5cdCAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0ICAgIGJvdHRvbTogLThycHg7XHJcblx0fVxyXG5cdC5jbGFzc19hdHRyX3RpdGxlIC5hcnJvdyB7XHJcblx0ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdHRvcDogNnJweDtcclxuXHRcdHJpZ2h0OiAzMHJweDtcclxuXHRcdGZvbnQtc2l6ZTogNjBycHg7XHJcblx0fVxyXG5cdGlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcclxuXHRcdGZvbnQtc2l6ZTogMTJycHg7XHJcblx0fVxyXG5cdHRleHRhcmVhe1xyXG5cdFx0d2lkdGg6IDk4JTtcclxuXHRcdGJvcmRlcjogMXB4IHNvbGlkICNkNWQ1ZDU7XHJcblx0XHRwYWRkaW5nOiAxMHJweCA4cnB4IDEycnB4O1xyXG5cdFx0YmFja2dyb3VuZDogI0ZGRjtcclxuXHRcdGJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDtcclxuXHRcdGZvbnQtc2l6ZTogMzRycHg7XHJcblx0XHRmb250LWZhbWlseTogaW5oZXJpdDtcclxuXHRcdGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcclxuXHRcdHRyYW5zaXRpb24tZHVyYXRpb246IDAuMXM7XHJcblx0XHRjb2xvcjogIzA0NmRiMztcclxuXHRcdG1hcmdpbi10b3A6IDRweDtcclxuXHR9XHJcblx0aW5wdXR7XHJcblx0XHRib3JkZXI6IDFweCBzb2xpZCAjZDVkNWQ1O1xyXG5cdFx0d2lkdGg6IDk4JTtcclxuXHRcdGhlaWdodDogNTJycHg7XHJcblx0XHRiYWNrZ3JvdW5kOiAjRkZGO1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xyXG5cdFx0Y29sb3I6ICMwNDZkYjM7XHJcblx0XHRwYWRkaW5nOiAxMHJweCA4cnB4IDEycnB4O1xyXG5cdFx0Zm9udC1zaXplOiAzNHJweDtcclxuXHRcdGZvbnQtZmFtaWx5OiBpbmhlcml0O1xyXG5cdFx0Ym94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xyXG5cdFx0dHJhbnNpdGlvbi1kdXJhdGlvbjogMC4xcztcclxuXHRcdG1hcmdpbi10b3A6IDRycHg7XHJcblx0fVxyXG5cdC5zZWxlY3R7ICAgIFxyXG5cdFx0d2lkdGg6IDIwcHg7XHJcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHRvcGFjaXR5OiAwO1xyXG5cdH1cclxuXHQuY2xhc3NfYXR0cl9ib2R5IC5mb3JtLWdyb3VwIHtcclxuXHRcdG1hcmdpbjogMjBycHggMzBycHg7XHJcblx0ICAgIC8qIG1hcmdpbi1sZWZ0OiAtMTJweDtcclxuXHQgICAgbWFyZ2luLXJpZ2h0OiAtMTJweDsgKi9cclxuXHR9XHJcblx0LmZvcm0tZ3JvdXAgPiBsYWJlbFtjbGFzcyo9XCJjb2wtXCJdIHtcclxuXHQgICAgbWFyZ2luLWJvdHRvbTogOHJweDtcclxuXHRcdGZvbnQtc2l6ZTogMzJycHg7XHJcblx0fVxyXG5cdC5mb3JtLWdyb3VwIGxhYmVsIHtcclxuXHQgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuXHQgICAgbGluZS1oZWlnaHQ6IDYwcnB4O1xyXG5cdH1cclxuXHQubm8tcGFkZGluZy1yaWdodCB7XHJcblx0ICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDtcclxuXHR9XHJcblx0LmNvbC14cy0xMiB7XHJcblx0ICAgIHdpZHRoOiAxMDAlO1xyXG5cdH1cclxuXHQudHhfdGl0bGV7XHJcblx0XHRmb250LXNpemU6IDM2cnB4O1xyXG5cdH1cclxuXHQudHhfdGl0bGUye1xyXG5cdFx0Zm9udC1zaXplOiAzNnJweDtcclxuXHRcdHRleHQtYWxpZ246IHJpZ2h0O1xyXG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0dmVydGljYWwtYWxpZ246IC0ycHg7XHJcblx0fVxyXG5cdC50ZXh0LXJpZ2h0e1xyXG5cdFx0bWFyZ2luLXJpZ2h0OiAyMHJweDtcclxuXHRcdG1hcmdpbi10b3A6IC02cnB4O1xyXG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0ZmxvYXQ6IHJpZ2h0O1xyXG5cdFx0Zm9udC1zaXplOiA0NHJweDtcclxuXHR9XHJcblx0LnRleHQtcmlnaHQyIHtcclxuXHRcdG1hcmdpbjogMDtcclxuXHRcdHZlcnRpY2FsLWFsaWduOiAtNHB4O1xyXG5cdFx0bWFyZ2luLWxlZnQ6IDlweDtcclxuXHRcdGZsb2F0OiBub25lO1xyXG5cdFx0Zm9udC1zaXplOiA0NHJweDtcclxuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHR9XHJcblx0LnNlY3Rpb25faXB1dHtcclxuXHRcdGJvcmRlcjogMXB4IHNvbGlkICNkNWQ1ZDU7XHJcblx0XHR3aWR0aDogOTglO1xyXG5cdFx0aGVpZ2h0OiA2MnJweDtcclxuXHRcdGJhY2tncm91bmQ6ICNGRkY7XHJcblx0XHRib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XHJcblx0XHRjb2xvcjogIzA0NmRiMztcclxuXHRcdHBhZGRpbmc6IDEwcnB4IDhycHggMTBycHg7XHJcblx0XHRmb250LXNpemU6IDM0cnB4O1xyXG5cdFx0Zm9udC1mYW1pbHk6IGluaGVyaXQ7XHJcblx0XHRib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XHJcblx0XHR0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjFzO1xyXG5cdH1cclxuXHQuZGF0ZV9pcHV0e1xyXG5cdFx0Ym9yZGVyOiAxcHggc29saWQgI2Q1ZDVkNTtcclxuXHRcdC8qIHdpZHRoOiA5OCU7ICovXHJcblx0XHRoZWlnaHQ6IDYycnB4O1xyXG5cdFx0YmFja2dyb3VuZDogI0ZGRjtcclxuXHRcdGJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDtcclxuXHRcdGNvbG9yOiAjMDQ2ZGIzO1xyXG5cdFx0cGFkZGluZzogMTBycHggOHJweCA0cnB4O1xyXG5cdFx0Zm9udC1zaXplOiAzNHJweDtcclxuXHRcdGZvbnQtZmFtaWx5OiBpbmhlcml0O1xyXG5cdFx0Ym94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xyXG5cdFx0dHJhbnNpdGlvbi1kdXJhdGlvbjogMC4xcztcclxuXHR9XHJcblx0YnV0dG9uLmJ0bl9hZGQge1xyXG5cdFx0bWFyZ2luLXRvcDogNTBycHg7XHJcblx0XHRwYWRkaW5nOiAyMHJweDtcclxuXHRcdGxpbmUtaGVpZ2h0OiAxLjU7XHJcblx0XHRiYWNrZ3JvdW5kOiAjMjdBNkUxO1xyXG5cdFx0Ym9yZGVyOiBub25lO1xyXG5cdFx0Y29sb3I6ICNmZmY7XHJcblx0fVxyXG5cdC5pX3Rpc2hpe1xyXG5cdFx0Y29sb3I6IHJlZDtcclxuXHRcdHZlcnRpY2FsLWFsaWduOiBzdWI7XHJcblx0XHRmb250LXN0eWxlOiBpbml0aWFsO1xyXG5cdFx0bWFyZ2luLWxlZnQ6IDIwcnB4O1xyXG5cdFx0Zm9udC1zaXplOiAxN3B4O1xyXG5cdH1cclxuXHQuYXR0cl9maWVsZHtcclxuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHRcdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcblx0XHRtYXJnaW4tbGVmdDogOHB4O1xyXG5cdFx0Lyogd2lkdGg6IDcxJTsgKi9cclxuXHR9XHJcbjwvc3R5bGU+XHJcblxyXG48dGVtcGxhdGU+XHJcblx0PHZpZXcgY2xhc3M9XCJjb250ZW50XCI+XHJcblx0XHQ8dmlldyBjbGFzcz1cInYtYXJlYVwiIHYtZm9yPVwiKGNsYXNzYXR0cixpbmRleCkgaW4gY2xhc3NBdHRyTGlzdFwiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiY2xhc3NfYXR0cl90aXRsZVwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwidGl0bGVfbGluZVwiPjwvZGl2PlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJ0aXRsZV9pY29uXCIgOnN0eWxlPVwieydiYWNrZ3JvdW5kLWNvbG9yJzpjbGFzc2F0dHIuQmtDb2xvcn1cIj4gICBcclxuXHRcdFx0XHRcdDxpIGNsYXNzPVwiYWNlLWljb24gZmFcIiA6Y2xhc3M9XCJjbGFzc2F0dHIuSW1nRm9udFN0eWxlXCI+PC9pPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDxzcGFuIGNsYXNzPVwidGl0bGVcIj57e2NsYXNzYXR0ci5OYW1lfX08L3NwYW4+XHJcblx0XHRcdFx0PGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIGNsYXNzPVwiYXJyb3dcIiBAdGFwPVwib25hcnJvdyhpbmRleCxjbGFzc2F0dHIuT3BlbilcIj48aSBjbGFzcz1cImFjZS1pY29uIGZhIFwiOmNsYXNzPVwiY2xhc3NhdHRyLk9wZW4/J2ZhLWFuZ2xlLWRvd24nOidmYS1hbmdsZS11cCdcIj48L2k+PC9hPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImNsYXNzX2F0dHJfYm9keVwiIDpzdHlsZT1cInsnZGlzcGxheSc6Y2xhc3NhdHRyLk9wZW4/J2Jsb2NrJzonbm9uZSd9XCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImR2X2ZpZWxkX2RpdlwiIHYtZm9yPVwiKGF0dHIsaWluZGV4KSBpbiBjbGFzc2F0dHIuQXR0clwiPlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmb3JtLWdyb3VwXCIgdi1pZj1cImF0dHIuVHlwZT09J+Wtl+espuS4sicgfHwgYXR0ci5UeXBlPT0n5Y+v5Y+Y6ZW/5a2X56ym5LiyJyB8fCBhdHRyLlR5cGU9PSfmlbTmlbAnIHx8IGF0dHIuVHlwZT09J+a1rueCueaVsCdcIiA6c3R5bGU9XCJ7J2Rpc3BsYXknOmF0dHIuaGlkZGVuID09ICdUcnVlJz8nbm9uZSc6Jyd9XCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJjbGFzc2F0dHIuY29udHJvbF9zdHlsZT09J+S4iuS4i+W4g+WxgCdcIj5cclxuXHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInR4X3RpdGxlXCIgOnN0eWxlPVwieyd3aWR0aCc6Y2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGgrJyUnfVwiPnt7YXR0ci5EaXNwTmFtZX19OjxpIGNsYXNzPVwiaV90aXNoaVwiIHYtaWY9XCJhdHRyLm5vdGVtcHR5PT10cnVlXCI+KjwvaT48L3RleHQ+ICA8IS0tIGF0dHIuTm90RW1wdHk9PScxJyAtLT5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidGV4dC1yaWdodFwiIHYtaWY9XCJhdHRyLmV4dF9idXR0b249PXRydWVcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxhIEB0YXA9XCJjbGFzc0F0dHJfZXh0QnV0dG9uKGluZGV4LGlpbmRleClcIiA+PGkgY2xhc3M9XCJhY2UtaWNvbiBmYSBmYS1wbHVzLWNpcmNsZVwiPjwvaT48L2E+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIEBmb2N1cz1cIm9udGFwXCIgQGJsdXI9XCJvbmV2ZW50XCIgdi1pZj1cImF0dHIuSGVpZ2h0PT0nMSdcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6YXR0ci5XaWR0aH1cIiA6ZGlzYWJsZWQ9XCJhdHRyLmVkaXQ/ZmFsc2U6dHJ1ZVwiID4gPCEtLSA9PSdmbGFzZSc/dHJ1ZTpmYWxzZSAtLT5cclxuXHRcdFx0XHRcdFx0XHQ8dGV4dGFyZWEgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIEBmb2N1cz1cIm9udGFwXCIgQGJsdXI9XCJvbmV2ZW50XCIgdi1lbHNlLWlmPVwiYXR0ci5IZWlnaHQ9PScyJ1wiIDpkYXRhLWluZGV4PVwiaW5kZXhcIjpkYXRhLWlpbmRleD1cImlpbmRleFwiIHN0eWxlPVwiaGVpZ2h0OjYwcHg7XCIgOnN0eWxlPVwieyd3aWR0aCc6YXR0ci5XaWR0aH1cIiA6ZGlzYWJsZWQ9XCJhdHRyLmVkaXQ/ZmFsc2U6dHJ1ZVwiPjwvdGV4dGFyZWE+XHJcblx0XHRcdFx0XHRcdFx0PHRleHRhcmVhIDp2YWx1ZT1cImF0dHIuVmFsdWVcIiBAZm9jdXM9XCJvbnRhcFwiIEBibHVyPVwib25ldmVudFwiIHYtZWxzZS1pZj1cImF0dHIuSGVpZ2h0PT0nMydcIiA6ZGF0YS1pbmRleD1cImluZGV4XCI6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiBzdHlsZT1cImhlaWdodDo5MHB4O1wiIDpzdHlsZT1cInsnd2lkdGgnOmF0dHIuV2lkdGh9XCIgOmRpc2FibGVkPVwiYXR0ci5lZGl0P2ZhbHNlOnRydWVcIj48L3RleHRhcmVhPlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJjbGFzc2F0dHIuY29udHJvbF9zdHlsZT09J+W3puWPs+W4g+WxgCdcIj5cclxuXHRcdFx0XHRcdFx0XHQ8cCBjbGFzcz1cInR4X3RpdGxlMlwiIDpzdHlsZT1cInsnd2lkdGgnOmNsYXNzYXR0ci50aXRsZV9wX3dkaXRoKyclJ31cIj57e2F0dHIuRGlzcE5hbWV9fTo8L3A+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJhdHRyX2ZpZWxkXCIgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIEBmb2N1cz1cIm9udGFwXCIgQGJsdXI9XCJvbmV2ZW50XCIgdi1pZj1cImF0dHIuSGVpZ2h0PT0nMSdcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6IGF0dHIuV2lkdGguc3BsaXQoJyUnKVswXSAtIGNsYXNzYXR0ci50aXRsZV9wX3dkaXRoIC0gKGF0dHIuTm90RW1wdHk9PScxJz8xMDo1KSAtIChhdHRyLmV4dF9idXR0b249PXRydWU/OTowKSArJyUnfVwiIDpkaXNhYmxlZD1cImF0dHIuZWRpdD9mYWxzZTp0cnVlXCIgPlxyXG5cdFx0XHRcdFx0XHRcdDx0ZXh0YXJlYSBjbGFzcz1cImF0dHJfZmllbGRcIiA6dmFsdWU9XCJhdHRyLlZhbHVlXCIgQGZvY3VzPVwib250YXBcIiBAYmx1cj1cIm9uZXZlbnRcIiB2LWVsc2UtaWY9XCJhdHRyLkhlaWdodD09JzInXCIgOmRhdGEtaW5kZXg9XCJpbmRleFwiOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgc3R5bGU9XCJoZWlnaHQ6NjBweDtcIiA6c3R5bGU9XCJ7J3dpZHRoJzogYXR0ci5XaWR0aC5zcGxpdCgnJScpWzBdIC0gY2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGggLSAoYXR0ci5Ob3RFbXB0eT09JzEnPzEwOjUpIC0gKGF0dHIuZXh0X2J1dHRvbj09dHJ1ZT85OjApICsnJSd9XCIgOmRpc2FibGVkPVwiYXR0ci5lZGl0P2ZhbHNlOnRydWVcIj48L3RleHRhcmVhPlxyXG5cdFx0XHRcdFx0XHRcdDx0ZXh0YXJlYSBjbGFzcz1cImF0dHJfZmllbGRcIiA6dmFsdWU9XCJhdHRyLlZhbHVlXCIgQGZvY3VzPVwib250YXBcIiBAYmx1cj1cIm9uZXZlbnRcIiB2LWVsc2UtaWY9XCJhdHRyLkhlaWdodD09JzMnXCIgOmRhdGEtaW5kZXg9XCJpbmRleFwiOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgc3R5bGU9XCJoZWlnaHQ6OTBweDtcIiA6c3R5bGU9XCJ7J3dpZHRoJzogYXR0ci5XaWR0aC5zcGxpdCgnJScpWzBdIC0gY2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGggLSAoYXR0ci5Ob3RFbXB0eT09JzEnPzEwOjUpIC0gKGF0dHIuZXh0X2J1dHRvbj09dHJ1ZT85OjApICsnJSd9XCIgOmRpc2FibGVkPVwiYXR0ci5lZGl0P2ZhbHNlOnRydWVcIj48L3RleHRhcmVhPlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0MlwiIHYtaWY9XCJhdHRyLmV4dF9idXR0b249PXRydWVcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxhIEB0YXA9XCJjbGFzc0F0dHJfZXh0QnV0dG9uKGluZGV4LGlpbmRleClcIiA+PGkgY2xhc3M9XCJhY2UtaWNvbiBmYSBmYS1wbHVzLWNpcmNsZVwiPjwvaT48L2E+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWVcIj4qPC9pPlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZvcm0tZ3JvdXBcIiB2LWlmPVwiYXR0ci5UeXBlPT0n5biD5bCU5YC8J1wiIDpzdHlsZT1cInsnZGlzcGxheSc6YXR0ci5oaWRkZW4gPT0gJ1RydWUnPydub25lJzonJ31cIj5cclxuXHRcdFx0XHRcdFx0PGNoZWNrYm94LWdyb3VwIGNsYXNzPVwiY2hlY2tfcmVtZW1iZXJQd2RcIiBAY2hhbmdlPVwib25jaGVja1wiIDpkYXRhLWlzY2hlY2s9XCJhdHRyLlZhbHVlXCIgOmRhdGEtaW5kZXg9XCJpbmRleFwiIDpkYXRhLWlpbmRleD1cImlpbmRleFwiIDpzdHlsZT1cInsnbWFyZ2luLWxlZnQnOiBjbGFzc2F0dHIuY29udHJvbF9zdHlsZT09J+W3puWPs+W4g+WxgCc/Y2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGgrMiArJyUnOicxMHJweCd9XCI+XHJcblx0XHRcdFx0XHRcdFx0PGxhYmVsPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGNoZWNrYm94IDp2YWx1ZT1cImF0dHIuVmFsdWVcIiA6Y2hlY2tlZD1cImF0dHIuVmFsdWVcIi8+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dGV4dD57e2F0dHIuRGlzcE5hbWV9fTxpIGNsYXNzPVwiaV90aXNoaVwiIHYtaWY9XCJhdHRyLm5vdGVtcHR5PT10cnVlXCI+KjwvaT48L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0PC9sYWJlbD5cclxuXHRcdFx0XHRcdFx0PC9jaGVja2JveC1ncm91cD5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZm9ybS1ncm91cFwiIHYtaWY9XCJhdHRyLlR5cGU9PSfml6XmnJ8nIHx8IGF0dHIuVHlwZT09J+aXtumXtCdcIiA6c3R5bGU9XCJ7J2Rpc3BsYXknOmF0dHIuaGlkZGVuID09ICdUcnVlJz8nbm9uZSc6Jyd9XCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJjbGFzc2F0dHIuY29udHJvbF9zdHlsZT09J+S4iuS4i+W4g+WxgCdcIj5cclxuXHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInR4X3RpdGxlXCIgOnN0eWxlPVwieyd3aWR0aCc6Y2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGgrJyUnfVwiPnt7YXR0ci5EaXNwTmFtZX19OjxpIGNsYXNzPVwiaV90aXNoaVwiIHYtaWY9XCJhdHRyLm5vdGVtcHR5PT10cnVlXCI+KjwvaT48L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0PHBpY2tlciBtb2RlPVwiZGF0ZVwiIDp2YWx1ZT1cImF0dHIuVmFsdWVcIiBAY2hhbmdlPVwib25kYXRlVGltZVwiIGNsYXNzPVwiZGF0ZV9pcHV0XCIgOmRhdGEtaW5kZXg9XCJpbmRleFwiIDpkYXRhLWlpbmRleD1cImlpbmRleFwiIDpzdHlsZT1cInsnd2lkdGgnOmF0dHIuV2lkdGh9XCI+XHJcblx0XHRcdFx0XHRcdFx0ICAgPHZpZXcgY2xhc3M9XCJwaWNrZXJcIj57e2F0dHIuVmFsdWV9fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8L3BpY2tlcj5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyB2LWlmPVwiY2xhc3NhdHRyLmNvbnRyb2xfc3R5bGU9PSflt6blj7PluIPlsYAnXCI+XHJcblx0XHRcdFx0XHRcdFx0PHAgY2xhc3M9XCJ0eF90aXRsZTJcIiA6c3R5bGU9XCJ7J3dpZHRoJzpjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCsnJSd9XCI+e3thdHRyLkRpc3BOYW1lfX06PC9wPlxyXG5cdFx0XHRcdFx0XHRcdDxwaWNrZXIgbW9kZT1cImRhdGVcIiA6dmFsdWU9XCJhdHRyLlZhbHVlXCIgQGNoYW5nZT1cIm9uZGF0ZVRpbWVcIiBjbGFzcz1cImRhdGVfaXB1dCBhdHRyX2ZpZWxkXCIgOmRhdGEtaW5kZXg9XCJpbmRleFwiIDpkYXRhLWlpbmRleD1cImlpbmRleFwiIDpzdHlsZT1cInsnd2lkdGgnOiBhdHRyLldpZHRoLnNwbGl0KCclJylbMF0gLSBjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCAtIChhdHRyLk5vdEVtcHR5PT0nMSc/MTA6NSkgKyclJ31cIj5cclxuXHRcdFx0XHRcdFx0XHQgICA8dmlldyBjbGFzcz1cInBpY2tlclwiPnt7YXR0ci5WYWx1ZX19PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdDwvcGlja2VyPlxyXG5cdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwiaV90aXNoaVwiIHYtaWY9XCJhdHRyLm5vdGVtcHR5PT10cnVlXCI+KjwvaT5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmb3JtLWdyb3VwXCIgdi1pZj1cImF0dHIuVHlwZT09J+Wtl+WFuCcgfHwgYXR0ci5UeXBlPT0n5a2X5YW4LeWtl+espuS4sidcIiA6c3R5bGU9XCJ7J2Rpc3BsYXknOmF0dHIuaGlkZGVuID09ICdUcnVlJz8nbm9uZSc6Jyd9XCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJjbGFzc2F0dHIuY29udHJvbF9zdHlsZT09J+S4iuS4i+W4g+WxgCdcIj5cclxuXHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInR4X3RpdGxlXCI+e3thdHRyLkRpc3BOYW1lfX06PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWVcIj4qPC9pPjwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHQ8cGlja2VyIGNsYXNzPVwic2VjdGlvbl9pcHV0XCIgQGNoYW5nZT1cIm9uY2hhbmdlXCIgOnJhbmdlPVwiYXR0ci5kaWN0aXRlbVwiIHJhbmdlLWtleT1cIkNOX1NfTkFNRVwiIHYtaWY9XCJhdHRyLnNlbGVjdD09ZmFsc2VcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6YXR0ci5XaWR0aH1cIiA6ZGlzYWJsZWQ9XCJhdHRyLmVkaXQ/ZmFsc2U6dHJ1ZVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGxhYmVsIGNsYXNzPVwiXCI+e3sgYXR0ci5WYWx1ZSB9fTwvbGFiZWw+XHJcblx0XHRcdFx0XHRcdFx0PC9waWNrZXI+XHJcblx0XHRcdFx0XHRcdFx0PHNlbGVjdC1jeSA6dmFsdWU9XCJhdHRyLlZhbHVlXCIgOm5hbWU9XCJhdHRyLk5hbWVcIiA6b3B0aW9ucz1cImF0dHIuZGljdGl0ZW1cIiBzaG93Q2xlYXJJY29uPVwidHJ1ZVwiIEBjaGFuZ2U9XCJvbmNoYW5nZTJcIiB2LWVsc2UtaWY9XCJhdHRyLnNlbGVjdD09dHJ1ZVwiIDpkYXRhLWluZGV4PVwiaW5kZXhcIiA6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiA6c3R5bGU9XCJ7J3dpZHRoJzphdHRyLldpZHRofVwiIDpkaXNhYmxlZD1cImF0dHIuZWRpdD9mYWxzZTp0cnVlXCI+PC9zZWxlY3QtY3k+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cImNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5bem5Y+z5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdDxwIGNsYXNzPVwidHhfdGl0bGUyXCIgOnN0eWxlPVwieyd3aWR0aCc6Y2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGgrJyUnfVwiPnt7YXR0ci5EaXNwTmFtZX19OjwvcD5cclxuXHRcdFx0XHRcdFx0XHQ8cGlja2VyIGNsYXNzPVwic2VjdGlvbl9pcHV0IGF0dHJfZmllbGRcIiBAY2hhbmdlPVwib25jaGFuZ2VcIiA6cmFuZ2U9XCJhdHRyLmRpY3RpdGVtXCIgcmFuZ2Uta2V5PVwiQ05fU19OQU1FXCIgdi1pZj1cImF0dHIuc2VsZWN0PT1mYWxzZVwiIDpkYXRhLWluZGV4PVwiaW5kZXhcIiA6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiA6c3R5bGU9XCJ7J3dpZHRoJzogYXR0ci5XaWR0aC5zcGxpdCgnJScpWzBdIC0gY2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGggLSAoYXR0ci5Ob3RFbXB0eT09JzEnPzEwOjUpICsnJSd9XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8bGFiZWwgY2xhc3M9XCJcIj57eyBhdHRyLlZhbHVlIH19PC9sYWJlbD5cclxuXHRcdFx0XHRcdFx0XHQ8L3BpY2tlcj5cclxuXHRcdFx0XHRcdFx0XHQ8c2VsZWN0LWN5IDp2YWx1ZT1cImF0dHIuVmFsdWVcIiA6bmFtZT1cImF0dHIuTmFtZVwiIDpvcHRpb25zPVwiYXR0ci5kaWN0aXRlbVwiIHNob3dDbGVhckljb249XCJ0cnVlXCIgQGNoYW5nZT1cIm9uY2hhbmdlMlwiIHYtZWxzZS1pZj1cImF0dHIuc2VsZWN0PT10cnVlXCIgOmRhdGEtaW5kZXg9XCJpbmRleFwiIDpkYXRhLWlpbmRleD1cImlpbmRleFwiIDpzdHlsZT1cInsnd2lkdGgnOmF0dHIuV2lkdGh9XCI+PC9zZWxlY3QtY3k+XHJcblx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWVcIj4qPC9pPlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZvcm0tZ3JvdXBcIiB2LWlmPVwiYXR0ci5UeXBlPT0n5byV55So5a+56LGhKOWNleS4qiknIHx8IGF0dHIuVHlwZT09J+W8leeUqOWvueixoSjlpJrkuKopJ1wiIDpzdHlsZT1cInsnZGlzcGxheSc6YXR0ci5oaWRkZW4gPT0gJ1RydWUnPydub25lJzonJ31cIj5cclxuXHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cImNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5LiK5LiL5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwidHhfdGl0bGVcIj57e2F0dHIuRGlzcE5hbWV9fTo8aSBjbGFzcz1cImlfdGlzaGlcIiB2LWlmPVwiYXR0ci5ub3RlbXB0eT09dHJ1ZVwiPio8L2k+PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCIgdi1pZj1cImF0dHIuVHlwZT09J+W8leeUqOWvueixoSjljZXkuKopJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGEgQHRhcD1cImNsYXNzQXR0cl9BZGRSZWZcIiA6ZGF0YS1jbGFzc2lkPVwiYXR0ci5SZWxDbHMuc3BsaXQoJ3wnKVswXVwiIDpkYXRhLWNsYXNzbmFtZT1cImF0dHIuUmVsQ2xzLnNwbGl0KCd8JylbMV1cIiA+PGkgY2xhc3M9XCJhY2UtaWNvbiBmYSBmYS1wbHVzLWNpcmNsZVwiPjwvaT48L2E+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHQtcmlnaHRcIiB2LWlmPVwiYXR0ci5UeXBlPT0n5byV55So5a+56LGhKOWkmuS4qiknXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8cGlja2VyIGNsYXNzPVwic2VsZWN0XCIgQGNoYW5nZT1cImNsYXNzQXR0cl9BZGRSZWZcIiA6cmFuZ2U9XCJhdHRyLlJlbENsc0xpc3RcIiByYW5nZS1rZXk9XCJuYW1lXCIgOmRhdGEtaW5kZXg9XCJpbmRleFwiIDpkYXRhLWlpbmRleD1cImlpbmRleFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8bGFiZWwgY2xhc3M9XCJcIj57eyBhdHRyLlZhbHVlIH19PC9sYWJlbD5cclxuXHRcdFx0XHRcdFx0XHRcdDwvcGlja2VyPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGEgY2xhc3M9XCJjbGFzc19hdHRyX2FkZF9yZWZcIj48aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLXBsdXMtY2lyY2xlXCI+PC9pPjwvYT5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6YXR0ci5XaWR0aH1cIiBkaXNhYmxlZD1cInRydWVcIiA+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cImNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5bem5Y+z5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdDxwIGNsYXNzPVwidHhfdGl0bGUyXCIgOnN0eWxlPVwieyd3aWR0aCc6Y2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGgrJyUnfVwiPnt7YXR0ci5EaXNwTmFtZX19OjwvcD5cclxuXHRcdFx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImF0dHJfZmllbGRcIiA6ZGF0YS1pbmRleD1cImluZGV4XCIgOmRhdGEtaWluZGV4PVwiaWluZGV4XCIgOnN0eWxlPVwieyd3aWR0aCc6IGF0dHIuV2lkdGguc3BsaXQoJyUnKVswXSAtIGNsYXNzYXR0ci50aXRsZV9wX3dkaXRoIC0gKGF0dHIuTm90RW1wdHk9PScxJz8xMDo1KSAtIDkgKyclJ31cIiBkaXNhYmxlZD1cInRydWVcIiA+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHQtcmlnaHQyXCIgdi1pZj1cImF0dHIuVHlwZT09J+W8leeUqOWvueixoSjljZXkuKopJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGEgQHRhcD1cImNsYXNzQXR0cl9BZGRSZWZcIiA6ZGF0YS1jbGFzc2lkPVwiYXR0ci5SZWxDbHMuc3BsaXQoJ3wnKVswXVwiIDpkYXRhLWNsYXNzbmFtZT1cImF0dHIuUmVsQ2xzLnNwbGl0KCd8JylbMV1cIiA+PGkgY2xhc3M9XCJhY2UtaWNvbiBmYSBmYS1wbHVzLWNpcmNsZVwiPjwvaT48L2E+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHQtcmlnaHQyXCIgdi1pZj1cImF0dHIuVHlwZT09J+W8leeUqOWvueixoSjlpJrkuKopJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHBpY2tlciBjbGFzcz1cInNlbGVjdFwiIEBjaGFuZ2U9XCJjbGFzc0F0dHJfQWRkUmVmXCIgOnJhbmdlPVwiYXR0ci5SZWxDbHNMaXN0XCIgcmFuZ2Uta2V5PVwibmFtZVwiIDpkYXRhLWluZGV4PVwiaW5kZXhcIiA6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGxhYmVsIGNsYXNzPVwiXCI+e3sgYXR0ci5WYWx1ZSB9fTwvbGFiZWw+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3BpY2tlcj5cclxuXHRcdFx0XHRcdFx0XHRcdDxhIGNsYXNzPVwiY2xhc3NfYXR0cl9hZGRfcmVmXCI+PGkgY2xhc3M9XCJhY2UtaWNvbiBmYSBmYS1wbHVzLWNpcmNsZVwiPjwvaT48L2E+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWVcIj4qPC9pPlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZvcm0tZ3JvdXBcIiB2LWlmPVwiYXR0ci5UeXBlPT0n5byV55So5Lq65ZGYJ1wiIDpzdHlsZT1cInsnZGlzcGxheSc6YXR0ci5oaWRkZW4gPT0gJ1RydWUnPydub25lJzonJ31cIj5cclxuXHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cImNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5LiK5LiL5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwidHhfdGl0bGVcIj57e2F0dHIuRGlzcE5hbWV9fTo8aSBjbGFzcz1cImlfdGlzaGlcIiB2LWlmPVwiYXR0ci5ub3RlbXB0eT09dHJ1ZVwiPio8L2k+PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8YSBjbGFzcz1cImNsYXNzX2F0dHJfYWRkX3BlclwiIEB0YXA9XCJjbGFzc0F0dHJfQWRkUGVyKGluZGV4LGlpbmRleClcIj48aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLXBsdXMtY2lyY2xlXCI+PC9pPjwvYT5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiA6dmFsdWU9XCJhdHRyLlZhbHVlXCIgOnN0eWxlPVwieyd3aWR0aCc6YXR0ci5XaWR0aH1cIiBkaXNhYmxlZD1cInRydWVcIiA+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cImNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5bem5Y+z5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdDxwIGNsYXNzPVwidHhfdGl0bGUyXCIgOnN0eWxlPVwieyd3aWR0aCc6Y2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGgrJyUnfVwiPnt7YXR0ci5EaXNwTmFtZX19OjwvcD5cclxuXHRcdFx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImF0dHJfZmllbGRcIiA6dmFsdWU9XCJhdHRyLlZhbHVlXCIgOnN0eWxlPVwieyd3aWR0aCc6IGF0dHIuV2lkdGguc3BsaXQoJyUnKVswXSAtIGNsYXNzYXR0ci50aXRsZV9wX3dkaXRoIC0gKGF0dHIuTm90RW1wdHk9PScxJz8xMDo1KSAtIDkgKyclJ31cIiBkaXNhYmxlZD1cInRydWVcIiA+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHQtcmlnaHQyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8YSBjbGFzcz1cImNsYXNzX2F0dHJfYWRkX3BlclwiIEB0YXA9XCJjbGFzc0F0dHJfQWRkUGVyKGluZGV4LGlpbmRleClcIj48aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLXBsdXMtY2lyY2xlXCI+PC9pPjwvYT5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImlfdGlzaGlcIiB2LWlmPVwiYXR0ci5ub3RlbXB0eT09dHJ1ZVwiPio8L2k+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZm9ybS1ncm91cFwiIHYtaWY9XCJhdHRyLlR5cGU9PSflvJXnlKjpobnnm64nXCIgOnN0eWxlPVwieydkaXNwbGF5JzphdHRyLmhpZGRlbiA9PSAnVHJ1ZSc/J25vbmUnOicnfVwiPlxyXG5cdFx0XHRcdFx0XHQ8dmlldyB2LWlmPVwiY2xhc3NhdHRyLmNvbnRyb2xfc3R5bGU9PSfkuIrkuIvluIPlsYAnXCI+XHJcblx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJ0eF90aXRsZVwiPnt7YXR0ci5EaXNwTmFtZX19OjxpIGNsYXNzPVwiaV90aXNoaVwiIHYtaWY9XCJhdHRyLm5vdGVtcHR5PT10cnVlXCI+KjwvaT48L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHQtcmlnaHRcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxhIGhyZWY9XCIjXCIgY2xhc3M9XCJjbGFzc19hdHRyX2FkZF9wcmpcIiBAdGFwPVwiY2xhc3NBdHRyX0FkZFByaihpbmRleCxpaW5kZXgpXCI+PGkgY2xhc3M9XCJhY2UtaWNvbiBmYSBmYS1wbHVzLWNpcmNsZVwiPjwvaT48L2E+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIDpzdHlsZT1cInsnd2lkdGgnOmF0dHIuV2lkdGh9XCIgZGlzYWJsZWQ9XCJ0cnVlXCIgPlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJjbGFzc2F0dHIuY29udHJvbF9zdHlsZT09J+W3puWPs+W4g+WxgCdcIj5cclxuXHRcdFx0XHRcdFx0XHQ8cCBjbGFzcz1cInR4X3RpdGxlMlwiIDpzdHlsZT1cInsnd2lkdGgnOmNsYXNzYXR0ci50aXRsZV9wX3dkaXRoKyclJ31cIj57e2F0dHIuRGlzcE5hbWV9fTo8L3A+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJhdHRyX2ZpZWxkXCIgOnZhbHVlPVwiYXR0ci5WYWx1ZVwiIDpzdHlsZT1cInsnd2lkdGgnOiBhdHRyLldpZHRoLnNwbGl0KCclJylbMF0gLSBjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCAtIChhdHRyLk5vdEVtcHR5PT0nMSc/MTA6NSkgLSA5ICsnJSd9XCIgZGlzYWJsZWQ9XCJ0cnVlXCIgPlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0MlwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGEgY2xhc3M9XCJjbGFzc19hdHRyX2FkZF9wcmpcIiBAdGFwPVwiY2xhc3NBdHRyX0FkZFByaihpbmRleCxpaW5kZXgpXCI+PGkgY2xhc3M9XCJhY2UtaWNvbiBmYSBmYS1wbHVzLWNpcmNsZVwiPjwvaT48L2E+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWVcIj4qPC9pPlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZvcm0tZ3JvdXBcIiB2LWlmPVwiYXR0ci5UeXBlPT0n57yW56CBJ1wiIDpzdHlsZT1cInsnZGlzcGxheSc6YXR0ci5oaWRkZW4gPT0gJ1RydWUnPydub25lJzonJ31cIj5cclxuXHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cImNsYXNzYXR0ci5jb250cm9sX3N0eWxlPT0n5LiK5LiL5biD5bGAJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwidHhfdGl0bGVcIj57e2F0dHIuRGlzcE5hbWV9fTo8aSBjbGFzcz1cImlfdGlzaGlcIiB2LWlmPVwiYXR0ci5ub3RlbXB0eT09dHJ1ZVwiPio8L2k+PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIDpkYXRhLWluZGV4PVwiaW5kZXhcIiA6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiA6c3R5bGU9XCJ7J3dpZHRoJzphdHRyLldpZHRofVwiIDpkaXNhYmxlZD1cImF0dHIuZWRpdD9mYWxzZTp0cnVlXCIgPlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJjbGFzc2F0dHIuY29udHJvbF9zdHlsZT09J+W3puWPs+W4g+WxgCdcIj5cclxuXHRcdFx0XHRcdFx0XHQ8cCBjbGFzcz1cInR4X3RpdGxlMlwiIDpzdHlsZT1cInsnd2lkdGgnOmNsYXNzYXR0ci50aXRsZV9wX3dkaXRoKyclJ31cIj57e2F0dHIuRGlzcE5hbWV9fTo8L3A+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJhdHRyX2ZpZWxkXCIgOmRhdGEtaW5kZXg9XCJpbmRleFwiIDpkYXRhLWlpbmRleD1cImlpbmRleFwiIDpzdHlsZT1cInsnd2lkdGgnOiBhdHRyLldpZHRoLnNwbGl0KCclJylbMF0gLSBjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCAtIChhdHRyLk5vdEVtcHR5PT0nMSc/MTA6NSkgKyclJ31cIiA6ZGlzYWJsZWQ9XCJhdHRyLmVkaXQ/ZmFsc2U6dHJ1ZVwiID5cclxuXHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImlfdGlzaGlcIiB2LWlmPVwiYXR0ci5ub3RlbXB0eT09dHJ1ZVwiPio8L2k+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZm9ybS1ncm91cFwiIHYtaWY9XCJhdHRyLlR5cGU9PSfnnIHluILljLonXCIgOnN0eWxlPVwieydkaXNwbGF5JzphdHRyLmhpZGRlbiA9PSAnVHJ1ZSc/J25vbmUnOicnfVwiPlxyXG5cdFx0XHRcdFx0XHQ8dmlldyB2LWlmPVwiY2xhc3NhdHRyLmNvbnRyb2xfc3R5bGU9PSfkuIrkuIvluIPlsYAnXCI+XHJcblx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJ0eF90aXRsZVwiPnt7YXR0ci5EaXNwTmFtZX19OjxpIGNsYXNzPVwiaV90aXNoaVwiIHYtaWY9XCJhdHRyLm5vdGVtcHR5PT10cnVlXCI+KjwvaT48L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0PHBpY2tlckFkZHJlc3MgY2xhc3M9XCJkYXRlX2lwdXRcIiBAY2hhbmdlPVwiYWRkcmVzc2NoYW5nZVwiIDpkYXRhLWluZGV4PVwiaW5kZXhcIiA6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiA6c3R5bGU9XCJ7J3dpZHRoJzphdHRyLldpZHRofVwiID57e2F0dHIuVmFsdWV9fTwvcGlja2VyQWRkcmVzcz5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyB2LWlmPVwiY2xhc3NhdHRyLmNvbnRyb2xfc3R5bGU9PSflt6blj7PluIPlsYAnXCI+XHJcblx0XHRcdFx0XHRcdFx0PHAgY2xhc3M9XCJ0eF90aXRsZTJcIiA6c3R5bGU9XCJ7J3dpZHRoJzpjbGFzc2F0dHIudGl0bGVfcF93ZGl0aCsnJSd9XCI+e3thdHRyLkRpc3BOYW1lfX06PC9wPlxyXG5cdFx0XHRcdFx0XHRcdDxwaWNrZXJBZGRyZXNzIGNsYXNzPVwiZGF0ZV9pcHV0IGF0dHJfZmllbGRcIiBAY2hhbmdlPVwiYWRkcmVzc2NoYW5nZVwiIDpkYXRhLWluZGV4PVwiaW5kZXhcIiA6ZGF0YS1paW5kZXg9XCJpaW5kZXhcIiA6c3R5bGU9XCJ7J3dpZHRoJzogYXR0ci5XaWR0aC5zcGxpdCgnJScpWzBdIC0gY2xhc3NhdHRyLnRpdGxlX3Bfd2RpdGggLSAoYXR0ci5Ob3RFbXB0eT09JzEnPzEwOjUpICsnJSd9XCI+e3thdHRyLlZhbHVlfX08L3BpY2tlckFkZHJlc3M+XHJcblx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJpX3Rpc2hpXCIgdi1pZj1cImF0dHIubm90ZW1wdHk9PXRydWVcIj4qPC9pPlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcclxuXHRcdFx0XHJcblx0XHRcdDxidXR0b24gdHlwZT1cImRlZmF1bHRcIiBAdGFwPVwic2F2YVwiIGNsYXNzPVwiYnRuX2FkZFwiPnt7dGl0bGV9fTwvYnV0dG9uPlxyXG5cdFx0PC92aWV3PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT4gXHJcblxyXG48c2NyaXB0PlxyXG5cdGltcG9ydCBwaWNrZXJBZGRyZXNzIGZyb20gJy4uLy4uL2pzL3BpY2tlckFkZHJlc3MvcGlja2VyQWRkcmVzcy52dWUnXHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0Y29tcG9uZW50czoge1xyXG4gICAgICAgICAgICBwaWNrZXJBZGRyZXNzXHJcbiAgICAgICAgfSxcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0dGl0bGU6ICfmlrDlop4nLFxyXG5cdFx0XHRcdHBhcmFtOnt9LFxyXG5cdFx0XHRcdGNsYXNzQXR0ckxpc3Q6W10sXHJcblx0XHRcdFx0Y2xhc3NHcmlkU3R5bGU6W10sXHJcblx0XHRcdFx0ZWRpdF9pbml0YWxfZXZlbnQ6XCJcIiwgIC8v5by556qX5Yid5aeL5YyW5LqL5Lu2SURcclxuXHRcdFx0XHRlZGl0X29rX2V2ZW50OlwiXCIsICAgICAgLy/lvLnnqpfngrnlh7tPSyDop6blj5Hkuovku7ZJRFxyXG5cdFx0XHRcdGVkaXRfc2VsZWN0X2NvbXBvc2VfZXZlbnQ6XCJcIiwgIC8v6YCJ5oup57uE5oiQ5a+56LGh5pe26LCD55SoXHJcblx0XHRcdFx0ZWRpdF9jb21wb3NlX2Nsc19pZDpcIlwiLFxyXG5cdFx0XHRcdGdsb2JhbF9hdHRyOltdLFxyXG5cdFx0XHRcdHJlZmRhdGFzdG9yZTogW10sXHQgICAvL+W8leeUqOaVsOaNruWtmOWCqOWMui8vIHthdHRyOidHX1BSSl8nICsgYmluZGF0dHIgKyAnX0lEJywgdmFsdWU6aW5mby5pZH1cclxuXHRcdFx0XHRcclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdG9uTG9hZChvcHRpb25zKSB7XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKG9wdGlvbnMpO1xyXG5cdFx0XHR1bmkuc2V0TmF2aWdhdGlvbkJhclRpdGxlKHsgdGl0bGU6IG9wdGlvbnMudGl0bGVuYW1lfSk7IC8v6K6+572u6aG26YOo5qCH6aKYIFxyXG5cdFx0XHR2YXIgcGFyYW0gPSBKU09OLnBhcnNlKG9wdGlvbnMucGFyYW0pO1xyXG5cdFx0XHR0aGlzLiRkYXRhLnRpdGxlID0gcGFyYW0uQWRkX0J0bk5hbWU/cGFyYW0uQWRkX0J0bk5hbWU6b3B0aW9ucy50aXRsZW5hbWU7IC8v6K6+572u5oyJ6ZKu5paH5a2XXHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKHBhcmFtKTtcclxuXHRcdFx0aWYoIXBhcmFtLkVkaXREbGdNb2RlKXtcclxuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6XCLor6Xlip/og73ngrnmnKrphY3nva7nvJbovpHnqpflj6PvvIzor7fph43mlrDphY3nva7vvIFcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdH1cclxuXHRcdFx0aWYoIXBhcmFtLkVkaXRfZGxnLk5hbWUpe1xyXG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcIuivpeWKn+iDveeCueacqumFjee9rueql+WPo+agt+W8j++8jOivt+mHjeaWsOmFjee9ru+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLiRkYXRhLnBhcmFtID0gcGFyYW07XHJcblx0XHRcdHZhciBlZGl0X2RsZyA9IHtcclxuXHRcdFx0ICAgIE1vZGVsOiBwYXJhbS5FZGl0RGxnTW9kZSxcclxuXHRcdFx0ICAgIE5hbWU6IHBhcmFtLkVkaXRfZGxnLk5hbWVcclxuXHRcdFx0fVxyXG5cdFx0XHR2YXIgZGF0YUluZm8gPSB7XHJcblx0XHRcdFx0Y2xhc3NfaWQ6IHBhcmFtLmNsc2lkXHJcblx0XHRcdH07XHJcblx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHRcdCR0aGlzLiRzdG9yZS5zdGF0ZS50aGlzYXJlYUZ1bmNJRCA9IHBhcmFtLmNsc2lkO1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZygkdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRjbGFzc0F0dHJMaXN0KTtcclxuXHRcdFx0IC8v6I635Y+WXHJcblx0XHRcdGlmKCR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldGNsYXNzQXR0ckxpc3Qpe1xyXG5cdFx0XHQgXHQkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0ID0gJHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0Y2xhc3NBdHRyTGlzdC5kYXRhO1xyXG5cdFx0XHRcdCR0aGlzLmNsYXNzR3JpZFN0eWxlSW5mbygpO1xyXG5cdFx0XHR9ZWxzZVxyXG5cdFx0XHRcdCR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnY2xhc3NBdHRyTGlzdCcsZGF0YUluZm8pLnRoZW4oc3VjY2Vzcz0+e1xyXG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coc3VjY2Vzcyk7XHJcblx0XHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlPT0nMDAwMDAnKSB7XHJcblx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QgPSBzdWNjZXNzLmRhdGE7XHJcblx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHQkdGhpcy5jbGFzc0dyaWRTdHlsZUluZm8oKTtcclxuXHRcdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzFcIixjb250ZW50OnN1Y2Nlc3MubXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pLmNhdGNoKGV4PT57XHJcblx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XHJcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzEuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcclxuXHRcdH0sXHJcblx0XHRtZXRob2RzOiB7XHJcblx0XHRcdGFzeW5jIGNsYXNzR3JpZFN0eWxlSW5mbygpe1xyXG5cdFx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHRcdFx0dmFyIGdyaWRzdHlsZUluZm8gPSB7XHJcblx0XHRcdFx0XHRjbGFzc19pZDogJHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsXHJcblx0XHRcdFx0XHRuYW1lOiAkdGhpcy4kZGF0YS5wYXJhbS5FZGl0X2RsZy5OYW1lLFxyXG5cdFx0XHRcdFx0dHlwZTogJzInXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0XHQkdGhpcy4kc3RvcmUuc3RhdGUudGhpc0VkaXROYW1lID0gJHRoaXMuJGRhdGEucGFyYW0uRWRpdF9kbGcuTmFtZVxyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKCR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldGNsYXNzR3JpZFN0eWxlSW5mbyk7XHJcblx0XHRcdFx0IC8v6I635Y+WXHJcblx0XHRcdFx0aWYoJHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0Y2xhc3NHcmlkU3R5bGVJbmZvKXtcclxuXHRcdFx0XHQgXHQkdGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZSA9ICR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldGNsYXNzR3JpZFN0eWxlSW5mby5kYXRhO1xyXG5cdFx0XHRcdFx0JHRoaXMuY2xhc3NfYXR0cl9pbml0KCk7XHJcblx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHQvL2NvbnNvbGUubG9nKGdyaWRzdHlsZUluZm8pO1xyXG5cdFx0XHRcdFx0JHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdjbGFzc0dyaWRTdHlsZUluZm8nLGdyaWRzdHlsZUluZm8pLnRoZW4oc3VjY2Vzcz0+e1xyXG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhzdWNjZXNzKTtcclxuXHRcdFx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZT09JzAwMDAwJykge1xyXG5cdFx0XHRcdFx0XHRcdHN1Y2Nlc3MuZGF0YS5TdHlsZURlZiA9IEpTT04ucGFyc2Uoc3VjY2Vzcy5kYXRhLlN0eWxlRGVmKTtcclxuXHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZSA9IHN1Y2Nlc3MuZGF0YTtcclxuXHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHQkdGhpcy5jbGFzc19hdHRyX2luaXQoKTtcclxuXHRcdFx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68xLjJcIixjb250ZW50OnN1Y2Nlc3MubXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KS5jYXRjaChleD0+e1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhleCk7XHJcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMS4zXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdG9udGFwKGUpeyAvL+aJq+eggeWKn+iDvVxyXG5cdFx0XHRcdC8vY29uc29sZS5sb2coZS50YXJnZXQpXHJcblx0XHRcdFx0Z2V0QXBwKCkub25TY2FuKChyZXN1bHQpPT57XHJcblx0XHRcdFx0XHQvL2NvbnNvbGUubG9nKHJlc3VsdC5kZWNvZGVkYXRhKTtcclxuXHRcdFx0XHRcdHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZT1yZXN1bHQuZGVjb2RlZGF0YTtcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRvbmFycm93KGluZGV4LG9wZW4pe1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGluZGV4KyctLScrb3Blbik7XHJcblx0XHRcdFx0dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2luZGV4XS5PcGVuPW9wZW49PXRydWU/ZmFsc2U6dHJ1ZTtcclxuXHRcdFx0fSxcclxuXHRcdFx0b25kYXRlVGltZShlKSB7XHJcblx0XHRcdFx0Ly9jb25zb2xlLmxvZyhlLnRhcmdldClcclxuXHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWU9ZS50YXJnZXQudmFsdWU7XHJcblx0XHRcdH0sXHJcblx0XHRcdG9uY2hhbmdlKGUpIHtcclxuXHRcdFx0XHRjb25zb2xlLmxvZyhlLnRhcmdldCk7XHJcblx0XHRcdFx0dmFyIHZhbHVlPXRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5kaWN0aXRlbVtlLnRhcmdldC52YWx1ZV07XHJcblx0XHRcdFx0dmFyIGRhdGFfYXR0ciA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXTtcclxuXHRcdFx0XHRjb25zb2xlLmxvZyhkYXRhX2F0dHIpO1xyXG5cdFx0XHRcdGlmICh2YWx1ZS5OYW1lICE9IGRhdGFfYXR0ci5WYWx1ZSkge1xyXG5cdFx0XHRcdFx0dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlPXZhbHVlLk5hbWU7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWUpO1xyXG5cdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uYWN0aW9uO1xyXG5cdFx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcclxuXHRcdFx0XHQgICAgICAgIC8vIHNlbGYuZXZlbnRfbm9fc3ViID0gMTtcclxuXHRcdFx0XHQgICAgICAgIHZhciByZXE9W107XHJcblx0XHRcdFx0ICAgICAgICB2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Q7XHJcblx0XHRcdFx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0ICAgICAgICBcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcclxuXHRcdFx0XHQgICAgICAgIFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0ICAgICAgICBcdFx0dmFyIGFyID0gYXR0cltqXTtcclxuXHRcdFx0XHQgICAgICAgIFx0XHRpZihhci5UeXBlPT0n5byV55So5a+56LGhKOWkmuS4qiknKVxyXG5cdFx0XHRcdCAgICAgICAgXHRcdFx0aWYoYXIuVmFsdWU9PSfor7cnKSBhci5WYWx1ZT0nJztcclxuXHRcdFx0XHQgICAgICAgIFx0XHRpZihhci5UeXBlPT0n5byV55So5Lq65ZGYJyB8fCBhci5UeXBlPT0n5byV55So6aG555uuJylcclxuXHRcdFx0XHQgICAgICAgIFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWxJRCA/YXIuVmFsSUQgOicnIH0pO1xyXG5cdFx0XHRcdCAgICAgICAgXHRcdGVsc2UgaWYoYXIuVHlwZT09J+W4g+WwlOWAvCcpXHJcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWx1ZT8nMSc6JzAnfSk7XHJcblx0XHRcdFx0ICAgICAgICBcdFx0ZWxzZVxyXG5cdFx0XHRcdCAgICAgICAgXHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlID9hci5WYWx1ZSA6Jyd9KTtcclxuXHRcdFx0XHQgICAgICAgIFx0fVxyXG5cdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdCAgICAgICAgdmFyIGluZm8gPSB7XHJcblx0XHRcdFx0ICAgICAgICAgICAgZXZlbnRpZDogZXZlbnRpZCxcclxuXHRcdFx0XHQgICAgICAgICAgICBlZHR5cGU6IFwiMFwiLFxyXG5cdFx0XHRcdCAgICAgICAgICAgIHByb2plY3RpZDogJycsXHJcblx0XHRcdFx0ICAgICAgICAgICAgcmNsc2lkOiAnJyxcclxuXHRcdFx0XHQgICAgICAgICAgICByb2JqaWQ6ICcnLFxyXG5cdFx0XHRcdCAgICAgICAgICAgIHVzZXJsb2dpbjogJycsXHJcblx0XHRcdFx0ICAgICAgICAgICAgY2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsXHJcblx0XHRcdFx0ICAgICAgICAgICAgb2JqaWQ6IFwiXCIsXHJcblx0XHRcdFx0ICAgICAgICAgICAgYXR0cjogcmVxLFxyXG5cdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdCAgICAgICAgdGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XHJcblx0XHRcdFx0ICAgIH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0XHJcblx0XHRcdH0sXHJcblx0XHRcdG9uY2hhbmdlMihpdGVtLHZhbHVlLGRlbHZhbHVlKSB7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coaXRlbSk7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2codmFsdWUpO1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGRlbHZhbHVlKTtcclxuXHRcdFx0XHRpZihpdGVtLmxlbmd0aD09MCl7IC8v5Li656m65pe277yM5riF56m65bGe5oCndmFsdWVcclxuXHRcdFx0XHRcdHZhciBpbmRleCAsaWluZGV4LGRpbmRleD0wO1xyXG5cdFx0XHRcdFx0Zm9yKHZhciBpIGluIHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdCl7XHJcblx0XHRcdFx0XHRcdGZvcih2YXIgaiBpbiB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaV0uQXR0cil7XHJcblx0XHRcdFx0XHRcdFx0Zm9yKHZhciBkIGluIHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpXS5BdHRyW2pdLmRpY3RpdGVtKXtcclxuXHRcdFx0XHRcdFx0XHRcdGlmKGRlbHZhbHVlWzBdLk5hbWUgPT0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2ldLkF0dHJbal0uZGljdGl0ZW1bZF0uTmFtZSl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpXS5BdHRyW2pdLlZhbHVlPVwiXCI7XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0Zm9yKHZhciB2IGluIGl0ZW0pe1xyXG5cdFx0XHRcdFx0dmFyIGluZGV4ICxpaW5kZXgsZGluZGV4PTA7XHJcblx0XHRcdFx0XHRmb3IodmFyIGkgaW4gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0KXtcclxuXHRcdFx0XHRcdFx0Zm9yKHZhciBqIGluIHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpXS5BdHRyKXtcclxuXHRcdFx0XHRcdFx0XHRmb3IodmFyIGQgaW4gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2ldLkF0dHJbal0uZGljdGl0ZW0pe1xyXG5cdFx0XHRcdFx0XHRcdFx0aWYoaXRlbVt2XS5OYW1lID09IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpXS5BdHRyW2pdLmRpY3RpdGVtW2RdLk5hbWUpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRpbmRleD1pO2lpbmRleD1qO2RpbmRleD1kO1xyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0dmFyIGl0ZW12YWx1ZSA9IGl0ZW1bdl07XHJcblx0XHRcdFx0XHR2YXIgZGF0YV9hdHRyID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2luZGV4XS5BdHRyW2lpbmRleF07XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGRhdGFfYXR0cik7XHJcblx0XHRcdFx0XHRpZiAoaXRlbXZhbHVlLk5hbWUgIT0gZGF0YV9hdHRyLlZhbHVlKSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpbmRleF0uQXR0cltpaW5kZXhdLlZhbHVlPXZhbHVlO1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XS5WYWx1ZSk7XHJcblx0XHRcdFx0XHRcdHZhciBldmVudGlkID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2luZGV4XS5BdHRyW2lpbmRleF0uYWN0aW9uO1xyXG5cdFx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xyXG5cdFx0XHRcdFx0ICAgICAgICAvLyBzZWxmLmV2ZW50X25vX3N1YiA9IDE7XHJcblx0XHRcdFx0XHQgICAgICAgIHZhciByZXE9W107XHJcblx0XHRcdFx0XHQgICAgICAgIHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcclxuXHRcdFx0XHRcdCAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0ICAgICAgICBcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcclxuXHRcdFx0XHRcdCAgICAgICAgXHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcclxuXHRcdFx0XHRcdCAgICAgICAgXHRcdHZhciBhciA9IGF0dHJbal07XHJcblx0XHRcdFx0XHQgICAgICAgIFx0XHRpZihhci5UeXBlPT0n5byV55So5a+56LGhKOWkmuS4qiknKVxyXG5cdFx0XHRcdFx0ICAgICAgICBcdFx0XHRpZihhci5WYWx1ZT09J+ivtycpIGFyLlZhbHVlPScnO1xyXG5cdFx0XHRcdFx0ICAgICAgICBcdFx0aWYoYXIuVHlwZT09J+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZT09J+W8leeUqOmhueebricpXHJcblx0XHRcdFx0XHQgICAgICAgIFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWxJRCA/YXIuVmFsSUQgOicnIH0pO1xyXG5cdFx0XHRcdFx0ICAgICAgICBcdFx0ZWxzZSBpZihhci5UeXBlPT0n5biD5bCU5YC8JylcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsdWU/JzEnOicwJ30pO1xyXG5cdFx0XHRcdFx0ICAgICAgICBcdFx0ZWxzZSBpZihhci5UeXBlPT0n5a2X5YW4JyB8fCBhci5UeXBlPT0n5a2X5YW4LeWtl+espuS4sicpXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGl0ZW12YWx1ZS5OYW1lfSk7XHJcblx0XHRcdFx0XHQgICAgICAgIFx0XHRlbHNlXHJcblx0XHRcdFx0XHQgICAgICAgIFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWx1ZSA/YXIuVmFsdWUgOicnfSk7XHJcblx0XHRcdFx0XHQgICAgICAgIFx0fVxyXG5cdFx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0XHQgICAgICAgIHZhciBpbmZvID0ge1xyXG5cdFx0XHRcdFx0ICAgICAgICAgICAgZXZlbnRpZDogZXZlbnRpZCxcclxuXHRcdFx0XHRcdCAgICAgICAgICAgIGVkdHlwZTogXCIwXCIsXHJcblx0XHRcdFx0XHQgICAgICAgICAgICBwcm9qZWN0aWQ6ICcnLFxyXG5cdFx0XHRcdFx0ICAgICAgICAgICAgcmNsc2lkOiAnJyxcclxuXHRcdFx0XHRcdCAgICAgICAgICAgIHJvYmppZDogJycsXHJcblx0XHRcdFx0XHQgICAgICAgICAgICB1c2VybG9naW46ICcnLFxyXG5cdFx0XHRcdFx0ICAgICAgICAgICAgY2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsXHJcblx0XHRcdFx0XHQgICAgICAgICAgICBvYmppZDogXCJcIixcclxuXHRcdFx0XHRcdCAgICAgICAgICAgIGF0dHI6IHJlcSxcclxuXHRcdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdFx0ICAgICAgICB0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKTtcclxuXHRcdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRvbmV2ZW50KGUpe1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGUudGFyZ2V0KTtcclxuXHRcdFx0XHR2YXIgZGF0YV9hdHRyID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dO1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGRhdGFfYXR0cik7XHJcblx0XHRcdFx0aWYgKGUudGFyZ2V0LnZhbHVlICE9IGRhdGFfYXR0ci5WYWx1ZSkge1xyXG5cdFx0XHRcdFx0dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlPWUudGFyZ2V0LnZhbHVlO1xyXG5cdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uYWN0aW9uO1xyXG5cdFx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcclxuXHRcdFx0XHQgICAgICAgIC8vIHNlbGYuZXZlbnRfbm9fc3ViID0gMTtcclxuXHRcdFx0XHQgICAgICAgIHZhciByZXE9W107XHJcblx0XHRcdFx0ICAgICAgICB2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Q7XHJcblx0XHRcdFx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0ICAgICAgICBcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcclxuXHRcdFx0XHQgICAgICAgIFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0ICAgICAgICBcdFx0dmFyIGFyID0gYXR0cltqXTtcclxuXHRcdFx0XHQgICAgICAgIFx0XHRpZihhci5UeXBlPT0n5byV55So5a+56LGhKOWkmuS4qiknKVxyXG5cdFx0XHRcdCAgICAgICAgXHRcdFx0aWYoYXIuVmFsdWU9PSfor7cnKSBhci5WYWx1ZT0nJztcclxuXHRcdFx0XHQgICAgICAgIFx0XHRpZihhci5UeXBlPT0n5byV55So5Lq65ZGYJyB8fCBhci5UeXBlPT0n5byV55So6aG555uuJylcclxuXHRcdFx0XHQgICAgICAgIFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWxJRCA/YXIuVmFsSUQgOicnIH0pO1xyXG5cdFx0XHRcdCAgICAgICAgXHRcdGVsc2UgaWYoYXIuVHlwZT09J+W4g+WwlOWAvCcpXHJcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWx1ZT8nMSc6JzAnfSk7XHJcblx0XHRcdFx0ICAgICAgICBcdFx0ZWxzZVxyXG5cdFx0XHRcdCAgICAgICAgXHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlID9hci5WYWx1ZSA6Jyd9KTtcclxuXHRcdFx0XHQgICAgICAgIFx0fVxyXG5cdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdCAgICAgICAgdmFyIGluZm8gPSB7XHJcblx0XHRcdFx0ICAgICAgICAgICAgZXZlbnRpZDogZXZlbnRpZCxcclxuXHRcdFx0XHQgICAgICAgICAgICBlZHR5cGU6IFwiMFwiLFxyXG5cdFx0XHRcdCAgICAgICAgICAgIHByb2plY3RpZDogJycsXHJcblx0XHRcdFx0ICAgICAgICAgICAgcmNsc2lkOiAnJyxcclxuXHRcdFx0XHQgICAgICAgICAgICByb2JqaWQ6ICcnLFxyXG5cdFx0XHRcdCAgICAgICAgICAgIHVzZXJsb2dpbjogJycsXHJcblx0XHRcdFx0ICAgICAgICAgICAgY2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsXHJcblx0XHRcdFx0ICAgICAgICAgICAgb2JqaWQ6IFwiXCIsXHJcblx0XHRcdFx0ICAgICAgICAgICAgYXR0cjogcmVxLFxyXG5cdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdCAgICAgICAgdGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbywgZGF0YV9hdHRyKTtcclxuXHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRcclxuXHRcdFx0fSxcclxuXHRcdFx0b25jaGVjayhlKSB7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coZS50YXJnZXQpO1xyXG5cdFx0XHRcdHZhciBpc2NoZWNrZWQgPSBlLnRhcmdldC5kYXRhc2V0LmlzY2hlY2s/ZmFsc2U6dHJ1ZTtcclxuXHRcdFx0XHR2YXIgZGF0YV9hdHRyID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dO1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGRhdGFfYXR0cik7XHJcblx0XHRcdFx0aWYgKGlzY2hlY2tlZCAhPSBkYXRhX2F0dHIuVmFsdWUpIHtcclxuXHRcdFx0XHRcdHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZT1pc2NoZWNrZWQ7XHJcblx0XHRcdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5hY3Rpb247XHJcblx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xyXG5cdFx0XHRcdCAgICAgICAgLy8gc2VsZi5ldmVudF9ub19zdWIgPSAxO1xyXG5cdFx0XHRcdCAgICAgICAgdmFyIHJlcT1bXTtcclxuXHRcdFx0XHQgICAgICAgIHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcclxuXHRcdFx0XHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHQgICAgICAgIFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xyXG5cdFx0XHRcdCAgICAgICAgXHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcclxuXHRcdFx0XHQgICAgICAgIFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xyXG5cdFx0XHRcdCAgICAgICAgXHRcdGlmKGFyLlR5cGU9PSflvJXnlKjlr7nosaEo5aSa5LiqKScpXHJcblx0XHRcdFx0ICAgICAgICBcdFx0XHRpZihhci5WYWx1ZT09J+ivtycpIGFyLlZhbHVlPScnO1xyXG5cdFx0XHRcdCAgICAgICAgXHRcdGlmKGFyLlR5cGU9PSflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGU9PSflvJXnlKjpobnnm64nKVxyXG5cdFx0XHRcdCAgICAgICAgXHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbElEID9hci5WYWxJRCA6JycgfSk7XHJcblx0XHRcdFx0ICAgICAgICBcdFx0ZWxzZSBpZihhci5UeXBlPT0n5biD5bCU5YC8JylcclxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlPycxJzonMCd9KTtcclxuXHRcdFx0XHRcdFx0XHRcdGVsc2VcclxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlID9hci5WYWx1ZSA6Jyd9KTtcclxuXHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdCAgICAgICAgXHR9XHJcblx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0ICAgICAgICB2YXIgaW5mbyA9IHtcclxuXHRcdFx0XHQgICAgICAgICAgICBldmVudGlkOiBldmVudGlkLFxyXG5cdFx0XHRcdCAgICAgICAgICAgIGVkdHlwZTogXCIwXCIsXHJcblx0XHRcdFx0ICAgICAgICAgICAgcHJvamVjdGlkOiAnJyxcclxuXHRcdFx0XHQgICAgICAgICAgICByY2xzaWQ6ICcnLFxyXG5cdFx0XHRcdCAgICAgICAgICAgIHJvYmppZDogJycsXHJcblx0XHRcdFx0ICAgICAgICAgICAgdXNlcmxvZ2luOiAnJyxcclxuXHRcdFx0XHQgICAgICAgICAgICBjbHNpZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCxcclxuXHRcdFx0XHQgICAgICAgICAgICBvYmppZDogXCJcIixcclxuXHRcdFx0XHQgICAgICAgICAgICBhdHRyOiByZXEsXHJcblx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0ICAgICAgICB0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKTtcclxuXHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRcclxuXHRcdFx0fSxcclxuXHRcdFx0YWRkcmVzc2NoYW5nZShlKSB7XHJcblx0XHRcdCAgICAvLyBjb25zb2xlLmxvZyhlLnRhcmdldCk7XHJcblx0XHRcdCAgICBjb25zb2xlLmxvZyhlLmRhdGEuam9pbignOycpKVxyXG5cdFx0XHRcdHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZT1lLmRhdGEuam9pbignOycpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRjbGFzc0F0dHJfZXh0QnV0dG9uKGluZGV4LGlpbmRleCl7XHJcblx0XHRcdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdFx0XHR2YXIgYmVmb3JlX2NsaWNrX2J1dHRvbiA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XS5iZWZvcmVfY2xpY2tfYnV0dG9uO1xyXG5cdFx0XHRcdHZhciBidXR0b25fY2FsbGJhY2sgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2luZGV4XS5BdHRyW2lpbmRleF0uYnV0dG9uX2NhbGxiYWNrO1xyXG5cdFx0XHRcdGlmKCFiZWZvcmVfY2xpY2tfYnV0dG9uKXtcclxuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcImJlZm9yZV9jbGlja19idXR0b24tZXZlbnRfaWTkuLrnqbrvvIFcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYoIWJ1dHRvbl9jYWxsYmFjayl7XHJcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6XCJidXR0b25fY2FsbGJhY2stZXZlbnRfaWTkuLrnqbrvvIFcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dmFyIGRhdGFfYXR0ciA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpbmRleF0uQXR0cltpaW5kZXhdO1xyXG5cdFx0XHRcdHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50X1JldHVybihiZWZvcmVfY2xpY2tfYnV0dG9uLCBkYXRhX2F0dHIsIGJ1dHRvbl9jYWxsYmFjaywgaW5kZXgsaWluZGV4KTtcclxuXHRcdFx0fSxcclxuXHRcdFx0Y2xhc3NBdHRyX0FkZFBlcihpbmRleCxpaW5kZXgpe1xyXG5cdFx0XHRcdHZhciBwYXJhbT17aW5kZXg6aW5kZXgsaWluZGV4OmlpbmRleH07XHJcblx0XHRcdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdFx0XHR1bmkubmF2aWdhdGVUbyh7XHJcblx0XHRcdFx0XHR1cmw6Jy4uL3NlbHBzbi9pbmRleD9tdWxpdD1mYWxzZSZwYXJhbT0nK0pTT04uc3RyaW5naWZ5KHBhcmFtKSxcclxuXHRcdFx0XHRcdGV2ZW50czp7XHJcblx0XHRcdFx0XHRcdEFkZFBlcihkYXRhLHBhcmFtKXsgXHJcblx0XHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2cocGFyYW0pO1xyXG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGRhdGEpO1xyXG5cdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbcGFyYW0uaW5kZXhdLkF0dHJbcGFyYW0uaWluZGV4XS5WYWx1ZT1kYXRhWzBdLk5hbWU7XHJcblx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdLlZhbElEPWRhdGFbMF0uTG9naW4rJzsnK2RhdGFbMF0uTmFtZTtcclxuXHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHR2YXIgZXZlbnRpZCA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbcGFyYW0uaW5kZXhdLkF0dHJbcGFyYW0uaWluZGV4XS5hY3Rpb247XHJcblx0XHRcdFx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcclxuXHRcdFx0XHRcdFx0XHQgICAgZXZlbnRpZCA9IGV2ZW50aWQudHJpbSgpO1xyXG5cdFx0XHRcdFx0XHRcdCAgICBpZiAoZXZlbnRpZCkge1xyXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgdmFyIGluZm8gPSB7XHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgZXZlbnRpZDogZXZlbnRpZCxcclxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICBlZHR5cGU6IFwiNFwiLFxyXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIHByb2plY3RpZDogXCJcIixcclxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICByY2xzaWQ6IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgcm9iamlkOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIHVzZXJsb2dpbjogZGF0YVswXS5Mb2dpbixcclxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICBjbHNpZDogJHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgb2JqaWQ6IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgYXR0cjogW10sXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyB2YXIgZGF0YV9hdHRyID0gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdO1xyXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgJHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xyXG5cdFx0XHRcdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0sXHJcblx0XHRcdGNsYXNzQXR0cl9BZGRSZWYoZSl7XHJcblx0XHRcdFx0Y29uc29sZS5sb2coZS50YXJnZXQpO1xyXG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcIuatpOWKn+iDvei/mOacquWunueOsO+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdC8vIHZhciB2YWx1ZT10aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uUmVsQ2xzW2UudGFyZ2V0LnZhbHVlXTtcclxuXHRcdFx0XHQvLyB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWU9dmFsdWU7XHJcblx0XHRcdH0sXHJcblx0XHRcdGNsYXNzQXR0cl9BZGRQcmooaW5kZXgsaWluZGV4KXtcclxuXHRcdFx0XHR2YXIgcGFyYW09e2luZGV4OmluZGV4LGlpbmRleDppaW5kZXh9O1xyXG5cdFx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xyXG5cdFx0XHRcdFx0dXJsOicuLi9zZWxQcmovaW5kZXg/cmVsYXRpb249LTEmcGFyYW09JytKU09OLnN0cmluZ2lmeShwYXJhbSksXHJcblx0XHRcdFx0XHRldmVudHM6e1xyXG5cdFx0XHRcdFx0XHRBZGRQZXIoZGF0YSxwYXJhbSl7IFxyXG5cdFx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHBhcmFtKTtcclxuXHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhkYXRhKTtcclxuXHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uVmFsdWU9ZGF0YVswXS5OYW1lO1xyXG5cdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbcGFyYW0uaW5kZXhdLkF0dHJbcGFyYW0uaWluZGV4XS5WYWxJRD1kYXRhWzBdLklEKyc7JytkYXRhWzBdLk5hbWU7XHJcblx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uYWN0aW9uO1xyXG5cdFx0XHRcdFx0XHRcdGlmIChldmVudGlkKSB7XHJcblx0XHRcdFx0XHRcdFx0ICAgIGV2ZW50aWQgPSBldmVudGlkLnRyaW0oKTtcclxuXHRcdFx0XHRcdFx0XHQgICAgaWYgKGV2ZW50aWQpIHtcclxuXHRcdFx0XHRcdFx0XHQgICAgICAgIHZhciBpbmZvID0ge1xyXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIGV2ZW50aWQ6IGV2ZW50aWQsXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgZWR0eXBlOiBcIjJcIixcclxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICBwcm9qZWN0aWQ6IGRhdGFbMF0uSUQsXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgcmNsc2lkOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIHJvYmppZDogXCJcIixcclxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICB1c2VybG9naW46IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgY2xzaWQ6ICR0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLFxyXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIG9iamlkOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIGF0dHI6IFtdLFxyXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHQgICAgICAgIC8vIHZhciBkYXRhX2F0dHIgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF07XHJcblx0XHRcdFx0XHRcdFx0ICAgICAgICAkdGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XHJcblx0XHRcdFx0XHRcdFx0ICAgIH1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSxcclxuXHRcdFx0c2F2YSgpe1xyXG5cdFx0XHRcdGlmICh0aGlzLiRkYXRhLmVkaXRfb2tfZXZlbnQpXHJcblx0XHRcdFx0XHR0aGlzLk9LRGF0YU9ialJ1bkN1c3RvbUV2ZW50KCk7XHJcblx0XHRcdFx0ZWxzZVxyXG5cdFx0XHRcdFx0dGhpcy5hZGQoKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0YWRkKCl7XHJcblx0XHRcdFx0dW5pLnNob3dMb2FkaW5nKHtcclxuXHRcdFx0XHRcdHRpdGxlOlwi5Yqg6L295LitLi4uXCJcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHR2YXIgcmVxPVtdO1xyXG5cdFx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcclxuXHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XHJcblx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcclxuXHRcdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcclxuXHRcdFx0XHRcdFx0aWYoYXIuVmFsdWU9PSfor7fpgInmi6knIHx8IGFyLlZhbHVlPT0n4oCU4oCU6K+36YCJ5oup4oCU4oCUJykgYXIuVmFsdWU9Jyc7XHJcblx0XHRcdFx0XHRcdGlmKGFyLlR5cGU9PSflvJXnlKjlr7nosaEo5aSa5LiqKScpXHJcblx0XHRcdFx0XHRcdFx0aWYoYXIuVmFsdWU9PSfor7cnKSBhci5WYWx1ZT0nJztcclxuXHRcdFx0XHQgICAgICAgIGlmKGFyLlR5cGU9PSflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGU9PSflvJXnlKjpobnnm64nKVxyXG5cdFx0XHRcdCAgICAgICAgXHRyZXEucHVzaCh7IG5hbWU6IGFyLk5hbWUsIHZhbHVlOiBhci5WYWxJRCA/YXIuVmFsSUQgOicnIH0pO1xyXG5cdFx0XHRcdCAgICAgICAgZWxzZSBpZihhci5UeXBlPT0n5biD5bCU5YC8JylcclxuXHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7IG5hbWU6IGFyLk5hbWUsIHZhbHVlOiBhci5WYWx1ZT8nMSc6JzAnfSk7XHJcblx0XHRcdFx0ICAgICAgICBlbHNlIGlmKGFyLlR5cGU9PSflrZflhbgnIHx8IGFyLlR5cGU9PSflrZflhbgt5a2X56ym5LiyJyl7XHJcblx0XHRcdFx0XHRcdFx0aWYoYXIuc2VsZWN0PT10cnVlKXsgLy/liKTmlq3kuIvmi4nmmK/lkKblpJrpgIlcclxuXHRcdFx0XHRcdFx0XHRcdHZhciB2YWxTdHIgPVwiXCI7XHJcblx0XHRcdFx0XHRcdFx0XHRmb3IodmFyIHYgaW4gYXIuVmFsdWUpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRpZih2YWxTdHIpXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsU3RyKz1cIjtcIjtcclxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsU3RyKz1hci5WYWx1ZVt2XTtcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgbmFtZTogYXIuTmFtZSwgdmFsdWU6IHZhbFN0cn0pO1xyXG5cdFx0XHRcdFx0XHRcdH1lbHNlXHJcblx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7IG5hbWU6IGFyLk5hbWUsIHZhbHVlOiBhci5WYWx1ZX0pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdGVsc2VcclxuXHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7IG5hbWU6IGFyLk5hbWUsIHZhbHVlOiBhci5WYWx1ZSA/YXIuVmFsdWUgOicnfSk7XHJcblx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdGlmICgoYXIuTm90RW1wdHkgPT0gJzEnIHx8IGFyLm5vdGVtcHR5ID09IHRydWUpICYmICFhci5WYWx1ZSkge1xyXG5cdFx0XHRcdFx0XHQvLyBpZihhci5ub3RFbXB0eT09JzEnKXtcclxuXHRcdFx0XHRcdFx0XHR1bmkuaGlkZUxvYWRpbmcoKTtcclxuXHRcdFx0XHRcdFx0XHQvLyB1bmkuc2hvd1RvYXN0KHt0aXRsZTphci5EaXNwTmFtZSsn5LiN6IO95Li656m677yBJyxpY29uOlwic3VjY2Vzc1wiLGR1cmF0aW9uOjMwMDB9KTtcclxuXHRcdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6YXIuRGlzcE5hbWUrJ+S4jeiDveS4uuepuu+8gScsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHZhciBlbnZpcm9tZW50ID0ge1xyXG5cdFx0XHRcdCAgICAgJ2Z1bmN0aW9uJzogJzMwMDAnLCAvLyDlip/og73ngrnnvJblj7dcclxuXHRcdFx0XHQgICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCwgICAgIC8vIOWKn+iDveeCueS4u+aVsOaNruexu+agh+ivhlxyXG5cdFx0XHRcdCAgICAgJ2J1dHRvbic6ICd0b3AnLCAgIC8vIHRvcC9ib3R0b21cclxuXHRcdFx0XHQgICAgIGJ1dHRvbl9uYW1lOiAn5paw5aKeJyxcclxuXHRcdFx0XHQgICAgIG1hc3Rlcjoge1xyXG5cdFx0XHRcdCAgICAgICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCwgXHJcblx0XHRcdFx0ICAgICB9XHJcblx0XHRcdFx0fTtcclxuXHRcdFx0XHQgXHJcblx0XHRcdFx0dmFyIGRhdGFJbmZvPXtcclxuXHRcdFx0XHQgICAgY2xhc3NfaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsIGRhdGFfb2JqX2lkOiAnJywgbWFzdGVyY2xzaWQ6ICcnLFxyXG5cdFx0XHRcdCAgICByZXE6IEpTT04uc3RyaW5naWZ5KHJlcSksIHVwZmlsZTogSlNPTi5zdHJpbmdpZnkoW10pLCBwb3N0X2RhdGE6IEpTT04uc3RyaW5naWZ5KHt9KSxcclxuXHRcdFx0XHQgICAgY29tcG9zZTogSlNPTi5zdHJpbmdpZnkoW10pLCByZWZkYXRhc3RvcmU6IEpTT04uc3RyaW5naWZ5KFtdKSwgZXh0aW5mbzogSlNPTi5zdHJpbmdpZnkoZW52aXJvbWVudCksIFxyXG5cdFx0XHRcdFx0bm90X3RyaWdnZXJfc3lzX2V2ZW50OiAnJ1xyXG5cdFx0XHRcdH07XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0Ly8gcmV0dXJuXHJcblx0XHRcdFx0Y29uc29sZS5sb2coZGF0YUluZm8pO1xyXG5cdFx0XHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdhZGRjbGFzc2F0dHInLGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3M9PntcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xyXG5cdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XHJcblx0XHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlPT0nMDAwMDAnKSB7XHJcblx0XHRcdFx0XHRcdHZhciBhY3Rpb24gPSBKU09OLnBhcnNlKHN1Y2Nlc3MuZGF0YS5BY3Rpb24pO1xyXG5cdFx0XHRcdFx0XHRpZihhY3Rpb24ucmV0PT0nMCcpe1xyXG5cdFx0XHRcdFx0XHRcdGlmKGFjdGlvbi5yZXN1bHRfdHlwZT09JzAnKXtcclxuXHRcdFx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe3RpdGxlOmFjdGlvbi5yZXN1bHQsaWNvbjpcInN1Y2Nlc3NcIixkdXJhdGlvbjozMDAwfSk7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdC8vIFwie1wicmV0XCI6MCwgXCJyZXN1bHRfdHlwZVwiOjAsIFwicmVzdWx0XCI6XCLliJvlu7rmiJDlip8xMjMxMjMxMjNcIixcImluZm9cIjpcIlwifVwiXHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0Ly/liLfmlrBcclxuXHRcdFx0XHRcdFx0dW5pLnJlZGlyZWN0VG8oe1xyXG5cdFx0XHRcdFx0XHRcdHVybDonLi4vbW9kYWwvY2xhc3NBdHRyP3BhcmFtPScrSlNPTi5zdHJpbmdpZnkodGhpcy4kZGF0YS5wYXJhbSkrXCImdGl0bGVuYW1lPVwiK3RoaXMuJGRhdGEudGl0bGVcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdC8vIHRoaXMuY2xhc3NfYXR0cl9pbml0KCk7XHJcblx0XHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor69cIixjb250ZW50OnN1Y2Nlc3MubXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pLmNhdGNoKGV4PT57XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhleCk7XHJcblx0XHRcdFx0XHR1bmkuaGlkZUxvYWRpbmcoKTtcclxuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0sXHJcblx0XHRcdGNsYXNzX2F0dHJfaW5pdCgpe1xyXG5cdFx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuc2hvd19zdHlsZVxyXG5cdFx0XHRcdHZhciBuZXdhdHRybGlzdCA9IFtdO1xyXG5cdFx0XHRcdGlmICh0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0ICAgICAgICB2YXIgb3BlbiA9IGF0dHJsaXN0W2ldLm9wZW47XHJcblx0XHRcdFx0ICAgICAgICB2YXIgbmFtZSA9IGF0dHJsaXN0W2ldLmF0dHJncm91cF9uYW1lO1xyXG5cdFx0XHRcdCAgICAgICAgdmFyIGF0dHJzID0gYXR0cmxpc3RbaV0uYXR0cnM7XHJcblx0XHRcdFx0ICAgICAgICBmb3IgKHZhciBzID0gMDsgcyA8IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdC5sZW5ndGg7IHMrKykge1xyXG5cdFx0XHRcdCAgICAgICAgICAgIHZhciBjbHNhdHRyID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3NdO1xyXG5cdFx0XHRcdCAgICAgICAgICAgIGlmIChuYW1lID09IGNsc2F0dHIuTmFtZSkge1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICB2YXIgYXR0ciA9IFtdO1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGF0dHJzLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBsID0gMDsgbCA8IGNsc2F0dHIuQXR0ci5sZW5ndGg7IGwrKykge1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjYSA9IGNsc2F0dHIuQXR0cltsXTtcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXR0cnNbal0uYXR0ciA9PSBjYS5OYW1lKSB7XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLmFjdGlvbiA9IGF0dHJzW2pdLmFjdGlvbjtcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2EuZWRpdCA9IGF0dHJzW2pdLmVkaXQ7XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLm5vdGVtcHR5ID0gYXR0cnNbal0ubm90ZW1wdHk7XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLmV4dF9idXR0b24gPSBhdHRyc1tqXS5leHRfYnV0dG9uO1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYS5idXR0b25faW1nID0gYXR0cnNbal0uYnV0dG9uX2ltZztcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2EuYnV0dG9uX3Rvb2x0aXAgPSBhdHRyc1tqXS5idXR0b25fdG9vbHRpcDtcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2EuYmVmb3JlX2NsaWNrX2J1dHRvbiA9IGF0dHJzW2pdLmJlZm9yZV9jbGlja19idXR0b247XHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLmJ1dHRvbl9jYWxsYmFjayA9IGF0dHJzW2pdLmJ1dHRvbl9jYWxsYmFjaztcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2EuaGlkZGVuID0gYXR0cnNbal0uaGlkZGVuO1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYS5zZWxlY3QgPSBhdHRyc1tqXS5zZWxlY3Q9PXVuZGVmaW5lZD9mYWxzZTphdHRyc1tqXS5zZWxlY3Q7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9XCJcIjtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGNhLmRpY3RpdGVtKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGRpY3RpdGVtbGlzdD1bXTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgZCA9IDA7IGQgPCBjYS5kaWN0aXRlbS5sZW5ndGg7IGQrKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmRpY3RpdGVtW2RdLmxhYmVsPWNhLmRpY3RpdGVtW2RdLkNOX1NfTkFNRTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5kaWN0aXRlbVtkXS52YWx1ZT1jYS5kaWN0aXRlbVtkXS5DTl9TX05BTUU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoY2Euc2VsZWN0ID09IHRydWUpXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSBbXTsvL2NhLmRpY3RpdGVtWzBdLkNOX1NfTkFNRTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWxzZSBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9ICfor7fpgInmi6knOy8vY2EuZGljdGl0ZW1bMF0uQ05fU19OQU1FO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoY2EuVHlwZT09J+aXpeacnycgfHwgY2EuVHlwZT09J+aXtumXtCcpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgbm93RGF0ZSA9IG5ldyBEYXRlKCk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBkYXRlID0ge3llYXI6IG5vd0RhdGUuZ2V0RnVsbFllYXIoKSxtb250aDogbm93RGF0ZS5nZXRNb250aCgpICsgMSxkYXk6IG5vd0RhdGUuZ2V0RGF0ZSgpfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9IGRhdGUueWVhciArICctJyArIChkYXRlLm1vbnRoID49IDEwID8gZGF0ZS5tb250aCA6ICcwJyArIGRhdGUubW9udGgpICsgJy0nICsgKGRhdGUuZGF5ID49IDEwID8gZGF0ZS5kYXkgOiAnMCcgKyBkYXRlLmRheSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihjYS5UeXBlPT0n5byV55So5a+56LGhKOWkmuS4qiknKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHJlbENsc0xpc3Q9W107XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBhdHRyX3Jlc2NscyA9IGNhLlJlbENscy5zcGxpdCgnLCcpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IodmFyIGlpIGluIGF0dHJfcmVzY2xzKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgcmVzY2xzID0gYXR0cl9yZXNjbHNbaWldLnNwbGl0KCd8Jyk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVsQ2xzTGlzdC5wdXNoKHtpZDpyZXNjbHNbMF0sbmFtZTpyZXNjbHNbMV19KTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5SZWxDbHNMaXN0ID0gcmVsQ2xzTGlzdDtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSAn6K+3JztcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGNhLlR5cGU9PSfnnIHluILljLonKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9ICfor7fpgInmi6knO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoY2EuVHlwZT09J+W4g+WwlOWAvCcpXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gZmFsc2U7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyLnB1c2goY2EpO1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgfVxyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICBuZXdhdHRybGlzdC5wdXNoKHtcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIEJrQ29sb3I6IGNsc2F0dHIuQmtDb2xvcixcclxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIEhhc0FjZTogY2xzYXR0ci5IYXNBY2UsXHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICBJbWdGb250U3R5bGU6IGNsc2F0dHIuSW1nRm9udFN0eWxlLFxyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgTmFtZTogY2xzYXR0ci5OYW1lLFxyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgT3JkZXI6IGNsc2F0dHIuT3JkZXIsXHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICBPcGVuOiBvcGVuLFxyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgQXR0cjogYXR0cixcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29udHJvbF9zdHlsZTp0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLmNvbnRyb2xfc3R5bGUsXHJcblx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlX3Bfd2RpdGg6dGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZS5TdHlsZURlZi50aXRsZV9wX3dkaXRoXHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgIH0pXHJcblx0XHRcdFx0ICAgICAgICAgICAgfVxyXG5cdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0ICAgIGlmIChuZXdhdHRybGlzdC5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0ICAgICAgICB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QgPSBuZXdhdHRybGlzdDtcclxuXHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdFx0dmFyIHJlcT1bXTtcclxuXHRcdFx0XHQgICAgaWYgKHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYpIHtcclxuXHRcdFx0XHQgICAgICAgICBpZiAodGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5zaG93X3N0eWxlLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHQgICAgICAgICAgICB2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLnNob3dfc3R5bGVcclxuXHRcdFx0XHQgICAgICAgICAgICAvLyAkZWwuZmluZCgnLmF0dHJfZmllbGQnKS5wcm9wKCdyZWFkb25seScsIHRydWUpO1xyXG5cdFx0XHRcdCAgICAgICAgICAgIC8vICRlbC5maW5kKCcuYXR0cl9maWVsZCcpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7XHJcblx0XHRcdFx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICB2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLmF0dHJzXHJcblx0XHRcdFx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgdmFyIGFyID0gYXR0cltqXTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5hdHRyLCB2YWw6IGFyLnZhbHVlP2FyLnZhbHVlOicnIH0pO1xyXG5cdFx0XHRcdCAgICAgICAgICAgICAgICB9XHJcblx0XHRcdFx0ICAgICAgICAgICAgfVxyXG5cdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdFx0fVx0XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdHZhciBldmVudGxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLmV2ZW50O1xyXG5cdFx0XHRcdFx0aWYgKGV2ZW50bGlzdCkge1xyXG5cdFx0XHRcdFx0ICAgIGlmIChldmVudGxpc3QubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdFx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV2ZW50bGlzdC5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0ICAgICAgICAgICAgaWYgKGV2ZW50bGlzdFtpXS5ldmVudF9pZCA9PSAnYmVmb3JlX29rJykge1xyXG5cdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHRoaXMuJGRhdGEuZWRpdF9va19ldmVudCA9IGV2ZW50bGlzdFtpXTtcclxuXHRcdFx0XHRcdCAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnRsaXN0W2ldLmV2ZW50X2lkID09ICdpbml0aWFsJykge1xyXG5cdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHRoaXMuJGRhdGEuZWRpdF9pbml0YWxfZXZlbnQgPSBldmVudGxpc3RbaV07XHJcblx0XHRcdFx0XHQgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50bGlzdFtpXS5ldmVudF9pZCA9PSAnYmVmb3JlX3NlbGVjdF9jb21wb3NlJykge1xyXG5cdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHRoaXMuJGRhdGEuZWRpdF9zZWxlY3RfY29tcG9zZV9ldmVudCA9IGV2ZW50bGlzdFtpXS5zY3JpcF9pZDtcclxuXHRcdFx0XHRcdCAgICAgICAgICAgICAgICB0aGlzLiRkYXRhLmVkaXRfY29tcG9zZV9jbHNfaWQgPSBldmVudGxpc3RbaV0uY29tcG9zZV9jbHNfaWQ7XHJcblx0XHRcdFx0XHQgICAgICAgICAgICB9XHJcblx0XHRcdFx0XHQgICAgICAgIH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2cocmVxKTtcclxuXHRcdFx0XHRcdGlmICh0aGlzLiRkYXRhLmVkaXRfaW5pdGFsX2V2ZW50KSB7XHJcblx0XHRcdFx0XHQgICAgdmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLmVkaXRfaW5pdGFsX2V2ZW50LnNjcmlwX2lkO1xyXG5cdFx0XHRcdFx0ICAgIHZhciBpbmZvID0ge1xyXG5cdFx0XHRcdFx0ICAgICAgICBldmVudGlkOiBldmVudGlkLFxyXG5cdFx0XHRcdFx0ICAgICAgICBlZHR5cGU6IFwiMFwiLFxyXG5cdFx0XHRcdFx0ICAgICAgICBwcm9qZWN0aWQ6ICcnLFxyXG5cdFx0XHRcdFx0ICAgICAgICByY2xzaWQ6ICcnLFxyXG5cdFx0XHRcdFx0ICAgICAgICByb2JqaWQ6ICcnLFxyXG5cdFx0XHRcdFx0ICAgICAgICB1c2VybG9naW46ICcnLFxyXG5cdFx0XHRcdFx0ICAgICAgICBjbHNpZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCxcclxuXHRcdFx0XHRcdCAgICAgICAgb2JqaWQ6IFwiXCIsXHJcblx0XHRcdFx0XHQgICAgICAgIGF0dHI6IHJlcSxcclxuXHRcdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0XHQgICAgdGhpcy5pbmlfRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2codGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZSk7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QpO1xyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcIuacquaJvuWIsOWPr+aYvuekuueahOeahOWxnuaAp1wiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0aW5pX0RhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKXtcclxuXHRcdFx0XHR2YXIgcGFyYW0gPSB7XHJcblx0XHRcdFx0ICAgIEVkaXRTdHlsZTogdGhpcy4kZGF0YS5wYXJhbS5FZGl0X2RsZy5OYW1lLFxyXG5cdFx0XHRcdCAgICBWaWV3U3R5bGU6IHRoaXMuJGRhdGEucGFyYW0uRWRpdF9kbGcuTmFtZSxcclxuXHRcdFx0XHQgICAgTm90VHJpZ2dlclN5c0V2ZW50OiAwLFxyXG5cdFx0XHRcdCAgICBlbnZpcm9tZW50OiB7XHJcblx0XHRcdFx0ICAgICAgICAnZnVuY3Rpb24nOiAnMzAwMCcsIC8vIOWKn+iDveeCuee8luWPt1xyXG5cdFx0XHRcdCAgICAgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLCAgICAgLy8g5Yqf6IO954K55Li75pWw5o2u57G75qCH6K+GXHJcblx0XHRcdFx0ICAgICAgICAnYnV0dG9uJzogJ3RvcCcsICAgLy8gdG9wL2JvdHRvbVxyXG5cdFx0XHRcdCAgICAgICAgYnV0dG9uX25hbWU6ICfmlrDlop4nLFxyXG5cdFx0XHRcdCAgICAgICAgbWFzdGVyOiB7XHJcblx0XHRcdFx0ICAgICAgICAgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLCAvLyBidXR0b249Ym90dG9t5pe2IG1hc3RlcueahGNsc19pZFxyXG5cdFx0XHRcdCAgICAgICAgICAgIC8vb2JqX2lkOiAnJyAgLy8gYnV0dG9uPWJvdHRvbeaXtiBtYXN0ZXLnmoRvYmpfaWRcclxuXHRcdFx0XHQgICAgICAgIH1cclxuXHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR2YXIgaW5wdXRwYXJhbWV0ZXIgPSAnJztcclxuXHRcdFx0XHR2YXIgZ2xvYmFsX2F0dHIgPSAnJztcclxuXHRcdFx0XHRcclxuXHRcdFx0XHR2YXIgZGF0YUluZm8gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWR0eXBlOiBpbmZvLmVkdHlwZSwgZXZlbnRpZDogaW5mby5ldmVudGlkLCBwcm9qZWN0aWQ6IGluZm8ucHJvamVjdGlkLFxyXG4gICAgICAgICAgICAgICAgICAgIHJjbHNpZDogaW5mby5yY2xzaWQsIHJvYmppZDogaW5mby5yb2JqaWQsIHVzZXJsb2dpbjogaW5mby51c2VybG9naW4sIGNsc2lkOiBpbmZvLmNsc2lkLCBvYmppZDogaW5mby5vYmppZCxcclxuICAgICAgICAgICAgICAgICAgICBhdHRyOiBKU09OLnN0cmluZ2lmeShpbmZvLmF0dHIpLCBleHRpbmZvOiBKU09OLnN0cmluZ2lmeShwYXJhbSksIGlucHV0cGFyYW1ldGVyOiBpbnB1dHBhcmFtZXRlciwgZ2xvYmFsX2F0dHI6IGdsb2JhbF9hdHRyXHJcbiAgICAgICAgICAgICAgICB9XHJcblx0XHRcdFx0Y29uc29sZS5sb2coZGF0YUluZm8pO1xyXG5cdFx0XHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdEYXRhT2JqUnVuQ3VzdG9tRXZlbnRJbmZvJyxkYXRhSW5mbykudGhlbihzdWNjZXNzPT57XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcclxuXHRcdFx0XHRcdGlmIChzdWNjZXNzLmNvZGU9PScwMDAwMCcpIHtcclxuXHRcdFx0XHRcdFx0dmFyIGRhdGEgPSBKU09OLnBhcnNlKHN1Y2Nlc3MuZGF0YSk7XHJcblx0XHRcdFx0XHRcdHZhciBhY3Rpb25saXN0ID0gZGF0YS5hY3Rpb247XHJcblx0XHRcdFx0XHRcdGlmIChhY3Rpb25saXN0KSB7XHJcblx0XHRcdFx0XHRcdCAgICBmb3IgKHZhciBqID0gMDsgaiA8IGFjdGlvbmxpc3QubGVuZ3RoOyBqKyspIHtcclxuXHRcdFx0XHRcdFx0ICAgICAgICB2YXIgYWN0aW9uID0gYWN0aW9ubGlzdFtqXVxyXG5cdFx0XHRcdFx0XHQgICAgICAgIHZhciBhY3Rpb25fdHlwZSA9IGFjdGlvbi5hY3Rpb25fdHlwZTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICB2YXIgdmFsdWUgPSBhY3Rpb24udmFsdWU7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgaWYgKGFjdGlvbl90eXBlID09ICdzZXRfZGxnX2F0dHInKSB7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIGlmICh2YWx1ZSkge1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgdmFyIHZhbCA9IHZhbHVlO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJykge1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIHZhbCA9IEpTT04ucGFyc2UodmFsdWUpO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKHZhbCk7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbC5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgYSA9IDA7IGEgPCB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QubGVuZ3RoOyBhKyspIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgbCA9IDA7IGwgPCB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbYV0uQXR0ci5sZW5ndGg7IGwrKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBjYSA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFthXS5BdHRyW2xdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICh2YWxbaV0uYXR0ciAgPT0gY2EuTmFtZSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoY2EuVHlwZT09J+Wtl+WFuCcgfHwgY2EuVHlwZT09J+Wtl+WFuC3lrZfnrKbkuLInKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGRpY3RJdGVtTGlzdD1bXTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yKHZhciBkIGluIHZhbFtpXS5jaG9pY2VfbGlzdCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHZhbCA9dmFsW2ldLmNob2ljZV9saXN0W2RdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRpY3RJdGVtTGlzdC5wdXNoKHtcIkNOX1NfTkFNRVwiOnZhbCxcIk5hbWVcIjp2YWwsXCJsYWJlbFwiOnZhbCxcInZhbHVlXCI6dmFsfSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuZGljdGl0ZW0gPSBkaWN0SXRlbUxpc3Q7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGF0dHJbal0uZGljdGl0ZW0gPSB2YWxbaV0uY2hvaWNlX2xpc3Q7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gY2EudmFsdWUgPSB2YWxbaV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICB2YXIgbGVuZ3RoID0gMDtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmZpbHRlcihmdW5jdGlvbiAocykge1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsW2ldLmF0dHIgPT0gcy5hdHRyXHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgfSkubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IDE7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2godmFsW2ldKTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICB9XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgaWYgKGxlbmd0aCA9PSAwKSB7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBqKyspIHtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHZhbFtpXS5hdHRyKSB7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0udmFsdWUgPSB2YWxbaV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICB9XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICB9XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIH1cclxuXHRcdFx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0XHRcdCAgICAgICAgaWYgKGFjdGlvbl90eXBlID09ICdvcGVuX3NlbGVjdF91c2VyZGxnJykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzIuMlwiLGNvbnRlbnQ6XCJvcGVuX3NlbGVjdF91c2VyZGxn6L+Z5LiqYWN0aW9uX3R5cGXov5jmnKrlpITnkIbvvIFcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68yXCIsY29udGVudDpzdWNjZXNzLm1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KS5jYXRjaChleD0+e1xyXG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68yLjFcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSxcclxuXHRcdCAgICBEYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyxkYXRhX2F0dHIpe1xyXG5cdFx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHQgICAgXHR2YXIgZW52aXJvbWVudCA9IHtcclxuXHRcdCAgICBcdCAgICAnZnVuY3Rpb24nOiAnMzAwMCcsIC8vIOWKn+iDveeCuee8luWPt1xyXG5cdFx0ICAgIFx0ICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCwgICAgIC8vIOWKn+iDveeCueS4u+aVsOaNruexu+agh+ivhlxyXG5cdFx0ICAgIFx0ICAgICdidXR0b24nOiAndG9wJywgICAvLyB0b3AvYm90dG9tXHJcblx0XHQgICAgXHQgICAgYnV0dG9uX25hbWU6ICfmlrDlop4nLFxyXG5cdFx0ICAgIFx0ICAgIG1hc3Rlcjoge1xyXG5cdFx0ICAgIFx0ICAgICAgICBjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEY2xzX2lkXHJcblx0XHQgICAgXHQgICAgICAgIC8vb2JqX2lkOiAnJyAgLy8gYnV0dG9uPWJvdHRvbeaXtiBtYXN0ZXLnmoRvYmpfaWRcclxuXHRcdCAgICBcdCAgICB9XHJcblx0XHQgICAgXHR9O1xyXG5cdFx0ICAgIFx0aWYoZGF0YV9hdHRyKXtcclxuXHRcdFx0XHRcdGVudmlyb21lbnQuZWRpdF9kbGcgPSB7XHJcblx0XHRcdFx0XHQgICAgdHlwZTogJ3NtYWxsJywvL+Wwj+eql+WPo1xyXG5cdFx0XHRcdFx0ICAgIGNsYXNzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLC8v5b2T5YmN5pWw5o2u57G7aWRcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGlmIChkYXRhX2F0dHIpIHtcclxuXHRcdFx0XHRcdCAgICBlbnZpcm9tZW50LmVkaXRfZGxnLmZvcm1fY29udHJvbCA9IHsvL+aJgOWxnueahOihqOWNleaOp+S7tlxyXG5cdFx0XHRcdFx0ICAgICAgICBuYW1lOiBkYXRhX2F0dHIuTmFtZSwvL+Wtl+auteWxnuaAp1xyXG5cdFx0XHRcdFx0ICAgICAgICB0ZXh0OiBkYXRhX2F0dHIuRGlzcE5hbWUsLy/mmL7npLrmlofmnKxcclxuXHRcdFx0XHRcdCAgICAgICAgZ3JvdXBfbmFtZTogZGF0YV9hdHRyLkdyb3VwTmFtZSwvL+WxnuaAp+e7hFxyXG5cdFx0XHRcdFx0ICAgICAgICB0eXBlOiBkYXRhX2F0dHIuVHlwZSwvL+Wtl+auteexu+Wei1xyXG5cdFx0XHRcdFx0ICAgICAgICByZWFkb25seTogZGF0YV9hdHRyLlJlYWRPbmx5LC8v5piv5ZCm5Y+q6K+7XHJcblx0XHRcdFx0XHQgICAgICAgIGJ1dHRvbl9pbWc6IGRhdGFfYXR0ci5idXR0b25faW1nLC8v5byV55So5oyJ6ZKu55qE5Zu+5qCHXHJcblx0XHRcdFx0XHQgICAgICAgIGJ1dHRvbl90b29sdGlwOiBkYXRhX2F0dHIuYnV0dG9uX3Rvb2x0aXAvL+W8leeUqOaMiemSrueahHRvb2x0aXBcclxuXHRcdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0ICAgIFx0dmFyIGRhdGFJbmZvID0ge1xyXG5cdFx0ICAgICAgICAgICAgZWR0eXBlOiBpbmZvLmVkdHlwZSwgZXZlbnRpZDogaW5mby5ldmVudGlkLCBwcm9qZWN0aWQ6IGluZm8ucHJvamVjdGlkLnJlcGxhY2UoJ3snLCcnKS5yZXBsYWNlKCd9JywnJyksXHJcblx0XHQgICAgICAgICAgICByY2xzaWQ6IGluZm8ucmNsc2lkLCByb2JqaWQ6IGluZm8ucm9iamlkLCB1c2VybG9naW46IGluZm8udXNlcmxvZ2luLCBjbHNpZDogaW5mby5jbHNpZCwgb2JqaWQ6IGluZm8ub2JqaWQsXHJcblx0XHQgICAgICAgICAgICBhdHRyOiBKU09OLnN0cmluZ2lmeShpbmZvLmF0dHIpLCBleHRpbmZvOiBKU09OLnN0cmluZ2lmeShlbnZpcm9tZW50KSwgaW5wdXRwYXJhbWV0ZXI6ICcnLCBnbG9iYWxfYXR0cjogSlNPTi5zdHJpbmdpZnkodGhpcy4kZGF0YS5nbG9iYWxfYXR0cilcclxuXHRcdCAgICAgICAgfVxyXG5cdFx0ICAgIFx0Y29uc29sZS5sb2coZGF0YUluZm8pO1xyXG5cdFx0ICAgIFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ0RhdGFPYmpSdW5DdXN0b21FdmVudEluZm8nLGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3M9PntcclxuXHRcdCAgICBcdFx0Y29uc29sZS5sb2coc3VjY2Vzcyk7XHJcblx0XHQgICAgXHRcdGlmIChzdWNjZXNzLmNvZGU9PScwMDAwMCcpIHtcclxuXHRcdFx0XHRcdFx0dmFyIGRhdGEgPSBKU09OLnBhcnNlKHN1Y2Nlc3MuZGF0YSk7XHJcblx0XHQgICAgXHRcdFx0dmFyIGFjdGlvbmxpc3QgPSBkYXRhLmFjdGlvbjtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHQgICAgXHRcdFx0aWYgKGFjdGlvbmxpc3QpIHtcclxuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhhY3Rpb25saXN0KTtcclxuXHRcdCAgICBcdFx0XHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhY3Rpb25saXN0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICB2YXIgYWN0aW9uID0gYWN0aW9ubGlzdFtpXTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgIGlmIChhY3Rpb24uYWN0aW9uX3R5cGUgPT0gJ3NldF9kbGdfYXR0cicpIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICB2YXIgcmVzdWx0ID0gYWN0aW9uLnZhbHVlO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAocmVzdWx0W2ldLmNob2ljZV9saXN0KSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBjID0gMDsgYyA8ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QubGVuZ3RoOyBjKyspIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGF0dHIgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2NdLkF0dHI7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGF0dHJbal0uTmFtZT09cmVzdWx0W2ldLmF0dHIpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoYXR0cltqXS5UeXBlPT0n5a2X5YW4JyB8fCBhdHRyW2pdLlR5cGU9PSflrZflhbgt5a2X56ym5LiyJyl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBkaWN0SXRlbUxpc3Q9W107XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvcih2YXIgZCBpbiByZXN1bHRbaV0uY2hvaWNlX2xpc3Qpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciB2YWwgPXJlc3VsdFtpXS5jaG9pY2VfbGlzdFtkXTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkaWN0SXRlbUxpc3QucHVzaCh7XCJDTl9TX05BTUVcIjp2YWwsXCJOYW1lXCI6dmFsLFwibGFiZWxcIjp2YWwsXCJ2YWx1ZVwiOnZhbH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHJbal0uZGljdGl0ZW0gPSBkaWN0SXRlbUxpc3Q7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGF0dHJbal0uZGljdGl0ZW0gPSByZXN1bHRbaV0uY2hvaWNlX2xpc3Q7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIH1cclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgZm9yICh2YXIgYyA9IDA7IGMgPCAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0Lmxlbmd0aDsgYysrKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIFx0dmFyIGF0dHIgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2NdLkF0dHI7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGF0dHJbal0uTmFtZSsnPT0nK3Jlc3VsdFtpXS5hdHRyKTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgXHRcdGlmKGF0dHJbal0uTmFtZT09cmVzdWx0W2ldLmF0dHIpe1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBcdFx0XHRhdHRyW2pdLlZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBcdFx0fVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBcdH1cclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBsZW5ndGggPSAwO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBpZiAoISR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5maWx0ZXIoZnVuY3Rpb24gKHMpIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRbaV0uYXR0ciA9PSBzLmF0dHJcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgfSkubGVuZ3RoKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSAxO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2gocmVzdWx0W2ldKTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBpZiAobGVuZ3RoID09IDApIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaisrKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHJlc3VsdFtpXS5hdHRyKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS52YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgICAgICB9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIH1cclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICB9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICB9IGVsc2UgaWYgKGRhdGEuYWN0aW9uW2ldLmFjdGlvbl90eXBlID09ICdzZXRfZ2xvYmFsX2F0dHInKSB7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICR0aGlzLiRkYXRhLmdsb2JhbF9hdHRyID0gZGF0YS5hY3Rpb25baV0udmFsdWUgfHwgW107XHJcblx0XHRcdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICB9XHJcblx0XHQgICAgXHRcdFx0fVxyXG5cdFx0ICAgIFx0XHRcdFxyXG5cdFx0ICAgIFx0XHRcdGlmIChkYXRhLnJlc3VsdCkge1xyXG5cdFx0ICAgIFx0XHRcdCAgICB2YXIgcmVzdWx0ID0gZGF0YS5yZXN1bHQ7XHJcblx0XHQgICAgXHRcdFx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICBmb3IgKHZhciBjID0gMDsgYyA8ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QubGVuZ3RoOyBjKyspIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgIFx0dmFyIGF0dHIgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2NdLkF0dHI7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICBcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgXHRcdGlmKGF0dHJbal0uTmFtZT09cmVzdWx0W2ldLmF0dHIpe1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgXHRcdFx0YXR0cltqXS5WYWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgIFx0XHR9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICBcdH1cclxuXHRcdCAgICBcdFx0XHQgICAgICAgIH1cclxuXHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0dmFyIGxlbmd0aCA9IDA7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICBpZiAoISR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5maWx0ZXIoZnVuY3Rpb24gKHMpIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICByZXR1cm4gcmVzdWx0W2ldLmF0dHIgPT0gcy5hdHRyXHJcblx0XHQgICAgXHRcdFx0ICAgICAgICB9KS5sZW5ndGgpIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICBsZW5ndGggPSAxO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5wdXNoKHJlc3VsdFtpXSk7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICB9XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICBpZiAobGVuZ3RoID09IDApIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8ICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGorKykge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBpZiAoJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLmF0dHIgPT0gcmVzdWx0W2ldLmF0dHIpIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS52YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgfVxyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgIH1cclxuXHRcdCAgICBcdFx0XHQgICAgICAgIH1cclxuXHRcdCAgICBcdFx0XHQgICAgfVxyXG5cdFx0ICAgIFx0XHRcdH1cclxuXHRcdCAgICBcdFx0fWVsc2V7XHJcblx0XHQgICAgXHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68zXCIsY29udGVudDpzdWNjZXNzLm1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdCAgICBcdFx0fVxyXG5cdFx0ICAgIFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdCAgICBcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0ICAgIFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzMuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0ICAgIFx0fSk7XHJcblx0XHQgICAgfSxcclxuXHRcdFx0T0tEYXRhT2JqUnVuQ3VzdG9tRXZlbnQoKXtcclxuXHRcdCAgICBcdHZhciBlbnZpcm9tZW50ID0ge1xyXG5cdFx0XHRcdCAgICAnZnVuY3Rpb24nOiAnMzAwMCcsIC8vIOWKn+iDveeCuee8luWPt1xyXG5cdFx0XHRcdCAgICBjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsICAgICAvLyDlip/og73ngrnkuLvmlbDmja7nsbvmoIfor4ZcclxuXHRcdFx0XHQgICAgJ2J1dHRvbic6ICd0b3AnLCAgIC8vIHRvcC9ib3R0b21cclxuXHRcdFx0XHQgICAgYnV0dG9uX25hbWU6ICfmlrDlop4nLFxyXG5cdFx0XHRcdCAgICBtYXN0ZXI6IHtcclxuXHRcdFx0XHQgICAgICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCwgLy8gYnV0dG9uPWJvdHRvbeaXtiBtYXN0ZXLnmoRjbHNfaWRcclxuXHRcdFx0XHQgICAgICAgIFxyXG5cdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0fTtcclxuXHRcdCAgICBcdFxyXG5cdFx0XHRcdHZhciBldmVudGlkID0gdGhpcy4kZGF0YS5lZGl0X29rX2V2ZW50LnNjcmlwX2lkO1xyXG5cdFx0XHRcdHZhciByZXE9W107XHJcblx0XHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0O1xyXG5cdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcclxuXHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xyXG5cdFx0XHRcdFx0XHRpZihhci5WYWx1ZT09J+ivt+mAieaLqScgfHwgYXIuVmFsdWU9PSfigJTigJTor7fpgInmi6nigJTigJQnKSBhci5WYWx1ZT0nJztcclxuXHRcdFx0XHRcdFx0aWYoYXIuVHlwZT09J+W8leeUqOWvueixoSjlpJrkuKopJylcclxuXHRcdFx0XHRcdFx0XHRpZihhci5WYWx1ZT09J+ivtycpIGFyLlZhbHVlPScnO1xyXG5cdFx0XHRcdCAgICAgICAgaWYoYXIuVHlwZT09J+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZT09J+W8leeUqOmhueebricpXHJcblx0XHRcdFx0ICAgICAgICBcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWxJRCA/YXIuVmFsSUQgOicnIH0pO1xyXG5cdFx0XHRcdCAgICAgICAgZWxzZSBpZihhci5UeXBlPT0n5biD5bCU5YC8JylcclxuXHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsdWU/JzEnOicwJ30pO1xyXG5cdFx0XHRcdFx0XHRlbHNlXHJcblx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlIH0pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRcclxuXHRcdCAgICBcdGlmICh0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGggPiAwKSB7XHJcblx0XHQgICAgXHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGkrKykge1xyXG5cdFx0ICAgIFx0ICAgICAgICBpZiAoIXJlcS5maWx0ZXIoZnVuY3Rpb24gKHMpIHtcclxuXHRcdCAgICBcdCAgICAgICAgICAgIHJldHVybiB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtpXS5hdHRyID09IHMubmFtZVxyXG5cdFx0ICAgIFx0ICAgICAgICB9KS5sZW5ndGgpIHtcclxuXHRcdCAgICBcdCAgICAgICAgICAgIGxlbmd0aCA9IDE7XHJcblx0XHQgICAgXHQgICAgICAgICAgICByZXEucHVzaCh7ICdhdHRyJzogdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbaV0uYXR0ciwgJ3ZhbCc6IHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2ldLnZhbHVlIH0pO1xyXG5cdFx0ICAgIFx0ICAgICAgICB9XHJcblx0XHQgICAgXHQgICAgfVxyXG5cdFx0ICAgIFx0fVxyXG5cdFx0ICAgIFx0dmFyIGluZm8gPSB7XHJcblx0XHQgICAgXHQgICAgZXZlbnRpZDogZXZlbnRpZCxcclxuXHRcdCAgICBcdCAgICBlZHR5cGU6IFwiMFwiLFxyXG5cdFx0ICAgIFx0ICAgIHByb2plY3RpZDogJycsXHJcblx0XHQgICAgXHQgICAgcmNsc2lkOiAnJyxcclxuXHRcdCAgICBcdCAgICByb2JqaWQ6ICcnLFxyXG5cdFx0ICAgIFx0ICAgIHVzZXJsb2dpbjogJycsXHJcblx0XHQgICAgXHQgICAgY2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsXHJcblx0XHQgICAgXHQgICAgb2JqaWQ6IFwiXCIsXHJcblx0XHQgICAgXHQgICAgYXR0cjogcmVxLFxyXG5cdFx0ICAgIFx0fVxyXG5cdFx0ICAgIFx0dmFyIGRhdGFJbmZvID0ge1xyXG5cdFx0ICAgICAgICAgICAgZWR0eXBlOiBpbmZvLmVkdHlwZSwgZXZlbnRpZDogaW5mby5ldmVudGlkLCBwcm9qZWN0aWQ6IGluZm8ucHJvamVjdGlkLHJjbHNpZDogaW5mby5yY2xzaWQsIFxyXG5cdFx0XHRcdFx0cm9iamlkOiBpbmZvLnJvYmppZCwgdXNlcmxvZ2luOiBpbmZvLnVzZXJsb2dpbiwgY2xzaWQ6IGluZm8uY2xzaWQsIG9iamlkOiBpbmZvLm9iamlkLFxyXG5cdFx0XHRcdFx0YXR0cjogSlNPTi5zdHJpbmdpZnkoaW5mby5hdHRyKSwgZXh0aW5mbzogSlNPTi5zdHJpbmdpZnkoZW52aXJvbWVudCksIGdsb2JhbF9hdHRyOiBKU09OLnN0cmluZ2lmeSh0aGlzLiRkYXRhLmdsb2JhbF9hdHRyKVxyXG5cdFx0ICAgICAgICB9XHJcblx0XHQgICAgXHRjb25zb2xlLmxvZyhkYXRhSW5mbyk7XHJcblx0XHQgICAgXHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnRGF0YU9ialJ1bkN1c3RvbUV2ZW50SW5mbycsZGF0YUluZm8pLnRoZW4oc3VjY2Vzcz0+e1xyXG5cdFx0ICAgIFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcclxuXHRcdCAgICBcdFx0aWYgKHN1Y2Nlc3MuY29kZT09JzAwMDAwJykge1xyXG5cdFx0XHRcdFx0XHR2YXIgZGF0YSA9IEpTT04ucGFyc2Uoc3VjY2Vzcy5kYXRhKTtcdFx0XHJcblx0XHQgICAgXHRcdFx0dmFyIHJlc3VsdCA9IGRhdGEucmVzdWx0O1xyXG5cdFx0ICAgIFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgIC8vIHNlbGYuY2xhc3NfYXR0cl9lbGUuZmluZCgnLmF0dHJfZmllbGRbZGF0YS1maWVsZD1cIicgKyByZXN1bHRbaV0uYXR0ciArICdcIl0nKS52YWwocmVzdWx0W2ldLnZhbHVlKS5kYXRhKCd2YWwnLCByZXN1bHRbaV0udmFsdWUpO1xyXG5cdFx0ICAgIFx0XHRcdCAgICB2YXIgbGVuZ3RoID0gMDtcclxuXHRcdCAgICBcdFx0XHQgICAgaWYgKCF0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5maWx0ZXIoZnVuY3Rpb24gKHMpIHtcclxuXHRcdCAgICBcdFx0XHQgICAgICAgIHJldHVybiByZXN1bHRbaV0uYXR0ciA9PSBzLmF0dHJcclxuXHRcdCAgICBcdFx0XHQgICAgfSkubGVuZ3RoKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICBsZW5ndGggPSAxO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUucHVzaChyZXN1bHRbaV0pO1xyXG5cdFx0ICAgIFx0XHRcdCAgICB9XHJcblx0XHQgICAgXHRcdFx0ICAgIGlmIChsZW5ndGggPT0gMCkge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGorKykge1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgIGlmICh0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHJlc3VsdFtpXS5hdHRyKSB7XHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLnZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgIH1cclxuXHRcdCAgICBcdFx0XHQgICAgICAgIH1cclxuXHRcdCAgICBcdFx0XHQgICAgfVxyXG5cdFx0ICAgIFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdHRoaXMuYWRkKCk7XHJcblx0XHQgICAgXHRcdH1lbHNle1xyXG5cdFx0ICAgIFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vNFwiLGNvbnRlbnQ6c3VjY2Vzcy5tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHQgICAgXHRcdH1cclxuXHRcdCAgICBcdH0pLmNhdGNoKGV4PT57XHJcblx0XHQgICAgXHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcclxuXHRcdCAgICBcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor680LjFcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdCAgICBcdH0pO1xyXG5cdFx0ICAgIH0sXHJcblx0XHQgICAgRGF0YU9ialJ1bkN1c3RvbUV2ZW50X1JldHVybihldmVudGlkLGRhdGFfYXR0cixidXR0b25fY2FsbGJhY2ssaW5kZXgsaWluZGV4KXtcclxuXHRcdFx0XHR2YXIgZW52aXJvbWVudCA9IHtcclxuXHRcdFx0XHQgICAgJ2Z1bmN0aW9uJzogJzMwMDAnLCAvLyDlip/og73ngrnnvJblj7dcclxuXHRcdFx0XHQgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLCAgICAgLy8g5Yqf6IO954K55Li75pWw5o2u57G75qCH6K+GXHJcblx0XHRcdFx0ICAgICdidXR0b24nOiAndG9wJywgICAvLyB0b3AvYm90dG9tXHJcblx0XHRcdFx0ICAgIGJ1dHRvbl9uYW1lOiAn5paw5aKeJyxcclxuXHRcdFx0XHQgICAgbWFzdGVyOiB7XHJcblx0XHRcdFx0ICAgICAgICBjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEY2xzX2lkXHJcblx0XHRcdFx0ICAgICAgICAvL29ial9pZDogJycgIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEb2JqX2lkXHJcblx0XHRcdFx0ICAgIH1cclxuXHRcdFx0XHR9O1xyXG5cdFx0XHRcdHZhciByZXE9W107XHJcblx0XHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0O1xyXG5cdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcclxuXHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xyXG5cdFx0XHRcdFx0XHRpZihhci5UeXBlPT0n5byV55So5a+56LGhKOWkmuS4qiknKVxyXG5cdFx0XHRcdFx0XHRcdGlmKGFyLlZhbHVlPT0n6K+3JykgYXIuVmFsdWU9Jyc7XHJcblx0XHRcdFx0ICAgICAgICBpZihhci5UeXBlPT0n5byV55So5Lq65ZGYJyB8fCBhci5UeXBlPT0n5byV55So6aG555uuJylcclxuXHRcdFx0XHQgICAgICAgIFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbElEID9hci5WYWxJRCA6JycgfSk7XHJcblx0XHRcdFx0ICAgICAgICBlbHNlIGlmKGFyLlR5cGU9PSfluIPlsJTlgLwnKVxyXG5cdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWx1ZT8nMSc6JzAnfSk7XHJcblx0XHRcdFx0XHRcdGVsc2VcclxuXHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsdWUgfSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmICh0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHQgICAgICAgIGlmICghcmVxLmZpbHRlcihmdW5jdGlvbiAocykge1xyXG5cdFx0XHRcdCAgICAgICAgICAgIHJldHVybiB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtpXS5hdHRyID09IHMubmFtZVxyXG5cdFx0XHRcdCAgICAgICAgfSkubGVuZ3RoKSB7XHJcblx0XHRcdFx0ICAgICAgICAgICAgbGVuZ3RoID0gMTtcclxuXHRcdFx0XHQgICAgICAgICAgICByZXEucHVzaCh7ICdhdHRyJzogdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbaV0uYXR0ciwgJ3ZhbCc6IHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2ldLnZhbHVlIH0pO1xyXG5cdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHZhciBleHRpbmZvID0gZW52aXJvbWVudDtcclxuXHRcdFx0XHRleHRpbmZvLmVkaXRfZGxnID0ge1xyXG5cdFx0XHRcdCAgICB0eXBlOiAnc21hbGwnLC8v5bCP56qX5Y+jXHJcblx0XHRcdFx0ICAgIGNsYXNzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLC8v5b2T5YmN5pWw5o2u57G7aWRcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYgKGRhdGFfYXR0cikge1xyXG5cdFx0XHRcdCAgICBleHRpbmZvLmVkaXRfZGxnLmZvcm1fY29udHJvbCA9IHsvL+aJgOWxnueahOihqOWNleaOp+S7tlxyXG5cdFx0XHRcdCAgICAgICAgbmFtZTogZGF0YV9hdHRyLk5hbWUsLy/lrZfmrrXlsZ7mgKdcclxuXHRcdFx0XHQgICAgICAgIHRleHQ6IGRhdGFfYXR0ci5EaXNwTmFtZSwvL+aYvuekuuaWh+acrFxyXG5cdFx0XHRcdCAgICAgICAgZ3JvdXBfbmFtZTogZGF0YV9hdHRyLkdyb3VwTmFtZSwvL+WxnuaAp+e7hFxyXG5cdFx0XHRcdCAgICAgICAgdHlwZTogZGF0YV9hdHRyLlR5cGUsLy/lrZfmrrXnsbvlnotcclxuXHRcdFx0XHQgICAgICAgIHJlYWRvbmx5OiBkYXRhX2F0dHIuUmVhZE9ubHksLy/mmK/lkKblj6ror7tcclxuXHRcdFx0XHQgICAgICAgIGJ1dHRvbl9pbWc6IGRhdGFfYXR0ci5idXR0b25faW1nLC8v5byV55So5oyJ6ZKu55qE5Zu+5qCHXHJcblx0XHRcdFx0ICAgICAgICBidXR0b25fdG9vbHRpcDogZGF0YV9hdHRyLmJ1dHRvbl90b29sdGlwLy/lvJXnlKjmjInpkq7nmoR0b29sdGlwXHJcblx0XHRcdFx0ICAgIH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dmFyIGRhdGFJbmZvID0ge1xyXG5cdFx0XHRcdFx0ZWR0eXBlOiAgXCIwXCIsIGV2ZW50aWQ6IGV2ZW50aWQsIHByb2plY3RpZDogJycscmNsc2lkOiAnJywgcm9iamlkOiAnJywgdXNlcmxvZ2luOiAnJywgXHJcblx0XHRcdFx0XHRjbHNpZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCwgb2JqaWQ6ICcnLGF0dHI6IEpTT04uc3RyaW5naWZ5KHJlcSksIFxyXG5cdFx0XHRcdFx0ZXh0aW5mbzogSlNPTi5zdHJpbmdpZnkoZXh0aW5mbyksIGdsb2JhbF9hdHRyOiBKU09OLnN0cmluZ2lmeSh0aGlzLiRkYXRhLmdsb2JhbF9hdHRyKVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRjb25zb2xlLmxvZyhkYXRhSW5mbyk7XHJcblx0XHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ0RhdGFPYmpSdW5DdXN0b21FdmVudEluZm8nLGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3M9PntcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xyXG5cdFx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZT09JzAwMDAwJykge1xyXG5cdFx0XHRcdFx0XHR2YXIgZGF0YSA9IEpTT04ucGFyc2Uoc3VjY2Vzcy5kYXRhKTtcclxuXHRcdFx0XHRcdFx0aWYgKGRhdGEgIT0gXCJcIikge1xyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdHZhciBhY3Rpb25zID0gZGF0YS5hY3Rpb247XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGFjdGlvbnMpO1xyXG5cdFx0XHRcdFx0XHRpZiAoYWN0aW9ucykge1xyXG5cdFx0XHRcdFx0XHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhY3Rpb25zLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgdmFyIGFjdGlvbiA9IGFjdGlvbnNbaV07XHJcblx0XHRcdFx0XHRcdCAgICAgICAgdmFyIHZhbCA9IGFjdGlvbi52YWx1ZTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICB2YXIgZW52aXJvbWVudCA9IEpTT04uc3RyaW5naWZ5KGVudmlyb21lbnQpO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgIFxyXG5cdFx0XHRcdFx0XHQgICAgICAgIGlmIChhY3Rpb24uYWN0aW9uX3R5cGUgPT0gJ29wZW5fcGFuZWwnKSB7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgdmFyIGQgPSBkaWFsb2coe1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICB0aXRsZTogJzxpIGNsYXNzPVwiYWNlLWljb24gZmEgZmEtaW5mby1jaXJjbGVcIj48L2k+ICcgKyAn5o+Q56S6JyxcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgY29udGVudDogYWN0aW9uLmFjdGlvbl90eXBlICsgJ+atpGFjdGlvbuWwmuacquWkhOeQhu+8gSdcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICB9KTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICBkLnNob3coKTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0XHRcdCAgICAgICAgZWxzZSBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdvcGVuX3NlbGVjdF91c2VyZGxnJykge1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICB2YXIgc3R5bGUgPSB2YWwuc3R5bGU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdC8vIHN0eWxlID09ICd1c2VyJyA/ICfpgInmi6nkurrlkZgnIDogc3R5bGUgPT0gJ2RlcGFydG1lbnQnID8gJ+mAieaLqemDqOmXqCcgOiBzdHlsZSA9PSAncm9sZScgPyAn6YCJ5oup6KeS6ImyJyA6ICcnXHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBwYXJhbT17XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0aW5kZXg6IGluZGV4LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlpbmRleDppaW5kZXgsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0YnV0dG9uX2NhbGxiYWNrOmJ1dHRvbl9jYWxsYmFjayxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXE6cmVxLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGRhdGFfYXR0cjpkYXRhX2F0dHJcclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR1bmkubmF2aWdhdGVUbyh7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFx0dXJsOicuLi9zZWxwc24vaW5kZXg/bXVsaXQ9ZmFsc2UmcGFyYW09JytKU09OLnN0cmluZ2lmeShwYXJhbSksXHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFx0ZXZlbnRzOntcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgXHRcdEFkZFBlcihkYXRhLHBhcmFtKXsgXHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFx0XHRcdC8vIGNvbnNvbGUubG9nKHBhcmFtKTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgXHRcdFx0Y29uc29sZS5sb2coZGF0YSk7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFx0XHRcdHZhciBjYWxsYmFja19ldmVudGlkID0gcGFyYW0uYnV0dG9uX2NhbGxiYWNrLnRyaW0oKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGluZm8gPSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICBldmVudGlkOiBjYWxsYmFja19ldmVudGlkLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgZWR0eXBlOiBcIjBcIixcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIHByb2plY3RpZDogJycsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICByY2xzaWQ6ICcnLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgcm9iamlkOiAnJyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIHVzZXJsb2dpbjogJycsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICBjbHNpZDogJHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICBvYmppZDogXCJcIixcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIGF0dHI6IHBhcmFtLnJlcSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIGlucHV0cGFyYW1ldGVyOiBkYXRhXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8sIHBhcmFtLmRhdGFfYXR0cik7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFx0XHR9XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFx0fVxyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICB9KTtcdFxyXG5cdFx0XHRcdFx0XHQgICAgICAgIH1cclxuXHRcdFx0XHRcdFx0ICAgICAgICBlbHNlIGlmIChhY3Rpb24uYWN0aW9uX3R5cGUgPT0gJ29wZW5fZGF0YV9xdWVyeV9kbGcnKSB7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFxyXG5cdFx0XHRcdFx0XHQgICAgICAgIH1cclxuXHRcdFx0XHRcdFx0ICAgICAgICBlbHNlIGlmIChhY3Rpb24uYWN0aW9uX3R5cGUgPT0gJ29wZW5fY29tbW9uX2RsZycpIHtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgdmFyIHZhbHVlID0gYWN0aW9uLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICB2YXIgZCA9IGRpYWxvZyh7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICB0aXRsZTogJzxpIGNsYXNzPVwiYWNlLWljb24gZmEgZmEtaW5mby1jaXJjbGVcIj48L2k+ICcgKyAn5o+Q56S6JyxcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGFjdGlvbi5hY3Rpb25fdHlwZSArICfmraRhY3Rpb27lsJrmnKrlpITnkIbvvIEnXHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIH0pO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBkLnNob3coKTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0XHRcdCAgICAgICAgZWxzZSBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdvcGVuX3Byb2plY3RfcXVlcnlfZGxnJykge1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAvL2NvbnNvbGUubG9nKGFjdGlvbi52YWx1ZS5zZWxlY3RfcmFuZ2UpO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAvL2NvbnNvbGUubG9nKGFjdGlvbi52YWx1ZS5tdWxpdF9zZWxlY3QpO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICB2YXIgcHJpUmVsID0gJy0xJztcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgaWYgKGFjdGlvbi52YWx1ZS5zZWxlY3RfcmFuZ2UgPT0gJ+WFqOmDqOebuOWFsycpXHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICBwcmlSZWwgPSAnMCc7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIGVsc2UgaWYgKGFjdGlvbi52YWx1ZS5zZWxlY3RfcmFuZ2UgPT0gJ+aIkei0n+i0o+eahOmhueebricpXHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICBwcmlSZWwgPSAnMSc7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIGVsc2UgaWYgKGFjdGlvbi52YWx1ZS5zZWxlY3RfcmFuZ2UgPT0gJ+aIkeWIm+W7uueahCcpXHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICBwcmlSZWwgPSAnMic7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIGVsc2UgaWYgKGFjdGlvbi52YWx1ZS5zZWxlY3RfcmFuZ2UgPT0gJ+aIkeWPguS4jueahCcgfHwgYWN0aW9uLnZhbHVlLnNlbGVjdF9yYW5nZSA9PSAn5oiR5Y+C5Yqg55qEJylcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHByaVJlbCA9ICczJztcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgZWxzZSBpZiAoYWN0aW9uLnZhbHVlLnNlbGVjdF9yYW5nZSA9PSAn5oiR5YWz5rOo55qEJylcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHByaVJlbCA9ICc0JztcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgZWxzZSBpZiAoYWN0aW9uLnZhbHVlLnNlbGVjdF9yYW5nZSA9PSAn5oiR5LiL5bGe55qE6aG555uuJylcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwcmlSZWwgPSAnNSc7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBwYXJhbV89e1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGluZGV4OiBpbmRleCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpaW5kZXg6aWluZGV4LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJ1dHRvbl9jYWxsYmFjazpidXR0b25fY2FsbGJhY2ssXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVxOnJlcVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR1cmw6Jy4uL3NlbFByai9pbmRleD9yZWxhdGlvbj0nK3ByaVJlbCsnJnBhcmFtPScrSlNPTi5zdHJpbmdpZnkocGFyYW1fKSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRldmVudHM6e1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0QWRkUGVyKGRhdGEscGFyYW0peyBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdLlZhbHVlPWRhdGFbMF0uTmFtZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdLlZhbElEPWRhdGFbMF0uSUQrJzsnK2RhdGFbMF0uTmFtZTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgXHRcdFx0dmFyIGNhbGxiYWNrX2V2ZW50aWQgPSBwYXJhbS5idXR0b25fY2FsbGJhY2sudHJpbSgpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoY2FsbGJhY2tfZXZlbnRpZCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgdmFyIGluZm8gPSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgICAgZXZlbnRpZDogY2FsbGJhY2tfZXZlbnRpZCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgICBlZHR5cGU6IFwiMlwiLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICAgIHByb2plY3RpZDogZGF0YVswXS5JRCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgICByY2xzaWQ6IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgICAgcm9iamlkOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICAgIHVzZXJsb2dpbjogXCJcIixcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgICBjbHNpZDogJHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgICAgb2JqaWQ6IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgICAgYXR0cjogcGFyYW0ucmVxLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgJHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICB9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICB2YXIgZCA9IGRpYWxvZyh7XHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICB0aXRsZTogJzxpIGNsYXNzPVwiYWNlLWljb24gZmEgZmEtaW5mby1jaXJjbGVcIj48L2k+ICcgKyAn5o+Q56S6JyxcclxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGFjdGlvbi5hY3Rpb25fdHlwZSArICfmraRhY3Rpb27lsJrmnKrlpITnkIbvvIEnXHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIH0pO1xyXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBkLnNob3coKTtcclxuXHRcdFx0XHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLo1LjJcIixjb250ZW50OiAn6LCD55SoIGJlZm9yZV9jbGlja19idXR0b24g6ISa5pys6L+U5Zue56m677yMZXZlbnRfaWQnICsgZXZlbnRpZCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vNVwiLGNvbnRlbnQ6c3VjY2Vzcy5tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcclxuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6NS4xXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHQgICAgfSxcclxuXHRcdCAgICBcclxuXHRcdFx0XHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///49\n");
+eval("/* WEBPACK VAR INJECTION */(function(__f__) {Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0;var _regenerator = _interopRequireDefault(__webpack_require__(/*! ./node_modules/@babel/runtime/regenerator */ 50));\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar _pickerAddress = _interopRequireDefault(__webpack_require__(/*! ../../js/pickerAddress/pickerAddress.vue */ 53));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {try {var info = gen[key](arg);var value = info.value;} catch (error) {reject(error);return;}if (info.done) {resolve(value);} else {Promise.resolve(value).then(_next, _throw);}}function _asyncToGenerator(fn) {return function () {var self = this,args = arguments;return new Promise(function (resolve, reject) {var gen = fn.apply(self, args);function _next(value) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);}function _throw(err) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);}_next(undefined);});};}var _default =\n{\n  components: {\n    pickerAddress: _pickerAddress.default },\n\n  data: function data() {\n    return {\n      title: '鏂板',\n      param: {},\n      classAttrList: [],\n      classGridStyle: [],\n      edit_inital_event: \"\", //寮圭獥鍒濆鍖栦簨浠禝D\n      edit_ok_event: \"\", //寮圭獥鐐瑰嚮OK 瑙﹀彂浜嬩欢ID\n      edit_select_compose_event: \"\", //閫夋嫨缁勬垚瀵硅薄鏃惰皟鐢╘n      edit_compose_cls_id: \"\",\n      global_attr: [],\n      refdatastore: [], //寮曠敤鏁版嵁瀛樺偍鍖�/ {attr:'G_PRJ_' + bindattr + '_ID', value:info.id}\n      inputValList: [{ Name: \"test\" }, { Name: \"test2\" }, { Name: \"test3\" }, { Name: \"test4\" }, { Name: \"test5\" }, { Name: \"test6\" }, { Name: \"test7\" }] };\n\n  },\n  onLoad: function onLoad(options) {\n    // console.log(options);\n    uni.setNavigationBarTitle({ title: options.titlename }); //璁剧疆椤堕儴鏍囬 \n    var param = JSON.parse(options.param);\n    this.$data.title = param.Add_BtnName ? param.Add_BtnName : options.titlename; //璁剧疆鎸夐挳鏂囧瓧\n    // console.log(param);\n    if (!param.EditDlgMode) {\n      uni.showModal({ title: \"鎻愮ず\", content: \"璇ュ姛鑳界偣鏈厤缃紪杈戠獥鍙o紝璇烽噸鏂伴厤缃紒\", showCancel: false, confirmText: \"鍙栨秷\" });\n      return;\n    }\n    if (!param.Edit_dlg.Name) {\n      uni.showModal({ title: \"鎻愮ず\", content: \"璇ュ姛鑳界偣鏈厤缃獥鍙f牱寮忥紝璇烽噸鏂伴厤缃紒\", showCancel: false, confirmText: \"鍙栨秷\" });\n      return;\n    }\n    this.$data.param = param;\n    var edit_dlg = {\n      Model: param.EditDlgMode,\n      Name: param.Edit_dlg.Name };\n\n    var dataInfo = {\n      class_id: param.clsid };\n\n    var $this = this;\n    $this.$store.state.thisareaFuncID = param.clsid;\n    // console.log($this.$store.getters.getclassAttrList);\n    //鑾峰彇\n    if ($this.$store.getters.getclassAttrList) {\n      $this.$data.classAttrList = $this.$store.getters.getclassAttrList.data;\n      $this.classGridStyleInfo();\n    } else\n    $this.$store.dispatch('classAttrList', dataInfo).then(function (success) {\n      // console.log(success);\n      if (success.code == '00000') {\n        $this.$data.classAttrList = success.data;\n\n        $this.classGridStyleInfo();\n      } else {\n        uni.showModal({ title: \"閿欒1\", content: success.msg, showCancel: false, confirmText: \"鍙栨秷\" });\n      }\n    }).catch(function (ex) {\n      // console.log(ex);\n      uni.showModal({ title: \"閿欒1.1\", content: ex.errMsg, showCancel: false, confirmText: \"鍙栨秷\" });\n    });\n\n  },\n  methods: {\n    classGridStyleInfo: function classGridStyleInfo() {var _this = this;return _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee() {var $this, gridstyleInfo;return _regenerator.default.wrap(function _callee$(_context) {while (1) {switch (_context.prev = _context.next) {case 0:\n                $this = _this;\n                gridstyleInfo = {\n                  class_id: $this.$data.param.clsid,\n                  name: $this.$data.param.Edit_dlg.Name,\n                  type: '2' };\n\n                $this.$store.state.thisEditName = $this.$data.param.Edit_dlg.Name;\n                // console.log($this.$store.getters.getclassGridStyleInfo);\n                //鑾峰彇\n                if ($this.$store.getters.getclassGridStyleInfo) {\n                  $this.$data.classGridStyle = $this.$store.getters.getclassGridStyleInfo.data;\n                  $this.class_attr_init();\n                } else {\n                  //console.log(gridstyleInfo);\n                  $this.$store.dispatch('classGridStyleInfo', gridstyleInfo).then(function (success) {\n                    // console.log(success);\n                    if (success.code == '00000') {\n                      success.data.StyleDef = JSON.parse(success.data.StyleDef);\n                      $this.$data.classGridStyle = success.data;\n\n                      $this.class_attr_init();\n                    } else {\n                      uni.showModal({ title: \"閿欒1.2\", content: success.msg, showCancel: false, confirmText: \"鍙栨秷\" });\n                    }\n                  }).catch(function (ex) {\n                    __f__(\"log\", ex, \" at pages/modal/classAttr.vue:459\");\n                    uni.showModal({ title: \"閿欒1.3\", content: ex.errMsg, showCancel: false, confirmText: \"鍙栨秷\" });\n                  });\n                }case 4:case \"end\":return _context.stop();}}}, _callee);}))();\n    },\n    ontap: function ontap(e) {var _this2 = this; //鎵爜鍔熻兘\n      //console.log(e.target)\n      getApp().onScan(function (result) {\n        //console.log(result.decodedata);\n        _this2.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = result.decodedata;\n      });\n    },\n    onarrow: function onarrow(index, open) {\n      // console.log(index+'--'+open);\n      this.$data.classAttrList[index].Open = open == true ? false : true;\n    },\n    ondateTime: function ondateTime(e) {\n      //console.log(e.target)\n      this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.target.value;\n    },\n    onchange: function onchange(e) {\n      __f__(\"log\", e.target, \" at pages/modal/classAttr.vue:480\");\n      var value = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].dictitem[e.target.value];\n      var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']];\n      __f__(\"log\", data_attr, \" at pages/modal/classAttr.vue:483\");\n      if (value.Name != data_attr.Value) {\n        this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = value.Name;\n        __f__(\"log\", this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value, \" at pages/modal/classAttr.vue:486\");\n        var eventid = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].action;\n        if (eventid) {\n          // self.event_no_sub = 1;\n          var req = [];\n          var attrlist = this.$data.classAttrList;\n          for (var i = 0; i < attrlist.length; i++) {\n            var attr = attrlist[i].Attr;\n            for (var j = 0; j < attr.length; j++) {\n              var ar = attr[j];\n              if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)')\n              if (ar.Value == '璇�) ar.Value = '';\n              if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰')\n              req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n              if (ar.Type == '甯冨皵鍊�)\n              req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n              req.push({ attr: ar.Name, val: ar.Value ? ar.Value : '' });\n            }\n          }\n          var info = {\n            eventid: eventid,\n            edtype: \"0\",\n            projectid: '',\n            rclsid: '',\n            robjid: '',\n            userlogin: '',\n            clsid: this.$data.param.clsid,\n            objid: \"\",\n            attr: req };\n\n          this.DataObjRunCustomEvent(info);\n        }\n      }\n\n    },\n    onchange2: function onchange2(item, value, delvalue) {\n      // console.log(item);\n      // console.log(value);\n      // console.log(delvalue);\n      if (item.length == 0) {//涓虹┖鏃讹紝娓呯┖灞炴�value\n        var index,iindex,dindex = 0;\n        for (var i in this.$data.classAttrList) {\n          for (var j in this.$data.classAttrList[i].Attr) {\n            for (var d in this.$data.classAttrList[i].Attr[j].dictitem) {\n              if (delvalue[0].Name == this.$data.classAttrList[i].Attr[j].dictitem[d].Name) {\n                this.$data.classAttrList[i].Attr[j].Value = \"\";\n              }\n            }\n          }\n        }\n      }\n\n      for (var v in item) {\n        var index,iindex,dindex = 0;\n        for (var i in this.$data.classAttrList) {\n          for (var j in this.$data.classAttrList[i].Attr) {\n            for (var d in this.$data.classAttrList[i].Attr[j].dictitem) {\n              if (item[v].Name == this.$data.classAttrList[i].Attr[j].dictitem[d].Name) {\n                index = i;iindex = j;dindex = d;\n              }\n            }\n          }\n        }\n        var itemvalue = item[v];\n        var data_attr = this.$data.classAttrList[index].Attr[iindex];\n\n        __f__(\"log\", data_attr, \" at pages/modal/classAttr.vue:553\");\n        if (itemvalue.Name != data_attr.Value) {\n          this.$data.classAttrList[index].Attr[iindex].Value = value;\n          __f__(\"log\", this.$data.classAttrList[index].Attr[iindex].Value, \" at pages/modal/classAttr.vue:556\");\n          var eventid = this.$data.classAttrList[index].Attr[iindex].action;\n          if (eventid) {\n            // self.event_no_sub = 1;\n            var req = [];\n            var attrlist = this.$data.classAttrList;\n            for (var i = 0; i < attrlist.length; i++) {\n              var attr = attrlist[i].Attr;\n              for (var j = 0; j < attr.length; j++) {\n                var ar = attr[j];\n                if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)')\n                if (ar.Value == '璇�) ar.Value = '';\n                if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰')\n                req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n                if (ar.Type == '甯冨皵鍊�)\n                req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n                if (ar.Type == '瀛楀吀' || ar.Type == '瀛楀吀-瀛楃涓�)\n                req.push({ attr: ar.Name, val: itemvalue.Name });else\n\n                req.push({ attr: ar.Name, val: ar.Value ? ar.Value : '' });\n              }\n            }\n            var info = {\n              eventid: eventid,\n              edtype: \"0\",\n              projectid: '',\n              rclsid: '',\n              robjid: '',\n              userlogin: '',\n              clsid: this.$data.param.clsid,\n              objid: \"\",\n              attr: req };\n\n            this.DataObjRunCustomEvent(info);\n          }\n        }\n      }\n\n\n    },\n    onevent: function onevent(e) {\n      // console.log(e.target);\n      var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']];\n      // console.log(data_attr);\n      if (e.target.value != data_attr.Value) {\n        this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.target.value;\n        var eventid = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].action;\n        if (eventid) {\n          // self.event_no_sub = 1;\n          var req = [];\n          var attrlist = this.$data.classAttrList;\n          for (var i = 0; i < attrlist.length; i++) {\n            var attr = attrlist[i].Attr;\n            for (var j = 0; j < attr.length; j++) {\n              var ar = attr[j];\n              if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)')\n              if (ar.Value == '璇�) ar.Value = '';\n              if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰')\n              req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n              if (ar.Type == '甯冨皵鍊�)\n              req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n              req.push({ attr: ar.Name, val: ar.Value ? ar.Value : '' });\n            }\n          }\n          var info = {\n            eventid: eventid,\n            edtype: \"0\",\n            projectid: '',\n            rclsid: '',\n            robjid: '',\n            userlogin: '',\n            clsid: this.$data.param.clsid,\n            objid: \"\",\n            attr: req };\n\n          this.DataObjRunCustomEvent(info, data_attr);\n        }\n      }\n\n    },\n    oncheck: function oncheck(e) {\n      // console.log(e.target);\n      var ischecked = e.target.dataset.ischeck ? false : true;\n      var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']];\n      // console.log(data_attr);\n      if (ischecked != data_attr.Value) {\n        this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = ischecked;\n        var eventid = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].action;\n        if (eventid) {\n          // self.event_no_sub = 1;\n          var req = [];\n          var attrlist = this.$data.classAttrList;\n          for (var i = 0; i < attrlist.length; i++) {\n            var attr = attrlist[i].Attr;\n            for (var j = 0; j < attr.length; j++) {\n              var ar = attr[j];\n              if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)')\n              if (ar.Value == '璇�) ar.Value = '';\n              if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰')\n              req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n              if (ar.Type == '甯冨皵鍊�)\n              req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n              req.push({ attr: ar.Name, val: ar.Value ? ar.Value : '' });\n\n            }\n          }\n          var info = {\n            eventid: eventid,\n            edtype: \"0\",\n            projectid: '',\n            rclsid: '',\n            robjid: '',\n            userlogin: '',\n            clsid: this.$data.param.clsid,\n            objid: \"\",\n            attr: req };\n\n          this.DataObjRunCustomEvent(info);\n        }\n      }\n\n    },\n    inputValListIsDel: function inputValListIsDel(index) {\n      // console.log(index);\n      this.$data.inputValList.splice(index, 1); //鍒犻櫎tabPagejson鐨勫唴瀹筡n      // console.log(this.$data.inputValList);\n    },\n    addresschange: function addresschange(e) {\n      // console.log(e.target);\n      __f__(\"log\", e.data.join(';'), \" at pages/modal/classAttr.vue:687\");\n      this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.data.join(';');\n    },\n    classAttr_extButton: function classAttr_extButton(index, iindex) {\n      var $this = this;\n      var before_click_button = $this.$data.classAttrList[index].Attr[iindex].before_click_button;\n      var button_callback = $this.$data.classAttrList[index].Attr[iindex].button_callback;\n      if (!before_click_button) {\n        uni.showModal({ title: \"鎻愮ず\", content: \"before_click_button-event_id涓虹┖锛乗", showCancel: false, confirmText: \"鍙栨秷\" });\n        return;\n      }\n      if (!button_callback) {\n        uni.showModal({ title: \"鎻愮ず\", content: \"button_callback-event_id涓虹┖锛乗", showCancel: false, confirmText: \"鍙栨秷\" });\n        return;\n      }\n      var data_attr = this.$data.classAttrList[index].Attr[iindex];\n      this.DataObjRunCustomEvent_Return(before_click_button, data_attr, button_callback, index, iindex);\n    },\n    classAttr_AddPer: function classAttr_AddPer(index, iindex) {\n      var param = { index: index, iindex: iindex };\n      var $this = this;\n      uni.navigateTo({\n        url: '../selpsn/index?mulit=false&param=' + JSON.stringify(param),\n        events: {\n          AddPer: function AddPer(data, param) {\n            // console.log(param);\n            __f__(\"log\", data, \" at pages/modal/classAttr.vue:713\");\n            $this.$data.classAttrList[param.index].Attr[param.iindex].Value = data[0].Name;\n            $this.$data.classAttrList[param.index].Attr[param.iindex].ValID = data[0].Login + ';' + data[0].Name;\n\n            var eventid = $this.$data.classAttrList[param.index].Attr[param.iindex].action;\n            if (eventid) {\n              eventid = eventid.trim();\n              if (eventid) {\n                var info = {\n                  eventid: eventid,\n                  edtype: \"4\",\n                  projectid: \"\",\n                  rclsid: \"\",\n                  robjid: \"\",\n                  userlogin: data[0].Login,\n                  clsid: $this.$data.param.clsid,\n                  objid: \"\",\n                  attr: [] };\n\n\n                // var data_attr = $this.$data.classAttrList[param.index].Attr[param.iindex];\n                $this.DataObjRunCustomEvent(info);\n              }\n            }\n          } } });\n\n\n    },\n    classAttr_AddRef: function classAttr_AddRef(e) {\n      __f__(\"log\", e.target, \" at pages/modal/classAttr.vue:742\");\n      uni.showModal({ title: \"鎻愮ず\", content: \"姝ゅ姛鑳借繕鏈疄鐜帮紒\", showCancel: false, confirmText: \"鍙栨秷\" });\n      // var value=this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].RelCls[e.target.value];\n      // this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value=value;\n    },\n    classAttr_AddPrj: function classAttr_AddPrj(index, iindex) {\n      var param = { index: index, iindex: iindex };\n      var $this = this;\n      uni.navigateTo({\n        url: '../selPrj/index?relation=-1&param=' + JSON.stringify(param),\n        events: {\n          AddPer: function AddPer(data, param) {\n            // console.log(param);\n            // console.log(data);\n            $this.$data.classAttrList[param.index].Attr[param.iindex].Value = data[0].Name;\n            $this.$data.classAttrList[param.index].Attr[param.iindex].ValID = data[0].ID + ';' + data[0].Name;\n\n            var eventid = $this.$data.classAttrList[param.index].Attr[param.iindex].action;\n            if (eventid) {\n              eventid = eventid.trim();\n              if (eventid) {\n                var info = {\n                  eventid: eventid,\n                  edtype: \"2\",\n                  projectid: data[0].ID,\n                  rclsid: \"\",\n                  robjid: \"\",\n                  userlogin: \"\",\n                  clsid: $this.$data.param.clsid,\n                  objid: \"\",\n                  attr: [] };\n\n\n                // var data_attr = $this.$data.classAttrList[param.index].Attr[param.iindex];\n                $this.DataObjRunCustomEvent(info);\n              }\n            }\n          } } });\n\n\n    },\n    sava: function sava() {\n      if (this.$data.edit_ok_event)\n      this.OKDataObjRunCustomEvent();else\n\n      this.add();\n    },\n    add: function add() {var _this3 = this;\n      uni.showLoading({\n        title: \"鍔犺浇涓�..\" });\n\n      var req = [];\n      var attrlist = this.$data.classAttrList;\n      for (var i = 0; i < attrlist.length; i++) {\n        var attr = attrlist[i].Attr;\n        for (var j = 0; j < attr.length; j++) {\n          var ar = attr[j];\n          if (ar.Value == '璇烽�鎷� || ar.Value == '鈥斺�璇烽�鎷┾�鈥�) ar.Value = '';\n          if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)')\n          if (ar.Value == '璇�) ar.Value = '';\n          if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰')\n          req.push({ name: ar.Name, value: ar.ValID ? ar.ValID : '' });else\n          if (ar.Type == '甯冨皵鍊�)\n          req.push({ name: ar.Name, value: ar.Value ? '1' : '0' });else\n          if (ar.Type == '瀛楀吀' || ar.Type == '瀛楀吀-瀛楃涓�) {\n            if (ar.select == true) {//鍒ゆ柇涓嬫媺鏄惁澶氶�\n              var valStr = \"\";\n              for (var v in ar.Value) {\n                if (valStr)\n                valStr += \";\";\n                valStr += ar.Value[v];\n              }\n              req.push({ name: ar.Name, value: valStr });\n            } else\n            req.push({ name: ar.Name, value: ar.Value });\n          } else\n\n          req.push({ name: ar.Name, value: ar.Value ? ar.Value : '' });\n\n          if ((ar.NotEmpty == '1' || ar.notempty == true) && !ar.Value) {\n            // if(ar.notEmpty=='1'){\n            uni.hideLoading();\n            // uni.showToast({title:ar.DispName+'涓嶈兘涓虹┖锛�,icon:\"success\",duration:3000});\n            uni.showModal({ title: \"鎻愮ず\", content: ar.DispName + '涓嶈兘涓虹┖锛�, showCancel: false, confirmText: \"鍙栨秷\" });\n            return;\n          }\n        }\n      }\n      var enviroment = {\n        'function': '3000', // 鍔熻兘鐐圭紪鍙穃n        cls_id: this.$data.param.clsid, // 鍔熻兘鐐逛富鏁版嵁绫绘爣璇哱n        'button': 'top', // top/bottom\n        button_name: '鏂板',\n        master: {\n          cls_id: this.$data.param.clsid } };\n\n\n\n      var dataInfo = {\n        class_id: this.$data.param.clsid, data_obj_id: '', masterclsid: '',\n        req: JSON.stringify(req), upfile: JSON.stringify([]), post_data: JSON.stringify({}),\n        compose: JSON.stringify([]), refdatastore: JSON.stringify([]), extinfo: JSON.stringify(enviroment),\n        not_trigger_sys_event: '' };\n\n\n      // return\n      __f__(\"log\", dataInfo, \" at pages/modal/classAttr.vue:848\");\n      this.$store.dispatch('addclassattr', dataInfo).then(function (success) {\n        __f__(\"log\", success, \" at pages/modal/classAttr.vue:850\");\n        uni.hideLoading();\n        if (success.code == '00000') {\n          var action = JSON.parse(success.data.Action);\n          if (action.ret == '0') {\n            if (action.result_type == '0') {\n              uni.showToast({ title: action.result, icon: \"success\", duration: 3000 });\n            }\n            // \"{\"ret\":0, \"result_type\":0, \"result\":\"鍒涘缓鎴愬姛123123123\",\"info\":\"\"}\"\n          }\n          //鍒锋柊\n          uni.redirectTo({\n            url: '../modal/classAttr?param=' + JSON.stringify(_this3.$data.param) + \"&titlename=\" + _this3.$data.title });\n\n          // this.class_attr_init();\n        } else {\n          uni.showModal({ title: \"閿欒\", content: success.msg, showCancel: false, confirmText: \"鍙栨秷\" });\n        }\n      }).catch(function (ex) {\n        __f__(\"log\", ex, \" at pages/modal/classAttr.vue:869\");\n        uni.hideLoading();\n        uni.showModal({ title: \"鎻愮ず\", content: ex.errMsg, showCancel: false, confirmText: \"鍙栨秷\" });\n      });\n    },\n    class_attr_init: function class_attr_init() {\n      var attrlist = this.$data.classGridStyle.StyleDef.show_style;\n      var newattrlist = [];\n      if (this.$data.classAttrList.length > 0) {\n        for (var i = 0; i < attrlist.length; i++) {\n          var open = attrlist[i].open;\n          var name = attrlist[i].attrgroup_name;\n          var attrs = attrlist[i].attrs;\n          for (var s = 0; s < this.$data.classAttrList.length; s++) {\n            var clsattr = this.$data.classAttrList[s];\n            if (name == clsattr.Name) {\n              var attr = [];\n              for (var j = 0; j < attrs.length; j++) {\n                for (var l = 0; l < clsattr.Attr.length; l++) {\n                  var ca = clsattr.Attr[l];\n                  if (attrs[j].attr == ca.Name) {\n                    ca.action = attrs[j].action;\n                    ca.edit = attrs[j].edit;\n                    ca.notempty = attrs[j].notempty;\n                    ca.ext_button = attrs[j].ext_button;\n                    ca.button_img = attrs[j].button_img;\n                    ca.button_tooltip = attrs[j].button_tooltip;\n                    ca.before_click_button = attrs[j].before_click_button;\n                    ca.button_callback = attrs[j].button_callback;\n                    ca.hidden = attrs[j].hidden;\n                    ca.select = attrs[j].select == undefined ? false : attrs[j].select;\n                    ca.Value = \"\";\n                    if (ca.dictitem) {\n                      var dictitemlist = [];\n                      for (var d = 0; d < ca.dictitem.length; d++) {\n                        ca.dictitem[d].label = ca.dictitem[d].CN_S_NAME;\n                        ca.dictitem[d].value = ca.dictitem[d].CN_S_NAME;\n                      }\n                      if (ca.select == true)\n                      ca.Value = []; //ca.dictitem[0].CN_S_NAME;\n                      else\n                        ca.Value = '璇烽�鎷�; //ca.dictitem[0].CN_S_NAME;\n                    }\n                    if (ca.Type == '鏃ユ湡' || ca.Type == '鏃堕棿') {\n                      var nowDate = new Date();\n                      var date = { year: nowDate.getFullYear(), month: nowDate.getMonth() + 1, day: nowDate.getDate() };\n                      ca.Value = date.year + '-' + (date.month >= 10 ? date.month : '0' + date.month) + '-' + (date.day >= 10 ? date.day : '0' + date.day);\n                    }\n                    if (ca.Type == '寮曠敤瀵硅薄(澶氫釜)') {\n                      var relClsList = [];\n                      var attr_rescls = ca.RelCls.split(',');\n                      for (var ii in attr_rescls) {\n                        var rescls = attr_rescls[ii].split('|');\n                        relClsList.push({ id: rescls[0], name: rescls[1] });\n                      }\n                      ca.RelClsList = relClsList;\n                      ca.Value = '璇�;\n                    }\n                    if (ca.Type == '鐪佸競鍖�)\n                    ca.Value = '璇烽�鎷�;\n                    if (ca.Type == '甯冨皵鍊�)\n                    ca.Value = false;\n\n                    attr.push(ca);\n                  }\n                }\n              }\n              newattrlist.push({\n                BkColor: clsattr.BkColor,\n                HasAce: clsattr.HasAce,\n                ImgFontStyle: clsattr.ImgFontStyle,\n                Name: clsattr.Name,\n                Order: clsattr.Order,\n                Open: open,\n                Attr: attr,\n                control_style: this.$data.classGridStyle.StyleDef.control_style,\n                title_p_wdith: this.$data.classGridStyle.StyleDef.title_p_wdith });\n\n            }\n          }\n        }\n        if (newattrlist.length > 0) {\n          this.$data.classAttrList = newattrlist;\n        }\n        var req = [];\n        if (this.$data.classGridStyle.StyleDef) {\n          if (this.$data.classGridStyle.StyleDef.show_style.length > 0) {\n            var attrlist = this.$data.classGridStyle.StyleDef.show_style;\n            // $el.find('.attr_field').prop('readonly', true);\n            // $el.find('.attr_field').prop('disabled', true);\n            for (var i = 0; i < attrlist.length; i++) {\n              var attr = attrlist[i].attrs;\n              for (var j = 0; j < attr.length; j++) {\n                var ar = attr[j];\n                req.push({ attr: ar.attr, val: ar.value ? ar.value : '' });\n              }\n            }\n          }\n        }\n\n        var eventlist = this.$data.classGridStyle.StyleDef.event;\n        if (eventlist) {\n          if (eventlist.length > 0) {\n            for (var i = 0; i < eventlist.length; i++) {\n              if (eventlist[i].event_id == 'before_ok') {\n                this.$data.edit_ok_event = eventlist[i];\n              } else if (eventlist[i].event_id == 'initial') {\n                this.$data.edit_inital_event = eventlist[i];\n              } else if (eventlist[i].event_id == 'before_select_compose') {\n                this.$data.edit_select_compose_event = eventlist[i].scrip_id;\n                this.$data.edit_compose_cls_id = eventlist[i].compose_cls_id;\n              }\n            }\n          }\n        }\n        __f__(\"log\", req, \" at pages/modal/classAttr.vue:984\");\n        if (this.$data.edit_inital_event) {\n          var eventid = this.$data.edit_inital_event.scrip_id;\n          var info = {\n            eventid: eventid,\n            edtype: \"0\",\n            projectid: '',\n            rclsid: '',\n            robjid: '',\n            userlogin: '',\n            clsid: this.$data.param.clsid,\n            objid: \"\",\n            attr: req };\n\n          this.ini_DataObjRunCustomEvent(info);\n        }\n        __f__(\"log\", this.$data.classGridStyle, \" at pages/modal/classAttr.vue:1000\");\n        __f__(\"log\", this.$data.classAttrList, \" at pages/modal/classAttr.vue:1001\");\n\n      } else {\n        uni.showModal({ title: \"鎻愮ず\", content: \"鏈壘鍒板彲鏄剧ず鐨勭殑灞炴�\", showCancel: false, confirmText: \"鍙栨秷\" });\n      }\n    },\n    ini_DataObjRunCustomEvent: function ini_DataObjRunCustomEvent(info) {var _this4 = this;\n      var param = {\n        EditStyle: this.$data.param.Edit_dlg.Name,\n        ViewStyle: this.$data.param.Edit_dlg.Name,\n        NotTriggerSysEvent: 0,\n        enviroment: {\n          'function': '3000', // 鍔熻兘鐐圭紪鍙穃n          cls_id: this.$data.param.clsid, // 鍔熻兘鐐逛富鏁版嵁绫绘爣璇哱n          'button': 'top', // top/bottom\n          button_name: '鏂板',\n          master: {\n            cls_id: this.$data.param.clsid // button=bottom鏃�master鐨刢ls_id\n            //obj_id: ''  // button=bottom鏃�master鐨刼bj_id\n          } } };\n\n\n      var inputparameter = '';\n      var global_attr = '';\n\n      var dataInfo = {\n        edtype: info.edtype, eventid: info.eventid, projectid: info.projectid,\n        rclsid: info.rclsid, robjid: info.robjid, userlogin: info.userlogin, clsid: info.clsid, objid: info.objid,\n        attr: JSON.stringify(info.attr), extinfo: JSON.stringify(param), inputparameter: inputparameter, global_attr: global_attr };\n\n      __f__(\"log\", dataInfo, \" at pages/modal/classAttr.vue:1031\");\n      this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n        __f__(\"log\", success, \" at pages/modal/classAttr.vue:1033\");\n        if (success.code == '00000') {\n          var data = JSON.parse(success.data);\n          var actionlist = data.action;\n          if (actionlist) {\n            for (var j = 0; j < actionlist.length; j++) {\n              var action = actionlist[j];\n              var action_type = action.action_type;\n              var value = action.value;\n              if (action_type == 'set_dlg_attr') {\n                if (value) {\n                  var val = value;\n                  if (typeof value == 'string') {\n                    val = JSON.parse(value);\n                  }\n                  __f__(\"log\", val, \" at pages/modal/classAttr.vue:1048\");\n                  for (var i = 0; i < val.length; i++) {\n                    for (var a = 0; a < _this4.$data.classAttrList.length; a++) {\n                      for (var l = 0; l < _this4.$data.classAttrList[a].Attr.length; l++) {\n                        var ca = _this4.$data.classAttrList[a].Attr[l];\n                        if (val[i].attr == ca.Name) {\n                          if (ca.Type == '瀛楀吀' || ca.Type == '瀛楀吀-瀛楃涓�) {\n                            var dictItemList = [];\n                            for (var d in val[i].choice_list) {\n                              var val = val[i].choice_list[d];\n                              dictItemList.push({ \"CN_S_NAME\": val, \"Name\": val, \"label\": val, \"value\": val });\n\n                            }\n                            ca.dictitem = dictItemList;\n                            // attr[j].dictitem = val[i].choice_list;\n                          } else {\n                              // ca.value = val[i].value;\n                            }\n                        }\n                      }\n                    }\n\n                    var length = 0;\n                    if (!_this4.$data.refdatastore.filter(function (s) {\n                      return val[i].attr == s.attr;\n                    }).length) {\n                      length = 1;\n                      _this4.$data.refdatastore.push(val[i]);\n                    }\n                    if (length == 0) {\n                      for (var j = 0; j < _this4.$data.refdatastore.length; j++) {\n                        if (_this4.$data.refdatastore[j].attr == val[i].attr) {\n                          _this4.$data.refdatastore[j].value = val[i].value;\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n              if (action_type == 'open_select_userdlg') {\n                uni.showModal({ title: \"閿欒2.2\", content: \"open_select_userdlg杩欎釜action_type杩樻湭澶勭悊锛乗", showCancel: false, confirmText: \"鍙栨秷\" });\n              }\n            }\n          }\n\n        } else {\n          uni.showModal({ title: \"閿欒2\", content: success.msg, showCancel: false, confirmText: \"鍙栨秷\" });\n        }\n      }).catch(function (ex) {\n        // console.log(ex);\n        uni.showModal({ title: \"閿欒2.1\", content: ex.errMsg, showCancel: false, confirmText: \"鍙栨秷\" });\n      });\n    },\n    DataObjRunCustomEvent: function DataObjRunCustomEvent(info, data_attr) {\n      var $this = this;\n      var enviroment = {\n        'function': '3000', // 鍔熻兘鐐圭紪鍙穃n        cls_id: this.$data.param.clsid, // 鍔熻兘鐐逛富鏁版嵁绫绘爣璇哱n        'button': 'top', // top/bottom\n        button_name: '鏂板',\n        master: {\n          cls_id: this.$data.param.clsid // button=bottom鏃�master鐨刢ls_id\n          //obj_id: ''  // button=bottom鏃�master鐨刼bj_id\n        } };\n\n      if (data_attr) {\n        enviroment.edit_dlg = {\n          type: 'small', //灏忕獥鍙n          class_id: this.$data.param.clsid //褰撳墠鏁版嵁绫籭d\n        };\n        if (data_attr) {\n          enviroment.edit_dlg.form_control = { //鎵�睘鐨勮〃鍗曟帶浠禱n            name: data_attr.Name, //瀛楁灞炴�\n            text: data_attr.DispName, //鏄剧ず鏂囨湰\n            group_name: data_attr.GroupName, //灞炴�缁刓n            type: data_attr.Type, //瀛楁绫诲瀷\n            readonly: data_attr.ReadOnly, //鏄惁鍙\n            button_img: data_attr.button_img, //寮曠敤鎸夐挳鐨勫浘鏍嘰n            button_tooltip: data_attr.button_tooltip //寮曠敤鎸夐挳鐨則ooltip\n          };\n        }\n      }\n      var dataInfo = {\n        edtype: info.edtype, eventid: info.eventid, projectid: info.projectid.replace('{', '').replace('}', ''),\n        rclsid: info.rclsid, robjid: info.robjid, userlogin: info.userlogin, clsid: info.clsid, objid: info.objid,\n        attr: JSON.stringify(info.attr), extinfo: JSON.stringify(enviroment), inputparameter: '', global_attr: JSON.stringify(this.$data.global_attr) };\n\n      __f__(\"log\", dataInfo, \" at pages/modal/classAttr.vue:1135\");\n      this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n        __f__(\"log\", success, \" at pages/modal/classAttr.vue:1137\");\n        if (success.code == '00000') {\n          var data = JSON.parse(success.data);\n          var actionlist = data.action;\n\n          if (actionlist) {\n            __f__(\"log\", actionlist, \" at pages/modal/classAttr.vue:1143\");\n            for (var i = 0; i < actionlist.length; i++) {\n              var action = actionlist[i];\n              if (action.action_type == 'set_dlg_attr') {\n                var result = action.value;\n                for (var i = 0; i < result.length; i++) {\n                  if (result[i].choice_list) {\n                    for (var c = 0; c < $this.$data.classAttrList.length; c++) {\n                      var attr = $this.$data.classAttrList[c].Attr;\n                      for (var j = 0; j < attr.length; j++) {\n                        if (attr[j].Name == result[i].attr) {\n                          if (attr[j].Type == '瀛楀吀' || attr[j].Type == '瀛楀吀-瀛楃涓�) {\n                            var dictItemList = [];\n                            for (var d in result[i].choice_list) {\n                              var val = result[i].choice_list[d];\n                              dictItemList.push({ \"CN_S_NAME\": val, \"Name\": val, \"label\": val, \"value\": val });\n                            }\n                            attr[j].dictitem = dictItemList;\n                            // attr[j].dictitem = result[i].choice_list;\n                          }\n                        }\n                      }\n                    }\n                  }\n                  for (var c = 0; c < $this.$data.classAttrList.length; c++) {\n                    var attr = $this.$data.classAttrList[c].Attr;\n                    for (var j = 0; j < attr.length; j++) {\n                      __f__(\"log\", attr[j].Name + '==' + result[i].attr, \" at pages/modal/classAttr.vue:1170\");\n                      if (attr[j].Name == result[i].attr) {\n                        attr[j].Value = result[i].value;\n                      }\n                    }\n                  }\n                  var length = 0;\n                  if (!$this.$data.refdatastore.filter(function (s) {\n                    return result[i].attr == s.attr;\n                  }).length) {\n                    length = 1;\n                    $this.$data.refdatastore.push(result[i]);\n                  }\n                  if (length == 0) {\n                    for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n                      if ($this.$data.refdatastore[j].attr == result[i].attr) {\n                        $this.$data.refdatastore[j].value = result[i].value;\n                      }\n                    }\n                  }\n                }\n              } else if (data.action[i].action_type == 'set_global_attr') {\n                $this.$data.global_attr = data.action[i].value || [];\n              }\n            }\n          }\n\n          if (data.result) {\n            var result = data.result;\n            for (var i = 0; i < result.length; i++) {\n              for (var c = 0; c < $this.$data.classAttrList.length; c++) {\n                var attr = $this.$data.classAttrList[c].Attr;\n                for (var j = 0; j < attr.length; j++) {\n                  if (attr[j].Name == result[i].attr) {\n                    attr[j].Value = result[i].value;\n                  }\n                }\n              }\n\n              var length = 0;\n              if (!$this.$data.refdatastore.filter(function (s) {\n                return result[i].attr == s.attr;\n              }).length) {\n                length = 1;\n                $this.$data.refdatastore.push(result[i]);\n              }\n              if (length == 0) {\n                for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n                  if ($this.$data.refdatastore[j].attr == result[i].attr) {\n                    $this.$data.refdatastore[j].value = result[i].value;\n                  }\n                }\n              }\n            }\n          }\n        } else {\n          uni.showModal({ title: \"閿欒3\", content: success.msg, showCancel: false, confirmText: \"鍙栨秷\" });\n        }\n      }).catch(function (ex) {\n        // console.log(ex);\n        uni.showModal({ title: \"閿欒3.1\", content: ex.errMsg, showCancel: false, confirmText: \"鍙栨秷\" });\n      });\n    },\n    OKDataObjRunCustomEvent: function OKDataObjRunCustomEvent() {var _this5 = this;\n      var enviroment = {\n        'function': '3000', // 鍔熻兘鐐圭紪鍙穃n        cls_id: this.$data.param.clsid, // 鍔熻兘鐐逛富鏁版嵁绫绘爣璇哱n        'button': 'top', // top/bottom\n        button_name: '鏂板',\n        master: {\n          cls_id: this.$data.param.clsid // button=bottom鏃�master鐨刢ls_id\n        } };\n\n\n\n      var eventid = this.$data.edit_ok_event.scrip_id;\n      var req = [];\n      var attrlist = this.$data.classAttrList;\n      for (var i = 0; i < attrlist.length; i++) {\n        var attr = attrlist[i].Attr;\n        for (var j = 0; j < attr.length; j++) {\n          var ar = attr[j];\n          if (ar.Value == '璇烽�鎷� || ar.Value == '鈥斺�璇烽�鎷┾�鈥�) ar.Value = '';\n          if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)')\n          if (ar.Value == '璇�) ar.Value = '';\n          if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰')\n          req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n          if (ar.Type == '甯冨皵鍊�)\n          req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n          req.push({ attr: ar.Name, val: ar.Value });\n        }\n      }\n\n      if (this.$data.refdatastore.length > 0) {\n        for (var i = 0; i < this.$data.refdatastore.length; i++) {\n          if (!req.filter(function (s) {\n            return this.$data.refdatastore[i].attr == s.name;\n          }).length) {\n            length = 1;\n            req.push({ 'attr': this.$data.refdatastore[i].attr, 'val': this.$data.refdatastore[i].value });\n          }\n        }\n      }\n      var info = {\n        eventid: eventid,\n        edtype: \"0\",\n        projectid: '',\n        rclsid: '',\n        robjid: '',\n        userlogin: '',\n        clsid: this.$data.param.clsid,\n        objid: \"\",\n        attr: req };\n\n      var dataInfo = {\n        edtype: info.edtype, eventid: info.eventid, projectid: info.projectid, rclsid: info.rclsid,\n        robjid: info.robjid, userlogin: info.userlogin, clsid: info.clsid, objid: info.objid,\n        attr: JSON.stringify(info.attr), extinfo: JSON.stringify(enviroment), global_attr: JSON.stringify(this.$data.global_attr) };\n\n      __f__(\"log\", dataInfo, \" at pages/modal/classAttr.vue:1290\");\n      this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n        __f__(\"log\", success, \" at pages/modal/classAttr.vue:1292\");\n        if (success.code == '00000') {\n          var data = JSON.parse(success.data);\n          var result = data.result;\n          for (var i = 0; i < result.length; i++) {\n            // self.class_attr_ele.find('.attr_field[data-field=\"' + result[i].attr + '\"]').val(result[i].value).data('val', result[i].value);\n            var length = 0;\n            if (!_this5.$data.refdatastore.filter(function (s) {\n              return result[i].attr == s.attr;\n            }).length) {\n              length = 1;\n              _this5.$data.refdatastore.push(result[i]);\n            }\n            if (length == 0) {\n              for (var j = 0; j < _this5.$data.refdatastore.length; j++) {\n                if (_this5.$data.refdatastore[j].attr == result[i].attr) {\n                  _this5.$data.refdatastore[j].value = result[i].value;\n                }\n              }\n            }\n          }\n\n          _this5.add();\n        } else {\n          uni.showModal({ title: \"閿欒4\", content: success.msg, showCancel: false, confirmText: \"鍙栨秷\" });\n        }\n      }).catch(function (ex) {\n        // console.log(ex);\n        uni.showModal({ title: \"閿欒4.1\", content: ex.errMsg, showCancel: false, confirmText: \"鍙栨秷\" });\n      });\n    },\n    DataObjRunCustomEvent_Return: function DataObjRunCustomEvent_Return(eventid, data_attr, button_callback, index, iindex) {var _this6 = this;\n      var enviroment = {\n        'function': '3000', // 鍔熻兘鐐圭紪鍙穃n        cls_id: this.$data.param.clsid, // 鍔熻兘鐐逛富鏁版嵁绫绘爣璇哱n        'button': 'top', // top/bottom\n        button_name: '鏂板',\n        master: {\n          cls_id: this.$data.param.clsid // button=bottom鏃�master鐨刢ls_id\n          //obj_id: ''  // button=bottom鏃�master鐨刼bj_id\n        } };\n\n      var req = [];\n      var attrlist = this.$data.classAttrList;\n      for (var i = 0; i < attrlist.length; i++) {\n        var attr = attrlist[i].Attr;\n        for (var j = 0; j < attr.length; j++) {\n          var ar = attr[j];\n          if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)')\n          if (ar.Value == '璇�) ar.Value = '';\n          if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰')\n          req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n          if (ar.Type == '甯冨皵鍊�)\n          req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n          req.push({ attr: ar.Name, val: ar.Value });\n        }\n      }\n      if (this.$data.refdatastore.length > 0) {\n        for (var i = 0; i < this.$data.refdatastore.length; i++) {\n          if (!req.filter(function (s) {\n            return this.$data.refdatastore[i].attr == s.name;\n          }).length) {\n            length = 1;\n            req.push({ 'attr': this.$data.refdatastore[i].attr, 'val': this.$data.refdatastore[i].value });\n          }\n        }\n      }\n      var extinfo = enviroment;\n      extinfo.edit_dlg = {\n        type: 'small', //灏忕獥鍙n        class_id: this.$data.param.clsid //褰撳墠鏁版嵁绫籭d\n      };\n      if (data_attr) {\n        extinfo.edit_dlg.form_control = { //鎵�睘鐨勮〃鍗曟帶浠禱n          name: data_attr.Name, //瀛楁灞炴�\n          text: data_attr.DispName, //鏄剧ず鏂囨湰\n          group_name: data_attr.GroupName, //灞炴�缁刓n          type: data_attr.Type, //瀛楁绫诲瀷\n          readonly: data_attr.ReadOnly, //鏄惁鍙\n          button_img: data_attr.button_img, //寮曠敤鎸夐挳鐨勫浘鏍嘰n          button_tooltip: data_attr.button_tooltip //寮曠敤鎸夐挳鐨則ooltip\n        };\n      }\n      var dataInfo = {\n        edtype: \"0\", eventid: eventid, projectid: '', rclsid: '', robjid: '', userlogin: '',\n        clsid: this.$data.param.clsid, objid: '', attr: JSON.stringify(req),\n        extinfo: JSON.stringify(extinfo), global_attr: JSON.stringify(this.$data.global_attr) };\n\n      __f__(\"log\", dataInfo, \" at pages/modal/classAttr.vue:1381\");\n      this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n        __f__(\"log\", success, \" at pages/modal/classAttr.vue:1383\");\n        if (success.code == '00000') {\n          var data = JSON.parse(success.data);\n          if (data != \"\") {\n\n            var actions = data.action;\n            __f__(\"log\", actions, \" at pages/modal/classAttr.vue:1389\");\n            if (actions) {\n              for (var i = 0; i < actions.length; i++) {\n                var action = actions[i];\n                var val = action.value;\n                var enviroment = JSON.stringify(enviroment);\n\n                if (action.action_type == 'open_panel') {\n                  var d = dialog({\n                    title: '<i class=\"ace-icon fa fa-info-circle\"></i> ' + '鎻愮ず',\n                    content: action.action_type + '姝ction灏氭湭澶勭悊锛� });\n\n                  d.show();\n                } else\n                if (action.action_type == 'open_select_userdlg') {\n                  var style = val.style;\n                  // style == 'user' ? '閫夋嫨浜哄憳' : style == 'department' ? '閫夋嫨閮ㄩ棬' : style == 'role' ? '閫夋嫨瑙掕壊' : ''\n                  var $this = _this6;\n                  var param = {\n                    index: index,\n                    iindex: iindex,\n                    button_callback: button_callback,\n                    req: req,\n                    data_attr: data_attr };\n\n                  uni.navigateTo({\n                    url: '../selpsn/index?mulit=false&param=' + JSON.stringify(param),\n                    events: {\n                      AddPer: function AddPer(data, param) {\n                        // console.log(param);\n                        __f__(\"log\", data, \" at pages/modal/classAttr.vue:1419\");\n                        var callback_eventid = param.button_callback.trim();\n                        var info = {\n                          eventid: callback_eventid,\n                          edtype: \"0\",\n                          projectid: '',\n                          rclsid: '',\n                          robjid: '',\n                          userlogin: '',\n                          clsid: $this.$data.param.clsid,\n                          objid: \"\",\n                          attr: param.req,\n                          inputparameter: data };\n\n                        $this.DataObjRunCustomEvent(info, param.data_attr);\n                      } } });\n\n\n                } else\n                if (action.action_type == 'open_data_query_dlg') {\n\n                } else\n                if (action.action_type == 'open_common_dlg') {\n                  var value = action.value;\n                  var d = dialog({\n                    title: '<i class=\"ace-icon fa fa-info-circle\"></i> ' + '鎻愮ず',\n                    content: action.action_type + '姝ction灏氭湭澶勭悊锛� });\n\n                  d.show();\n                } else\n                if (action.action_type == 'open_project_query_dlg') {\n                  //console.log(action.value.select_range);\n                  //console.log(action.value.mulit_select);\n                  var priRel = '-1';\n                  if (action.value.select_range == '鍏ㄩ儴鐩稿叧')\n                  priRel = '0';else\n                  if (action.value.select_range == '鎴戣礋璐g殑椤圭洰')\n                  priRel = '1';else\n                  if (action.value.select_range == '鎴戝垱寤虹殑')\n                  priRel = '2';else\n                  if (action.value.select_range == '鎴戝弬涓庣殑' || action.value.select_range == '鎴戝弬鍔犵殑')\n                  priRel = '3';else\n                  if (action.value.select_range == '鎴戝叧娉ㄧ殑')\n                  priRel = '4';else\n                  if (action.value.select_range == '鎴戜笅灞炵殑椤圭洰')\n                  priRel = '5';\n\n                  var $this = _this6;\n                  var param_ = {\n                    index: index,\n                    iindex: iindex,\n                    button_callback: button_callback,\n                    req: req };\n\n                  uni.navigateTo({\n                    url: '../selPrj/index?relation=' + priRel + '&param=' + JSON.stringify(param_),\n                    events: {\n                      AddPer: function AddPer(data, param) {\n                        $this.$data.classAttrList[param.index].Attr[param.iindex].Value = data[0].Name;\n                        $this.$data.classAttrList[param.index].Attr[param.iindex].ValID = data[0].ID + ';' + data[0].Name;\n                        var callback_eventid = param.button_callback.trim();\n                        if (callback_eventid) {\n                          var info = {\n                            eventid: callback_eventid,\n                            edtype: \"2\",\n                            projectid: data[0].ID,\n                            rclsid: \"\",\n                            robjid: \"\",\n                            userlogin: \"\",\n                            clsid: $this.$data.param.clsid,\n                            objid: \"\",\n                            attr: param.req };\n\n\n                          $this.DataObjRunCustomEvent(info);\n                        }\n                      } } });\n\n\n                } else {\n                  var d = dialog({\n                    title: '<i class=\"ace-icon fa fa-info-circle\"></i> ' + '鎻愮ず',\n                    content: action.action_type + '姝ction灏氭湭澶勭悊锛� });\n\n                  d.show();\n                }\n              }\n            }\n          } else {\n            uni.showModal({ title: \"鎻愮ず5.2\", content: '璋冪敤 before_click_button 鑴氭湰杩斿洖绌猴紝event_id' + eventid, showCancel: false, confirmText: \"鍙栨秷\" });\n          }\n        } else {\n          uni.showModal({ title: \"閿欒5\", content: success.msg, showCancel: false, confirmText: \"鍙栨秷\" });\n        }\n      }).catch(function (ex) {\n        // console.log(ex);\n        uni.showModal({ title: \"鎻愮ず5.1\", content: ex.errMsg, showCancel: false, confirmText: \"鍙栨秷\" });\n      });\n    } } };exports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 13)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbW9kYWwvY2xhc3NBdHRyLnZ1ZSJdLCJuYW1lcyI6WyJjb21wb25lbnRzIiwicGlja2VyQWRkcmVzcyIsImRhdGEiLCJ0aXRsZSIsInBhcmFtIiwiY2xhc3NBdHRyTGlzdCIsImNsYXNzR3JpZFN0eWxlIiwiZWRpdF9pbml0YWxfZXZlbnQiLCJlZGl0X29rX2V2ZW50IiwiZWRpdF9zZWxlY3RfY29tcG9zZV9ldmVudCIsImVkaXRfY29tcG9zZV9jbHNfaWQiLCJnbG9iYWxfYXR0ciIsInJlZmRhdGFzdG9yZSIsImlucHV0VmFsTGlzdCIsIk5hbWUiLCJvbkxvYWQiLCJvcHRpb25zIiwidW5pIiwic2V0TmF2aWdhdGlvbkJhclRpdGxlIiwidGl0bGVuYW1lIiwiSlNPTiIsInBhcnNlIiwiJGRhdGEiLCJBZGRfQnRuTmFtZSIsIkVkaXREbGdNb2RlIiwic2hvd01vZGFsIiwiY29udGVudCIsInNob3dDYW5jZWwiLCJjb25maXJtVGV4dCIsIkVkaXRfZGxnIiwiZWRpdF9kbGciLCJNb2RlbCIsImRhdGFJbmZvIiwiY2xhc3NfaWQiLCJjbHNpZCIsIiR0aGlzIiwiJHN0b3JlIiwic3RhdGUiLCJ0aGlzYXJlYUZ1bmNJRCIsImdldHRlcnMiLCJnZXRjbGFzc0F0dHJMaXN0IiwiY2xhc3NHcmlkU3R5bGVJbmZvIiwiZGlzcGF0Y2giLCJ0aGVuIiwic3VjY2VzcyIsImNvZGUiLCJtc2ciLCJjYXRjaCIsImV4IiwiZXJyTXNnIiwibWV0aG9kcyIsImdyaWRzdHlsZUluZm8iLCJuYW1lIiwidHlwZSIsInRoaXNFZGl0TmFtZSIsImdldGNsYXNzR3JpZFN0eWxlSW5mbyIsImNsYXNzX2F0dHJfaW5pdCIsIlN0eWxlRGVmIiwib250YXAiLCJlIiwiZ2V0QXBwIiwib25TY2FuIiwicmVzdWx0IiwidGFyZ2V0IiwiZGF0YXNldCIsIkF0dHIiLCJWYWx1ZSIsImRlY29kZWRhdGEiLCJvbmFycm93IiwiaW5kZXgiLCJvcGVuIiwiT3BlbiIsIm9uZGF0ZVRpbWUiLCJ2YWx1ZSIsIm9uY2hhbmdlIiwiZGljdGl0ZW0iLCJkYXRhX2F0dHIiLCJldmVudGlkIiwiYWN0aW9uIiwicmVxIiwiYXR0cmxpc3QiLCJpIiwibGVuZ3RoIiwiYXR0ciIsImoiLCJhciIsIlR5cGUiLCJwdXNoIiwidmFsIiwiVmFsSUQiLCJpbmZvIiwiZWR0eXBlIiwicHJvamVjdGlkIiwicmNsc2lkIiwicm9iamlkIiwidXNlcmxvZ2luIiwib2JqaWQiLCJEYXRhT2JqUnVuQ3VzdG9tRXZlbnQiLCJvbmNoYW5nZTIiLCJpdGVtIiwiZGVsdmFsdWUiLCJpaW5kZXgiLCJkaW5kZXgiLCJkIiwidiIsIml0ZW12YWx1ZSIsIm9uZXZlbnQiLCJvbmNoZWNrIiwiaXNjaGVja2VkIiwiaXNjaGVjayIsImlucHV0VmFsTGlzdElzRGVsIiwic3BsaWNlIiwiYWRkcmVzc2NoYW5nZSIsImpvaW4iLCJjbGFzc0F0dHJfZXh0QnV0dG9uIiwiYmVmb3JlX2NsaWNrX2J1dHRvbiIsImJ1dHRvbl9jYWxsYmFjayIsIkRhdGFPYmpSdW5DdXN0b21FdmVudF9SZXR1cm4iLCJjbGFzc0F0dHJfQWRkUGVyIiwibmF2aWdhdGVUbyIsInVybCIsInN0cmluZ2lmeSIsImV2ZW50cyIsIkFkZFBlciIsIkxvZ2luIiwidHJpbSIsImNsYXNzQXR0cl9BZGRSZWYiLCJjbGFzc0F0dHJfQWRkUHJqIiwiSUQiLCJzYXZhIiwiT0tEYXRhT2JqUnVuQ3VzdG9tRXZlbnQiLCJhZGQiLCJzaG93TG9hZGluZyIsInNlbGVjdCIsInZhbFN0ciIsIk5vdEVtcHR5Iiwibm90ZW1wdHkiLCJoaWRlTG9hZGluZyIsIkRpc3BOYW1lIiwiZW52aXJvbWVudCIsImNsc19pZCIsImJ1dHRvbl9uYW1lIiwibWFzdGVyIiwiZGF0YV9vYmpfaWQiLCJtYXN0ZXJjbHNpZCIsInVwZmlsZSIsInBvc3RfZGF0YSIsImNvbXBvc2UiLCJleHRpbmZvIiwibm90X3RyaWdnZXJfc3lzX2V2ZW50IiwiQWN0aW9uIiwicmV0IiwicmVzdWx0X3R5cGUiLCJzaG93VG9hc3QiLCJpY29uIiwiZHVyYXRpb24iLCJyZWRpcmVjdFRvIiwic2hvd19zdHlsZSIsIm5ld2F0dHJsaXN0IiwiYXR0cmdyb3VwX25hbWUiLCJhdHRycyIsInMiLCJjbHNhdHRyIiwibCIsImNhIiwiZWRpdCIsImV4dF9idXR0b24iLCJidXR0b25faW1nIiwiYnV0dG9uX3Rvb2x0aXAiLCJoaWRkZW4iLCJ1bmRlZmluZWQiLCJkaWN0aXRlbWxpc3QiLCJsYWJlbCIsIkNOX1NfTkFNRSIsIm5vd0RhdGUiLCJEYXRlIiwiZGF0ZSIsInllYXIiLCJnZXRGdWxsWWVhciIsIm1vbnRoIiwiZ2V0TW9udGgiLCJkYXkiLCJnZXREYXRlIiwicmVsQ2xzTGlzdCIsImF0dHJfcmVzY2xzIiwiUmVsQ2xzIiwic3BsaXQiLCJpaSIsInJlc2NscyIsImlkIiwiUmVsQ2xzTGlzdCIsIkJrQ29sb3IiLCJIYXNBY2UiLCJJbWdGb250U3R5bGUiLCJPcmRlciIsImNvbnRyb2xfc3R5bGUiLCJ0aXRsZV9wX3dkaXRoIiwiZXZlbnRsaXN0IiwiZXZlbnQiLCJldmVudF9pZCIsInNjcmlwX2lkIiwiY29tcG9zZV9jbHNfaWQiLCJpbmlfRGF0YU9ialJ1bkN1c3RvbUV2ZW50IiwiRWRpdFN0eWxlIiwiVmlld1N0eWxlIiwiTm90VHJpZ2dlclN5c0V2ZW50IiwiaW5wdXRwYXJhbWV0ZXIiLCJhY3Rpb25saXN0IiwiYWN0aW9uX3R5cGUiLCJhIiwiZGljdEl0ZW1MaXN0IiwiY2hvaWNlX2xpc3QiLCJmaWx0ZXIiLCJmb3JtX2NvbnRyb2wiLCJ0ZXh0IiwiZ3JvdXBfbmFtZSIsIkdyb3VwTmFtZSIsInJlYWRvbmx5IiwiUmVhZE9ubHkiLCJyZXBsYWNlIiwiYyIsImFjdGlvbnMiLCJkaWFsb2ciLCJzaG93Iiwic3R5bGUiLCJjYWxsYmFja19ldmVudGlkIiwicHJpUmVsIiwic2VsZWN0X3JhbmdlIiwicGFyYW1fIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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RyxLQTdqQ0ksRUFoRUssRSIsImZpbGUiOiI0OS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5cdGltcG9ydCBwaWNrZXJBZGRyZXNzIGZyb20gJy4uLy4uL2pzL3BpY2tlckFkZHJlc3MvcGlja2VyQWRkcmVzcy52dWUnXG5cdGV4cG9ydCBkZWZhdWx0IHtcblx0XHRjb21wb25lbnRzOiB7XG4gICAgICAgICAgICBwaWNrZXJBZGRyZXNzXG4gICAgICAgIH0sXG5cdFx0ZGF0YSgpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHRpdGxlOiAn5paw5aKeJyxcblx0XHRcdFx0cGFyYW06e30sXG5cdFx0XHRcdGNsYXNzQXR0ckxpc3Q6W10sXG5cdFx0XHRcdGNsYXNzR3JpZFN0eWxlOltdLFxuXHRcdFx0XHRlZGl0X2luaXRhbF9ldmVudDpcIlwiLCAgLy/lvLnnqpfliJ3lp4vljJbkuovku7ZJRFxuXHRcdFx0XHRlZGl0X29rX2V2ZW50OlwiXCIsICAgICAgLy/lvLnnqpfngrnlh7tPSyDop6blj5Hkuovku7ZJRFxuXHRcdFx0XHRlZGl0X3NlbGVjdF9jb21wb3NlX2V2ZW50OlwiXCIsICAvL+mAieaLqee7hOaIkOWvueixoeaXtuiwg+eUqFxuXHRcdFx0XHRlZGl0X2NvbXBvc2VfY2xzX2lkOlwiXCIsXG5cdFx0XHRcdGdsb2JhbF9hdHRyOltdLFxuXHRcdFx0XHRyZWZkYXRhc3RvcmU6IFtdLFx0ICAgLy/lvJXnlKjmlbDmja7lrZjlgqjljLovLyB7YXR0cjonR19QUkpfJyArIGJpbmRhdHRyICsgJ19JRCcsIHZhbHVlOmluZm8uaWR9XG5cdFx0XHRcdGlucHV0VmFsTGlzdDpbe05hbWU6XCJ0ZXN0XCJ9LHtOYW1lOlwidGVzdDJcIn0se05hbWU6XCJ0ZXN0M1wifSx7TmFtZTpcInRlc3Q0XCJ9LHtOYW1lOlwidGVzdDVcIn0se05hbWU6XCJ0ZXN0NlwifSx7TmFtZTpcInRlc3Q3XCJ9XSxcblx0XHRcdH1cblx0XHR9LFxuXHRcdG9uTG9hZChvcHRpb25zKSB7XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhvcHRpb25zKTtcblx0XHRcdHVuaS5zZXROYXZpZ2F0aW9uQmFyVGl0bGUoeyB0aXRsZTogb3B0aW9ucy50aXRsZW5hbWV9KTsgLy/orr7nva7pobbpg6jmoIfpopggXG5cdFx0XHR2YXIgcGFyYW0gPSBKU09OLnBhcnNlKG9wdGlvbnMucGFyYW0pO1xuXHRcdFx0dGhpcy4kZGF0YS50aXRsZSA9IHBhcmFtLkFkZF9CdG5OYW1lP3BhcmFtLkFkZF9CdG5OYW1lOm9wdGlvbnMudGl0bGVuYW1lOyAvL+iuvue9ruaMiemSruaWh+Wtl1xuXHRcdFx0Ly8gY29uc29sZS5sb2cocGFyYW0pO1xuXHRcdFx0aWYoIXBhcmFtLkVkaXREbGdNb2RlKXtcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50Olwi6K+l5Yqf6IO954K55pyq6YWN572u57yW6L6R56qX5Y+j77yM6K+36YeN5paw6YWN572u77yBXCIsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGlmKCFwYXJhbS5FZGl0X2RsZy5OYW1lKXtcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50Olwi6K+l5Yqf6IO954K55pyq6YWN572u56qX5Y+j5qC35byP77yM6K+36YeN5paw6YWN572u77yBXCIsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdHRoaXMuJGRhdGEucGFyYW0gPSBwYXJhbTtcblx0XHRcdHZhciBlZGl0X2RsZyA9IHtcblx0XHRcdCAgICBNb2RlbDogcGFyYW0uRWRpdERsZ01vZGUsXG5cdFx0XHQgICAgTmFtZTogcGFyYW0uRWRpdF9kbGcuTmFtZVxuXHRcdFx0fVxuXHRcdFx0dmFyIGRhdGFJbmZvID0ge1xuXHRcdFx0XHRjbGFzc19pZDogcGFyYW0uY2xzaWRcblx0XHRcdH07XG5cdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdFx0JHRoaXMuJHN0b3JlLnN0YXRlLnRoaXNhcmVhRnVuY0lEID0gcGFyYW0uY2xzaWQ7XG5cdFx0XHQvLyBjb25zb2xlLmxvZygkdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRjbGFzc0F0dHJMaXN0KTtcblx0XHRcdCAvL+iOt+WPllxuXHRcdFx0aWYoJHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0Y2xhc3NBdHRyTGlzdCl7XG5cdFx0XHQgXHQkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0ID0gJHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0Y2xhc3NBdHRyTGlzdC5kYXRhO1xuXHRcdFx0XHQkdGhpcy5jbGFzc0dyaWRTdHlsZUluZm8oKTtcblx0XHRcdH1lbHNlXG5cdFx0XHRcdCR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnY2xhc3NBdHRyTGlzdCcsZGF0YUluZm8pLnRoZW4oc3VjY2Vzcz0+e1xuXHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xuXHRcdFx0XHRcdGlmIChzdWNjZXNzLmNvZGU9PScwMDAwMCcpIHtcblx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QgPSBzdWNjZXNzLmRhdGE7XG5cdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdCR0aGlzLmNsYXNzR3JpZFN0eWxlSW5mbygpO1xuXHRcdFx0XHRcdH1lbHNle1xuXHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68xXCIsY29udGVudDpzdWNjZXNzLm1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLmNhdGNoKGV4PT57XG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMS4xXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XG5cdFx0fSxcblx0XHRtZXRob2RzOiB7XG5cdFx0XHRhc3luYyBjbGFzc0dyaWRTdHlsZUluZm8oKXtcblx0XHRcdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHRcdFx0dmFyIGdyaWRzdHlsZUluZm8gPSB7XG5cdFx0XHRcdFx0Y2xhc3NfaWQ6ICR0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLFxuXHRcdFx0XHRcdG5hbWU6ICR0aGlzLiRkYXRhLnBhcmFtLkVkaXRfZGxnLk5hbWUsXG5cdFx0XHRcdFx0dHlwZTogJzInXG5cdFx0XHRcdH07XG5cdFx0XHRcdCR0aGlzLiRzdG9yZS5zdGF0ZS50aGlzRWRpdE5hbWUgPSAkdGhpcy4kZGF0YS5wYXJhbS5FZGl0X2RsZy5OYW1lXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKCR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldGNsYXNzR3JpZFN0eWxlSW5mbyk7XG5cdFx0XHRcdCAvL+iOt+WPllxuXHRcdFx0XHRpZigkdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRjbGFzc0dyaWRTdHlsZUluZm8pe1xuXHRcdFx0XHQgXHQkdGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZSA9ICR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldGNsYXNzR3JpZFN0eWxlSW5mby5kYXRhO1xuXHRcdFx0XHRcdCR0aGlzLmNsYXNzX2F0dHJfaW5pdCgpO1xuXHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHQvL2NvbnNvbGUubG9nKGdyaWRzdHlsZUluZm8pO1xuXHRcdFx0XHRcdCR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnY2xhc3NHcmlkU3R5bGVJbmZvJyxncmlkc3R5bGVJbmZvKS50aGVuKHN1Y2Nlc3M9Pntcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xuXHRcdFx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZT09JzAwMDAwJykge1xuXHRcdFx0XHRcdFx0XHRzdWNjZXNzLmRhdGEuU3R5bGVEZWYgPSBKU09OLnBhcnNlKHN1Y2Nlc3MuZGF0YS5TdHlsZURlZik7XG5cdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlID0gc3VjY2Vzcy5kYXRhO1xuXHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0JHRoaXMuY2xhc3NfYXR0cl9pbml0KCk7XG5cdFx0XHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68xLjJcIixjb250ZW50OnN1Y2Nlc3MubXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pLmNhdGNoKGV4PT57XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhleCk7XG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzEuM1wiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0b250YXAoZSl7IC8v5omr56CB5Yqf6IO9XG5cdFx0XHRcdC8vY29uc29sZS5sb2coZS50YXJnZXQpXG5cdFx0XHRcdGdldEFwcCgpLm9uU2NhbigocmVzdWx0KT0+e1xuXHRcdFx0XHRcdC8vY29uc29sZS5sb2cocmVzdWx0LmRlY29kZWRhdGEpO1xuXHRcdFx0XHRcdHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZT1yZXN1bHQuZGVjb2RlZGF0YTtcblx0XHRcdFx0fSlcblx0XHRcdH0sXG5cdFx0XHRvbmFycm93KGluZGV4LG9wZW4pe1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhpbmRleCsnLS0nK29wZW4pO1xuXHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLk9wZW49b3Blbj09dHJ1ZT9mYWxzZTp0cnVlO1xuXHRcdFx0fSxcblx0XHRcdG9uZGF0ZVRpbWUoZSkge1xuXHRcdFx0XHQvL2NvbnNvbGUubG9nKGUudGFyZ2V0KVxuXHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWU9ZS50YXJnZXQudmFsdWU7XG5cdFx0XHR9LFxuXHRcdFx0b25jaGFuZ2UoZSkge1xuXHRcdFx0XHRjb25zb2xlLmxvZyhlLnRhcmdldCk7XG5cdFx0XHRcdHZhciB2YWx1ZT10aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uZGljdGl0ZW1bZS50YXJnZXQudmFsdWVdO1xuXHRcdFx0XHR2YXIgZGF0YV9hdHRyID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dO1xuXHRcdFx0XHRjb25zb2xlLmxvZyhkYXRhX2F0dHIpO1xuXHRcdFx0XHRpZiAodmFsdWUuTmFtZSAhPSBkYXRhX2F0dHIuVmFsdWUpIHtcblx0XHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWU9dmFsdWUuTmFtZTtcblx0XHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWUpO1xuXHRcdFx0XHRcdHZhciBldmVudGlkID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLmFjdGlvbjtcblx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHQgICAgICAgIC8vIHNlbGYuZXZlbnRfbm9fc3ViID0gMTtcblx0XHRcdFx0ICAgICAgICB2YXIgcmVxPVtdO1xuXHRcdFx0XHQgICAgICAgIHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcblx0XHRcdFx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdCAgICAgICAgXHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdCAgICAgICAgXHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0ICAgICAgICBcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0ICAgICAgICBcdFx0aWYoYXIuVHlwZT09J+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0ICAgICAgICBcdFx0XHRpZihhci5WYWx1ZT09J+ivtycpIGFyLlZhbHVlPScnO1xuXHRcdFx0XHQgICAgICAgIFx0XHRpZihhci5UeXBlPT0n5byV55So5Lq65ZGYJyB8fCBhci5UeXBlPT0n5byV55So6aG555uuJylcblx0XHRcdFx0ICAgICAgICBcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsSUQgP2FyLlZhbElEIDonJyB9KTtcblx0XHRcdFx0ICAgICAgICBcdFx0ZWxzZSBpZihhci5UeXBlPT0n5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWx1ZT8nMSc6JzAnfSk7XG5cdFx0XHRcdCAgICAgICAgXHRcdGVsc2Vcblx0XHRcdFx0ICAgICAgICBcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsdWUgP2FyLlZhbHVlIDonJ30pO1xuXHRcdFx0XHQgICAgICAgIFx0fVxuXHRcdFx0XHQgICAgICAgIH1cblx0XHRcdFx0ICAgICAgICB2YXIgaW5mbyA9IHtcblx0XHRcdFx0ICAgICAgICAgICAgZXZlbnRpZDogZXZlbnRpZCxcblx0XHRcdFx0ICAgICAgICAgICAgZWR0eXBlOiBcIjBcIixcblx0XHRcdFx0ICAgICAgICAgICAgcHJvamVjdGlkOiAnJyxcblx0XHRcdFx0ICAgICAgICAgICAgcmNsc2lkOiAnJyxcblx0XHRcdFx0ICAgICAgICAgICAgcm9iamlkOiAnJyxcblx0XHRcdFx0ICAgICAgICAgICAgdXNlcmxvZ2luOiAnJyxcblx0XHRcdFx0ICAgICAgICAgICAgY2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsXG5cdFx0XHRcdCAgICAgICAgICAgIG9iamlkOiBcIlwiLFxuXHRcdFx0XHQgICAgICAgICAgICBhdHRyOiByZXEsXG5cdFx0XHRcdCAgICAgICAgfVxuXHRcdFx0XHQgICAgICAgIHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xuXHRcdFx0XHQgICAgfVxuXHRcdFx0XHR9XG5cdFx0XHRcdFxuXHRcdFx0fSxcblx0XHRcdG9uY2hhbmdlMihpdGVtLHZhbHVlLGRlbHZhbHVlKSB7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGl0ZW0pO1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyh2YWx1ZSk7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGRlbHZhbHVlKTtcblx0XHRcdFx0aWYoaXRlbS5sZW5ndGg9PTApeyAvL+S4uuepuuaXtu+8jOa4heepuuWxnuaAp3ZhbHVlXG5cdFx0XHRcdFx0dmFyIGluZGV4ICxpaW5kZXgsZGluZGV4PTA7XG5cdFx0XHRcdFx0Zm9yKHZhciBpIGluIHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdCl7XG5cdFx0XHRcdFx0XHRmb3IodmFyIGogaW4gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2ldLkF0dHIpe1xuXHRcdFx0XHRcdFx0XHRmb3IodmFyIGQgaW4gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2ldLkF0dHJbal0uZGljdGl0ZW0pe1xuXHRcdFx0XHRcdFx0XHRcdGlmKGRlbHZhbHVlWzBdLk5hbWUgPT0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2ldLkF0dHJbal0uZGljdGl0ZW1bZF0uTmFtZSl7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaV0uQXR0cltqXS5WYWx1ZT1cIlwiO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRcdFxuXHRcdFx0XHRmb3IodmFyIHYgaW4gaXRlbSl7XG5cdFx0XHRcdFx0dmFyIGluZGV4ICxpaW5kZXgsZGluZGV4PTA7XG5cdFx0XHRcdFx0Zm9yKHZhciBpIGluIHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdCl7XG5cdFx0XHRcdFx0XHRmb3IodmFyIGogaW4gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2ldLkF0dHIpe1xuXHRcdFx0XHRcdFx0XHRmb3IodmFyIGQgaW4gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2ldLkF0dHJbal0uZGljdGl0ZW0pe1xuXHRcdFx0XHRcdFx0XHRcdGlmKGl0ZW1bdl0uTmFtZSA9PSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaV0uQXR0cltqXS5kaWN0aXRlbVtkXS5OYW1lKXtcblx0XHRcdFx0XHRcdFx0XHRcdGluZGV4PWk7aWluZGV4PWo7ZGluZGV4PWQ7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHZhciBpdGVtdmFsdWUgPSBpdGVtW3ZdO1xuXHRcdFx0XHRcdHZhciBkYXRhX2F0dHIgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XTtcblx0XHRcdFx0XHRcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhkYXRhX2F0dHIpO1xuXHRcdFx0XHRcdGlmIChpdGVtdmFsdWUuTmFtZSAhPSBkYXRhX2F0dHIuVmFsdWUpIHtcblx0XHRcdFx0XHRcdHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpbmRleF0uQXR0cltpaW5kZXhdLlZhbHVlPXZhbHVlO1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2codGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2luZGV4XS5BdHRyW2lpbmRleF0uVmFsdWUpO1xuXHRcdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XS5hY3Rpb247XG5cdFx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHRcdCAgICAgICAgLy8gc2VsZi5ldmVudF9ub19zdWIgPSAxO1xuXHRcdFx0XHRcdCAgICAgICAgdmFyIHJlcT1bXTtcblx0XHRcdFx0XHQgICAgICAgIHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcblx0XHRcdFx0XHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHQgICAgICAgIFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHRcdCAgICAgICAgXHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHQgICAgICAgIFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0XHRcdCAgICAgICAgXHRcdGlmKGFyLlR5cGU9PSflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdFx0ICAgICAgICBcdFx0XHRpZihhci5WYWx1ZT09J+ivtycpIGFyLlZhbHVlPScnO1xuXHRcdFx0XHRcdCAgICAgICAgXHRcdGlmKGFyLlR5cGU9PSflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGU9PSflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdCAgICAgICAgXHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbElEID9hci5WYWxJRCA6JycgfSk7XG5cdFx0XHRcdFx0ICAgICAgICBcdFx0ZWxzZSBpZihhci5UeXBlPT0n5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlPycxJzonMCd9KTtcblx0XHRcdFx0XHQgICAgICAgIFx0XHRlbHNlIGlmKGFyLlR5cGU9PSflrZflhbgnIHx8IGFyLlR5cGU9PSflrZflhbgt5a2X56ym5LiyJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGl0ZW12YWx1ZS5OYW1lfSk7XG5cdFx0XHRcdFx0ICAgICAgICBcdFx0ZWxzZVxuXHRcdFx0XHRcdCAgICAgICAgXHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlID9hci5WYWx1ZSA6Jyd9KTtcblx0XHRcdFx0XHQgICAgICAgIFx0fVxuXHRcdFx0XHRcdCAgICAgICAgfVxuXHRcdFx0XHRcdCAgICAgICAgdmFyIGluZm8gPSB7XG5cdFx0XHRcdFx0ICAgICAgICAgICAgZXZlbnRpZDogZXZlbnRpZCxcblx0XHRcdFx0XHQgICAgICAgICAgICBlZHR5cGU6IFwiMFwiLFxuXHRcdFx0XHRcdCAgICAgICAgICAgIHByb2plY3RpZDogJycsXG5cdFx0XHRcdFx0ICAgICAgICAgICAgcmNsc2lkOiAnJyxcblx0XHRcdFx0XHQgICAgICAgICAgICByb2JqaWQ6ICcnLFxuXHRcdFx0XHRcdCAgICAgICAgICAgIHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdFx0ICAgICAgICAgICAgY2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsXG5cdFx0XHRcdFx0ICAgICAgICAgICAgb2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0ICAgICAgICAgICAgYXR0cjogcmVxLFxuXHRcdFx0XHRcdCAgICAgICAgfVxuXHRcdFx0XHRcdCAgICAgICAgdGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XG5cdFx0XHRcdFx0ICAgIH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0XG5cdFx0XHRcdFxuXHRcdFx0fSxcblx0XHRcdG9uZXZlbnQoZSl7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGUudGFyZ2V0KTtcblx0XHRcdFx0dmFyIGRhdGFfYXR0ciA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXTtcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coZGF0YV9hdHRyKTtcblx0XHRcdFx0aWYgKGUudGFyZ2V0LnZhbHVlICE9IGRhdGFfYXR0ci5WYWx1ZSkge1xuXHRcdFx0XHRcdHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZT1lLnRhcmdldC52YWx1ZTtcblx0XHRcdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5hY3Rpb247XG5cdFx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcblx0XHRcdFx0ICAgICAgICAvLyBzZWxmLmV2ZW50X25vX3N1YiA9IDE7XG5cdFx0XHRcdCAgICAgICAgdmFyIHJlcT1bXTtcblx0XHRcdFx0ICAgICAgICB2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Q7XG5cdFx0XHRcdCAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHQgICAgICAgIFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHQgICAgICAgIFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdCAgICAgICAgXHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdCAgICAgICAgXHRcdGlmKGFyLlR5cGU9PSflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdCAgICAgICAgXHRcdFx0aWYoYXIuVmFsdWU9PSfor7cnKSBhci5WYWx1ZT0nJztcblx0XHRcdFx0ICAgICAgICBcdFx0aWYoYXIuVHlwZT09J+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZT09J+W8leeUqOmhueebricpXG5cdFx0XHRcdCAgICAgICAgXHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbElEID9hci5WYWxJRCA6JycgfSk7XG5cdFx0XHRcdCAgICAgICAgXHRcdGVsc2UgaWYoYXIuVHlwZT09J+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsdWU/JzEnOicwJ30pO1xuXHRcdFx0XHQgICAgICAgIFx0XHRlbHNlXG5cdFx0XHRcdCAgICAgICAgXHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlID9hci5WYWx1ZSA6Jyd9KTtcblx0XHRcdFx0ICAgICAgICBcdH1cblx0XHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdCAgICAgICAgdmFyIGluZm8gPSB7XG5cdFx0XHRcdCAgICAgICAgICAgIGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdCAgICAgICAgICAgIGVkdHlwZTogXCIwXCIsXG5cdFx0XHRcdCAgICAgICAgICAgIHByb2plY3RpZDogJycsXG5cdFx0XHRcdCAgICAgICAgICAgIHJjbHNpZDogJycsXG5cdFx0XHRcdCAgICAgICAgICAgIHJvYmppZDogJycsXG5cdFx0XHRcdCAgICAgICAgICAgIHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdCAgICAgICAgICAgIGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLFxuXHRcdFx0XHQgICAgICAgICAgICBvYmppZDogXCJcIixcblx0XHRcdFx0ICAgICAgICAgICAgYXR0cjogcmVxLFxuXHRcdFx0XHQgICAgICAgIH1cblx0XHRcdFx0ICAgICAgICB0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvLCBkYXRhX2F0dHIpO1xuXHRcdFx0XHQgICAgfVxuXHRcdFx0XHR9XG5cdFx0XHRcdFxuXHRcdFx0fSxcblx0XHRcdG9uY2hlY2soZSkge1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhlLnRhcmdldCk7XG5cdFx0XHRcdHZhciBpc2NoZWNrZWQgPSBlLnRhcmdldC5kYXRhc2V0LmlzY2hlY2s/ZmFsc2U6dHJ1ZTtcblx0XHRcdFx0dmFyIGRhdGFfYXR0ciA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXTtcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coZGF0YV9hdHRyKTtcblx0XHRcdFx0aWYgKGlzY2hlY2tlZCAhPSBkYXRhX2F0dHIuVmFsdWUpIHtcblx0XHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWU9aXNjaGVja2VkO1xuXHRcdFx0XHRcdHZhciBldmVudGlkID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLmFjdGlvbjtcblx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHQgICAgICAgIC8vIHNlbGYuZXZlbnRfbm9fc3ViID0gMTtcblx0XHRcdFx0ICAgICAgICB2YXIgcmVxPVtdO1xuXHRcdFx0XHQgICAgICAgIHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcblx0XHRcdFx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdCAgICAgICAgXHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdCAgICAgICAgXHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0ICAgICAgICBcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0ICAgICAgICBcdFx0aWYoYXIuVHlwZT09J+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0ICAgICAgICBcdFx0XHRpZihhci5WYWx1ZT09J+ivtycpIGFyLlZhbHVlPScnO1xuXHRcdFx0XHQgICAgICAgIFx0XHRpZihhci5UeXBlPT0n5byV55So5Lq65ZGYJyB8fCBhci5UeXBlPT0n5byV55So6aG555uuJylcblx0XHRcdFx0ICAgICAgICBcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsSUQgP2FyLlZhbElEIDonJyB9KTtcblx0XHRcdFx0ICAgICAgICBcdFx0ZWxzZSBpZihhci5UeXBlPT0n5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWx1ZT8nMSc6JzAnfSk7XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlID9hci5WYWx1ZSA6Jyd9KTtcblx0XHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0ICAgICAgICBcdH1cblx0XHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdCAgICAgICAgdmFyIGluZm8gPSB7XG5cdFx0XHRcdCAgICAgICAgICAgIGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdCAgICAgICAgICAgIGVkdHlwZTogXCIwXCIsXG5cdFx0XHRcdCAgICAgICAgICAgIHByb2plY3RpZDogJycsXG5cdFx0XHRcdCAgICAgICAgICAgIHJjbHNpZDogJycsXG5cdFx0XHRcdCAgICAgICAgICAgIHJvYmppZDogJycsXG5cdFx0XHRcdCAgICAgICAgICAgIHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdCAgICAgICAgICAgIGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLFxuXHRcdFx0XHQgICAgICAgICAgICBvYmppZDogXCJcIixcblx0XHRcdFx0ICAgICAgICAgICAgYXR0cjogcmVxLFxuXHRcdFx0XHQgICAgICAgIH1cblx0XHRcdFx0ICAgICAgICB0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKTtcblx0XHRcdFx0ICAgIH1cblx0XHRcdFx0fVxuXHRcdFx0XHRcblx0XHRcdH0sXG5cdFx0XHRpbnB1dFZhbExpc3RJc0RlbChpbmRleCl7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGluZGV4KTtcbiAgICAgICAgICAgICAgICB0aGlzLiRkYXRhLmlucHV0VmFsTGlzdC5zcGxpY2UoaW5kZXgsIDEpOyAvL+WIoOmZpHRhYlBhZ2Vqc29u55qE5YaF5a65XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKHRoaXMuJGRhdGEuaW5wdXRWYWxMaXN0KTtcblx0XHRcdH0sXG5cdFx0XHRhZGRyZXNzY2hhbmdlKGUpIHtcblx0XHRcdCAgICAvLyBjb25zb2xlLmxvZyhlLnRhcmdldCk7XG5cdFx0XHQgICAgY29uc29sZS5sb2coZS5kYXRhLmpvaW4oJzsnKSlcblx0XHRcdFx0dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlPWUuZGF0YS5qb2luKCc7Jyk7XG5cdFx0XHR9LFxuXHRcdFx0Y2xhc3NBdHRyX2V4dEJ1dHRvbihpbmRleCxpaW5kZXgpe1xuXHRcdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdFx0XHR2YXIgYmVmb3JlX2NsaWNrX2J1dHRvbiA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XS5iZWZvcmVfY2xpY2tfYnV0dG9uO1xuXHRcdFx0XHR2YXIgYnV0dG9uX2NhbGxiYWNrID0gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpbmRleF0uQXR0cltpaW5kZXhdLmJ1dHRvbl9jYWxsYmFjaztcblx0XHRcdFx0aWYoIWJlZm9yZV9jbGlja19idXR0b24pe1xuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcImJlZm9yZV9jbGlja19idXR0b24tZXZlbnRfaWTkuLrnqbrvvIFcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYoIWJ1dHRvbl9jYWxsYmFjayl7XG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50OlwiYnV0dG9uX2NhbGxiYWNrLWV2ZW50X2lk5Li656m677yBXCIsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHZhciBkYXRhX2F0dHIgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XTtcblx0XHRcdFx0dGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnRfUmV0dXJuKGJlZm9yZV9jbGlja19idXR0b24sIGRhdGFfYXR0ciwgYnV0dG9uX2NhbGxiYWNrLCBpbmRleCxpaW5kZXgpO1xuXHRcdFx0fSxcblx0XHRcdGNsYXNzQXR0cl9BZGRQZXIoaW5kZXgsaWluZGV4KXtcblx0XHRcdFx0dmFyIHBhcmFtPXtpbmRleDppbmRleCxpaW5kZXg6aWluZGV4fTtcblx0XHRcdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xuXHRcdFx0XHRcdHVybDonLi4vc2VscHNuL2luZGV4P211bGl0PWZhbHNlJnBhcmFtPScrSlNPTi5zdHJpbmdpZnkocGFyYW0pLFxuXHRcdFx0XHRcdGV2ZW50czp7XG5cdFx0XHRcdFx0XHRBZGRQZXIoZGF0YSxwYXJhbSl7IFxuXHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhwYXJhbSk7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGRhdGEpO1xuXHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uVmFsdWU9ZGF0YVswXS5OYW1lO1xuXHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uVmFsSUQ9ZGF0YVswXS5Mb2dpbisnOycrZGF0YVswXS5OYW1lO1xuXHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uYWN0aW9uO1xuXHRcdFx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHRcdFx0XHQgICAgZXZlbnRpZCA9IGV2ZW50aWQudHJpbSgpO1xuXHRcdFx0XHRcdFx0XHQgICAgaWYgKGV2ZW50aWQpIHtcblx0XHRcdFx0XHRcdFx0ICAgICAgICB2YXIgaW5mbyA9IHtcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgZXZlbnRpZDogZXZlbnRpZCxcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgZWR0eXBlOiBcIjRcIixcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgcHJvamVjdGlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICByY2xzaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIHJvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgdXNlcmxvZ2luOiBkYXRhWzBdLkxvZ2luLFxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICBjbHNpZDogJHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIG9iamlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICBhdHRyOiBbXSxcblx0XHRcdFx0XHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0XHRcdC8vIHZhciBkYXRhX2F0dHIgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF07XG5cdFx0XHRcdFx0XHRcdCAgICAgICAgJHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xuXHRcdFx0XHRcdFx0XHQgICAgfVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHRjbGFzc0F0dHJfQWRkUmVmKGUpe1xuXHRcdFx0XHRjb25zb2xlLmxvZyhlLnRhcmdldCk7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcIuatpOWKn+iDvei/mOacquWunueOsO+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHQvLyB2YXIgdmFsdWU9dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlJlbENsc1tlLnRhcmdldC52YWx1ZV07XG5cdFx0XHRcdC8vIHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZT12YWx1ZTtcblx0XHRcdH0sXG5cdFx0XHRjbGFzc0F0dHJfQWRkUHJqKGluZGV4LGlpbmRleCl7XG5cdFx0XHRcdHZhciBwYXJhbT17aW5kZXg6aW5kZXgsaWluZGV4OmlpbmRleH07XG5cdFx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKHtcblx0XHRcdFx0XHR1cmw6Jy4uL3NlbFByai9pbmRleD9yZWxhdGlvbj0tMSZwYXJhbT0nK0pTT04uc3RyaW5naWZ5KHBhcmFtKSxcblx0XHRcdFx0XHRldmVudHM6e1xuXHRcdFx0XHRcdFx0QWRkUGVyKGRhdGEscGFyYW0peyBcblx0XHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2cocGFyYW0pO1xuXHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhkYXRhKTtcblx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdLlZhbHVlPWRhdGFbMF0uTmFtZTtcblx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdLlZhbElEPWRhdGFbMF0uSUQrJzsnK2RhdGFbMF0uTmFtZTtcblx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdHZhciBldmVudGlkID0gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdLmFjdGlvbjtcblx0XHRcdFx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcblx0XHRcdFx0XHRcdFx0ICAgIGV2ZW50aWQgPSBldmVudGlkLnRyaW0oKTtcblx0XHRcdFx0XHRcdFx0ICAgIGlmIChldmVudGlkKSB7XG5cdFx0XHRcdFx0XHRcdCAgICAgICAgdmFyIGluZm8gPSB7XG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIGVkdHlwZTogXCIyXCIsXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIHByb2plY3RpZDogZGF0YVswXS5JRCxcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgcmNsc2lkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICByb2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIHVzZXJsb2dpbjogXCJcIixcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgY2xzaWQ6ICR0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLFxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICBvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgYXR0cjogW10sXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgfVxuXHRcdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdCAgICAgICAgLy8gdmFyIGRhdGFfYXR0ciA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbcGFyYW0uaW5kZXhdLkF0dHJbcGFyYW0uaWluZGV4XTtcblx0XHRcdFx0XHRcdFx0ICAgICAgICAkdGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XG5cdFx0XHRcdFx0XHRcdCAgICB9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSxcblx0XHRcdHNhdmEoKXtcblx0XHRcdFx0aWYgKHRoaXMuJGRhdGEuZWRpdF9va19ldmVudClcblx0XHRcdFx0XHR0aGlzLk9LRGF0YU9ialJ1bkN1c3RvbUV2ZW50KCk7XG5cdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHR0aGlzLmFkZCgpO1xuXHRcdFx0fSxcblx0XHRcdGFkZCgpe1xuXHRcdFx0XHR1bmkuc2hvd0xvYWRpbmcoe1xuXHRcdFx0XHRcdHRpdGxlOlwi5Yqg6L295LitLi4uXCJcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHZhciByZXE9W107XG5cdFx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcblx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcblx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0XHRpZihhci5WYWx1ZT09J+ivt+mAieaLqScgfHwgYXIuVmFsdWU9PSfigJTigJTor7fpgInmi6nigJTigJQnKSBhci5WYWx1ZT0nJztcblx0XHRcdFx0XHRcdGlmKGFyLlR5cGU9PSflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdFx0XHRcdGlmKGFyLlZhbHVlPT0n6K+3JykgYXIuVmFsdWU9Jyc7XG5cdFx0XHRcdCAgICAgICAgaWYoYXIuVHlwZT09J+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZT09J+W8leeUqOmhueebricpXG5cdFx0XHRcdCAgICAgICAgXHRyZXEucHVzaCh7IG5hbWU6IGFyLk5hbWUsIHZhbHVlOiBhci5WYWxJRCA/YXIuVmFsSUQgOicnIH0pO1xuXHRcdFx0XHQgICAgICAgIGVsc2UgaWYoYXIuVHlwZT09J+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgbmFtZTogYXIuTmFtZSwgdmFsdWU6IGFyLlZhbHVlPycxJzonMCd9KTtcblx0XHRcdFx0ICAgICAgICBlbHNlIGlmKGFyLlR5cGU9PSflrZflhbgnIHx8IGFyLlR5cGU9PSflrZflhbgt5a2X56ym5LiyJyl7XG5cdFx0XHRcdFx0XHRcdGlmKGFyLnNlbGVjdD09dHJ1ZSl7IC8v5Yik5pat5LiL5ouJ5piv5ZCm5aSa6YCJXG5cdFx0XHRcdFx0XHRcdFx0dmFyIHZhbFN0ciA9XCJcIjtcblx0XHRcdFx0XHRcdFx0XHRmb3IodmFyIHYgaW4gYXIuVmFsdWUpe1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYodmFsU3RyKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWxTdHIrPVwiO1wiO1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFsU3RyKz1hci5WYWx1ZVt2XTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBuYW1lOiBhci5OYW1lLCB2YWx1ZTogdmFsU3RyfSk7XG5cdFx0XHRcdFx0XHRcdH1lbHNlXG5cdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBuYW1lOiBhci5OYW1lLCB2YWx1ZTogYXIuVmFsdWV9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBuYW1lOiBhci5OYW1lLCB2YWx1ZTogYXIuVmFsdWUgP2FyLlZhbHVlIDonJ30pO1xuXHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdGlmICgoYXIuTm90RW1wdHkgPT0gJzEnIHx8IGFyLm5vdGVtcHR5ID09IHRydWUpICYmICFhci5WYWx1ZSkge1xuXHRcdFx0XHRcdFx0Ly8gaWYoYXIubm90RW1wdHk9PScxJyl7XG5cdFx0XHRcdFx0XHRcdHVuaS5oaWRlTG9hZGluZygpO1xuXHRcdFx0XHRcdFx0XHQvLyB1bmkuc2hvd1RvYXN0KHt0aXRsZTphci5EaXNwTmFtZSsn5LiN6IO95Li656m677yBJyxpY29uOlwic3VjY2Vzc1wiLGR1cmF0aW9uOjMwMDB9KTtcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50OmFyLkRpc3BOYW1lKyfkuI3og73kuLrnqbrvvIEnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHZhciBlbnZpcm9tZW50ID0ge1xuXHRcdFx0XHQgICAgICdmdW5jdGlvbic6ICczMDAwJywgLy8g5Yqf6IO954K557yW5Y+3XG5cdFx0XHRcdCAgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLCAgICAgLy8g5Yqf6IO954K55Li75pWw5o2u57G75qCH6K+GXG5cdFx0XHRcdCAgICAgJ2J1dHRvbic6ICd0b3AnLCAgIC8vIHRvcC9ib3R0b21cblx0XHRcdFx0ICAgICBidXR0b25fbmFtZTogJ+aWsOWinicsXG5cdFx0XHRcdCAgICAgbWFzdGVyOiB7XG5cdFx0XHRcdCAgICAgICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCwgXG5cdFx0XHRcdCAgICAgfVxuXHRcdFx0XHR9O1xuXHRcdFx0XHQgXG5cdFx0XHRcdHZhciBkYXRhSW5mbz17XG5cdFx0XHRcdCAgICBjbGFzc19pZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCwgZGF0YV9vYmpfaWQ6ICcnLCBtYXN0ZXJjbHNpZDogJycsXG5cdFx0XHRcdCAgICByZXE6IEpTT04uc3RyaW5naWZ5KHJlcSksIHVwZmlsZTogSlNPTi5zdHJpbmdpZnkoW10pLCBwb3N0X2RhdGE6IEpTT04uc3RyaW5naWZ5KHt9KSxcblx0XHRcdFx0ICAgIGNvbXBvc2U6IEpTT04uc3RyaW5naWZ5KFtdKSwgcmVmZGF0YXN0b3JlOiBKU09OLnN0cmluZ2lmeShbXSksIGV4dGluZm86IEpTT04uc3RyaW5naWZ5KGVudmlyb21lbnQpLCBcblx0XHRcdFx0XHRub3RfdHJpZ2dlcl9zeXNfZXZlbnQ6ICcnXG5cdFx0XHRcdH07XG5cdFx0XHRcdFxuXHRcdFx0XHQvLyByZXR1cm5cblx0XHRcdFx0Y29uc29sZS5sb2coZGF0YUluZm8pO1xuXHRcdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnYWRkY2xhc3NhdHRyJyxkYXRhSW5mbykudGhlbihzdWNjZXNzPT57XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coc3VjY2Vzcyk7XG5cdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XG5cdFx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZT09JzAwMDAwJykge1xuXHRcdFx0XHRcdFx0dmFyIGFjdGlvbiA9IEpTT04ucGFyc2Uoc3VjY2Vzcy5kYXRhLkFjdGlvbik7XG5cdFx0XHRcdFx0XHRpZihhY3Rpb24ucmV0PT0nMCcpe1xuXHRcdFx0XHRcdFx0XHRpZihhY3Rpb24ucmVzdWx0X3R5cGU9PScwJyl7XG5cdFx0XHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7dGl0bGU6YWN0aW9uLnJlc3VsdCxpY29uOlwic3VjY2Vzc1wiLGR1cmF0aW9uOjMwMDB9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHQvLyBcIntcInJldFwiOjAsIFwicmVzdWx0X3R5cGVcIjowLCBcInJlc3VsdFwiOlwi5Yib5bu65oiQ5YqfMTIzMTIzMTIzXCIsXCJpbmZvXCI6XCJcIn1cIlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Ly/liLfmlrBcblx0XHRcdFx0XHRcdHVuaS5yZWRpcmVjdFRvKHtcblx0XHRcdFx0XHRcdFx0dXJsOicuLi9tb2RhbC9jbGFzc0F0dHI/cGFyYW09JytKU09OLnN0cmluZ2lmeSh0aGlzLiRkYXRhLnBhcmFtKStcIiZ0aXRsZW5hbWU9XCIrdGhpcy4kZGF0YS50aXRsZVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHQvLyB0aGlzLmNsYXNzX2F0dHJfaW5pdCgpO1xuXHRcdFx0XHRcdH1lbHNle1xuXHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor69cIixjb250ZW50OnN1Y2Nlc3MubXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSkuY2F0Y2goZXg9Pntcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhleCk7XG5cdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0Y2xhc3NfYXR0cl9pbml0KCl7XG5cdFx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuc2hvd19zdHlsZVxuXHRcdFx0XHR2YXIgbmV3YXR0cmxpc3QgPSBbXTtcblx0XHRcdFx0aWYgKHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdC5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdCAgICAgICAgdmFyIG9wZW4gPSBhdHRybGlzdFtpXS5vcGVuO1xuXHRcdFx0XHQgICAgICAgIHZhciBuYW1lID0gYXR0cmxpc3RbaV0uYXR0cmdyb3VwX25hbWU7XG5cdFx0XHRcdCAgICAgICAgdmFyIGF0dHJzID0gYXR0cmxpc3RbaV0uYXR0cnM7XG5cdFx0XHRcdCAgICAgICAgZm9yICh2YXIgcyA9IDA7IHMgPCB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QubGVuZ3RoOyBzKyspIHtcblx0XHRcdFx0ICAgICAgICAgICAgdmFyIGNsc2F0dHIgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Rbc107XG5cdFx0XHRcdCAgICAgICAgICAgIGlmIChuYW1lID09IGNsc2F0dHIuTmFtZSkge1xuXHRcdFx0XHQgICAgICAgICAgICAgICAgdmFyIGF0dHIgPSBbXTtcblx0XHRcdFx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYXR0cnMubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBsID0gMDsgbCA8IGNsc2F0dHIuQXR0ci5sZW5ndGg7IGwrKykge1xuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2EgPSBjbHNhdHRyLkF0dHJbbF07XG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdHRyc1tqXS5hdHRyID09IGNhLk5hbWUpIHtcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLmFjdGlvbiA9IGF0dHJzW2pdLmFjdGlvbjtcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLmVkaXQgPSBhdHRyc1tqXS5lZGl0O1xuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Eubm90ZW1wdHkgPSBhdHRyc1tqXS5ub3RlbXB0eTtcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLmV4dF9idXR0b24gPSBhdHRyc1tqXS5leHRfYnV0dG9uO1xuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2EuYnV0dG9uX2ltZyA9IGF0dHJzW2pdLmJ1dHRvbl9pbWc7XG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYS5idXR0b25fdG9vbHRpcCA9IGF0dHJzW2pdLmJ1dHRvbl90b29sdGlwO1xuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2EuYmVmb3JlX2NsaWNrX2J1dHRvbiA9IGF0dHJzW2pdLmJlZm9yZV9jbGlja19idXR0b247XG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYS5idXR0b25fY2FsbGJhY2sgPSBhdHRyc1tqXS5idXR0b25fY2FsbGJhY2s7XG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYS5oaWRkZW4gPSBhdHRyc1tqXS5oaWRkZW47XG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYS5zZWxlY3QgPSBhdHRyc1tqXS5zZWxlY3Q9PXVuZGVmaW5lZD9mYWxzZTphdHRyc1tqXS5zZWxlY3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPVwiXCI7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoY2EuZGljdGl0ZW0pe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGRpY3RpdGVtbGlzdD1bXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGQgPSAwOyBkIDwgY2EuZGljdGl0ZW0ubGVuZ3RoOyBkKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuZGljdGl0ZW1bZF0ubGFiZWw9Y2EuZGljdGl0ZW1bZF0uQ05fU19OQU1FO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5kaWN0aXRlbVtkXS52YWx1ZT1jYS5kaWN0aXRlbVtkXS5DTl9TX05BTUU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihjYS5zZWxlY3QgPT0gdHJ1ZSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSBbXTsvL2NhLmRpY3RpdGVtWzBdLkNOX1NfTkFNRTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVsc2UgXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gJ+ivt+mAieaLqSc7Ly9jYS5kaWN0aXRlbVswXS5DTl9TX05BTUU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGNhLlR5cGU9PSfml6XmnJ8nIHx8IGNhLlR5cGU9PSfml7bpl7QnKXtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBub3dEYXRlID0gbmV3IERhdGUoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBkYXRlID0ge3llYXI6IG5vd0RhdGUuZ2V0RnVsbFllYXIoKSxtb250aDogbm93RGF0ZS5nZXRNb250aCgpICsgMSxkYXk6IG5vd0RhdGUuZ2V0RGF0ZSgpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSBkYXRlLnllYXIgKyAnLScgKyAoZGF0ZS5tb250aCA+PSAxMCA/IGRhdGUubW9udGggOiAnMCcgKyBkYXRlLm1vbnRoKSArICctJyArIChkYXRlLmRheSA+PSAxMCA/IGRhdGUuZGF5IDogJzAnICsgZGF0ZS5kYXkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihjYS5UeXBlPT0n5byV55So5a+56LGhKOWkmuS4qiknKXtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciByZWxDbHNMaXN0PVtdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGF0dHJfcmVzY2xzID0gY2EuUmVsQ2xzLnNwbGl0KCcsJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IodmFyIGlpIGluIGF0dHJfcmVzY2xzKXtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHJlc2NscyA9IGF0dHJfcmVzY2xzW2lpXS5zcGxpdCgnfCcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZWxDbHNMaXN0LnB1c2goe2lkOnJlc2Nsc1swXSxuYW1lOnJlc2Nsc1sxXX0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuUmVsQ2xzTGlzdCA9IHJlbENsc0xpc3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9ICfor7cnO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihjYS5UeXBlPT0n55yB5biC5Yy6Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gJ+ivt+mAieaLqSc7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoY2EuVHlwZT09J+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyLnB1c2goY2EpO1xuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB9XG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgfVxuXHRcdFx0XHQgICAgICAgICAgICAgICAgfVxuXHRcdFx0XHQgICAgICAgICAgICAgICAgbmV3YXR0cmxpc3QucHVzaCh7XG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgQmtDb2xvcjogY2xzYXR0ci5Ca0NvbG9yLFxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIEhhc0FjZTogY2xzYXR0ci5IYXNBY2UsXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgSW1nRm9udFN0eWxlOiBjbHNhdHRyLkltZ0ZvbnRTdHlsZSxcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICBOYW1lOiBjbHNhdHRyLk5hbWUsXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgT3JkZXI6IGNsc2F0dHIuT3JkZXIsXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgT3Blbjogb3Blbixcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICBBdHRyOiBhdHRyLFxuXHRcdFx0XHRcdFx0XHRcdFx0Y29udHJvbF9zdHlsZTp0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLmNvbnRyb2xfc3R5bGUsXG5cdFx0XHRcdFx0XHRcdFx0XHR0aXRsZV9wX3dkaXRoOnRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYudGl0bGVfcF93ZGl0aFxuXHRcdFx0XHQgICAgICAgICAgICAgICAgfSlcblx0XHRcdFx0ICAgICAgICAgICAgfVxuXHRcdFx0XHQgICAgICAgIH1cblx0XHRcdFx0ICAgIH1cblx0XHRcdFx0ICAgIGlmIChuZXdhdHRybGlzdC5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdCAgICAgICAgdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0ID0gbmV3YXR0cmxpc3Q7XG5cdFx0XHRcdCAgICB9XG5cdFx0XHRcdFx0dmFyIHJlcT1bXTtcblx0XHRcdFx0ICAgIGlmICh0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmKSB7XG5cdFx0XHRcdCAgICAgICAgIGlmICh0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLnNob3dfc3R5bGUubGVuZ3RoID4gMCkge1xuXHRcdFx0XHQgICAgICAgICAgICB2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLnNob3dfc3R5bGVcblx0XHRcdFx0ICAgICAgICAgICAgLy8gJGVsLmZpbmQoJy5hdHRyX2ZpZWxkJykucHJvcCgncmVhZG9ubHknLCB0cnVlKTtcblx0XHRcdFx0ICAgICAgICAgICAgLy8gJGVsLmZpbmQoJy5hdHRyX2ZpZWxkJykucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTtcblx0XHRcdFx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHQgICAgICAgICAgICAgICAgdmFyIGF0dHIgPSBhdHRybGlzdFtpXS5hdHRyc1xuXHRcdFx0XHQgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgdmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuYXR0ciwgdmFsOiBhci52YWx1ZT9hci52YWx1ZTonJyB9KTtcblx0XHRcdFx0ICAgICAgICAgICAgICAgIH1cblx0XHRcdFx0ICAgICAgICAgICAgfVxuXHRcdFx0XHQgICAgICAgIH1cblx0XHRcdFx0XHR9XHRcblx0XHRcdFx0XHRcblx0XHRcdFx0XHR2YXIgZXZlbnRsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5ldmVudDtcblx0XHRcdFx0XHRpZiAoZXZlbnRsaXN0KSB7XG5cdFx0XHRcdFx0ICAgIGlmIChldmVudGxpc3QubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdCAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBldmVudGxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHQgICAgICAgICAgICBpZiAoZXZlbnRsaXN0W2ldLmV2ZW50X2lkID09ICdiZWZvcmVfb2snKSB7XG5cdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHRoaXMuJGRhdGEuZWRpdF9va19ldmVudCA9IGV2ZW50bGlzdFtpXTtcblx0XHRcdFx0XHQgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50bGlzdFtpXS5ldmVudF9pZCA9PSAnaW5pdGlhbCcpIHtcblx0XHRcdFx0XHQgICAgICAgICAgICAgICAgdGhpcy4kZGF0YS5lZGl0X2luaXRhbF9ldmVudCA9IGV2ZW50bGlzdFtpXTtcblx0XHRcdFx0XHQgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50bGlzdFtpXS5ldmVudF9pZCA9PSAnYmVmb3JlX3NlbGVjdF9jb21wb3NlJykge1xuXHRcdFx0XHRcdCAgICAgICAgICAgICAgICB0aGlzLiRkYXRhLmVkaXRfc2VsZWN0X2NvbXBvc2VfZXZlbnQgPSBldmVudGxpc3RbaV0uc2NyaXBfaWQ7XG5cdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHRoaXMuJGRhdGEuZWRpdF9jb21wb3NlX2Nsc19pZCA9IGV2ZW50bGlzdFtpXS5jb21wb3NlX2Nsc19pZDtcblx0XHRcdFx0XHQgICAgICAgICAgICB9XG5cdFx0XHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHJlcSk7XG5cdFx0XHRcdFx0aWYgKHRoaXMuJGRhdGEuZWRpdF9pbml0YWxfZXZlbnQpIHtcblx0XHRcdFx0XHQgICAgdmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLmVkaXRfaW5pdGFsX2V2ZW50LnNjcmlwX2lkO1xuXHRcdFx0XHRcdCAgICB2YXIgaW5mbyA9IHtcblx0XHRcdFx0XHQgICAgICAgIGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdFx0ICAgICAgICBlZHR5cGU6IFwiMFwiLFxuXHRcdFx0XHRcdCAgICAgICAgcHJvamVjdGlkOiAnJyxcblx0XHRcdFx0XHQgICAgICAgIHJjbHNpZDogJycsXG5cdFx0XHRcdFx0ICAgICAgICByb2JqaWQ6ICcnLFxuXHRcdFx0XHRcdCAgICAgICAgdXNlcmxvZ2luOiAnJyxcblx0XHRcdFx0XHQgICAgICAgIGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLFxuXHRcdFx0XHRcdCAgICAgICAgb2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0ICAgICAgICBhdHRyOiByZXEsXG5cdFx0XHRcdFx0ICAgIH1cblx0XHRcdFx0XHQgICAgdGhpcy5pbmlfRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlKTtcblx0XHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QpO1xuXHRcdFx0XHRcdFxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcIuacquaJvuWIsOWPr+aYvuekuueahOeahOWxnuaAp1wiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0aW5pX0RhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKXtcblx0XHRcdFx0dmFyIHBhcmFtID0ge1xuXHRcdFx0XHQgICAgRWRpdFN0eWxlOiB0aGlzLiRkYXRhLnBhcmFtLkVkaXRfZGxnLk5hbWUsXG5cdFx0XHRcdCAgICBWaWV3U3R5bGU6IHRoaXMuJGRhdGEucGFyYW0uRWRpdF9kbGcuTmFtZSxcblx0XHRcdFx0ICAgIE5vdFRyaWdnZXJTeXNFdmVudDogMCxcblx0XHRcdFx0ICAgIGVudmlyb21lbnQ6IHtcblx0XHRcdFx0ICAgICAgICAnZnVuY3Rpb24nOiAnMzAwMCcsIC8vIOWKn+iDveeCuee8luWPt1xuXHRcdFx0XHQgICAgICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCwgICAgIC8vIOWKn+iDveeCueS4u+aVsOaNruexu+agh+ivhlxuXHRcdFx0XHQgICAgICAgICdidXR0b24nOiAndG9wJywgICAvLyB0b3AvYm90dG9tXG5cdFx0XHRcdCAgICAgICAgYnV0dG9uX25hbWU6ICfmlrDlop4nLFxuXHRcdFx0XHQgICAgICAgIG1hc3Rlcjoge1xuXHRcdFx0XHQgICAgICAgICAgICBjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEY2xzX2lkXG5cdFx0XHRcdCAgICAgICAgICAgIC8vb2JqX2lkOiAnJyAgLy8gYnV0dG9uPWJvdHRvbeaXtiBtYXN0ZXLnmoRvYmpfaWRcblx0XHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdCAgICB9XG5cdFx0XHRcdH1cblx0XHRcdFx0dmFyIGlucHV0cGFyYW1ldGVyID0gJyc7XG5cdFx0XHRcdHZhciBnbG9iYWxfYXR0ciA9ICcnO1xuXHRcdFx0XHRcblx0XHRcdFx0dmFyIGRhdGFJbmZvID0ge1xuICAgICAgICAgICAgICAgICAgICBlZHR5cGU6IGluZm8uZWR0eXBlLCBldmVudGlkOiBpbmZvLmV2ZW50aWQsIHByb2plY3RpZDogaW5mby5wcm9qZWN0aWQsXG4gICAgICAgICAgICAgICAgICAgIHJjbHNpZDogaW5mby5yY2xzaWQsIHJvYmppZDogaW5mby5yb2JqaWQsIHVzZXJsb2dpbjogaW5mby51c2VybG9naW4sIGNsc2lkOiBpbmZvLmNsc2lkLCBvYmppZDogaW5mby5vYmppZCxcbiAgICAgICAgICAgICAgICAgICAgYXR0cjogSlNPTi5zdHJpbmdpZnkoaW5mby5hdHRyKSwgZXh0aW5mbzogSlNPTi5zdHJpbmdpZnkocGFyYW0pLCBpbnB1dHBhcmFtZXRlcjogaW5wdXRwYXJhbWV0ZXIsIGdsb2JhbF9hdHRyOiBnbG9iYWxfYXR0clxuICAgICAgICAgICAgICAgIH1cblx0XHRcdFx0Y29uc29sZS5sb2coZGF0YUluZm8pO1xuXHRcdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnRGF0YU9ialJ1bkN1c3RvbUV2ZW50SW5mbycsZGF0YUluZm8pLnRoZW4oc3VjY2Vzcz0+e1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xuXHRcdFx0XHRcdGlmIChzdWNjZXNzLmNvZGU9PScwMDAwMCcpIHtcblx0XHRcdFx0XHRcdHZhciBkYXRhID0gSlNPTi5wYXJzZShzdWNjZXNzLmRhdGEpO1xuXHRcdFx0XHRcdFx0dmFyIGFjdGlvbmxpc3QgPSBkYXRhLmFjdGlvbjtcblx0XHRcdFx0XHRcdGlmIChhY3Rpb25saXN0KSB7XG5cdFx0XHRcdFx0XHQgICAgZm9yICh2YXIgaiA9IDA7IGogPCBhY3Rpb25saXN0Lmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHQgICAgICAgIHZhciBhY3Rpb24gPSBhY3Rpb25saXN0W2pdXG5cdFx0XHRcdFx0XHQgICAgICAgIHZhciBhY3Rpb25fdHlwZSA9IGFjdGlvbi5hY3Rpb25fdHlwZTtcblx0XHRcdFx0XHRcdCAgICAgICAgdmFyIHZhbHVlID0gYWN0aW9uLnZhbHVlO1xuXHRcdFx0XHRcdFx0ICAgICAgICBpZiAoYWN0aW9uX3R5cGUgPT0gJ3NldF9kbGdfYXR0cicpIHtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHZhciB2YWwgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIHZhbCA9IEpTT04ucGFyc2UodmFsdWUpO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2codmFsKTtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGEgPSAwOyBhIDwgdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0Lmxlbmd0aDsgYSsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBsID0gMDsgbCA8IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFthXS5BdHRyLmxlbmd0aDsgbCsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBjYSA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFthXS5BdHRyW2xdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAodmFsW2ldLmF0dHIgID09IGNhLk5hbWUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihjYS5UeXBlPT0n5a2X5YW4JyB8fCBjYS5UeXBlPT0n5a2X5YW4LeWtl+espuS4sicpe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGRpY3RJdGVtTGlzdD1bXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvcih2YXIgZCBpbiB2YWxbaV0uY2hvaWNlX2xpc3Qpe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgdmFsID12YWxbaV0uY2hvaWNlX2xpc3RbZF07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRpY3RJdGVtTGlzdC5wdXNoKHtcIkNOX1NfTkFNRVwiOnZhbCxcIk5hbWVcIjp2YWwsXCJsYWJlbFwiOnZhbCxcInZhbHVlXCI6dmFsfSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuZGljdGl0ZW0gPSBkaWN0SXRlbUxpc3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBhdHRyW2pdLmRpY3RpdGVtID0gdmFsW2ldLmNob2ljZV9saXN0O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1lbHNle1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gY2EudmFsdWUgPSB2YWxbaV0udmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICB2YXIgbGVuZ3RoID0gMDtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5maWx0ZXIoZnVuY3Rpb24gKHMpIHtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWxbaV0uYXR0ciA9PSBzLmF0dHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgfSkubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSAxO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUucHVzaCh2YWxbaV0pO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICB9XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPT0gMCkge1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHZhbFtpXS5hdHRyKSB7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLnZhbHVlID0gdmFsW2ldLnZhbHVlO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIH1cblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgfVxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIH1cblx0XHRcdFx0XHRcdCAgICAgICAgICAgIH1cblx0XHRcdFx0XHRcdCAgICAgICAgfVxuXHRcdFx0XHRcdFx0ICAgICAgICBpZiAoYWN0aW9uX3R5cGUgPT0gJ29wZW5fc2VsZWN0X3VzZXJkbGcnKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzIuMlwiLGNvbnRlbnQ6XCJvcGVuX3NlbGVjdF91c2VyZGxn6L+Z5LiqYWN0aW9uX3R5cGXov5jmnKrlpITnkIbvvIFcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcblx0XHRcdFx0XHRcdCAgICAgICAgfVxuXHRcdFx0XHRcdFx0ICAgIH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdH1lbHNle1xuXHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68yXCIsY29udGVudDpzdWNjZXNzLm1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLmNhdGNoKGV4PT57XG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMi4xXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSxcblx0XHQgICAgRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8sZGF0YV9hdHRyKXtcblx0XHRcdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHQgICAgXHR2YXIgZW52aXJvbWVudCA9IHtcblx0XHQgICAgXHQgICAgJ2Z1bmN0aW9uJzogJzMwMDAnLCAvLyDlip/og73ngrnnvJblj7dcblx0XHQgICAgXHQgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLCAgICAgLy8g5Yqf6IO954K55Li75pWw5o2u57G75qCH6K+GXG5cdFx0ICAgIFx0ICAgICdidXR0b24nOiAndG9wJywgICAvLyB0b3AvYm90dG9tXG5cdFx0ICAgIFx0ICAgIGJ1dHRvbl9uYW1lOiAn5paw5aKeJyxcblx0XHQgICAgXHQgICAgbWFzdGVyOiB7XG5cdFx0ICAgIFx0ICAgICAgICBjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEY2xzX2lkXG5cdFx0ICAgIFx0ICAgICAgICAvL29ial9pZDogJycgIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEb2JqX2lkXG5cdFx0ICAgIFx0ICAgIH1cblx0XHQgICAgXHR9O1xuXHRcdCAgICBcdGlmKGRhdGFfYXR0cil7XG5cdFx0XHRcdFx0ZW52aXJvbWVudC5lZGl0X2RsZyA9IHtcblx0XHRcdFx0XHQgICAgdHlwZTogJ3NtYWxsJywvL+Wwj+eql+WPo1xuXHRcdFx0XHRcdCAgICBjbGFzc19pZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCwvL+W9k+WJjeaVsOaNruexu2lkXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChkYXRhX2F0dHIpIHtcblx0XHRcdFx0XHQgICAgZW52aXJvbWVudC5lZGl0X2RsZy5mb3JtX2NvbnRyb2wgPSB7Ly/miYDlsZ7nmoTooajljZXmjqfku7Zcblx0XHRcdFx0XHQgICAgICAgIG5hbWU6IGRhdGFfYXR0ci5OYW1lLC8v5a2X5q615bGe5oCnXG5cdFx0XHRcdFx0ICAgICAgICB0ZXh0OiBkYXRhX2F0dHIuRGlzcE5hbWUsLy/mmL7npLrmlofmnKxcblx0XHRcdFx0XHQgICAgICAgIGdyb3VwX25hbWU6IGRhdGFfYXR0ci5Hcm91cE5hbWUsLy/lsZ7mgKfnu4Rcblx0XHRcdFx0XHQgICAgICAgIHR5cGU6IGRhdGFfYXR0ci5UeXBlLC8v5a2X5q6157G75Z6LXG5cdFx0XHRcdFx0ICAgICAgICByZWFkb25seTogZGF0YV9hdHRyLlJlYWRPbmx5LC8v5piv5ZCm5Y+q6K+7XG5cdFx0XHRcdFx0ICAgICAgICBidXR0b25faW1nOiBkYXRhX2F0dHIuYnV0dG9uX2ltZywvL+W8leeUqOaMiemSrueahOWbvuagh1xuXHRcdFx0XHRcdCAgICAgICAgYnV0dG9uX3Rvb2x0aXA6IGRhdGFfYXR0ci5idXR0b25fdG9vbHRpcC8v5byV55So5oyJ6ZKu55qEdG9vbHRpcFxuXHRcdFx0XHRcdCAgICB9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0ICAgIFx0dmFyIGRhdGFJbmZvID0ge1xuXHRcdCAgICAgICAgICAgIGVkdHlwZTogaW5mby5lZHR5cGUsIGV2ZW50aWQ6IGluZm8uZXZlbnRpZCwgcHJvamVjdGlkOiBpbmZvLnByb2plY3RpZC5yZXBsYWNlKCd7JywnJykucmVwbGFjZSgnfScsJycpLFxuXHRcdCAgICAgICAgICAgIHJjbHNpZDogaW5mby5yY2xzaWQsIHJvYmppZDogaW5mby5yb2JqaWQsIHVzZXJsb2dpbjogaW5mby51c2VybG9naW4sIGNsc2lkOiBpbmZvLmNsc2lkLCBvYmppZDogaW5mby5vYmppZCxcblx0XHQgICAgICAgICAgICBhdHRyOiBKU09OLnN0cmluZ2lmeShpbmZvLmF0dHIpLCBleHRpbmZvOiBKU09OLnN0cmluZ2lmeShlbnZpcm9tZW50KSwgaW5wdXRwYXJhbWV0ZXI6ICcnLCBnbG9iYWxfYXR0cjogSlNPTi5zdHJpbmdpZnkodGhpcy4kZGF0YS5nbG9iYWxfYXR0cilcblx0XHQgICAgICAgIH1cblx0XHQgICAgXHRjb25zb2xlLmxvZyhkYXRhSW5mbyk7XG5cdFx0ICAgIFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ0RhdGFPYmpSdW5DdXN0b21FdmVudEluZm8nLGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3M9Pntcblx0XHQgICAgXHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xuXHRcdCAgICBcdFx0aWYgKHN1Y2Nlc3MuY29kZT09JzAwMDAwJykge1xuXHRcdFx0XHRcdFx0dmFyIGRhdGEgPSBKU09OLnBhcnNlKHN1Y2Nlc3MuZGF0YSk7XG5cdFx0ICAgIFx0XHRcdHZhciBhY3Rpb25saXN0ID0gZGF0YS5hY3Rpb247XG5cdFx0XHRcdFx0XHRcdFx0XHRcblx0XHQgICAgXHRcdFx0aWYgKGFjdGlvbmxpc3QpIHtcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coYWN0aW9ubGlzdCk7XG5cdFx0ICAgIFx0XHRcdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFjdGlvbmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHQgICAgXHRcdFx0ICAgICAgICB2YXIgYWN0aW9uID0gYWN0aW9ubGlzdFtpXTtcblx0XHQgICAgXHRcdFx0ICAgICAgICBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdzZXRfZGxnX2F0dHInKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgIHZhciByZXN1bHQgPSBhY3Rpb24udmFsdWU7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHJlc3VsdFtpXS5jaG9pY2VfbGlzdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGMgPSAwOyBjIDwgJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdC5sZW5ndGg7IGMrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGF0dHIgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2NdLkF0dHI7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoYXR0cltqXS5OYW1lPT1yZXN1bHRbaV0uYXR0cil7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoYXR0cltqXS5UeXBlPT0n5a2X5YW4JyB8fCBhdHRyW2pdLlR5cGU9PSflrZflhbgt5a2X56ym5LiyJyl7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgZGljdEl0ZW1MaXN0PVtdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yKHZhciBkIGluIHJlc3VsdFtpXS5jaG9pY2VfbGlzdCl7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciB2YWwgPXJlc3VsdFtpXS5jaG9pY2VfbGlzdFtkXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGljdEl0ZW1MaXN0LnB1c2goe1wiQ05fU19OQU1FXCI6dmFsLFwiTmFtZVwiOnZhbCxcImxhYmVsXCI6dmFsLFwidmFsdWVcIjp2YWx9KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHJbal0uZGljdGl0ZW0gPSBkaWN0SXRlbUxpc3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBhdHRyW2pdLmRpY3RpdGVtID0gcmVzdWx0W2ldLmNob2ljZV9saXN0O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIH1cblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGMgPSAwOyBjIDwgJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdC5sZW5ndGg7IGMrKykge1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgXHR2YXIgYXR0ciA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbY10uQXR0cjtcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhhdHRyW2pdLk5hbWUrJz09JytyZXN1bHRbaV0uYXR0cik7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBcdFx0aWYoYXR0cltqXS5OYW1lPT1yZXN1bHRbaV0uYXR0cil7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBcdFx0XHRhdHRyW2pdLlZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgXHRcdH1cblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIFx0fVxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgbGVuZ3RoID0gMDtcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIGlmICghJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmZpbHRlcihmdW5jdGlvbiAocykge1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRbaV0uYXR0ciA9PSBzLmF0dHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIH0pLmxlbmd0aCkge1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IDE7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2gocmVzdWx0W2ldKTtcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIH1cblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPT0gMCkge1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaisrKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0uYXR0ciA9PSByZXN1bHRbaV0uYXR0cikge1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLnZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB9XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgfVxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgfVxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICB9XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgfSBlbHNlIGlmIChkYXRhLmFjdGlvbltpXS5hY3Rpb25fdHlwZSA9PSAnc2V0X2dsb2JhbF9hdHRyJykge1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgJHRoaXMuJGRhdGEuZ2xvYmFsX2F0dHIgPSBkYXRhLmFjdGlvbltpXS52YWx1ZSB8fCBbXTtcblx0XHRcdFx0XHRcdCAgICAgICAgfVxuXHRcdCAgICBcdFx0XHQgICAgfVxuXHRcdCAgICBcdFx0XHR9XG5cdFx0ICAgIFx0XHRcdFxuXHRcdCAgICBcdFx0XHRpZiAoZGF0YS5yZXN1bHQpIHtcblx0XHQgICAgXHRcdFx0ICAgIHZhciByZXN1bHQgPSBkYXRhLnJlc3VsdDtcblx0XHQgICAgXHRcdFx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgZm9yICh2YXIgYyA9IDA7IGMgPCAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0Lmxlbmd0aDsgYysrKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgXHR2YXIgYXR0ciA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbY10uQXR0cjtcblx0XHQgICAgXHRcdFx0ICAgICAgICBcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdCAgICBcdFx0XHQgICAgICAgIFx0XHRpZihhdHRyW2pdLk5hbWU9PXJlc3VsdFtpXS5hdHRyKXtcblx0XHQgICAgXHRcdFx0ICAgICAgICBcdFx0XHRhdHRyW2pdLlZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xuXHRcdCAgICBcdFx0XHQgICAgICAgIFx0XHR9XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgXHR9XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgfVxuXHRcdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHRcdHZhciBsZW5ndGggPSAwO1xuXHRcdCAgICBcdFx0XHQgICAgICAgIGlmICghJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmZpbHRlcihmdW5jdGlvbiAocykge1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICByZXR1cm4gcmVzdWx0W2ldLmF0dHIgPT0gcy5hdHRyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgfSkubGVuZ3RoKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgIGxlbmd0aCA9IDE7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5wdXNoKHJlc3VsdFtpXSk7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgfVxuXHRcdCAgICBcdFx0XHQgICAgICAgIGlmIChsZW5ndGggPT0gMCkge1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8ICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGorKykge1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgaWYgKCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHJlc3VsdFtpXS5hdHRyKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLnZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgfVxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICB9XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgfVxuXHRcdCAgICBcdFx0XHQgICAgfVxuXHRcdCAgICBcdFx0XHR9XG5cdFx0ICAgIFx0XHR9ZWxzZXtcblx0XHQgICAgXHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68zXCIsY29udGVudDpzdWNjZXNzLm1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcblx0XHQgICAgXHRcdH1cblx0XHQgICAgXHR9KS5jYXRjaChleD0+e1xuXHRcdCAgICBcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xuXHRcdCAgICBcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68zLjFcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcblx0XHQgICAgXHR9KTtcblx0XHQgICAgfSxcblx0XHRcdE9LRGF0YU9ialJ1bkN1c3RvbUV2ZW50KCl7XG5cdFx0ICAgIFx0dmFyIGVudmlyb21lbnQgPSB7XG5cdFx0XHRcdCAgICAnZnVuY3Rpb24nOiAnMzAwMCcsIC8vIOWKn+iDveeCuee8luWPt1xuXHRcdFx0XHQgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLCAgICAgLy8g5Yqf6IO954K55Li75pWw5o2u57G75qCH6K+GXG5cdFx0XHRcdCAgICAnYnV0dG9uJzogJ3RvcCcsICAgLy8gdG9wL2JvdHRvbVxuXHRcdFx0XHQgICAgYnV0dG9uX25hbWU6ICfmlrDlop4nLFxuXHRcdFx0XHQgICAgbWFzdGVyOiB7XG5cdFx0XHRcdCAgICAgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLCAvLyBidXR0b249Ym90dG9t5pe2IG1hc3RlcueahGNsc19pZFxuXHRcdFx0XHQgICAgICAgIFxuXHRcdFx0XHQgICAgfVxuXHRcdFx0XHR9O1xuXHRcdCAgICBcdFxuXHRcdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEuZWRpdF9va19ldmVudC5zY3JpcF9pZDtcblx0XHRcdFx0dmFyIHJlcT1bXTtcblx0XHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0O1xuXHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0XHRcdGlmKGFyLlZhbHVlPT0n6K+36YCJ5oupJyB8fCBhci5WYWx1ZT09J+KAlOKAlOivt+mAieaLqeKAlOKAlCcpIGFyLlZhbHVlPScnO1xuXHRcdFx0XHRcdFx0aWYoYXIuVHlwZT09J+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdFx0aWYoYXIuVmFsdWU9PSfor7cnKSBhci5WYWx1ZT0nJztcblx0XHRcdFx0ICAgICAgICBpZihhci5UeXBlPT0n5byV55So5Lq65ZGYJyB8fCBhci5UeXBlPT0n5byV55So6aG555uuJylcblx0XHRcdFx0ICAgICAgICBcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWxJRCA/YXIuVmFsSUQgOicnIH0pO1xuXHRcdFx0XHQgICAgICAgIGVsc2UgaWYoYXIuVHlwZT09J+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWx1ZT8nMSc6JzAnfSk7XG5cdFx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWx1ZSB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0XG5cdFx0ICAgIFx0aWYgKHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aCA+IDApIHtcblx0XHQgICAgXHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGkrKykge1xuXHRcdCAgICBcdCAgICAgICAgaWYgKCFyZXEuZmlsdGVyKGZ1bmN0aW9uIChzKSB7XG5cdFx0ICAgIFx0ICAgICAgICAgICAgcmV0dXJuIHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2ldLmF0dHIgPT0gcy5uYW1lXG5cdFx0ICAgIFx0ICAgICAgICB9KS5sZW5ndGgpIHtcblx0XHQgICAgXHQgICAgICAgICAgICBsZW5ndGggPSAxO1xuXHRcdCAgICBcdCAgICAgICAgICAgIHJlcS5wdXNoKHsgJ2F0dHInOiB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtpXS5hdHRyLCAndmFsJzogdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbaV0udmFsdWUgfSk7XG5cdFx0ICAgIFx0ICAgICAgICB9XG5cdFx0ICAgIFx0ICAgIH1cblx0XHQgICAgXHR9XG5cdFx0ICAgIFx0dmFyIGluZm8gPSB7XG5cdFx0ICAgIFx0ICAgIGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0ICAgIFx0ICAgIGVkdHlwZTogXCIwXCIsXG5cdFx0ICAgIFx0ICAgIHByb2plY3RpZDogJycsXG5cdFx0ICAgIFx0ICAgIHJjbHNpZDogJycsXG5cdFx0ICAgIFx0ICAgIHJvYmppZDogJycsXG5cdFx0ICAgIFx0ICAgIHVzZXJsb2dpbjogJycsXG5cdFx0ICAgIFx0ICAgIGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLFxuXHRcdCAgICBcdCAgICBvYmppZDogXCJcIixcblx0XHQgICAgXHQgICAgYXR0cjogcmVxLFxuXHRcdCAgICBcdH1cblx0XHQgICAgXHR2YXIgZGF0YUluZm8gPSB7XG5cdFx0ICAgICAgICAgICAgZWR0eXBlOiBpbmZvLmVkdHlwZSwgZXZlbnRpZDogaW5mby5ldmVudGlkLCBwcm9qZWN0aWQ6IGluZm8ucHJvamVjdGlkLHJjbHNpZDogaW5mby5yY2xzaWQsIFxuXHRcdFx0XHRcdHJvYmppZDogaW5mby5yb2JqaWQsIHVzZXJsb2dpbjogaW5mby51c2VybG9naW4sIGNsc2lkOiBpbmZvLmNsc2lkLCBvYmppZDogaW5mby5vYmppZCxcblx0XHRcdFx0XHRhdHRyOiBKU09OLnN0cmluZ2lmeShpbmZvLmF0dHIpLCBleHRpbmZvOiBKU09OLnN0cmluZ2lmeShlbnZpcm9tZW50KSwgZ2xvYmFsX2F0dHI6IEpTT04uc3RyaW5naWZ5KHRoaXMuJGRhdGEuZ2xvYmFsX2F0dHIpXG5cdFx0ICAgICAgICB9XG5cdFx0ICAgIFx0Y29uc29sZS5sb2coZGF0YUluZm8pO1xuXHRcdCAgICBcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdEYXRhT2JqUnVuQ3VzdG9tRXZlbnRJbmZvJyxkYXRhSW5mbykudGhlbihzdWNjZXNzPT57XG5cdFx0ICAgIFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcblx0XHQgICAgXHRcdGlmIChzdWNjZXNzLmNvZGU9PScwMDAwMCcpIHtcblx0XHRcdFx0XHRcdHZhciBkYXRhID0gSlNPTi5wYXJzZShzdWNjZXNzLmRhdGEpO1x0XHRcblx0XHQgICAgXHRcdFx0dmFyIHJlc3VsdCA9IGRhdGEucmVzdWx0O1xuXHRcdCAgICBcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7IGkrKykge1xuXHRcdCAgICBcdFx0XHQgICAgLy8gc2VsZi5jbGFzc19hdHRyX2VsZS5maW5kKCcuYXR0cl9maWVsZFtkYXRhLWZpZWxkPVwiJyArIHJlc3VsdFtpXS5hdHRyICsgJ1wiXScpLnZhbChyZXN1bHRbaV0udmFsdWUpLmRhdGEoJ3ZhbCcsIHJlc3VsdFtpXS52YWx1ZSk7XG5cdFx0ICAgIFx0XHRcdCAgICB2YXIgbGVuZ3RoID0gMDtcblx0XHQgICAgXHRcdFx0ICAgIGlmICghdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUuZmlsdGVyKGZ1bmN0aW9uIChzKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgcmV0dXJuIHJlc3VsdFtpXS5hdHRyID09IHMuYXR0clxuXHRcdCAgICBcdFx0XHQgICAgfSkubGVuZ3RoKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgbGVuZ3RoID0gMTtcblx0XHQgICAgXHRcdFx0ICAgICAgICB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5wdXNoKHJlc3VsdFtpXSk7XG5cdFx0ICAgIFx0XHRcdCAgICB9XG5cdFx0ICAgIFx0XHRcdCAgICBpZiAobGVuZ3RoID09IDApIHtcblx0XHQgICAgXHRcdFx0ICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaisrKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgIGlmICh0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHJlc3VsdFtpXS5hdHRyKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS52YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgfVxuXHRcdCAgICBcdFx0XHQgICAgICAgIH1cblx0XHQgICAgXHRcdFx0ICAgIH1cblx0XHQgICAgXHRcdFx0fVxuXHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHR0aGlzLmFkZCgpO1xuXHRcdCAgICBcdFx0fWVsc2V7XG5cdFx0ICAgIFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vNFwiLGNvbnRlbnQ6c3VjY2Vzcy5tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XG5cdFx0ICAgIFx0XHR9XG5cdFx0ICAgIFx0fSkuY2F0Y2goZXg9Pntcblx0XHQgICAgXHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcblx0XHQgICAgXHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vNC4xXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XG5cdFx0ICAgIFx0fSk7XG5cdFx0ICAgIH0sXG5cdFx0ICAgIERhdGFPYmpSdW5DdXN0b21FdmVudF9SZXR1cm4oZXZlbnRpZCxkYXRhX2F0dHIsYnV0dG9uX2NhbGxiYWNrLGluZGV4LGlpbmRleCl7XG5cdFx0XHRcdHZhciBlbnZpcm9tZW50ID0ge1xuXHRcdFx0XHQgICAgJ2Z1bmN0aW9uJzogJzMwMDAnLCAvLyDlip/og73ngrnnvJblj7dcblx0XHRcdFx0ICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCwgICAgIC8vIOWKn+iDveeCueS4u+aVsOaNruexu+agh+ivhlxuXHRcdFx0XHQgICAgJ2J1dHRvbic6ICd0b3AnLCAgIC8vIHRvcC9ib3R0b21cblx0XHRcdFx0ICAgIGJ1dHRvbl9uYW1lOiAn5paw5aKeJyxcblx0XHRcdFx0ICAgIG1hc3Rlcjoge1xuXHRcdFx0XHQgICAgICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCwgLy8gYnV0dG9uPWJvdHRvbeaXtiBtYXN0ZXLnmoRjbHNfaWRcblx0XHRcdFx0ICAgICAgICAvL29ial9pZDogJycgIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEb2JqX2lkXG5cdFx0XHRcdCAgICB9XG5cdFx0XHRcdH07XG5cdFx0XHRcdHZhciByZXE9W107XG5cdFx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcblx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcblx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0XHRpZihhci5UeXBlPT0n5byV55So5a+56LGhKOWkmuS4qiknKVxuXHRcdFx0XHRcdFx0XHRpZihhci5WYWx1ZT09J+ivtycpIGFyLlZhbHVlPScnO1xuXHRcdFx0XHQgICAgICAgIGlmKGFyLlR5cGU9PSflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGU9PSflvJXnlKjpobnnm64nKVxuXHRcdFx0XHQgICAgICAgIFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbElEID9hci5WYWxJRCA6JycgfSk7XG5cdFx0XHRcdCAgICAgICAgZWxzZSBpZihhci5UeXBlPT0n5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlPycxJzonMCd9KTtcblx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoID4gMCkge1xuXHRcdFx0XHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHQgICAgICAgIGlmICghcmVxLmZpbHRlcihmdW5jdGlvbiAocykge1xuXHRcdFx0XHQgICAgICAgICAgICByZXR1cm4gdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbaV0uYXR0ciA9PSBzLm5hbWVcblx0XHRcdFx0ICAgICAgICB9KS5sZW5ndGgpIHtcblx0XHRcdFx0ICAgICAgICAgICAgbGVuZ3RoID0gMTtcblx0XHRcdFx0ICAgICAgICAgICAgcmVxLnB1c2goeyAnYXR0cic6IHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2ldLmF0dHIsICd2YWwnOiB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtpXS52YWx1ZSB9KTtcblx0XHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdCAgICB9XG5cdFx0XHRcdH1cblx0XHRcdFx0dmFyIGV4dGluZm8gPSBlbnZpcm9tZW50O1xuXHRcdFx0XHRleHRpbmZvLmVkaXRfZGxnID0ge1xuXHRcdFx0XHQgICAgdHlwZTogJ3NtYWxsJywvL+Wwj+eql+WPo1xuXHRcdFx0XHQgICAgY2xhc3NfaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsLy/lvZPliY3mlbDmja7nsbtpZFxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChkYXRhX2F0dHIpIHtcblx0XHRcdFx0ICAgIGV4dGluZm8uZWRpdF9kbGcuZm9ybV9jb250cm9sID0gey8v5omA5bGe55qE6KGo5Y2V5o6n5Lu2XG5cdFx0XHRcdCAgICAgICAgbmFtZTogZGF0YV9hdHRyLk5hbWUsLy/lrZfmrrXlsZ7mgKdcblx0XHRcdFx0ICAgICAgICB0ZXh0OiBkYXRhX2F0dHIuRGlzcE5hbWUsLy/mmL7npLrmlofmnKxcblx0XHRcdFx0ICAgICAgICBncm91cF9uYW1lOiBkYXRhX2F0dHIuR3JvdXBOYW1lLC8v5bGe5oCn57uEXG5cdFx0XHRcdCAgICAgICAgdHlwZTogZGF0YV9hdHRyLlR5cGUsLy/lrZfmrrXnsbvlnotcblx0XHRcdFx0ICAgICAgICByZWFkb25seTogZGF0YV9hdHRyLlJlYWRPbmx5LC8v5piv5ZCm5Y+q6K+7XG5cdFx0XHRcdCAgICAgICAgYnV0dG9uX2ltZzogZGF0YV9hdHRyLmJ1dHRvbl9pbWcsLy/lvJXnlKjmjInpkq7nmoTlm77moIdcblx0XHRcdFx0ICAgICAgICBidXR0b25fdG9vbHRpcDogZGF0YV9hdHRyLmJ1dHRvbl90b29sdGlwLy/lvJXnlKjmjInpkq7nmoR0b29sdGlwXG5cdFx0XHRcdCAgICB9XG5cdFx0XHRcdH1cblx0XHRcdFx0dmFyIGRhdGFJbmZvID0ge1xuXHRcdFx0XHRcdGVkdHlwZTogIFwiMFwiLCBldmVudGlkOiBldmVudGlkLCBwcm9qZWN0aWQ6ICcnLHJjbHNpZDogJycsIHJvYmppZDogJycsIHVzZXJsb2dpbjogJycsIFxuXHRcdFx0XHRcdGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLCBvYmppZDogJycsYXR0cjogSlNPTi5zdHJpbmdpZnkocmVxKSwgXG5cdFx0XHRcdFx0ZXh0aW5mbzogSlNPTi5zdHJpbmdpZnkoZXh0aW5mbyksIGdsb2JhbF9hdHRyOiBKU09OLnN0cmluZ2lmeSh0aGlzLiRkYXRhLmdsb2JhbF9hdHRyKVxuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcblx0XHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ0RhdGFPYmpSdW5DdXN0b21FdmVudEluZm8nLGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3M9Pntcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcblx0XHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlPT0nMDAwMDAnKSB7XG5cdFx0XHRcdFx0XHR2YXIgZGF0YSA9IEpTT04ucGFyc2Uoc3VjY2Vzcy5kYXRhKTtcblx0XHRcdFx0XHRcdGlmIChkYXRhICE9IFwiXCIpIHtcblx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdHZhciBhY3Rpb25zID0gZGF0YS5hY3Rpb247XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhhY3Rpb25zKTtcblx0XHRcdFx0XHRcdGlmIChhY3Rpb25zKSB7XG5cdFx0XHRcdFx0XHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHQgICAgICAgIHZhciBhY3Rpb24gPSBhY3Rpb25zW2ldO1xuXHRcdFx0XHRcdFx0ICAgICAgICB2YXIgdmFsID0gYWN0aW9uLnZhbHVlO1xuXHRcdFx0XHRcdFx0ICAgICAgICB2YXIgZW52aXJvbWVudCA9IEpTT04uc3RyaW5naWZ5KGVudmlyb21lbnQpO1xuXHRcdFx0XHRcdFx0ICAgICAgICBcblx0XHRcdFx0XHRcdCAgICAgICAgaWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnb3Blbl9wYW5lbCcpIHtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgdmFyIGQgPSBkaWFsb2coe1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgdGl0bGU6ICc8aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLWluZm8tY2lyY2xlXCI+PC9pPiAnICsgJ+aPkOekuicsXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICBjb250ZW50OiBhY3Rpb24uYWN0aW9uX3R5cGUgKyAn5q2kYWN0aW9u5bCa5pyq5aSE55CG77yBJ1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICB9KTtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgZC5zaG93KCk7XG5cdFx0XHRcdFx0XHQgICAgICAgIH1cblx0XHRcdFx0XHRcdCAgICAgICAgZWxzZSBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdvcGVuX3NlbGVjdF91c2VyZGxnJykge1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgdmFyIHN0eWxlID0gdmFsLnN0eWxlO1xuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gc3R5bGUgPT0gJ3VzZXInID8gJ+mAieaLqeS6uuWRmCcgOiBzdHlsZSA9PSAnZGVwYXJ0bWVudCcgPyAn6YCJ5oup6YOo6ZeoJyA6IHN0eWxlID09ICdyb2xlJyA/ICfpgInmi6nop5LoibInIDogJydcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgcGFyYW09e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpbmRleDogaW5kZXgsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlpbmRleDppaW5kZXgsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJ1dHRvbl9jYWxsYmFjazpidXR0b25fY2FsbGJhY2ssXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJlcTpyZXEsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGRhdGFfYXR0cjpkYXRhX2F0dHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKHtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFx0dXJsOicuLi9zZWxwc24vaW5kZXg/bXVsaXQ9ZmFsc2UmcGFyYW09JytKU09OLnN0cmluZ2lmeShwYXJhbSksXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBcdGV2ZW50czp7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBcdFx0QWRkUGVyKGRhdGEscGFyYW0peyBcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFx0XHRcdC8vIGNvbnNvbGUubG9nKHBhcmFtKTtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFx0XHRcdGNvbnNvbGUubG9nKGRhdGEpO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgXHRcdFx0dmFyIGNhbGxiYWNrX2V2ZW50aWQgPSBwYXJhbS5idXR0b25fY2FsbGJhY2sudHJpbSgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGluZm8gPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgZXZlbnRpZDogY2FsbGJhY2tfZXZlbnRpZCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICBlZHR5cGU6IFwiMFwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIHByb2plY3RpZDogJycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgcmNsc2lkOiAnJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICByb2JqaWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgY2xzaWQ6ICR0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIG9iamlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIGF0dHI6IHBhcmFtLnJlcSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICBpbnB1dHBhcmFtZXRlcjogZGF0YVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8sIHBhcmFtLmRhdGFfYXR0cik7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBcdFx0fVxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgXHR9XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICB9KTtcdFxuXHRcdFx0XHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdFx0XHQgICAgICAgIGVsc2UgaWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnb3Blbl9kYXRhX3F1ZXJ5X2RsZycpIHtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFxuXHRcdFx0XHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdFx0XHQgICAgICAgIGVsc2UgaWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnb3Blbl9jb21tb25fZGxnJykge1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgdmFyIHZhbHVlID0gYWN0aW9uLnZhbHVlO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgdmFyIGQgPSBkaWFsb2coe1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHRpdGxlOiAnPGkgY2xhc3M9XCJhY2UtaWNvbiBmYSBmYS1pbmZvLWNpcmNsZVwiPjwvaT4gJyArICfmj5DnpLonLFxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGFjdGlvbi5hY3Rpb25fdHlwZSArICfmraRhY3Rpb27lsJrmnKrlpITnkIbvvIEnXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICB9KTtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIGQuc2hvdygpO1xuXHRcdFx0XHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdFx0XHQgICAgICAgIGVsc2UgaWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnb3Blbl9wcm9qZWN0X3F1ZXJ5X2RsZycpIHtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIC8vY29uc29sZS5sb2coYWN0aW9uLnZhbHVlLnNlbGVjdF9yYW5nZSk7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAvL2NvbnNvbGUubG9nKGFjdGlvbi52YWx1ZS5tdWxpdF9zZWxlY3QpO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgdmFyIHByaVJlbCA9ICctMSc7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBpZiAoYWN0aW9uLnZhbHVlLnNlbGVjdF9yYW5nZSA9PSAn5YWo6YOo55u45YWzJylcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICBwcmlSZWwgPSAnMCc7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICfmiJHotJ/otKPnmoTpobnnm64nKVxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHByaVJlbCA9ICcxJztcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIGVsc2UgaWYgKGFjdGlvbi52YWx1ZS5zZWxlY3RfcmFuZ2UgPT0gJ+aIkeWIm+W7uueahCcpXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgcHJpUmVsID0gJzInO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgZWxzZSBpZiAoYWN0aW9uLnZhbHVlLnNlbGVjdF9yYW5nZSA9PSAn5oiR5Y+C5LiO55qEJyB8fCBhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICfmiJHlj4LliqDnmoQnKVxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHByaVJlbCA9ICczJztcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIGVsc2UgaWYgKGFjdGlvbi52YWx1ZS5zZWxlY3RfcmFuZ2UgPT0gJ+aIkeWFs+azqOeahCcpXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgcHJpUmVsID0gJzQnO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgZWxzZSBpZiAoYWN0aW9uLnZhbHVlLnNlbGVjdF9yYW5nZSA9PSAn5oiR5LiL5bGe55qE6aG555uuJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0cHJpUmVsID0gJzUnO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgcGFyYW1fPXtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aW5kZXg6IGluZGV4LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpaW5kZXg6aWluZGV4LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRidXR0b25fY2FsbGJhY2s6YnV0dG9uX2NhbGxiYWNrLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXE6cmVxXG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR1bmkubmF2aWdhdGVUbyh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHVybDonLi4vc2VsUHJqL2luZGV4P3JlbGF0aW9uPScrcHJpUmVsKycmcGFyYW09JytKU09OLnN0cmluZ2lmeShwYXJhbV8pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRldmVudHM6e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdEFkZFBlcihkYXRhLHBhcmFtKXsgXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uVmFsdWU9ZGF0YVswXS5OYW1lO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdLlZhbElEPWRhdGFbMF0uSUQrJzsnK2RhdGFbMF0uTmFtZTtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFx0XHRcdHZhciBjYWxsYmFja19ldmVudGlkID0gcGFyYW0uYnV0dG9uX2NhbGxiYWNrLnRyaW0oKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChjYWxsYmFja19ldmVudGlkKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgdmFyIGluZm8gPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICAgIGV2ZW50aWQ6IGNhbGxiYWNrX2V2ZW50aWQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICAgIGVkdHlwZTogXCIyXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICAgIHByb2plY3RpZDogZGF0YVswXS5JRCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgICAgcmNsc2lkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgICByb2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICAgIHVzZXJsb2dpbjogXCJcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgICAgY2xzaWQ6ICR0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgICBvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgICAgYXR0cjogcGFyYW0ucmVxLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgJHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHQgICAgICAgIH0gZWxzZSB7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICB2YXIgZCA9IGRpYWxvZyh7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgdGl0bGU6ICc8aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLWluZm8tY2lyY2xlXCI+PC9pPiAnICsgJ+aPkOekuicsXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgY29udGVudDogYWN0aW9uLmFjdGlvbl90eXBlICsgJ+atpGFjdGlvbuWwmuacquWkhOeQhu+8gSdcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIH0pO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgZC5zaG93KCk7XG5cdFx0XHRcdFx0XHQgICAgICAgIH1cblx0XHRcdFx0XHRcdCAgICB9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLo1LjJcIixjb250ZW50OiAn6LCD55SoIGJlZm9yZV9jbGlja19idXR0b24g6ISa5pys6L+U5Zue56m677yMZXZlbnRfaWQnICsgZXZlbnRpZCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vNVwiLGNvbnRlbnQ6c3VjY2Vzcy5tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KS5jYXRjaChleD0+e1xuXHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekujUuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHR9KTtcblx0XHQgICAgfSxcblx0XHQgICAgXG5cdFx0XHRcblx0XHR9XG5cdH1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///49\n");
 
 /***/ }),
 /* 50 */
@@ -6164,7 +6265,7 @@
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-eval("/* WEBPACK VAR INJECTION */(function(__f__) {Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0;var _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 74));\nvar _vuex = _interopRequireDefault(__webpack_require__(/*! vuex */ 79));\n\n\nvar _app = _interopRequireDefault(__webpack_require__(/*! ./modules/app */ 80));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}_vue.default.use(_vuex.default);\nvar store = new _vuex.default.Store({\n  modules: {\n    app: _app.default },\n\n  state: {\n    hasLogin: false,\n    loginProvider: \"\",\n    areaFunc: '',\n    thisareaFuncID: '',\n    thisEditName: '',\n    thisDictName: '',\n    _classAttrList: {},\n    _classGridStyleInfo: {},\n    _dicValueInfo: {},\n    DataObjRunCustomEventInfo: '',\n    querySelpsn: '',\n    ProjectGetAnalysisList: '',\n    addclassattr: '',\n    username: \"sa\",\n    userpwd: \"0000\",\n    url: \"39.100.224.211\" //192.168.1.184:5200 36.33.24.94:5200\n  },\n  mutations: {\n    setUrl: function setUrl(state, url) {\n      state.url = url;\n    },\n    login: function login(state, provider) {\n      state.hasLogin = true;\n      state.loginProvider = provider;\n    },\n    areaFunc: function areaFunc(state, ret) {\n      state.areaFunc = ret;\n    },\n    setareaFuncid: function setareaFuncid(state, id) {\n      state.thisareaFuncID = id;\n    },\n    seteditName: function seteditName(state, editName) {\n      state.thisEditName = editName;\n    },\n    setDictName: function setDictName(state, dictName) {\n      state.thisDictName = dictName;\n    },\n    classAttrList: function classAttrList(state, ret) {\n      // state._classAttrList[state.thisareaFuncID] = ret;\n      _vue.default.set(state._classAttrList, state.thisareaFuncID, ret);\n    },\n    classGridStyleInfo: function classGridStyleInfo(state, ret) {\n      // state._classGridStyleInfo[state.thisareaFuncID] = ret;\n      var data = {};\n      if (state._classGridStyleInfo[state.thisareaFuncID])\n      data = state._classGridStyleInfo[state.thisareaFuncID];\n      _vue.default.set(data, state.thisEditName, ret);\n      _vue.default.set(state._classGridStyleInfo, state.thisareaFuncID, data);\n    },\n    dicValueInfo: function dicValueInfo(state, ret) {\n      // state._dicValueInfo[state.thisareaFuncID] = ret;\n      _vue.default.set(state._dicValueInfo, state.thisDictName, ret);\n    },\n    DataObjRunCustomEventInfo: function DataObjRunCustomEventInfo(state, ret) {\n      state.DataObjRunCustomEventInfo = ret;\n    },\n    querySelpsn: function querySelpsn(state, ret) {\n      state.querySelpsn = ret;\n    },\n    ProjectGetAnalysisList: function ProjectGetAnalysisList(state, ret) {\n      state.ProjectGetAnalysisList = ret;\n    },\n    addclassattr: function addclassattr(state, ret) {\n      state.addclassattr = ret;\n    },\n    logout: function logout(state) {\n      state.hasLogin = false;\n    } },\n\n  getters: {\n    loginid: function loginid(state) {\n      return state.loginProvider.loginid;\n    },\n    getUrl: function getUrl(state) {\n      return state.url;\n    },\n    getclassAttrList: function getclassAttrList(state) {\n      return state._classAttrList[state.thisareaFuncID];\n    },\n    getclassGridStyleInfo: function getclassGridStyleInfo(state) {\n      if (state._classGridStyleInfo[state.thisareaFuncID])\n      return state._classGridStyleInfo[state.thisareaFuncID][state.thisEditName];else\n\n      return \"\";\n    },\n    getdicValueInfo: function getdicValueInfo(state) {\n      return state._dicValueInfo[state.thisDictName];\n    } },\n\n\n\n  actions: {\n    //{commit} 瑙f瀯锛孿n    //univerifyInfo 鑷畾涔夊弬鏁癨n    login: function login(_ref,\n\n\n    univerifyInfo) {var commit = _ref.commit,state = _ref.state;\n      return new Promise(function (resolve, reject) {\n        univerifyInfo = univerifyInfo || {};\n        univerifyInfo.server = univerifyInfo.server || '';\n        univerifyInfo.uname = univerifyInfo.uname || '';\n        univerifyInfo.pwd = univerifyInfo.pwd || '';\n        // console.log(univerifyInfo);\n        if (univerifyInfo.server.length == 0) {\n          reject({ \"errMsg\": '鏈嶅姟鍣ㄥ湴鍧�笉鑳戒负绌�' });\n        }\n        if (univerifyInfo.uname.length < 2) {\n          reject({ \"errMsg\": '璐﹀彿鏈�煭涓�2 涓瓧绗�' });\n        }\n        if (univerifyInfo.pwd.length < 1) {\n          reject({ \"errMsg\": '瀵嗙爜鏈�煭涓�1涓瓧绗�' });\n        }\n        var openinfo = \"http://\" + univerifyInfo.server + \"/\"; //+\"/OrgWebS\"\n        //璁剧疆鍏ㄥ眬鍙傛暟锛歶rl-鏈嶅姟鍣ㄥ湴鍧�n        commit(\"setUrl\", openinfo);\n\n        // if (univerifyInfo.server.split(':').length < 2)\n        // \tcgi = \"http://\" + univerifyInfo.server + \":5010\"; ///OrgWebS\n\n        // setTimeout(_=>{\n        // \tresolve(\"00000000000\")\n        // },3000)\n        // console.log(openinfo + \"PDA/SignIn\");\n        uni.request({\n          url: openinfo + \"PDA/SignIn\",\n          data: univerifyInfo,\n          method: 'POST',\n          dataType: \"json\",\n          header: {\n            'content-type': 'application/x-www-form-urlencoded' },\n\n          success: function success(res) {\n            // console.log(res); \n            var ret = res.data;\n            if (ret.code == '00000') {\n              commit(\"login\", ret);\n              resolve(ret);\n            } else {\n              reject({ \"errMsg\": ret.msg });\n            }\n          },\n          fail: function fail(err) {\n            __f__(\"log\", err, \" at store/index.js:154\");\n            reject(err);\n          } });\n\n      });\n    },\n\n    areaFunc: function areaFunc(_ref2,\n\n\n    univerifyInfo) {var commit = _ref2.commit,state = _ref2.state;\n      return new Promise(function (resolve, reject) {\n        // console.log(state.url);\n\n        uni.request({\n          url: state.url + \"PDA/PDAArea\",\n          data: univerifyInfo,\n          method: 'POST',\n          dataType: \"json\",\n          header: {\n            'content-type': 'application/x-www-form-urlencoded' },\n\n          success: function success(res) {\n            // console.log(res);\n            var ret = res.data;\n            if (ret.code == '00000') {\n              commit(\"areaFunc\", ret);\n              resolve(ret);\n            } else {\n              reject({ \"errMsg\": ret.msg });\n            }\n          },\n          fail: function fail(err) {\n            // console.log(err);\n            reject(err);\n          } });\n\n      });\n    },\n\n    classAttrList: function classAttrList(_ref3,\n\n\n    univerifyInfo) {var commit = _ref3.commit,state = _ref3.state;\n      return new Promise(function (resolve, reject) {\n        // console.log(state.url);\n\n        uni.request({\n          url: state.url + \"PDA/PDAAttrList\",\n          data: univerifyInfo,\n          method: 'POST',\n          dataType: \"json\",\n          header: {\n            'content-type': 'application/x-www-form-urlencoded' },\n\n          success: function success(res) {\n            __f__(\"log\", res, \" at store/index.js:210\");\n            var ret = res.data;\n            if (ret.code == '00000') {\n              commit(\"classAttrList\", ret);\n              resolve(ret);\n            } else {\n              reject({ \"errMsg\": ret.msg });\n            }\n          },\n          fail: function fail(err) {\n            // console.log(err);\n            reject(err);\n          } });\n\n      });\n    },\n\n    classGridStyleInfo: function classGridStyleInfo(_ref4,\n\n\n    univerifyInfo) {var commit = _ref4.commit,state = _ref4.state;\n      return new Promise(function (resolve, reject) {\n        // console.log(state.url);\n\n        uni.request({\n          url: state.url + \"PDA/PDAGridStyleGetInfo\",\n          data: univerifyInfo,\n          method: 'POST',\n          dataType: \"json\",\n          header: {\n            'content-type': 'application/x-www-form-urlencoded' },\n\n          success: function success(res) {\n            __f__(\"log\", res, \" at store/index.js:243\");\n            var ret = res.data;\n            if (ret.code == '00000') {\n              // var data ={};\n              // Vue.set(data,univerifyInfo.name,ret);\n              commit(\"classGridStyleInfo\", ret);\n              resolve(ret);\n            } else {\n              reject({ \"errMsg\": ret.msg });\n            }\n          },\n          fail: function fail(err) {\n            // console.log(err);\n            reject(err);\n          } });\n\n      });\n    },\n\n    dicValueInfo: function dicValueInfo(_ref5,\n\n\n    univerifyInfo) {var commit = _ref5.commit,state = _ref5.state;\n      return new Promise(function (resolve, reject) {\n        // console.log(state.url);\n\n        uni.request({\n          url: state.url + \"PDA/PDADicValueGetInfo\",\n          data: univerifyInfo,\n          method: 'POST',\n          dataType: \"json\",\n          header: {\n            'content-type': 'application/x-www-form-urlencoded' },\n\n          success: function success(res) {\n            // console.log(res);\n            var ret = res.data;\n            if (ret.code == '00000') {\n              state.thisDictName = univerifyInfo.dic_name;\n              commit(\"dicValueInfo\", ret);\n              resolve(ret);\n            } else {\n              reject({ \"errMsg\": ret.msg });\n            }\n          },\n          fail: function fail(err) {\n            __f__(\"log\", err, \" at store/index.js:289\");\n            reject(err);\n          } });\n\n      });\n    },\n\n    DataObjRunCustomEventInfo: function DataObjRunCustomEventInfo(_ref6,\n\n\n    univerifyInfo) {var commit = _ref6.commit,state = _ref6.state;\n      return new Promise(function (resolve, reject) {\n        // console.log(state.url);\n        uni.request({\n          url: state.url + \"PDA/PDADataObjRunCustomEvent\",\n          data: univerifyInfo,\n          method: 'POST',\n          dataType: \"json\",\n          header: {\n            'content-type': 'application/x-www-form-urlencoded' },\n\n          success: function success(res) {\n            __f__(\"log\", res, \" at store/index.js:311\");\n            var ret = res.data;\n            if (ret.code == '00000') {\n              commit(\"DataObjRunCustomEventInfo\", ret);\n              resolve(ret);\n            } else {\n              reject({ \"errMsg\": ret.msg });\n            }\n          },\n          fail: function fail(err) {\n            __f__(\"log\", err, \" at store/index.js:321\");\n            reject(err);\n          } });\n\n      });\n    },\n\n    querySelpsn: function querySelpsn(_ref7,\n\n\n    univerifyInfo) {var commit = _ref7.commit,state = _ref7.state;\n      return new Promise(function (resolve, reject) {\n        // console.log(state.url);\n        uni.request({\n          url: state.url + \"selpsn/queryjson\",\n          data: univerifyInfo,\n          method: 'POST',\n          dataType: \"json\",\n          header: {\n            'content-type': 'application/x-www-form-urlencoded' },\n\n          success: function success(res) {\n            // console.log(res);\n            var ret = JSON.parse(res.data);\n            if (ret.code == '00000') {\n              commit(\"querySelpsn\", ret);\n              resolve(ret);\n            } else {\n              reject({ \"errMsg\": ret.msg });\n            }\n          },\n          fail: function fail(err) {\n            __f__(\"log\", err, \" at store/index.js:353\");\n            reject(err);\n          } });\n\n      });\n    },\n\n    ProjectGetAnalysisList: function ProjectGetAnalysisList(_ref8,\n\n\n    univerifyInfo) {var commit = _ref8.commit,state = _ref8.state;\n      return new Promise(function (resolve, reject) {\n        // console.log(state.url);\n        uni.request({\n          url: state.url + \"bpm/ProjectGetAnalysisList\",\n          data: univerifyInfo,\n          method: 'POST',\n          dataType: \"json\",\n          header: {\n            'content-type': 'application/x-www-form-urlencoded' },\n\n          success: function success(res) {\n            __f__(\"log\", res, \" at store/index.js:375\");\n            var ret = res.data;\n            if (ret.code == '00000') {\n              commit(\"ProjectGetAnalysisList\", ret);\n              resolve(ret);\n            } else {\n              reject({ \"errMsg\": ret.msg });\n            }\n          },\n          fail: function fail(err) {\n            __f__(\"log\", err, \" at store/index.js:385\");\n            reject(err);\n          } });\n\n      });\n    },\n\n    addclassattr: function addclassattr(_ref9,\n\n\n    univerifyInfo) {var commit = _ref9.commit,state = _ref9.state;\n      return new Promise(function (resolve, reject) {\n        // console.log(state.url);\n        uni.request({\n          url: state.url + \"workspace/addclassattr\",\n          data: univerifyInfo,\n          method: 'POST',\n          dataType: \"json\",\n          header: {\n            'content-type': 'application/x-www-form-urlencoded' },\n\n          success: function success(res) {\n            __f__(\"log\", res, \" at store/index.js:407\");\n            var ret = res.data;\n            if (ret.code == '00000') {\n              commit(\"addclassattr\", ret);\n              resolve(ret);\n            } else {\n              reject({ \"errMsg\": ret.msg });\n            }\n          },\n          fail: function fail(err) {\n            __f__(\"log\", err, \" at store/index.js:417\");\n            reject(err);\n          } });\n\n      });\n    } } });var _default =\n\n\n\n\nstore;exports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 13)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vc3RvcmUvaW5kZXguanMiXSwibmFtZXMiOlsiVnVlIiwidXNlIiwiVnVleCIsInN0b3JlIiwiU3RvcmUiLCJtb2R1bGVzIiwiYXBwIiwic3RhdGUiLCJoYXNMb2dpbiIsImxvZ2luUHJvdmlkZXIiLCJhcmVhRnVuYyIsInRoaXNhcmVhRnVuY0lEIiwidGhpc0VkaXROYW1lIiwidGhpc0RpY3ROYW1lIiwiX2NsYXNzQXR0ckxpc3QiLCJfY2xhc3NHcmlkU3R5bGVJbmZvIiwiX2RpY1ZhbHVlSW5mbyIsIkRhdGFPYmpSdW5DdXN0b21FdmVudEluZm8iLCJxdWVyeVNlbHBzbiIsIlByb2plY3RHZXRBbmFseXNpc0xpc3QiLCJhZGRjbGFzc2F0dHIiLCJ1c2VybmFtZSIsInVzZXJwd2QiLCJ1cmwiLCJtdXRhdGlvbnMiLCJzZXRVcmwiLCJsb2dpbiIsInByb3ZpZGVyIiwicmV0Iiwic2V0YXJlYUZ1bmNpZCIsImlkIiwic2V0ZWRpdE5hbWUiLCJlZGl0TmFtZSIsInNldERpY3ROYW1lIiwiZGljdE5hbWUiLCJjbGFzc0F0dHJMaXN0Iiwic2V0IiwiY2xhc3NHcmlkU3R5bGVJbmZvIiwiZGF0YSIsImRpY1ZhbHVlSW5mbyIsImxvZ291dCIsImdldHRlcnMiLCJsb2dpbmlkIiwiZ2V0VXJsIiwiZ2V0Y2xhc3NBdHRyTGlzdCIsImdldGNsYXNzR3JpZFN0eWxlSW5mbyIsImdldGRpY1ZhbHVlSW5mbyIsImFjdGlvbnMiLCJ1bml2ZXJpZnlJbmZvIiwiY29tbWl0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJzZXJ2ZXIiLCJ1bmFtZSIsInB3ZCIsImxlbmd0aCIsIm9wZW5pbmZvIiwidW5pIiwicmVxdWVzdCIsIm1ldGhvZCIsImRhdGFUeXBlIiwiaGVhZGVyIiwic3VjY2VzcyIsInJlcyIsImNvZGUiLCJtc2ciLCJmYWlsIiwiZXJyIiwiZGljX25hbWUiLCJKU09OIiwicGFyc2UiXSwibWFwcGluZ3MiOiJvSUFBQTtBQUNBOzs7QUFH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QyxrQkFBUSxFQUFDLE1BSkU7QUFLWEMsZ0JBQU0sRUFBRTtBQUNQLDRCQUFnQixtQ0FEVCxFQUxHOztBQVFYQyxpQkFBTyxFQUFFLGlCQUFDQyxHQUFELEVBQVM7QUFDakIseUJBQVlBLEdBQVo7QUFDQSxnQkFBTXBDLEdBQUcsR0FBR29DLEdBQUcsQ0FBQzFCLElBQWhCO0FBQ0EsZ0JBQUlWLEdBQUcsQ0FBQ3FDLElBQUosSUFBVSxPQUFkLEVBQXVCO0FBQ3RCaEIsb0JBQU0sQ0FBQyxjQUFELEVBQWdCckIsR0FBaEIsQ0FBTjtBQUNBdUIscUJBQU8sQ0FBQ3ZCLEdBQUQsQ0FBUDtBQUNBLGFBSEQsTUFHTztBQUNOd0Isb0JBQU0sQ0FBQyxFQUFDLFVBQVN4QixHQUFHLENBQUNzQyxHQUFkLEVBQUQsQ0FBTjtBQUNBO0FBQ0QsV0FqQlU7QUFrQlhDLGNBQUksRUFBRSxjQUFDQyxHQUFELEVBQVM7QUFDZCx5QkFBWUEsR0FBWjtBQUNBaEIsa0JBQU0sQ0FBQ2dCLEdBQUQsQ0FBTjtBQUNBLFdBckJVLEVBQVo7O0FBdUJBLE9BekJNLENBQVA7QUEwQkEsS0FoVU8sRUFoR21CLEVBQWYsQ0FBZCxDOzs7OztBQXFhZWpFLEsiLCJmaWxlIjoiNzguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVnVlIGZyb20gJ3Z1ZSdcclxuaW1wb3J0IFZ1ZXggZnJvbSAndnVleCdcclxuVnVlLnVzZShWdWV4KVxyXG5cclxuaW1wb3J0IGFwcCBmcm9tICcuL21vZHVsZXMvYXBwJ1xyXG5jb25zdCBzdG9yZSA9IG5ldyBWdWV4LlN0b3JlKHtcclxuXHRtb2R1bGVzOntcclxuXHRcdGFwcCxcclxuXHR9LFxyXG5cdHN0YXRlOiB7XHJcblx0XHRoYXNMb2dpbjogZmFsc2UsXHJcblx0XHRsb2dpblByb3ZpZGVyOiBcIlwiLFxyXG5cdFx0YXJlYUZ1bmM6JycsXHJcblx0XHR0aGlzYXJlYUZ1bmNJRDonJyxcclxuXHRcdHRoaXNFZGl0TmFtZTonJyxcclxuXHRcdHRoaXNEaWN0TmFtZTonJyxcclxuXHRcdF9jbGFzc0F0dHJMaXN0Ont9LFxyXG5cdFx0X2NsYXNzR3JpZFN0eWxlSW5mbzp7fSxcclxuXHRcdF9kaWNWYWx1ZUluZm86e30sXHJcblx0XHREYXRhT2JqUnVuQ3VzdG9tRXZlbnRJbmZvOicnLFxyXG5cdFx0cXVlcnlTZWxwc246JycsXHJcblx0XHRQcm9qZWN0R2V0QW5hbHlzaXNMaXN0OicnLFxyXG5cdFx0YWRkY2xhc3NhdHRyOicnLFxyXG5cdFx0dXNlcm5hbWU6XCJzYVwiLFxyXG5cdFx0dXNlcnB3ZDpcIjAwMDBcIixcclxuXHRcdHVybDpcIjM5LjEwMC4yMjQuMjExXCIgLy8xOTIuMTY4LjEuMTg0OjUyMDAgMzYuMzMuMjQuOTQ6NTIwMFxyXG5cdH0sXHJcblx0bXV0YXRpb25zOiB7XHJcblx0XHRzZXRVcmwoc3RhdGUsIHVybCkge1xyXG5cdFx0XHRzdGF0ZS51cmwgPSB1cmw7XHJcblx0XHR9LFxyXG5cdFx0bG9naW4oc3RhdGUsIHByb3ZpZGVyKSB7XHJcblx0XHRcdHN0YXRlLmhhc0xvZ2luID0gdHJ1ZTtcclxuXHRcdFx0c3RhdGUubG9naW5Qcm92aWRlciA9IHByb3ZpZGVyO1xyXG5cdFx0fSxcclxuXHRcdGFyZWFGdW5jKHN0YXRlLCByZXQpIHtcclxuXHRcdFx0c3RhdGUuYXJlYUZ1bmMgPSByZXQ7XHJcblx0XHR9LFxyXG5cdFx0c2V0YXJlYUZ1bmNpZChzdGF0ZSxpZCl7XHJcblx0XHRcdHN0YXRlLnRoaXNhcmVhRnVuY0lEPWlkO1xyXG5cdFx0fSxcclxuXHRcdHNldGVkaXROYW1lKHN0YXRlLGVkaXROYW1lKXtcclxuXHRcdFx0c3RhdGUudGhpc0VkaXROYW1lPWVkaXROYW1lO1xyXG5cdFx0fSxcclxuXHRcdHNldERpY3ROYW1lKHN0YXRlLGRpY3ROYW1lKXtcclxuXHRcdFx0c3RhdGUudGhpc0RpY3ROYW1lPWRpY3ROYW1lO1xyXG5cdFx0fSxcclxuXHRcdGNsYXNzQXR0ckxpc3Qoc3RhdGUsIHJldCkge1xyXG5cdFx0XHQvLyBzdGF0ZS5fY2xhc3NBdHRyTGlzdFtzdGF0ZS50aGlzYXJlYUZ1bmNJRF0gPSByZXQ7XHJcblx0XHRcdFZ1ZS5zZXQoc3RhdGUuX2NsYXNzQXR0ckxpc3Qsc3RhdGUudGhpc2FyZWFGdW5jSUQscmV0KTtcclxuXHRcdH0sXHJcblx0XHRjbGFzc0dyaWRTdHlsZUluZm8oc3RhdGUsIHJldCkge1xyXG5cdFx0XHQvLyBzdGF0ZS5fY2xhc3NHcmlkU3R5bGVJbmZvW3N0YXRlLnRoaXNhcmVhRnVuY0lEXSA9IHJldDtcclxuXHRcdFx0dmFyIGRhdGEgPSB7fTtcclxuXHRcdFx0aWYoc3RhdGUuX2NsYXNzR3JpZFN0eWxlSW5mb1tzdGF0ZS50aGlzYXJlYUZ1bmNJRF0pXHJcblx0XHRcdFx0ZGF0YSA9IHN0YXRlLl9jbGFzc0dyaWRTdHlsZUluZm9bc3RhdGUudGhpc2FyZWFGdW5jSURdO1xyXG5cdFx0XHRWdWUuc2V0KGRhdGEsc3RhdGUudGhpc0VkaXROYW1lLHJldCk7XHJcblx0XHRcdFZ1ZS5zZXQoc3RhdGUuX2NsYXNzR3JpZFN0eWxlSW5mbyxzdGF0ZS50aGlzYXJlYUZ1bmNJRCxkYXRhKTtcclxuXHRcdH0sXHJcblx0XHRkaWNWYWx1ZUluZm8oc3RhdGUsIHJldCkge1xyXG5cdFx0XHQvLyBzdGF0ZS5fZGljVmFsdWVJbmZvW3N0YXRlLnRoaXNhcmVhRnVuY0lEXSA9IHJldDtcclxuXHRcdFx0VnVlLnNldChzdGF0ZS5fZGljVmFsdWVJbmZvLHN0YXRlLnRoaXNEaWN0TmFtZSxyZXQpO1xyXG5cdFx0fSxcclxuXHRcdERhdGFPYmpSdW5DdXN0b21FdmVudEluZm8oc3RhdGUsIHJldCkge1xyXG5cdFx0XHRzdGF0ZS5EYXRhT2JqUnVuQ3VzdG9tRXZlbnRJbmZvID0gcmV0O1xyXG5cdFx0fSxcclxuXHRcdHF1ZXJ5U2VscHNuKHN0YXRlLCByZXQpIHtcclxuXHRcdFx0c3RhdGUucXVlcnlTZWxwc24gPSByZXQ7XHJcblx0XHR9LFxyXG5cdFx0UHJvamVjdEdldEFuYWx5c2lzTGlzdChzdGF0ZSwgcmV0KSB7XHJcblx0XHRcdHN0YXRlLlByb2plY3RHZXRBbmFseXNpc0xpc3QgPSByZXQ7XHJcblx0XHR9LFxyXG5cdFx0YWRkY2xhc3NhdHRyKHN0YXRlLCByZXQpIHtcclxuXHRcdFx0c3RhdGUuYWRkY2xhc3NhdHRyID0gcmV0O1xyXG5cdFx0fSxcclxuXHRcdGxvZ291dChzdGF0ZSkge1xyXG5cdFx0XHRzdGF0ZS5oYXNMb2dpbiA9IGZhbHNlXHJcblx0XHR9LFxyXG5cdH0sXHJcblx0Z2V0dGVyczoge1xyXG5cdFx0bG9naW5pZChzdGF0ZSkge1xyXG5cdFx0XHRyZXR1cm4gc3RhdGUubG9naW5Qcm92aWRlci5sb2dpbmlkXHJcblx0XHR9LFxyXG5cdFx0Z2V0VXJsKHN0YXRlKSB7XHJcblx0XHRcdHJldHVybiBzdGF0ZS51cmxcclxuXHRcdH0sXHJcblx0XHRnZXRjbGFzc0F0dHJMaXN0KHN0YXRlKXtcclxuXHRcdFx0cmV0dXJuIHN0YXRlLl9jbGFzc0F0dHJMaXN0W3N0YXRlLnRoaXNhcmVhRnVuY0lEXTtcclxuXHRcdH0sXHJcblx0XHRnZXRjbGFzc0dyaWRTdHlsZUluZm8oc3RhdGUpe1xyXG5cdFx0XHRpZihzdGF0ZS5fY2xhc3NHcmlkU3R5bGVJbmZvW3N0YXRlLnRoaXNhcmVhRnVuY0lEXSlcclxuXHRcdFx0XHRyZXR1cm4gc3RhdGUuX2NsYXNzR3JpZFN0eWxlSW5mb1tzdGF0ZS50aGlzYXJlYUZ1bmNJRF1bc3RhdGUudGhpc0VkaXROYW1lXTtcclxuXHRcdFx0ZWxzZSBcclxuXHRcdFx0XHRyZXR1cm4gXCJcIjtcclxuXHRcdH0sXHJcblx0XHRnZXRkaWNWYWx1ZUluZm8oc3RhdGUpe1xyXG5cdFx0XHRyZXR1cm4gc3RhdGUuX2RpY1ZhbHVlSW5mb1tzdGF0ZS50aGlzRGljdE5hbWVdO1xyXG5cdFx0fVxyXG5cdFx0XHJcblx0XHRcclxuXHR9LFxyXG5cdGFjdGlvbnM6IHtcclxuXHRcdC8ve2NvbW1pdH0g6Kej5p6E77yMXHJcblx0XHQvL3VuaXZlcmlmeUluZm8g6Ieq5a6a5LmJ5Y+C5pWwXHJcblx0XHRsb2dpbjogZnVuY3Rpb24oe1xyXG5cdFx0XHRjb21taXQsXHJcblx0XHRcdHN0YXRlXHJcblx0XHR9LCB1bml2ZXJpZnlJbmZvKSB7XHJcblx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdFx0dW5pdmVyaWZ5SW5mbyA9IHVuaXZlcmlmeUluZm8gfHwge307XHJcblx0XHRcdFx0dW5pdmVyaWZ5SW5mby5zZXJ2ZXIgPSB1bml2ZXJpZnlJbmZvLnNlcnZlciB8fCAnJztcclxuXHRcdFx0XHR1bml2ZXJpZnlJbmZvLnVuYW1lID0gdW5pdmVyaWZ5SW5mby51bmFtZSB8fCAnJztcclxuXHRcdFx0XHR1bml2ZXJpZnlJbmZvLnB3ZCA9IHVuaXZlcmlmeUluZm8ucHdkIHx8ICcnO1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKHVuaXZlcmlmeUluZm8pO1xyXG5cdFx0XHRcdGlmICh1bml2ZXJpZnlJbmZvLnNlcnZlci5sZW5ndGggPT0gMCkge1xyXG5cdFx0XHRcdFx0cmVqZWN0KHtcImVyck1zZ1wiOifmnI3liqHlmajlnLDlnYDkuI3og73kuLrnqbohJ30pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZiAodW5pdmVyaWZ5SW5mby51bmFtZS5sZW5ndGggPCAyKSB7XHJcblx0XHRcdFx0XHRyZWplY3Qoe1wiZXJyTXNnXCI6J+i0puWPt+acgOefreS4uiAyIOS4quWtl+espiEnfSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmICh1bml2ZXJpZnlJbmZvLnB3ZC5sZW5ndGggPCAxKSB7XHJcblx0XHRcdFx0XHRyZWplY3Qoe1wiZXJyTXNnXCI6J+WvhueggeacgOefreS4uiAx5Liq5a2X56ymISd9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dmFyIG9wZW5pbmZvID0gXCJodHRwOi8vXCIgKyB1bml2ZXJpZnlJbmZvLnNlcnZlciArIFwiL1wiOyAvLytcIi9PcmdXZWJTXCJcclxuXHRcdFx0XHQvL+iuvue9ruWFqOWxgOWPguaVsO+8mnVybC3mnI3liqHlmajlnLDlnYBcclxuXHRcdFx0XHRjb21taXQoXCJzZXRVcmxcIixvcGVuaW5mbyk7XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0Ly8gaWYgKHVuaXZlcmlmeUluZm8uc2VydmVyLnNwbGl0KCc6JykubGVuZ3RoIDwgMilcclxuXHRcdFx0XHQvLyBcdGNnaSA9IFwiaHR0cDovL1wiICsgdW5pdmVyaWZ5SW5mby5zZXJ2ZXIgKyBcIjo1MDEwXCI7IC8vL09yZ1dlYlNcclxuXHRcdFx0XHRcclxuXHRcdFx0XHQvLyBzZXRUaW1lb3V0KF89PntcclxuXHRcdFx0XHQvLyBcdHJlc29sdmUoXCIwMDAwMDAwMDAwMFwiKVxyXG5cdFx0XHRcdC8vIH0sMzAwMClcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhvcGVuaW5mbyArIFwiUERBL1NpZ25JblwiKTtcclxuXHRcdFx0XHR1bmkucmVxdWVzdCh7XHJcblx0XHRcdFx0XHR1cmw6IG9wZW5pbmZvICsgXCJQREEvU2lnbkluXCIsXHJcblx0XHRcdFx0XHRkYXRhOiB1bml2ZXJpZnlJbmZvLFxyXG5cdFx0XHRcdFx0bWV0aG9kOiAnUE9TVCcsXHJcblx0XHRcdFx0XHRkYXRhVHlwZTpcImpzb25cIixcclxuXHRcdFx0XHRcdGhlYWRlcjoge1xyXG5cdFx0XHRcdFx0ICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ1xyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChyZXMpID0+IHtcclxuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2cocmVzKTsgXHJcblx0XHRcdFx0XHRcdGNvbnN0IHJldCA9IHJlcy5kYXRhXHJcblx0XHRcdFx0XHRcdGlmIChyZXQuY29kZT09JzAwMDAwJykge1xyXG5cdFx0XHRcdFx0XHRcdGNvbW1pdChcImxvZ2luXCIscmV0KTtcclxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKHJldCk7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0cmVqZWN0KHtcImVyck1zZ1wiOnJldC5tc2d9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZXJyKTtcclxuXHRcdFx0XHRcdFx0cmVqZWN0KGVycik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSlcclxuXHRcdH0sXHJcblx0XHRcclxuXHRcdGFyZWFGdW5jOiBmdW5jdGlvbih7XHJcblx0XHRcdGNvbW1pdCxcclxuXHRcdFx0c3RhdGVcclxuXHRcdH0sIHVuaXZlcmlmeUluZm8pIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0XHQgLy8gY29uc29sZS5sb2coc3RhdGUudXJsKTtcclxuXHRcdFx0XHQgXHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiBzdGF0ZS51cmwgKyBcIlBEQS9QREFBcmVhXCIsXHJcblx0XHRcdFx0XHRkYXRhOiB1bml2ZXJpZnlJbmZvLFxyXG5cdFx0XHRcdFx0bWV0aG9kOiAnUE9TVCcsXHJcblx0XHRcdFx0XHRkYXRhVHlwZTpcImpzb25cIixcclxuXHRcdFx0XHRcdGhlYWRlcjoge1xyXG5cdFx0XHRcdFx0XHQnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRzdWNjZXNzOiAocmVzKSA9PiB7XHJcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHJlcyk7XHJcblx0XHRcdFx0XHRcdGNvbnN0IHJldCA9IHJlcy5kYXRhXHJcblx0XHRcdFx0XHRcdGlmIChyZXQuY29kZT09JzAwMDAwJykge1xyXG5cdFx0XHRcdFx0XHRcdGNvbW1pdChcImFyZWFGdW5jXCIscmV0KTtcclxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKHJldCk7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0cmVqZWN0KHtcImVyck1zZ1wiOnJldC5tc2d9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcclxuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXJyKTtcclxuXHRcdFx0XHRcdFx0cmVqZWN0KGVycik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSlcclxuXHRcdH0sXHJcblx0XHRcclxuXHRcdGNsYXNzQXR0ckxpc3Q6IGZ1bmN0aW9uKHtcclxuXHRcdFx0Y29tbWl0LFxyXG5cdFx0XHRzdGF0ZVxyXG5cdFx0fSwgdW5pdmVyaWZ5SW5mbykge1xyXG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHRcdCAvLyBjb25zb2xlLmxvZyhzdGF0ZS51cmwpO1xyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcclxuXHRcdFx0XHRcdHVybDogc3RhdGUudXJsICsgXCJQREEvUERBQXR0ckxpc3RcIixcclxuXHRcdFx0XHRcdGRhdGE6IHVuaXZlcmlmeUluZm8sXHJcblx0XHRcdFx0XHRtZXRob2Q6ICdQT1NUJyxcclxuXHRcdFx0XHRcdGRhdGFUeXBlOlwianNvblwiLFxyXG5cdFx0XHRcdFx0aGVhZGVyOiB7XHJcblx0XHRcdFx0XHRcdCdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ1xyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChyZXMpID0+IHtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2cocmVzKTtcclxuXHRcdFx0XHRcdFx0Y29uc3QgcmV0ID0gcmVzLmRhdGFcclxuXHRcdFx0XHRcdFx0aWYgKHJldC5jb2RlPT0nMDAwMDAnKSB7XHJcblx0XHRcdFx0XHRcdFx0Y29tbWl0KFwiY2xhc3NBdHRyTGlzdFwiLHJldCk7XHJcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShyZXQpO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdHJlamVjdCh7XCJlcnJNc2dcIjpyZXQubXNnfSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XHJcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKGVycik7XHJcblx0XHRcdFx0XHRcdHJlamVjdChlcnIpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0pXHJcblx0XHR9LFxyXG5cdFx0XHJcblx0XHRjbGFzc0dyaWRTdHlsZUluZm86IGZ1bmN0aW9uKHtcclxuXHRcdFx0Y29tbWl0LFxyXG5cdFx0XHRzdGF0ZVxyXG5cdFx0fSwgdW5pdmVyaWZ5SW5mbykge1xyXG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHRcdCAvLyBjb25zb2xlLmxvZyhzdGF0ZS51cmwpO1xyXG5cdFx0XHRcdCBcclxuXHRcdFx0XHR1bmkucmVxdWVzdCh7XHJcblx0XHRcdFx0XHR1cmw6IHN0YXRlLnVybCArIFwiUERBL1BEQUdyaWRTdHlsZUdldEluZm9cIixcclxuXHRcdFx0XHRcdGRhdGE6IHVuaXZlcmlmeUluZm8sXHJcblx0XHRcdFx0XHRtZXRob2Q6ICdQT1NUJyxcclxuXHRcdFx0XHRcdGRhdGFUeXBlOlwianNvblwiLFxyXG5cdFx0XHRcdFx0aGVhZGVyOiB7XHJcblx0XHRcdFx0XHRcdCdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ1xyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChyZXMpID0+IHtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2cocmVzKTtcclxuXHRcdFx0XHRcdFx0Y29uc3QgcmV0ID0gcmVzLmRhdGFcclxuXHRcdFx0XHRcdFx0aWYgKHJldC5jb2RlPT0nMDAwMDAnKSB7XHJcblx0XHRcdFx0XHRcdFx0Ly8gdmFyIGRhdGEgPXt9O1xyXG5cdFx0XHRcdFx0XHRcdC8vIFZ1ZS5zZXQoZGF0YSx1bml2ZXJpZnlJbmZvLm5hbWUscmV0KTtcclxuXHRcdFx0XHRcdFx0XHRjb21taXQoXCJjbGFzc0dyaWRTdHlsZUluZm9cIixyZXQpO1xyXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUocmV0KTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRyZWplY3Qoe1wiZXJyTXNnXCI6cmV0Lm1zZ30pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xyXG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhlcnIpO1xyXG5cdFx0XHRcdFx0XHRyZWplY3QoZXJyKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9KVxyXG5cdFx0fSxcclxuXHRcdFxyXG5cdFx0ZGljVmFsdWVJbmZvOiBmdW5jdGlvbih7XHJcblx0XHRcdGNvbW1pdCxcclxuXHRcdFx0c3RhdGVcclxuXHRcdH0sIHVuaXZlcmlmeUluZm8pIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0XHQgLy8gY29uc29sZS5sb2coc3RhdGUudXJsKTtcclxuXHRcdFx0XHQgXHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiBzdGF0ZS51cmwgKyBcIlBEQS9QREFEaWNWYWx1ZUdldEluZm9cIixcclxuXHRcdFx0XHRcdGRhdGE6IHVuaXZlcmlmeUluZm8sXHJcblx0XHRcdFx0XHRtZXRob2Q6ICdQT1NUJyxcclxuXHRcdFx0XHRcdGRhdGFUeXBlOlwianNvblwiLFxyXG5cdFx0XHRcdFx0aGVhZGVyOiB7XHJcblx0XHRcdFx0XHRcdCdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ1xyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChyZXMpID0+IHtcclxuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2cocmVzKTtcclxuXHRcdFx0XHRcdFx0Y29uc3QgcmV0ID0gcmVzLmRhdGFcclxuXHRcdFx0XHRcdFx0aWYgKHJldC5jb2RlPT0nMDAwMDAnKSB7XHJcblx0XHRcdFx0XHRcdFx0c3RhdGUudGhpc0RpY3ROYW1lID0gdW5pdmVyaWZ5SW5mby5kaWNfbmFtZVxyXG5cdFx0XHRcdFx0XHRcdGNvbW1pdChcImRpY1ZhbHVlSW5mb1wiLHJldCk7XHJcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShyZXQpO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdHJlamVjdCh7XCJlcnJNc2dcIjpyZXQubXNnfSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGVycik7XHJcblx0XHRcdFx0XHRcdHJlamVjdChlcnIpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0pXHJcblx0XHR9LFxyXG5cdFx0XHJcblx0XHREYXRhT2JqUnVuQ3VzdG9tRXZlbnRJbmZvOiBmdW5jdGlvbih7XHJcblx0XHRcdGNvbW1pdCxcclxuXHRcdFx0c3RhdGVcclxuXHRcdH0sIHVuaXZlcmlmeUluZm8pIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0XHQgLy8gY29uc29sZS5sb2coc3RhdGUudXJsKTtcclxuXHRcdFx0XHR1bmkucmVxdWVzdCh7XHJcblx0XHRcdFx0XHR1cmw6IHN0YXRlLnVybCArIFwiUERBL1BEQURhdGFPYmpSdW5DdXN0b21FdmVudFwiLFxyXG5cdFx0XHRcdFx0ZGF0YTogdW5pdmVyaWZ5SW5mbyxcclxuXHRcdFx0XHRcdG1ldGhvZDogJ1BPU1QnLFxyXG5cdFx0XHRcdFx0ZGF0YVR5cGU6XCJqc29uXCIsXHJcblx0XHRcdFx0XHRoZWFkZXI6IHtcclxuXHRcdFx0XHRcdFx0J2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0c3VjY2VzczogKHJlcykgPT4ge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhyZXMpO1xyXG5cdFx0XHRcdFx0XHRjb25zdCByZXQgPSByZXMuZGF0YVxyXG5cdFx0XHRcdFx0XHRpZiAocmV0LmNvZGU9PScwMDAwMCcpIHtcclxuXHRcdFx0XHRcdFx0XHRjb21taXQoXCJEYXRhT2JqUnVuQ3VzdG9tRXZlbnRJbmZvXCIscmV0KTtcclxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKHJldCk7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0cmVqZWN0KHtcImVyck1zZ1wiOnJldC5tc2d9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZXJyKTtcclxuXHRcdFx0XHRcdFx0cmVqZWN0KGVycik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSlcclxuXHRcdH0sXHJcblx0XHRcclxuXHRcdHF1ZXJ5U2VscHNuOiBmdW5jdGlvbih7XHJcblx0XHRcdGNvbW1pdCxcclxuXHRcdFx0c3RhdGVcclxuXHRcdH0sIHVuaXZlcmlmeUluZm8pIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0XHQgLy8gY29uc29sZS5sb2coc3RhdGUudXJsKTtcclxuXHRcdFx0XHR1bmkucmVxdWVzdCh7XHJcblx0XHRcdFx0XHR1cmw6IHN0YXRlLnVybCArIFwic2VscHNuL3F1ZXJ5anNvblwiLFxyXG5cdFx0XHRcdFx0ZGF0YTogdW5pdmVyaWZ5SW5mbyxcclxuXHRcdFx0XHRcdG1ldGhvZDogJ1BPU1QnLFxyXG5cdFx0XHRcdFx0ZGF0YVR5cGU6XCJqc29uXCIsXHJcblx0XHRcdFx0XHRoZWFkZXI6IHtcclxuXHRcdFx0XHRcdFx0J2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0c3VjY2VzczogKHJlcykgPT4ge1xyXG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhyZXMpO1xyXG5cdFx0XHRcdFx0XHRjb25zdCByZXQgPSBKU09OLnBhcnNlKHJlcy5kYXRhKTtcclxuXHRcdFx0XHRcdFx0aWYgKHJldC5jb2RlPT0nMDAwMDAnKSB7XHJcblx0XHRcdFx0XHRcdFx0Y29tbWl0KFwicXVlcnlTZWxwc25cIixyZXQpO1xyXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUocmV0KTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRyZWplY3Qoe1wiZXJyTXNnXCI6cmV0Lm1zZ30pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhlcnIpO1xyXG5cdFx0XHRcdFx0XHRyZWplY3QoZXJyKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9KVxyXG5cdFx0fSxcclxuXHRcdFxyXG5cdFx0UHJvamVjdEdldEFuYWx5c2lzTGlzdDogZnVuY3Rpb24oe1xyXG5cdFx0XHRjb21taXQsXHJcblx0XHRcdHN0YXRlXHJcblx0XHR9LCB1bml2ZXJpZnlJbmZvKSB7XHJcblx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdFx0IC8vIGNvbnNvbGUubG9nKHN0YXRlLnVybCk7XHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiBzdGF0ZS51cmwgKyBcImJwbS9Qcm9qZWN0R2V0QW5hbHlzaXNMaXN0XCIsXHJcblx0XHRcdFx0XHRkYXRhOiB1bml2ZXJpZnlJbmZvLFxyXG5cdFx0XHRcdFx0bWV0aG9kOiAnUE9TVCcsXHJcblx0XHRcdFx0XHRkYXRhVHlwZTpcImpzb25cIixcclxuXHRcdFx0XHRcdGhlYWRlcjoge1xyXG5cdFx0XHRcdFx0XHQnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRzdWNjZXNzOiAocmVzKSA9PiB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKHJlcyk7XHJcblx0XHRcdFx0XHRcdGNvbnN0IHJldCA9IHJlcy5kYXRhO1xyXG5cdFx0XHRcdFx0XHRpZiAocmV0LmNvZGU9PScwMDAwMCcpIHtcclxuXHRcdFx0XHRcdFx0XHRjb21taXQoXCJQcm9qZWN0R2V0QW5hbHlzaXNMaXN0XCIscmV0KTtcclxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKHJldCk7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0cmVqZWN0KHtcImVyck1zZ1wiOnJldC5tc2d9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZXJyKTtcclxuXHRcdFx0XHRcdFx0cmVqZWN0KGVycik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSlcclxuXHRcdH0sXHJcblx0XHRcclxuXHRcdGFkZGNsYXNzYXR0cjogZnVuY3Rpb24oe1xyXG5cdFx0XHRjb21taXQsXHJcblx0XHRcdHN0YXRlXHJcblx0XHR9LCB1bml2ZXJpZnlJbmZvKSB7XHJcblx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdFx0IC8vIGNvbnNvbGUubG9nKHN0YXRlLnVybCk7XHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiBzdGF0ZS51cmwgKyBcIndvcmtzcGFjZS9hZGRjbGFzc2F0dHJcIixcclxuXHRcdFx0XHRcdGRhdGE6IHVuaXZlcmlmeUluZm8sXHJcblx0XHRcdFx0XHRtZXRob2Q6ICdQT1NUJyxcclxuXHRcdFx0XHRcdGRhdGFUeXBlOlwianNvblwiLFxyXG5cdFx0XHRcdFx0aGVhZGVyOiB7XHJcblx0XHRcdFx0XHRcdCdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ1xyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChyZXMpID0+IHtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2cocmVzKTtcclxuXHRcdFx0XHRcdFx0Y29uc3QgcmV0ID0gcmVzLmRhdGE7XHJcblx0XHRcdFx0XHRcdGlmIChyZXQuY29kZT09JzAwMDAwJykge1xyXG5cdFx0XHRcdFx0XHRcdGNvbW1pdChcImFkZGNsYXNzYXR0clwiLHJldCk7XHJcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShyZXQpO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdHJlamVjdCh7XCJlcnJNc2dcIjpyZXQubXNnfSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGVycik7XHJcblx0XHRcdFx0XHRcdHJlamVjdChlcnIpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0pXHJcblx0XHR9XHJcblx0XHRcclxuXHR9XHJcbn0pXHJcblxyXG5leHBvcnQgZGVmYXVsdCBzdG9yZVxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///78\n");
+eval("/* WEBPACK VAR INJECTION */(function(__f__) {Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0;var _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 74));\nvar _vuex = _interopRequireDefault(__webpack_require__(/*! vuex */ 79));\n\n\nvar _app = _interopRequireDefault(__webpack_require__(/*! ./modules/app */ 80));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}_vue.default.use(_vuex.default);\nvar store = new _vuex.default.Store({\n  modules: {\n    app: _app.default },\n\n  state: {\n    hasLogin: false,\n    loginProvider: \"\",\n    areaFunc: '',\n    thisareaFuncID: '',\n    thisEditName: '',\n    thisDictName: '',\n    _classAttrList: {},\n    _classGridStyleInfo: {},\n    _dicValueInfo: {},\n    DataObjRunCustomEventInfo: '',\n    querySelpsn: '',\n    ProjectGetAnalysisList: '',\n    addclassattr: '',\n    username: \"sa\",\n    userpwd: \"0000\",\n    url: \"39.100.224.211\" //192.168.1.184:5200 36.33.24.94:5200\n  },\n  mutations: {\n    setUrl: function setUrl(state, url) {\n      state.url = url;\n    },\n    login: function login(state, provider) {\n      state.hasLogin = true;\n      state.loginProvider = provider;\n    },\n    areaFunc: function areaFunc(state, ret) {\n      state.areaFunc = ret;\n    },\n    setareaFuncid: function setareaFuncid(state, id) {\n      state.thisareaFuncID = id;\n    },\n    seteditName: function seteditName(state, editName) {\n      state.thisEditName = editName;\n    },\n    setDictName: function setDictName(state, dictName) {\n      state.thisDictName = dictName;\n    },\n    classAttrList: function classAttrList(state, ret) {\n      // state._classAttrList[state.thisareaFuncID] = ret;\n      _vue.default.set(state._classAttrList, state.thisareaFuncID, ret);\n    },\n    classGridStyleInfo: function classGridStyleInfo(state, ret) {\n      // state._classGridStyleInfo[state.thisareaFuncID] = ret;\n      var data = {};\n      if (state._classGridStyleInfo[state.thisareaFuncID])\n      data = state._classGridStyleInfo[state.thisareaFuncID];\n      _vue.default.set(data, state.thisEditName, ret);\n      _vue.default.set(state._classGridStyleInfo, state.thisareaFuncID, data);\n    },\n    dicValueInfo: function dicValueInfo(state, ret) {\n      // state._dicValueInfo[state.thisareaFuncID] = ret;\n      _vue.default.set(state._dicValueInfo, state.thisDictName, ret);\n    },\n    DataObjRunCustomEventInfo: function DataObjRunCustomEventInfo(state, ret) {\n      state.DataObjRunCustomEventInfo = ret;\n    },\n    querySelpsn: function querySelpsn(state, ret) {\n      state.querySelpsn = ret;\n    },\n    ProjectGetAnalysisList: function ProjectGetAnalysisList(state, ret) {\n      state.ProjectGetAnalysisList = ret;\n    },\n    addclassattr: function addclassattr(state, ret) {\n      state.addclassattr = ret;\n    },\n    logout: function logout(state) {\n      state.hasLogin = false;\n    } },\n\n  getters: {\n    loginid: function loginid(state) {\n      return state.loginProvider.loginid;\n    },\n    getUrl: function getUrl(state) {\n      return state.url;\n    },\n    getclassAttrList: function getclassAttrList(state) {\n      return state._classAttrList[state.thisareaFuncID];\n    },\n    getclassGridStyleInfo: function getclassGridStyleInfo(state) {\n      if (state._classGridStyleInfo[state.thisareaFuncID])\n      return state._classGridStyleInfo[state.thisareaFuncID][state.thisEditName];else\n\n      return \"\";\n    },\n    getdicValueInfo: function getdicValueInfo(state) {\n      return state._dicValueInfo[state.thisDictName];\n    } },\n\n\n\n  actions: {\n    //{commit} 瑙f瀯锛孿n    //univerifyInfo 鑷畾涔夊弬鏁癨n    login: function login(_ref,\n\n\n    univerifyInfo) {var commit = _ref.commit,state = _ref.state;\n      return new Promise(function (resolve, reject) {\n        univerifyInfo = univerifyInfo || {};\n        univerifyInfo.server = univerifyInfo.server || '';\n        univerifyInfo.uname = univerifyInfo.uname || '';\n        univerifyInfo.pwd = univerifyInfo.pwd || '';\n        // console.log(univerifyInfo);\n        if (univerifyInfo.server.length == 0) {\n          reject({ \"errMsg\": '鏈嶅姟鍣ㄥ湴鍧�笉鑳戒负绌�' });\n        }\n        if (univerifyInfo.uname.length < 2) {\n          reject({ \"errMsg\": '璐﹀彿鏈�煭涓�2 涓瓧绗�' });\n        }\n        if (univerifyInfo.pwd.length < 1) {\n          reject({ \"errMsg\": '瀵嗙爜鏈�煭涓�1涓瓧绗�' });\n        }\n        var openinfo = \"http://\" + univerifyInfo.server + \"/\"; //+\"/OrgWebS\"\n        //璁剧疆鍏ㄥ眬鍙傛暟锛歶rl-鏈嶅姟鍣ㄥ湴鍧�n        commit(\"setUrl\", openinfo);\n\n        // if (univerifyInfo.server.split(':').length < 2)\n        // \tcgi = \"http://\" + univerifyInfo.server + \":5010\"; ///OrgWebS\n\n        // setTimeout(_=>{\n        // \tresolve(\"00000000000\")\n        // },3000)\n        // console.log(openinfo + \"PDA/SignIn\");\n        uni.request({\n          url: openinfo + \"PDA/SignIn\",\n          data: univerifyInfo,\n          method: 'POST',\n          dataType: \"json\",\n          header: {\n            'content-type': 'application/x-www-form-urlencoded' },\n\n          success: function success(res) {\n            // console.log(res); \n            var ret = res.data;\n            if (ret.code == '00000') {\n              commit(\"login\", ret);\n              resolve(ret);\n            } else {\n              reject({ \"errMsg\": ret.msg });\n            }\n          },\n          fail: function fail(err) {\n            __f__(\"log\", err, \" at store/index.js:154\");\n            reject(err);\n          } });\n\n      });\n    },\n\n    areaFunc: function areaFunc(_ref2,\n\n\n    univerifyInfo) {var commit = _ref2.commit,state = _ref2.state;\n      return new Promise(function (resolve, reject) {\n        // console.log(state.url);\n\n        uni.request({\n          url: state.url + \"PDA/PDAArea\",\n          data: univerifyInfo,\n          method: 'POST',\n          dataType: \"json\",\n          header: {\n            'content-type': 'application/x-www-form-urlencoded' },\n\n          success: function success(res) {\n            // console.log(res);\n            var ret = res.data;\n            if (ret.code == '00000') {\n              commit(\"areaFunc\", ret);\n              resolve(ret);\n            } else {\n              reject({ \"errMsg\": ret.msg });\n            }\n          },\n          fail: function fail(err) {\n            // console.log(err);\n            reject(err);\n          } });\n\n      });\n    },\n\n    classAttrList: function classAttrList(_ref3,\n\n\n    univerifyInfo) {var commit = _ref3.commit,state = _ref3.state;\n      return new Promise(function (resolve, reject) {\n        // console.log(state.url);\n\n        uni.request({\n          url: state.url + \"PDA/PDAAttrList\",\n          data: univerifyInfo,\n          method: 'POST',\n          dataType: \"json\",\n          header: {\n            'content-type': 'application/x-www-form-urlencoded' },\n\n          success: function success(res) {\n            __f__(\"log\", res, \" at store/index.js:210\");\n            var ret = res.data;\n            if (ret.code == '00000') {\n              commit(\"classAttrList\", ret);\n              resolve(ret);\n            } else {\n              reject({ \"errMsg\": ret.msg });\n            }\n          },\n          fail: function fail(err) {\n            // console.log(err);\n            reject(err);\n          } });\n\n      });\n    },\n\n    classGridStyleInfo: function classGridStyleInfo(_ref4,\n\n\n    univerifyInfo) {var commit = _ref4.commit,state = _ref4.state;\n      return new Promise(function (resolve, reject) {\n        // console.log(state.url);\n\n        uni.request({\n          url: state.url + \"PDA/PDAGridStyleGetInfo\",\n          data: univerifyInfo,\n          method: 'POST',\n          dataType: \"json\",\n          header: {\n            'content-type': 'application/x-www-form-urlencoded' },\n\n          success: function success(res) {\n            __f__(\"log\", res, \" at store/index.js:243\");\n            var ret = res.data;\n            if (ret.code == '00000') {\n              // var data ={};\n              // Vue.set(data,univerifyInfo.name,ret);\n              commit(\"classGridStyleInfo\", ret);\n              resolve(ret);\n            } else {\n              reject({ \"errMsg\": ret.msg });\n            }\n          },\n          fail: function fail(err) {\n            // console.log(err);\n            reject(err);\n          } });\n\n      });\n    },\n\n    dicValueInfo: function dicValueInfo(_ref5,\n\n\n    univerifyInfo) {var commit = _ref5.commit,state = _ref5.state;\n      return new Promise(function (resolve, reject) {\n        // console.log(state.url);\n\n        uni.request({\n          url: state.url + \"PDA/PDADicValueGetInfo\",\n          data: univerifyInfo,\n          method: 'POST',\n          dataType: \"json\",\n          header: {\n            'content-type': 'application/x-www-form-urlencoded' },\n\n          success: function success(res) {\n            // console.log(res);\n            var ret = res.data;\n            if (ret.code == '00000') {\n              state.thisDictName = univerifyInfo.dic_name;\n              commit(\"dicValueInfo\", ret);\n              resolve(ret);\n            } else {\n              reject({ \"errMsg\": ret.msg });\n            }\n          },\n          fail: function fail(err) {\n            __f__(\"log\", err, \" at store/index.js:289\");\n            reject(err);\n          } });\n\n      });\n    },\n\n    DataObjRunCustomEventInfo: function DataObjRunCustomEventInfo(_ref6,\n\n\n    univerifyInfo) {var commit = _ref6.commit,state = _ref6.state;\n      return new Promise(function (resolve, reject) {\n        // console.log(state.url);\n        uni.request({\n          url: state.url + \"PDA/PDADataObjRunCustomEvent\",\n          data: univerifyInfo,\n          method: 'POST',\n          dataType: \"json\",\n          header: {\n            'content-type': 'application/x-www-form-urlencoded' },\n\n          success: function success(res) {\n            __f__(\"log\", res, \" at store/index.js:311\");\n            var ret = res.data;\n            if (ret.code == '00000') {\n              commit(\"DataObjRunCustomEventInfo\", ret);\n              resolve(ret);\n            } else {\n              reject({ \"errMsg\": ret.msg });\n            }\n          },\n          fail: function fail(err) {\n            __f__(\"log\", err, \" at store/index.js:321\");\n            reject(err);\n          } });\n\n      });\n    },\n\n    querySelpsn: function querySelpsn(_ref7,\n\n\n    univerifyInfo) {var commit = _ref7.commit,state = _ref7.state;\n      return new Promise(function (resolve, reject) {\n        // console.log(state.url);\n        uni.request({\n          url: state.url + \"selpsn/queryjson\",\n          data: univerifyInfo,\n          method: 'POST',\n          dataType: \"json\",\n          header: {\n            'content-type': 'application/x-www-form-urlencoded' },\n\n          success: function success(res) {\n            // console.log(res);\n            var ret = JSON.parse(res.data);\n            if (ret.code == '00000') {\n              commit(\"querySelpsn\", ret);\n              resolve(ret);\n            } else {\n              reject({ \"errMsg\": ret.msg });\n            }\n          },\n          fail: function fail(err) {\n            __f__(\"log\", err, \" at store/index.js:353\");\n            reject(err);\n          } });\n\n      });\n    },\n\n    ProjectGetAnalysisList: function ProjectGetAnalysisList(_ref8,\n\n\n    univerifyInfo) {var commit = _ref8.commit,state = _ref8.state;\n      return new Promise(function (resolve, reject) {\n        // console.log(state.url);\n        uni.request({\n          url: state.url + \"bpm/ProjectGetAnalysisList\",\n          data: univerifyInfo,\n          method: 'POST',\n          dataType: \"json\",\n          header: {\n            'content-type': 'application/x-www-form-urlencoded' },\n\n          success: function success(res) {\n            __f__(\"log\", res, \" at store/index.js:375\");\n            var ret = res.data;\n            if (ret.code == '00000') {\n              commit(\"ProjectGetAnalysisList\", ret);\n              resolve(ret);\n            } else {\n              reject({ \"errMsg\": ret.msg });\n            }\n          },\n          fail: function fail(err) {\n            __f__(\"log\", err, \" at store/index.js:385\");\n            reject(err);\n          } });\n\n      });\n    },\n\n    addclassattr: function addclassattr(_ref9,\n\n\n    univerifyInfo) {var commit = _ref9.commit,state = _ref9.state;\n      return new Promise(function (resolve, reject) {\n        // console.log(state.url);\n        uni.request({\n          url: state.url + \"workspace/addclassattr\",\n          data: univerifyInfo,\n          method: 'POST',\n          dataType: \"json\",\n          header: {\n            'content-type': 'application/x-www-form-urlencoded' },\n\n          success: function success(res) {\n            __f__(\"log\", res, \" at store/index.js:407\");\n            var ret = res.data;\n            if (ret.code == '00000') {\n              commit(\"addclassattr\", ret);\n              resolve(ret);\n            } else {\n              reject({ \"errMsg\": JSON.stringify(ret) });\n            }\n          },\n          fail: function fail(err) {\n            __f__(\"log\", err, \" at store/index.js:417\");\n            reject(err);\n          } });\n\n      });\n    } } });var _default =\n\n\n\n\nstore;exports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 13)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vc3RvcmUvaW5kZXguanMiXSwibmFtZXMiOlsiVnVlIiwidXNlIiwiVnVleCIsInN0b3JlIiwiU3RvcmUiLCJtb2R1bGVzIiwiYXBwIiwic3RhdGUiLCJoYXNMb2dpbiIsImxvZ2luUHJvdmlkZXIiLCJhcmVhRnVuYyIsInRoaXNhcmVhRnVuY0lEIiwidGhpc0VkaXROYW1lIiwidGhpc0RpY3ROYW1lIiwiX2NsYXNzQXR0ckxpc3QiLCJfY2xhc3NHcmlkU3R5bGVJbmZvIiwiX2RpY1ZhbHVlSW5mbyIsIkRhdGFPYmpSdW5DdXN0b21FdmVudEluZm8iLCJxdWVyeVNlbHBzbiIsIlByb2plY3RHZXRBbmFseXNpc0xpc3QiLCJhZGRjbGFzc2F0dHIiLCJ1c2VybmFtZSIsInVzZXJwd2QiLCJ1cmwiLCJtdXRhdGlvbnMiLCJzZXRVcmwiLCJsb2dpbiIsInByb3ZpZGVyIiwicmV0Iiwic2V0YXJlYUZ1bmNpZCIsImlkIiwic2V0ZWRpdE5hbWUiLCJlZGl0TmFtZSIsInNldERpY3ROYW1lIiwiZGljdE5hbWUiLCJjbGFzc0F0dHJMaXN0Iiwic2V0IiwiY2xhc3NHcmlkU3R5bGVJbmZvIiwiZGF0YSIsImRpY1ZhbHVlSW5mbyIsImxvZ291dCIsImdldHRlcnMiLCJsb2dpbmlkIiwiZ2V0VXJsIiwiZ2V0Y2xhc3NBdHRyTGlzdCIsImdldGNsYXNzR3JpZFN0eWxlSW5mbyIsImdldGRpY1ZhbHVlSW5mbyIsImFjdGlvbnMiLCJ1bml2ZXJpZnlJbmZvIiwiY29tbWl0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJzZXJ2ZXIiLCJ1bmFtZSIsInB3ZCIsImxlbmd0aCIsIm9wZW5pbmZvIiwidW5pIiwicmVxdWVzdCIsIm1ldGhvZCIsImRhdGFUeXBlIiwiaGVhZGVyIiwic3VjY2VzcyIsInJlcyIsImNvZGUiLCJtc2ciLCJmYWlsIiwiZXJyIiwiZGljX25hbWUiLCJKU09OIiwicGFyc2UiLCJzdHJpbmdpZnkiXSwibWFwcGluZ3MiOiJvSUFB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QUUsTUFIRztBQUlYQyxrQkFBUSxFQUFDLE1BSkU7QUFLWEMsZ0JBQU0sRUFBRTtBQUNQLDRCQUFnQixtQ0FEVCxFQUxHOztBQVFYQyxpQkFBTyxFQUFFLGlCQUFDQyxHQUFELEVBQVM7QUFDakIseUJBQVlBLEdBQVo7QUFDQSxnQkFBTXBDLEdBQUcsR0FBR29DLEdBQUcsQ0FBQzFCLElBQWhCO0FBQ0EsZ0JBQUlWLEdBQUcsQ0FBQ3FDLElBQUosSUFBVSxPQUFkLEVBQXVCO0FBQ3RCaEIsb0JBQU0sQ0FBQyxjQUFELEVBQWdCckIsR0FBaEIsQ0FBTjtBQUNBdUIscUJBQU8sQ0FBQ3ZCLEdBQUQsQ0FBUDtBQUNBLGFBSEQsTUFHTztBQUNOd0Isb0JBQU0sQ0FBQyxFQUFDLFVBQVNrQixJQUFJLENBQUNFLFNBQUwsQ0FBZTVDLEdBQWYsQ0FBVixFQUFELENBQU47QUFDQTtBQUNELFdBakJVO0FBa0JYdUMsY0FBSSxFQUFFLGNBQUNDLEdBQUQsRUFBUztBQUNkLHlCQUFZQSxHQUFaO0FBQ0FoQixrQkFBTSxDQUFDZ0IsR0FBRCxDQUFOO0FBQ0EsV0FyQlUsRUFBWjs7QUF1QkEsT0F6Qk0sQ0FBUDtBQTBCQSxLQWhVTyxFQWhHbUIsRUFBZixDQUFkLEM7Ozs7O0FBcWFlakUsSyIsImZpbGUiOiI3OC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWdWUgZnJvbSAndnVlJ1xyXG5pbXBvcnQgVnVleCBmcm9tICd2dWV4J1xyXG5WdWUudXNlKFZ1ZXgpXHJcblxyXG5pbXBvcnQgYXBwIGZyb20gJy4vbW9kdWxlcy9hcHAnXHJcbmNvbnN0IHN0b3JlID0gbmV3IFZ1ZXguU3RvcmUoe1xyXG5cdG1vZHVsZXM6e1xyXG5cdFx0YXBwLFxyXG5cdH0sXHJcblx0c3RhdGU6IHtcclxuXHRcdGhhc0xvZ2luOiBmYWxzZSxcclxuXHRcdGxvZ2luUHJvdmlkZXI6IFwiXCIsXHJcblx0XHRhcmVhRnVuYzonJyxcclxuXHRcdHRoaXNhcmVhRnVuY0lEOicnLFxyXG5cdFx0dGhpc0VkaXROYW1lOicnLFxyXG5cdFx0dGhpc0RpY3ROYW1lOicnLFxyXG5cdFx0X2NsYXNzQXR0ckxpc3Q6e30sXHJcblx0XHRfY2xhc3NHcmlkU3R5bGVJbmZvOnt9LFxyXG5cdFx0X2RpY1ZhbHVlSW5mbzp7fSxcclxuXHRcdERhdGFPYmpSdW5DdXN0b21FdmVudEluZm86JycsXHJcblx0XHRxdWVyeVNlbHBzbjonJyxcclxuXHRcdFByb2plY3RHZXRBbmFseXNpc0xpc3Q6JycsXHJcblx0XHRhZGRjbGFzc2F0dHI6JycsXHJcblx0XHR1c2VybmFtZTpcInNhXCIsXHJcblx0XHR1c2VycHdkOlwiMDAwMFwiLFxyXG5cdFx0dXJsOlwiMzkuMTAwLjIyNC4yMTFcIiAvLzE5Mi4xNjguMS4xODQ6NTIwMCAzNi4zMy4yNC45NDo1MjAwXHJcblx0fSxcclxuXHRtdXRhdGlvbnM6IHtcclxuXHRcdHNldFVybChzdGF0ZSwgdXJsKSB7XHJcblx0XHRcdHN0YXRlLnVybCA9IHVybDtcclxuXHRcdH0sXHJcblx0XHRsb2dpbihzdGF0ZSwgcHJvdmlkZXIpIHtcclxuXHRcdFx0c3RhdGUuaGFzTG9naW4gPSB0cnVlO1xyXG5cdFx0XHRzdGF0ZS5sb2dpblByb3ZpZGVyID0gcHJvdmlkZXI7XHJcblx0XHR9LFxyXG5cdFx0YXJlYUZ1bmMoc3RhdGUsIHJldCkge1xyXG5cdFx0XHRzdGF0ZS5hcmVhRnVuYyA9IHJldDtcclxuXHRcdH0sXHJcblx0XHRzZXRhcmVhRnVuY2lkKHN0YXRlLGlkKXtcclxuXHRcdFx0c3RhdGUudGhpc2FyZWFGdW5jSUQ9aWQ7XHJcblx0XHR9LFxyXG5cdFx0c2V0ZWRpdE5hbWUoc3RhdGUsZWRpdE5hbWUpe1xyXG5cdFx0XHRzdGF0ZS50aGlzRWRpdE5hbWU9ZWRpdE5hbWU7XHJcblx0XHR9LFxyXG5cdFx0c2V0RGljdE5hbWUoc3RhdGUsZGljdE5hbWUpe1xyXG5cdFx0XHRzdGF0ZS50aGlzRGljdE5hbWU9ZGljdE5hbWU7XHJcblx0XHR9LFxyXG5cdFx0Y2xhc3NBdHRyTGlzdChzdGF0ZSwgcmV0KSB7XHJcblx0XHRcdC8vIHN0YXRlLl9jbGFzc0F0dHJMaXN0W3N0YXRlLnRoaXNhcmVhRnVuY0lEXSA9IHJldDtcclxuXHRcdFx0VnVlLnNldChzdGF0ZS5fY2xhc3NBdHRyTGlzdCxzdGF0ZS50aGlzYXJlYUZ1bmNJRCxyZXQpO1xyXG5cdFx0fSxcclxuXHRcdGNsYXNzR3JpZFN0eWxlSW5mbyhzdGF0ZSwgcmV0KSB7XHJcblx0XHRcdC8vIHN0YXRlLl9jbGFzc0dyaWRTdHlsZUluZm9bc3RhdGUudGhpc2FyZWFGdW5jSURdID0gcmV0O1xyXG5cdFx0XHR2YXIgZGF0YSA9IHt9O1xyXG5cdFx0XHRpZihzdGF0ZS5fY2xhc3NHcmlkU3R5bGVJbmZvW3N0YXRlLnRoaXNhcmVhRnVuY0lEXSlcclxuXHRcdFx0XHRkYXRhID0gc3RhdGUuX2NsYXNzR3JpZFN0eWxlSW5mb1tzdGF0ZS50aGlzYXJlYUZ1bmNJRF07XHJcblx0XHRcdFZ1ZS5zZXQoZGF0YSxzdGF0ZS50aGlzRWRpdE5hbWUscmV0KTtcclxuXHRcdFx0VnVlLnNldChzdGF0ZS5fY2xhc3NHcmlkU3R5bGVJbmZvLHN0YXRlLnRoaXNhcmVhRnVuY0lELGRhdGEpO1xyXG5cdFx0fSxcclxuXHRcdGRpY1ZhbHVlSW5mbyhzdGF0ZSwgcmV0KSB7XHJcblx0XHRcdC8vIHN0YXRlLl9kaWNWYWx1ZUluZm9bc3RhdGUudGhpc2FyZWFGdW5jSURdID0gcmV0O1xyXG5cdFx0XHRWdWUuc2V0KHN0YXRlLl9kaWNWYWx1ZUluZm8sc3RhdGUudGhpc0RpY3ROYW1lLHJldCk7XHJcblx0XHR9LFxyXG5cdFx0RGF0YU9ialJ1bkN1c3RvbUV2ZW50SW5mbyhzdGF0ZSwgcmV0KSB7XHJcblx0XHRcdHN0YXRlLkRhdGFPYmpSdW5DdXN0b21FdmVudEluZm8gPSByZXQ7XHJcblx0XHR9LFxyXG5cdFx0cXVlcnlTZWxwc24oc3RhdGUsIHJldCkge1xyXG5cdFx0XHRzdGF0ZS5xdWVyeVNlbHBzbiA9IHJldDtcclxuXHRcdH0sXHJcblx0XHRQcm9qZWN0R2V0QW5hbHlzaXNMaXN0KHN0YXRlLCByZXQpIHtcclxuXHRcdFx0c3RhdGUuUHJvamVjdEdldEFuYWx5c2lzTGlzdCA9IHJldDtcclxuXHRcdH0sXHJcblx0XHRhZGRjbGFzc2F0dHIoc3RhdGUsIHJldCkge1xyXG5cdFx0XHRzdGF0ZS5hZGRjbGFzc2F0dHIgPSByZXQ7XHJcblx0XHR9LFxyXG5cdFx0bG9nb3V0KHN0YXRlKSB7XHJcblx0XHRcdHN0YXRlLmhhc0xvZ2luID0gZmFsc2VcclxuXHRcdH0sXHJcblx0fSxcclxuXHRnZXR0ZXJzOiB7XHJcblx0XHRsb2dpbmlkKHN0YXRlKSB7XHJcblx0XHRcdHJldHVybiBzdGF0ZS5sb2dpblByb3ZpZGVyLmxvZ2luaWRcclxuXHRcdH0sXHJcblx0XHRnZXRVcmwoc3RhdGUpIHtcclxuXHRcdFx0cmV0dXJuIHN0YXRlLnVybFxyXG5cdFx0fSxcclxuXHRcdGdldGNsYXNzQXR0ckxpc3Qoc3RhdGUpe1xyXG5cdFx0XHRyZXR1cm4gc3RhdGUuX2NsYXNzQXR0ckxpc3Rbc3RhdGUudGhpc2FyZWFGdW5jSURdO1xyXG5cdFx0fSxcclxuXHRcdGdldGNsYXNzR3JpZFN0eWxlSW5mbyhzdGF0ZSl7XHJcblx0XHRcdGlmKHN0YXRlLl9jbGFzc0dyaWRTdHlsZUluZm9bc3RhdGUudGhpc2FyZWFGdW5jSURdKVxyXG5cdFx0XHRcdHJldHVybiBzdGF0ZS5fY2xhc3NHcmlkU3R5bGVJbmZvW3N0YXRlLnRoaXNhcmVhRnVuY0lEXVtzdGF0ZS50aGlzRWRpdE5hbWVdO1xyXG5cdFx0XHRlbHNlIFxyXG5cdFx0XHRcdHJldHVybiBcIlwiO1xyXG5cdFx0fSxcclxuXHRcdGdldGRpY1ZhbHVlSW5mbyhzdGF0ZSl7XHJcblx0XHRcdHJldHVybiBzdGF0ZS5fZGljVmFsdWVJbmZvW3N0YXRlLnRoaXNEaWN0TmFtZV07XHJcblx0XHR9XHJcblx0XHRcclxuXHRcdFxyXG5cdH0sXHJcblx0YWN0aW9uczoge1xyXG5cdFx0Ly97Y29tbWl0fSDop6PmnoTvvIxcclxuXHRcdC8vdW5pdmVyaWZ5SW5mbyDoh6rlrprkuYnlj4LmlbBcclxuXHRcdGxvZ2luOiBmdW5jdGlvbih7XHJcblx0XHRcdGNvbW1pdCxcclxuXHRcdFx0c3RhdGVcclxuXHRcdH0sIHVuaXZlcmlmeUluZm8pIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0XHR1bml2ZXJpZnlJbmZvID0gdW5pdmVyaWZ5SW5mbyB8fCB7fTtcclxuXHRcdFx0XHR1bml2ZXJpZnlJbmZvLnNlcnZlciA9IHVuaXZlcmlmeUluZm8uc2VydmVyIHx8ICcnO1xyXG5cdFx0XHRcdHVuaXZlcmlmeUluZm8udW5hbWUgPSB1bml2ZXJpZnlJbmZvLnVuYW1lIHx8ICcnO1xyXG5cdFx0XHRcdHVuaXZlcmlmeUluZm8ucHdkID0gdW5pdmVyaWZ5SW5mby5wd2QgfHwgJyc7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2codW5pdmVyaWZ5SW5mbyk7XHJcblx0XHRcdFx0aWYgKHVuaXZlcmlmeUluZm8uc2VydmVyLmxlbmd0aCA9PSAwKSB7XHJcblx0XHRcdFx0XHRyZWplY3Qoe1wiZXJyTXNnXCI6J+acjeWKoeWZqOWcsOWdgOS4jeiDveS4uuepuiEnfSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmICh1bml2ZXJpZnlJbmZvLnVuYW1lLmxlbmd0aCA8IDIpIHtcclxuXHRcdFx0XHRcdHJlamVjdCh7XCJlcnJNc2dcIjon6LSm5Y+35pyA55+t5Li6IDIg5Liq5a2X56ymISd9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYgKHVuaXZlcmlmeUluZm8ucHdkLmxlbmd0aCA8IDEpIHtcclxuXHRcdFx0XHRcdHJlamVjdCh7XCJlcnJNc2dcIjon5a+G56CB5pyA55+t5Li6IDHkuKrlrZfnrKYhJ30pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR2YXIgb3BlbmluZm8gPSBcImh0dHA6Ly9cIiArIHVuaXZlcmlmeUluZm8uc2VydmVyICsgXCIvXCI7IC8vK1wiL09yZ1dlYlNcIlxyXG5cdFx0XHRcdC8v6K6+572u5YWo5bGA5Y+C5pWw77yadXJsLeacjeWKoeWZqOWcsOWdgFxyXG5cdFx0XHRcdGNvbW1pdChcInNldFVybFwiLG9wZW5pbmZvKTtcclxuXHRcdFx0XHRcclxuXHRcdFx0XHQvLyBpZiAodW5pdmVyaWZ5SW5mby5zZXJ2ZXIuc3BsaXQoJzonKS5sZW5ndGggPCAyKVxyXG5cdFx0XHRcdC8vIFx0Y2dpID0gXCJodHRwOi8vXCIgKyB1bml2ZXJpZnlJbmZvLnNlcnZlciArIFwiOjUwMTBcIjsgLy8vT3JnV2ViU1xyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdC8vIHNldFRpbWVvdXQoXz0+e1xyXG5cdFx0XHRcdC8vIFx0cmVzb2x2ZShcIjAwMDAwMDAwMDAwXCIpXHJcblx0XHRcdFx0Ly8gfSwzMDAwKVxyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKG9wZW5pbmZvICsgXCJQREEvU2lnbkluXCIpO1xyXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcclxuXHRcdFx0XHRcdHVybDogb3BlbmluZm8gKyBcIlBEQS9TaWduSW5cIixcclxuXHRcdFx0XHRcdGRhdGE6IHVuaXZlcmlmeUluZm8sXHJcblx0XHRcdFx0XHRtZXRob2Q6ICdQT1NUJyxcclxuXHRcdFx0XHRcdGRhdGFUeXBlOlwianNvblwiLFxyXG5cdFx0XHRcdFx0aGVhZGVyOiB7XHJcblx0XHRcdFx0XHQgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0c3VjY2VzczogKHJlcykgPT4ge1xyXG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhyZXMpOyBcclxuXHRcdFx0XHRcdFx0Y29uc3QgcmV0ID0gcmVzLmRhdGFcclxuXHRcdFx0XHRcdFx0aWYgKHJldC5jb2RlPT0nMDAwMDAnKSB7XHJcblx0XHRcdFx0XHRcdFx0Y29tbWl0KFwibG9naW5cIixyZXQpO1xyXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUocmV0KTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRyZWplY3Qoe1wiZXJyTXNnXCI6cmV0Lm1zZ30pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhlcnIpO1xyXG5cdFx0XHRcdFx0XHRyZWplY3QoZXJyKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9KVxyXG5cdFx0fSxcclxuXHRcdFxyXG5cdFx0YXJlYUZ1bmM6IGZ1bmN0aW9uKHtcclxuXHRcdFx0Y29tbWl0LFxyXG5cdFx0XHRzdGF0ZVxyXG5cdFx0fSwgdW5pdmVyaWZ5SW5mbykge1xyXG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHRcdCAvLyBjb25zb2xlLmxvZyhzdGF0ZS51cmwpO1xyXG5cdFx0XHRcdCBcclxuXHRcdFx0XHR1bmkucmVxdWVzdCh7XHJcblx0XHRcdFx0XHR1cmw6IHN0YXRlLnVybCArIFwiUERBL1BEQUFyZWFcIixcclxuXHRcdFx0XHRcdGRhdGE6IHVuaXZlcmlmeUluZm8sXHJcblx0XHRcdFx0XHRtZXRob2Q6ICdQT1NUJyxcclxuXHRcdFx0XHRcdGRhdGFUeXBlOlwianNvblwiLFxyXG5cdFx0XHRcdFx0aGVhZGVyOiB7XHJcblx0XHRcdFx0XHRcdCdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ1xyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChyZXMpID0+IHtcclxuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2cocmVzKTtcclxuXHRcdFx0XHRcdFx0Y29uc3QgcmV0ID0gcmVzLmRhdGFcclxuXHRcdFx0XHRcdFx0aWYgKHJldC5jb2RlPT0nMDAwMDAnKSB7XHJcblx0XHRcdFx0XHRcdFx0Y29tbWl0KFwiYXJlYUZ1bmNcIixyZXQpO1xyXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUocmV0KTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRyZWplY3Qoe1wiZXJyTXNnXCI6cmV0Lm1zZ30pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xyXG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhlcnIpO1xyXG5cdFx0XHRcdFx0XHRyZWplY3QoZXJyKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9KVxyXG5cdFx0fSxcclxuXHRcdFxyXG5cdFx0Y2xhc3NBdHRyTGlzdDogZnVuY3Rpb24oe1xyXG5cdFx0XHRjb21taXQsXHJcblx0XHRcdHN0YXRlXHJcblx0XHR9LCB1bml2ZXJpZnlJbmZvKSB7XHJcblx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdFx0IC8vIGNvbnNvbGUubG9nKHN0YXRlLnVybCk7XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiBzdGF0ZS51cmwgKyBcIlBEQS9QREFBdHRyTGlzdFwiLFxyXG5cdFx0XHRcdFx0ZGF0YTogdW5pdmVyaWZ5SW5mbyxcclxuXHRcdFx0XHRcdG1ldGhvZDogJ1BPU1QnLFxyXG5cdFx0XHRcdFx0ZGF0YVR5cGU6XCJqc29uXCIsXHJcblx0XHRcdFx0XHRoZWFkZXI6IHtcclxuXHRcdFx0XHRcdFx0J2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0c3VjY2VzczogKHJlcykgPT4ge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhyZXMpO1xyXG5cdFx0XHRcdFx0XHRjb25zdCByZXQgPSByZXMuZGF0YVxyXG5cdFx0XHRcdFx0XHRpZiAocmV0LmNvZGU9PScwMDAwMCcpIHtcclxuXHRcdFx0XHRcdFx0XHRjb21taXQoXCJjbGFzc0F0dHJMaXN0XCIscmV0KTtcclxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKHJldCk7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0cmVqZWN0KHtcImVyck1zZ1wiOnJldC5tc2d9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcclxuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXJyKTtcclxuXHRcdFx0XHRcdFx0cmVqZWN0KGVycik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSlcclxuXHRcdH0sXHJcblx0XHRcclxuXHRcdGNsYXNzR3JpZFN0eWxlSW5mbzogZnVuY3Rpb24oe1xyXG5cdFx0XHRjb21taXQsXHJcblx0XHRcdHN0YXRlXHJcblx0XHR9LCB1bml2ZXJpZnlJbmZvKSB7XHJcblx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdFx0IC8vIGNvbnNvbGUubG9nKHN0YXRlLnVybCk7XHJcblx0XHRcdFx0IFxyXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcclxuXHRcdFx0XHRcdHVybDogc3RhdGUudXJsICsgXCJQREEvUERBR3JpZFN0eWxlR2V0SW5mb1wiLFxyXG5cdFx0XHRcdFx0ZGF0YTogdW5pdmVyaWZ5SW5mbyxcclxuXHRcdFx0XHRcdG1ldGhvZDogJ1BPU1QnLFxyXG5cdFx0XHRcdFx0ZGF0YVR5cGU6XCJqc29uXCIsXHJcblx0XHRcdFx0XHRoZWFkZXI6IHtcclxuXHRcdFx0XHRcdFx0J2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0c3VjY2VzczogKHJlcykgPT4ge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhyZXMpO1xyXG5cdFx0XHRcdFx0XHRjb25zdCByZXQgPSByZXMuZGF0YVxyXG5cdFx0XHRcdFx0XHRpZiAocmV0LmNvZGU9PScwMDAwMCcpIHtcclxuXHRcdFx0XHRcdFx0XHQvLyB2YXIgZGF0YSA9e307XHJcblx0XHRcdFx0XHRcdFx0Ly8gVnVlLnNldChkYXRhLHVuaXZlcmlmeUluZm8ubmFtZSxyZXQpO1xyXG5cdFx0XHRcdFx0XHRcdGNvbW1pdChcImNsYXNzR3JpZFN0eWxlSW5mb1wiLHJldCk7XHJcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShyZXQpO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdHJlamVjdCh7XCJlcnJNc2dcIjpyZXQubXNnfSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XHJcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKGVycik7XHJcblx0XHRcdFx0XHRcdHJlamVjdChlcnIpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0pXHJcblx0XHR9LFxyXG5cdFx0XHJcblx0XHRkaWNWYWx1ZUluZm86IGZ1bmN0aW9uKHtcclxuXHRcdFx0Y29tbWl0LFxyXG5cdFx0XHRzdGF0ZVxyXG5cdFx0fSwgdW5pdmVyaWZ5SW5mbykge1xyXG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHRcdCAvLyBjb25zb2xlLmxvZyhzdGF0ZS51cmwpO1xyXG5cdFx0XHRcdCBcclxuXHRcdFx0XHR1bmkucmVxdWVzdCh7XHJcblx0XHRcdFx0XHR1cmw6IHN0YXRlLnVybCArIFwiUERBL1BEQURpY1ZhbHVlR2V0SW5mb1wiLFxyXG5cdFx0XHRcdFx0ZGF0YTogdW5pdmVyaWZ5SW5mbyxcclxuXHRcdFx0XHRcdG1ldGhvZDogJ1BPU1QnLFxyXG5cdFx0XHRcdFx0ZGF0YVR5cGU6XCJqc29uXCIsXHJcblx0XHRcdFx0XHRoZWFkZXI6IHtcclxuXHRcdFx0XHRcdFx0J2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0c3VjY2VzczogKHJlcykgPT4ge1xyXG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhyZXMpO1xyXG5cdFx0XHRcdFx0XHRjb25zdCByZXQgPSByZXMuZGF0YVxyXG5cdFx0XHRcdFx0XHRpZiAocmV0LmNvZGU9PScwMDAwMCcpIHtcclxuXHRcdFx0XHRcdFx0XHRzdGF0ZS50aGlzRGljdE5hbWUgPSB1bml2ZXJpZnlJbmZvLmRpY19uYW1lXHJcblx0XHRcdFx0XHRcdFx0Y29tbWl0KFwiZGljVmFsdWVJbmZvXCIscmV0KTtcclxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKHJldCk7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0cmVqZWN0KHtcImVyck1zZ1wiOnJldC5tc2d9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZXJyKTtcclxuXHRcdFx0XHRcdFx0cmVqZWN0KGVycik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSlcclxuXHRcdH0sXHJcblx0XHRcclxuXHRcdERhdGFPYmpSdW5DdXN0b21FdmVudEluZm86IGZ1bmN0aW9uKHtcclxuXHRcdFx0Y29tbWl0LFxyXG5cdFx0XHRzdGF0ZVxyXG5cdFx0fSwgdW5pdmVyaWZ5SW5mbykge1xyXG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHRcdCAvLyBjb25zb2xlLmxvZyhzdGF0ZS51cmwpO1xyXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcclxuXHRcdFx0XHRcdHVybDogc3RhdGUudXJsICsgXCJQREEvUERBRGF0YU9ialJ1bkN1c3RvbUV2ZW50XCIsXHJcblx0XHRcdFx0XHRkYXRhOiB1bml2ZXJpZnlJbmZvLFxyXG5cdFx0XHRcdFx0bWV0aG9kOiAnUE9TVCcsXHJcblx0XHRcdFx0XHRkYXRhVHlwZTpcImpzb25cIixcclxuXHRcdFx0XHRcdGhlYWRlcjoge1xyXG5cdFx0XHRcdFx0XHQnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRzdWNjZXNzOiAocmVzKSA9PiB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKHJlcyk7XHJcblx0XHRcdFx0XHRcdGNvbnN0IHJldCA9IHJlcy5kYXRhXHJcblx0XHRcdFx0XHRcdGlmIChyZXQuY29kZT09JzAwMDAwJykge1xyXG5cdFx0XHRcdFx0XHRcdGNvbW1pdChcIkRhdGFPYmpSdW5DdXN0b21FdmVudEluZm9cIixyZXQpO1xyXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUocmV0KTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRyZWplY3Qoe1wiZXJyTXNnXCI6cmV0Lm1zZ30pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhlcnIpO1xyXG5cdFx0XHRcdFx0XHRyZWplY3QoZXJyKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9KVxyXG5cdFx0fSxcclxuXHRcdFxyXG5cdFx0cXVlcnlTZWxwc246IGZ1bmN0aW9uKHtcclxuXHRcdFx0Y29tbWl0LFxyXG5cdFx0XHRzdGF0ZVxyXG5cdFx0fSwgdW5pdmVyaWZ5SW5mbykge1xyXG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHRcdCAvLyBjb25zb2xlLmxvZyhzdGF0ZS51cmwpO1xyXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcclxuXHRcdFx0XHRcdHVybDogc3RhdGUudXJsICsgXCJzZWxwc24vcXVlcnlqc29uXCIsXHJcblx0XHRcdFx0XHRkYXRhOiB1bml2ZXJpZnlJbmZvLFxyXG5cdFx0XHRcdFx0bWV0aG9kOiAnUE9TVCcsXHJcblx0XHRcdFx0XHRkYXRhVHlwZTpcImpzb25cIixcclxuXHRcdFx0XHRcdGhlYWRlcjoge1xyXG5cdFx0XHRcdFx0XHQnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRzdWNjZXNzOiAocmVzKSA9PiB7XHJcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHJlcyk7XHJcblx0XHRcdFx0XHRcdGNvbnN0IHJldCA9IEpTT04ucGFyc2UocmVzLmRhdGEpO1xyXG5cdFx0XHRcdFx0XHRpZiAocmV0LmNvZGU9PScwMDAwMCcpIHtcclxuXHRcdFx0XHRcdFx0XHRjb21taXQoXCJxdWVyeVNlbHBzblwiLHJldCk7XHJcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShyZXQpO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdHJlamVjdCh7XCJlcnJNc2dcIjpyZXQubXNnfSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGVycik7XHJcblx0XHRcdFx0XHRcdHJlamVjdChlcnIpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0pXHJcblx0XHR9LFxyXG5cdFx0XHJcblx0XHRQcm9qZWN0R2V0QW5hbHlzaXNMaXN0OiBmdW5jdGlvbih7XHJcblx0XHRcdGNvbW1pdCxcclxuXHRcdFx0c3RhdGVcclxuXHRcdH0sIHVuaXZlcmlmeUluZm8pIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0XHQgLy8gY29uc29sZS5sb2coc3RhdGUudXJsKTtcclxuXHRcdFx0XHR1bmkucmVxdWVzdCh7XHJcblx0XHRcdFx0XHR1cmw6IHN0YXRlLnVybCArIFwiYnBtL1Byb2plY3RHZXRBbmFseXNpc0xpc3RcIixcclxuXHRcdFx0XHRcdGRhdGE6IHVuaXZlcmlmeUluZm8sXHJcblx0XHRcdFx0XHRtZXRob2Q6ICdQT1NUJyxcclxuXHRcdFx0XHRcdGRhdGFUeXBlOlwianNvblwiLFxyXG5cdFx0XHRcdFx0aGVhZGVyOiB7XHJcblx0XHRcdFx0XHRcdCdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ1xyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChyZXMpID0+IHtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2cocmVzKTtcclxuXHRcdFx0XHRcdFx0Y29uc3QgcmV0ID0gcmVzLmRhdGE7XHJcblx0XHRcdFx0XHRcdGlmIChyZXQuY29kZT09JzAwMDAwJykge1xyXG5cdFx0XHRcdFx0XHRcdGNvbW1pdChcIlByb2plY3RHZXRBbmFseXNpc0xpc3RcIixyZXQpO1xyXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUocmV0KTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRyZWplY3Qoe1wiZXJyTXNnXCI6cmV0Lm1zZ30pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhlcnIpO1xyXG5cdFx0XHRcdFx0XHRyZWplY3QoZXJyKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9KVxyXG5cdFx0fSxcclxuXHRcdFxyXG5cdFx0YWRkY2xhc3NhdHRyOiBmdW5jdGlvbih7XHJcblx0XHRcdGNvbW1pdCxcclxuXHRcdFx0c3RhdGVcclxuXHRcdH0sIHVuaXZlcmlmeUluZm8pIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0XHQgLy8gY29uc29sZS5sb2coc3RhdGUudXJsKTtcclxuXHRcdFx0XHR1bmkucmVxdWVzdCh7XHJcblx0XHRcdFx0XHR1cmw6IHN0YXRlLnVybCArIFwid29ya3NwYWNlL2FkZGNsYXNzYXR0clwiLFxyXG5cdFx0XHRcdFx0ZGF0YTogdW5pdmVyaWZ5SW5mbyxcclxuXHRcdFx0XHRcdG1ldGhvZDogJ1BPU1QnLFxyXG5cdFx0XHRcdFx0ZGF0YVR5cGU6XCJqc29uXCIsXHJcblx0XHRcdFx0XHRoZWFkZXI6IHtcclxuXHRcdFx0XHRcdFx0J2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0c3VjY2VzczogKHJlcykgPT4ge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhyZXMpO1xyXG5cdFx0XHRcdFx0XHRjb25zdCByZXQgPSByZXMuZGF0YTtcclxuXHRcdFx0XHRcdFx0aWYgKHJldC5jb2RlPT0nMDAwMDAnKSB7XHJcblx0XHRcdFx0XHRcdFx0Y29tbWl0KFwiYWRkY2xhc3NhdHRyXCIscmV0KTtcclxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKHJldCk7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0cmVqZWN0KHtcImVyck1zZ1wiOkpTT04uc3RyaW5naWZ5KHJldCl9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZXJyKTtcclxuXHRcdFx0XHRcdFx0cmVqZWN0KGVycik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSlcclxuXHRcdH1cclxuXHRcdFxyXG5cdH1cclxufSlcclxuXHJcbmV4cG9ydCBkZWZhdWx0IHN0b3JlXHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///78\n");
 
 /***/ }),
 /* 79 */

--
Gitblit v1.9.1