Skip to content

Instantly share code, notes, and snippets.

@neoyipeng2018
Last active March 17, 2021 00:10
Show Gist options
  • Select an option

  • Save neoyipeng2018/51faa34f9401c67e5d3116c938a1ca21 to your computer and use it in GitHub Desktop.

Select an option

Save neoyipeng2018/51faa34f9401c67e5d3116c938a1ca21 to your computer and use it in GitHub Desktop.
Chinese MLM - WWM..MAC(?)..SI(?)
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"accelerator": "GPU",
"colab": {
"name": "Chinese MLM - WWM..MAC(?)..SI(?)",
"provenance": [],
"collapsed_sections": [],
"include_colab_link": true
},
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.9"
},
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"88d5f1125dcf43f0a4f84980d1798155": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_e6d35c6c6c1d46ac948978054dbaa3a9",
"IPY_MODEL_9c2d88aa220a4d6295c3f870053fcaaf"
],
"layout": "IPY_MODEL_15438ba7ec8d4000b7fa6f1b333a6a55"
}
},
"e6d35c6c6c1d46ac948978054dbaa3a9": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "info",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_2a9799302af04e309991bfa66f731556",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_87eab3762664485e9550a7cc690f284d",
"value": 1
}
},
"9c2d88aa220a4d6295c3f870053fcaaf": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_9b29308134434b24a9927ba267b1e950",
"placeholder": "​",
"style": "IPY_MODEL_428c4314438c4edf954acb2ce29e49fa",
"value": " 328/? [00:00<00:00, 583.98 tables/s]"
}
},
"15438ba7ec8d4000b7fa6f1b333a6a55": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"2a9799302af04e309991bfa66f731556": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"87eab3762664485e9550a7cc690f284d": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": "initial"
}
},
"9b29308134434b24a9927ba267b1e950": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"428c4314438c4edf954acb2ce29e49fa": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"cc564e748a8a44a480915407506bc1a7": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_be37b8df736843589198d89b89c401d5",
"IPY_MODEL_6bfd8d8f8249465daf72b6ad94f36095"
],
"layout": "IPY_MODEL_a966c45ef2de4a29b303122c279410ae"
}
},
"be37b8df736843589198d89b89c401d5": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "info",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_df5b8c3751314b5e851bf862ad3adac2",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_208c26f1f4c6435a8f99472660451233",
"value": 1
}
},
"6bfd8d8f8249465daf72b6ad94f36095": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_ce88abd84de14691bdff76a4d1b2a02e",
"placeholder": "​",
"style": "IPY_MODEL_89ac263e67a3437e8ae47ca8213cfb77",
"value": " 82/? [00:00<00:00, 568.63 tables/s]"
}
},
"a966c45ef2de4a29b303122c279410ae": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"df5b8c3751314b5e851bf862ad3adac2": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"208c26f1f4c6435a8f99472660451233": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": "initial"
}
},
"ce88abd84de14691bdff76a4d1b2a02e": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"89ac263e67a3437e8ae47ca8213cfb77": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"4b488ba931e243539b5d141305ad6d2a": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_744860302e9f4e8b9018bac277c2b1ce",
"IPY_MODEL_fc4bfb65e8a8463fbd7370808966eccc"
],
"layout": "IPY_MODEL_a9a9072f40c748c0a29357f00580f46a"
}
},
"744860302e9f4e8b9018bac277c2b1ce": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "Downloading: 100%",
"description_tooltip": null,
"layout": "IPY_MODEL_3b4a45447102439c966df164bb808993",
"max": 659,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_6c30daa0abb3447599bfc5e17d976f01",
"value": 659
}
},
"fc4bfb65e8a8463fbd7370808966eccc": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_ae3edf356d614c6085ed6fc4caf5744a",
"placeholder": "​",
"style": "IPY_MODEL_7762b56ec51d4cbabf01e7bacd2320ec",
"value": " 659/659 [00:02<00:00, 243B/s]"
}
},
"a9a9072f40c748c0a29357f00580f46a": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"3b4a45447102439c966df164bb808993": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"6c30daa0abb3447599bfc5e17d976f01": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": "initial"
}
},
"ae3edf356d614c6085ed6fc4caf5744a": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"7762b56ec51d4cbabf01e7bacd2320ec": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"184c22ad7a0148d6b00be0b144d2e5a5": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_f5c652dd7ed54561a93c1f1fc24b1e5e",
"IPY_MODEL_9dd5634e66114c66acc0f5fdea6b1ad7"
],
"layout": "IPY_MODEL_ead06abddaac437799d2bc1ab820dc6d"
}
},
"f5c652dd7ed54561a93c1f1fc24b1e5e": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "Downloading: 100%",
"description_tooltip": null,
"layout": "IPY_MODEL_d7966e3cb88c46e6a577b024d8580520",
"max": 109540,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_39903036ce3f405fad6544fd7521a363",
"value": 109540
}
},
"9dd5634e66114c66acc0f5fdea6b1ad7": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_137c5c6606624ee1913015b6a250def4",
"placeholder": "​",
"style": "IPY_MODEL_9a6ee066f8b74457a95837982e3aa7e8",
"value": " 110k/110k [00:01<00:00, 85.2kB/s]"
}
},
"ead06abddaac437799d2bc1ab820dc6d": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"d7966e3cb88c46e6a577b024d8580520": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"39903036ce3f405fad6544fd7521a363": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": "initial"
}
},
"137c5c6606624ee1913015b6a250def4": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"9a6ee066f8b74457a95837982e3aa7e8": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"13c3b54474c94e8d9c08bebca80eaf09": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_c90500b16e8446c9b4005ac839a35c0c",
"IPY_MODEL_f457c89709d546a79347a220967cc962"
],
"layout": "IPY_MODEL_f7857fb2ddb546688497ef24deb3f387"
}
},
"c90500b16e8446c9b4005ac839a35c0c": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "Downloading: 100%",
"description_tooltip": null,
"layout": "IPY_MODEL_af6cbfdfdba3437e88b7cd41625ac1f4",
"max": 268961,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_fd0ebb306abb404e9ec44db8f804ec7c",
"value": 268961
}
},
"f457c89709d546a79347a220967cc962": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_2d2c15684dd9424b90c0966e3b1da984",
"placeholder": "​",
"style": "IPY_MODEL_6fb2b0b9b1cf41db9a1d246c3e59dbbc",
"value": " 269k/269k [00:00<00:00, 397kB/s]"
}
},
"f7857fb2ddb546688497ef24deb3f387": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"af6cbfdfdba3437e88b7cd41625ac1f4": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"fd0ebb306abb404e9ec44db8f804ec7c": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": "initial"
}
},
"2d2c15684dd9424b90c0966e3b1da984": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"6fb2b0b9b1cf41db9a1d246c3e59dbbc": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"72fcad8039244a20ad53b77bed1ebc17": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_f0f1c0f4a38c4d339f7383c51e191be5",
"IPY_MODEL_f57cddba1b144f3687b45a2bc650bddc"
],
"layout": "IPY_MODEL_a122a350f432428c883f8043c3d39a97"
}
},
"f0f1c0f4a38c4d339f7383c51e191be5": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "Downloading: 100%",
"description_tooltip": null,
"layout": "IPY_MODEL_e92f885ea8b5425ca95c29e5ce2b355c",
"max": 2,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_0010ba5e4eb24a75b67f25c5d584e2b4",
"value": 2
}
},
"f57cddba1b144f3687b45a2bc650bddc": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_f6a52d8a3abd4027a63d96d9eba7c13d",
"placeholder": "​",
"style": "IPY_MODEL_6df979090f0b4fb38f923266d96c74bd",
"value": " 2.00/2.00 [00:00<00:00, 2.02B/s]"
}
},
"a122a350f432428c883f8043c3d39a97": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"e92f885ea8b5425ca95c29e5ce2b355c": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"0010ba5e4eb24a75b67f25c5d584e2b4": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": "initial"
}
},
"f6a52d8a3abd4027a63d96d9eba7c13d": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"6df979090f0b4fb38f923266d96c74bd": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"ba6b7fc4da3c42629824b91574a06b08": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_17ba0fe6aea54e7f86e00a0174f7364a",
"IPY_MODEL_40985c3272914c1d9ac6975081c8c941"
],
"layout": "IPY_MODEL_0152656dc8bb4f1199a0dfd8d02eb539"
}
},
"17ba0fe6aea54e7f86e00a0174f7364a": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "Downloading: 100%",
"description_tooltip": null,
"layout": "IPY_MODEL_c2f12882e540409b999f7edfedddc7cb",
"max": 112,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_36313fb58e33450ea26ab425cda49e80",
"value": 112
}
},
"40985c3272914c1d9ac6975081c8c941": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_5807a0fad6314f9cba7e71a549d820f3",
"placeholder": "​",
"style": "IPY_MODEL_4dbe063145744f08ba46a1ee61f3b288",
"value": " 112/112 [00:00<00:00, 208B/s]"
}
},
"0152656dc8bb4f1199a0dfd8d02eb539": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"c2f12882e540409b999f7edfedddc7cb": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"36313fb58e33450ea26ab425cda49e80": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": "initial"
}
},
"5807a0fad6314f9cba7e71a549d820f3": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"4dbe063145744f08ba46a1ee61f3b288": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"39f8dce23d8b45c5ae6ee48337a1f545": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_44ca5b904696434cbcef3b4a2916e788",
"IPY_MODEL_5f1b57f27de8416faa7db2d6ee1b89bf"
],
"layout": "IPY_MODEL_1bfeceb3f1fc4999ad147d711fa2dfa6"
}
},
"44ca5b904696434cbcef3b4a2916e788": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "Downloading: 100%",
"description_tooltip": null,
"layout": "IPY_MODEL_178a4bc652a144c2822b39e2408ae88f",
"max": 19,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_23c0ecfd86d245bbabbe93820210d127",
"value": 19
}
},
"5f1b57f27de8416faa7db2d6ee1b89bf": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_7f5fd2b09aa241288e6d3d65cc0fcdc7",
"placeholder": "​",
"style": "IPY_MODEL_9ed078863b004af2a4794aa817fd80f9",
"value": " 19.0/19.0 [00:00<00:00, 193B/s]"
}
},
"1bfeceb3f1fc4999ad147d711fa2dfa6": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"178a4bc652a144c2822b39e2408ae88f": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"23c0ecfd86d245bbabbe93820210d127": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": "initial"
}
},
"7f5fd2b09aa241288e6d3d65cc0fcdc7": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"9ed078863b004af2a4794aa817fd80f9": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"d6e2c6e169dc464a82cf3fb43f9a0520": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_70eafe17ec144198a745ac57ebcf5d4f",
"IPY_MODEL_6c0c80bb5daa475ab0efb8d6f332c050"
],
"layout": "IPY_MODEL_8daef61bb72542c69d8cda913d23521e"
}
},
"70eafe17ec144198a745ac57ebcf5d4f": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "#0: 100%",
"description_tooltip": null,
"layout": "IPY_MODEL_ffa32182c0074b3d8897567a80dd3de4",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_d0f83d818f5643c48e6e060c1571f579",
"value": 1
}
},
"6c0c80bb5daa475ab0efb8d6f332c050": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_3063de5131094b168fc2501e2a2cf146",
"placeholder": "​",
"style": "IPY_MODEL_9aa1a4ef24a9431492394873eb53e7ea",
"value": " 1/1 [00:04<00:00, 4.48s/ba]"
}
},
"8daef61bb72542c69d8cda913d23521e": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"ffa32182c0074b3d8897567a80dd3de4": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"d0f83d818f5643c48e6e060c1571f579": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": "initial"
}
},
"3063de5131094b168fc2501e2a2cf146": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"9aa1a4ef24a9431492394873eb53e7ea": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"77570beeb55b4fe5aad9856647de138d": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_e1c0b1b8b018480bb35c0dc314b2e1d0",
"IPY_MODEL_892cfb9cf4e24c90a30953d621545210"
],
"layout": "IPY_MODEL_5aa7324992ae4a72a4c397c19ee8e6be"
}
},
"e1c0b1b8b018480bb35c0dc314b2e1d0": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "#1: 100%",
"description_tooltip": null,
"layout": "IPY_MODEL_5347cf606d6d4316b4b45a4452374bfc",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_3faf849105f14069bba31c6bd62e303f",
"value": 1
}
},
"892cfb9cf4e24c90a30953d621545210": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_f9d7495af071444783c53335891f5362",
"placeholder": "​",
"style": "IPY_MODEL_e2f29a7646d4411ba57fc26ff7a978ce",
"value": " 1/1 [00:04<00:00, 4.66s/ba]"
}
},
"5aa7324992ae4a72a4c397c19ee8e6be": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"5347cf606d6d4316b4b45a4452374bfc": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"3faf849105f14069bba31c6bd62e303f": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": "initial"
}
},
"f9d7495af071444783c53335891f5362": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"e2f29a7646d4411ba57fc26ff7a978ce": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"f85d75dcc154445da13ddc8787896e73": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_ebc73c9f0e77448c98f3a03874e9ffaa",
"IPY_MODEL_0c9305fb44c04780b40eff10ca2fd864"
],
"layout": "IPY_MODEL_b3990af52b5c451f9b07e52f3713ee01"
}
},
"ebc73c9f0e77448c98f3a03874e9ffaa": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "#3: 100%",
"description_tooltip": null,
"layout": "IPY_MODEL_25e063c2152647488a6f86700e88ec71",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_bb634d4a47144c1ca170b84270b8b2e5",
"value": 1
}
},
"0c9305fb44c04780b40eff10ca2fd864": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_58e4146797724d3eb50bdbae203ba7d1",
"placeholder": "​",
"style": "IPY_MODEL_52eaaf6806c042b28f1659bb99c4a5ee",
"value": " 1/1 [00:04<00:00, 4.46s/ba]"
}
},
"b3990af52b5c451f9b07e52f3713ee01": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"25e063c2152647488a6f86700e88ec71": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"bb634d4a47144c1ca170b84270b8b2e5": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": "initial"
}
},
"58e4146797724d3eb50bdbae203ba7d1": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"52eaaf6806c042b28f1659bb99c4a5ee": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"ded91c034e8f40e4b2200453a65cfd06": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_687eb83eef0c40d1beaafae8413cb70f",
"IPY_MODEL_88ccc30426274f6b8d4037d20ed4ede0"
],
"layout": "IPY_MODEL_574ceabaa5d44664b0fce7198630e7fb"
}
},
"687eb83eef0c40d1beaafae8413cb70f": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "#2: 100%",
"description_tooltip": null,
"layout": "IPY_MODEL_0ae81681569b4f94b4dd685397e45635",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_e2eb81baac924afcbbb213e454797e2e",
"value": 1
}
},
"88ccc30426274f6b8d4037d20ed4ede0": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_c86c985e485f4306a66e1687836f7aae",
"placeholder": "​",
"style": "IPY_MODEL_ef1c46b95cad4fb29f6157cfbad527c4",
"value": " 1/1 [00:04<00:00, 4.57s/ba]"
}
},
"574ceabaa5d44664b0fce7198630e7fb": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"0ae81681569b4f94b4dd685397e45635": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"e2eb81baac924afcbbb213e454797e2e": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": "initial"
}
},
"c86c985e485f4306a66e1687836f7aae": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"ef1c46b95cad4fb29f6157cfbad527c4": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"01e2aa6ea9534cf4aee3d4b8a4132c29": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_92f49383586444c29fe09e509e9cd69c",
"IPY_MODEL_17292c98aa0a4592b84795596edc27b0"
],
"layout": "IPY_MODEL_ef77e13438e140cfafdd1baefd90cc62"
}
},
"92f49383586444c29fe09e509e9cd69c": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "#0: 100%",
"description_tooltip": null,
"layout": "IPY_MODEL_16f7195a089d465caac4e81ddda25d05",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_8075f5edaa4a41ebbb327898fa18d100",
"value": 1
}
},
"17292c98aa0a4592b84795596edc27b0": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_fb5dbfe9210946d4b0c57931218eb726",
"placeholder": "​",
"style": "IPY_MODEL_1dde267338634a42be15e0ddf702be1f",
"value": " 1/1 [00:04<00:00, 4.35s/ba]"
}
},
"ef77e13438e140cfafdd1baefd90cc62": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"16f7195a089d465caac4e81ddda25d05": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"8075f5edaa4a41ebbb327898fa18d100": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": "initial"
}
},
"fb5dbfe9210946d4b0c57931218eb726": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"1dde267338634a42be15e0ddf702be1f": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"5cba3edf80d84f018597ac1f4af640e1": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_5cf59f70c22f4ef0a0e4bcdfcd35e26a",
"IPY_MODEL_3d6509076bc349c99a1bfd1710e9db36"
],
"layout": "IPY_MODEL_8641675a1deb45f3b88d6de68dd1941d"
}
},
"5cf59f70c22f4ef0a0e4bcdfcd35e26a": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "#1: 100%",
"description_tooltip": null,
"layout": "IPY_MODEL_cbf938151f1f49c2b799561f2aef4dda",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_13c722fb87c8466ebf54fdadf3f5a3c6",
"value": 1
}
},
"3d6509076bc349c99a1bfd1710e9db36": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_d655e8cc43834990a0ee02a2a190eeb1",
"placeholder": "​",
"style": "IPY_MODEL_1a8c90e0ab664225b728bfe6b731927e",
"value": " 1/1 [00:04<00:00, 4.42s/ba]"
}
},
"8641675a1deb45f3b88d6de68dd1941d": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"cbf938151f1f49c2b799561f2aef4dda": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"13c722fb87c8466ebf54fdadf3f5a3c6": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": "initial"
}
},
"d655e8cc43834990a0ee02a2a190eeb1": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"1a8c90e0ab664225b728bfe6b731927e": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"55c28cbe95b64ce9ab59cfbf66a835e9": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_89a85854787042e184fd0387360a8d73",
"IPY_MODEL_2a1aef0ea97047bba128d8cfcf0c8c3e"
],
"layout": "IPY_MODEL_34f572458d4144da997c25a8ec586fc6"
}
},
"89a85854787042e184fd0387360a8d73": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "#2: 100%",
"description_tooltip": null,
"layout": "IPY_MODEL_76eaaa8361534085929f83f2d6fcab96",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_7af0a3c6403040c08015ee01d2ad2786",
"value": 1
}
},
"2a1aef0ea97047bba128d8cfcf0c8c3e": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_e63d0823b6504b58abdd829745c90cb8",
"placeholder": "​",
"style": "IPY_MODEL_8122a57b572e4eb881755012bd27faa2",
"value": " 1/1 [00:04<00:00, 4.15s/ba]"
}
},
"34f572458d4144da997c25a8ec586fc6": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"76eaaa8361534085929f83f2d6fcab96": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"7af0a3c6403040c08015ee01d2ad2786": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": "initial"
}
},
"e63d0823b6504b58abdd829745c90cb8": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"8122a57b572e4eb881755012bd27faa2": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"be7da60efc104706934c272a82c99e0d": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_5091aee431154dcda9a19a815dc1e9ab",
"IPY_MODEL_f52cf142b13d4460b1b70dce23780746"
],
"layout": "IPY_MODEL_bcd80bddaaea4293b2ec17b48fa7cf63"
}
},
"5091aee431154dcda9a19a815dc1e9ab": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "#3: 100%",
"description_tooltip": null,
"layout": "IPY_MODEL_1ff7f47138b54b588eecd096ee53eede",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_5cb432a932bc46989b86b51a7536200e",
"value": 1
}
},
"f52cf142b13d4460b1b70dce23780746": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_b2d6585fa2ba466e97b52fd6bd5921ae",
"placeholder": "​",
"style": "IPY_MODEL_bd417cbebe834d939d3beed0e3a91116",
"value": " 1/1 [00:04<00:00, 4.28s/ba]"
}
},
"bcd80bddaaea4293b2ec17b48fa7cf63": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"1ff7f47138b54b588eecd096ee53eede": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"5cb432a932bc46989b86b51a7536200e": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": "initial"
}
},
"b2d6585fa2ba466e97b52fd6bd5921ae": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"bd417cbebe834d939d3beed0e3a91116": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"cafc91166c2642f8b50a40d73eb16a7c": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_94057e035e0c41b7964972544d281fe6",
"IPY_MODEL_d7fab45109ee4e54a6a98b1abfd059f2"
],
"layout": "IPY_MODEL_ca894d90361c4c1bbe99f9c999cf423e"
}
},
"94057e035e0c41b7964972544d281fe6": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "Downloading: 100%",
"description_tooltip": null,
"layout": "IPY_MODEL_ec388b32a8294eda9d65f0422f8e11da",
"max": 164437832,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_15886ce0d5db46a7826e0dd9d66094b7",
"value": 164437832
}
},
"d7fab45109ee4e54a6a98b1abfd059f2": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_48079c8c7b984a5fb7798fc951f0c279",
"placeholder": "​",
"style": "IPY_MODEL_ae8d321dafbe4f84bdff58ea2c0b9f2d",
"value": " 164M/164M [09:28<00:00, 289kB/s]"
}
},
"ca894d90361c4c1bbe99f9c999cf423e": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"ec388b32a8294eda9d65f0422f8e11da": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"15886ce0d5db46a7826e0dd9d66094b7": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": "initial"
}
},
"48079c8c7b984a5fb7798fc951f0c279": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"ae8d321dafbe4f84bdff58ea2c0b9f2d": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"80537456ac274451b3a5f2ea5c2c8acb": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_34c1a4b6e67b4c37bcef00b1fff790d4",
"IPY_MODEL_34d2903964b14285b12ebb9dd95aa4ca"
],
"layout": "IPY_MODEL_259878c209f94a218a35c139615d731b"
}
},
"34c1a4b6e67b4c37bcef00b1fff790d4": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "#1: 100%",
"description_tooltip": null,
"layout": "IPY_MODEL_e72c59be72864417a1350b9056fb1381",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_70e307c726ff416bacfec9e0db74b3b3",
"value": 1
}
},
"34d2903964b14285b12ebb9dd95aa4ca": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_7a943232edff4f61bf4baa6f209333e5",
"placeholder": "​",
"style": "IPY_MODEL_ecd185bbcd86407fab8f05df99fec32a",
"value": " 1/1 [00:01<00:00, 1.12s/ba]"
}
},
"259878c209f94a218a35c139615d731b": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"e72c59be72864417a1350b9056fb1381": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"70e307c726ff416bacfec9e0db74b3b3": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": "initial"
}
},
"7a943232edff4f61bf4baa6f209333e5": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"ecd185bbcd86407fab8f05df99fec32a": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"c91a722c477949888c59ac919af6f3e4": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_15aeb4ebe7e54c0ab8ab4bf9c9ab9eed",
"IPY_MODEL_55850d7e5bba49059121e890595a3256"
],
"layout": "IPY_MODEL_e68f686446144685a38377cab26ba199"
}
},
"15aeb4ebe7e54c0ab8ab4bf9c9ab9eed": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "#0: 100%",
"description_tooltip": null,
"layout": "IPY_MODEL_3941b41ef28a403faebb5a6150257855",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_f90cfd7b760240178f00c7f8b62bc8a0",
"value": 1
}
},
"55850d7e5bba49059121e890595a3256": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_4e02fb60751f4a35826b81eebb19db5e",
"placeholder": "​",
"style": "IPY_MODEL_74115a2e089f4330af095da887d4156d",
"value": " 1/1 [00:01<00:00, 1.24s/ba]"
}
},
"e68f686446144685a38377cab26ba199": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"3941b41ef28a403faebb5a6150257855": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"f90cfd7b760240178f00c7f8b62bc8a0": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": "initial"
}
},
"4e02fb60751f4a35826b81eebb19db5e": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"74115a2e089f4330af095da887d4156d": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"6faa7b71f26245be8c7cb98f2c8aab9c": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_ff96984058b0469bbcad82d1c6bd8f53",
"IPY_MODEL_07037ce99d28452b84087169aa99ce2f"
],
"layout": "IPY_MODEL_4707d85ab5a6490a8a72fb2690de19aa"
}
},
"ff96984058b0469bbcad82d1c6bd8f53": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "#2: 100%",
"description_tooltip": null,
"layout": "IPY_MODEL_5eeb6f0cf9fe45e6a961c6ab172c92f1",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_8cd912ce51a546d29c56878e50ba4a6c",
"value": 1
}
},
"07037ce99d28452b84087169aa99ce2f": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_b3a67814ba4048f8baf10eec0ac64a6d",
"placeholder": "​",
"style": "IPY_MODEL_fd148c3c984f438d969b58c98a3a1371",
"value": " 1/1 [00:01<00:00, 1.08s/ba]"
}
},
"4707d85ab5a6490a8a72fb2690de19aa": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"5eeb6f0cf9fe45e6a961c6ab172c92f1": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"8cd912ce51a546d29c56878e50ba4a6c": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": "initial"
}
},
"b3a67814ba4048f8baf10eec0ac64a6d": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"fd148c3c984f438d969b58c98a3a1371": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"9a775b9b12824a32841c3f61e35fa84f": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_8d3950f33c664edd8fa13d17c47dd7eb",
"IPY_MODEL_b5f0219bdc7a4c20a78b891297cf6980"
],
"layout": "IPY_MODEL_a76fc336dda245d9b0aacbb158f07f11"
}
},
"8d3950f33c664edd8fa13d17c47dd7eb": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "#3: 100%",
"description_tooltip": null,
"layout": "IPY_MODEL_9284dffe013343ad9b0e017903201df9",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_c7529c99c4d9478c8fdfb849e9672947",
"value": 1
}
},
"b5f0219bdc7a4c20a78b891297cf6980": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_0db8d47f4429434c8d3d5d9101bd89ce",
"placeholder": "​",
"style": "IPY_MODEL_8b37cb0e56894176abe07919847bc0b2",
"value": " 1/1 [00:01<00:00, 1.03s/ba]"
}
},
"a76fc336dda245d9b0aacbb158f07f11": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"9284dffe013343ad9b0e017903201df9": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"c7529c99c4d9478c8fdfb849e9672947": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": "initial"
}
},
"0db8d47f4429434c8d3d5d9101bd89ce": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"8b37cb0e56894176abe07919847bc0b2": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"32575ce8492d475abfa4a16c7c8a91c2": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_9e3378e71e734737a3f975e74242152a",
"IPY_MODEL_f98860961dbe437c96a8e433c4e4541e"
],
"layout": "IPY_MODEL_e0e712e8f21c4a57b3d749be1d24aeb4"
}
},
"9e3378e71e734737a3f975e74242152a": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "#0: 100%",
"description_tooltip": null,
"layout": "IPY_MODEL_4195c84b16d1491d8b572898110cf56c",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_8aadcf843cce4eb0bdc40d84412b751f",
"value": 1
}
},
"f98860961dbe437c96a8e433c4e4541e": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_7b678ad5e51b4e21b65ed3009db45e6a",
"placeholder": "​",
"style": "IPY_MODEL_0227f8abfb25426ba4072574e994cec3",
"value": " 1/1 [00:00<00:00, 2.66ba/s]"
}
},
"e0e712e8f21c4a57b3d749be1d24aeb4": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"4195c84b16d1491d8b572898110cf56c": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"8aadcf843cce4eb0bdc40d84412b751f": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": "initial"
}
},
"7b678ad5e51b4e21b65ed3009db45e6a": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"0227f8abfb25426ba4072574e994cec3": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"83b9f5c470f94160b77b59de10c340f7": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_7b213973917240cb9c7c69a794b2d22c",
"IPY_MODEL_fbc83f6ebdf544cfb337406babfaec51"
],
"layout": "IPY_MODEL_b025c98176534c5786303bb9aca36c53"
}
},
"7b213973917240cb9c7c69a794b2d22c": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "#2: 100%",
"description_tooltip": null,
"layout": "IPY_MODEL_70e6878a30df4300b3d68ddc85c9fa70",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_14e402b3e5444e78974b74585128d625",
"value": 1
}
},
"fbc83f6ebdf544cfb337406babfaec51": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_e78abf30a1d04960b90034bc8468e5a3",
"placeholder": "​",
"style": "IPY_MODEL_a9fbe258aad24ce984d77c4097c42ec9",
"value": " 1/1 [00:00<00:00, 2.72ba/s]"
}
},
"b025c98176534c5786303bb9aca36c53": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"70e6878a30df4300b3d68ddc85c9fa70": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"14e402b3e5444e78974b74585128d625": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": "initial"
}
},
"e78abf30a1d04960b90034bc8468e5a3": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"a9fbe258aad24ce984d77c4097c42ec9": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"7969eff748bd4ae6bfaec5457b88ea00": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_618b626c5b764fa7b2294c6b8604cf98",
"IPY_MODEL_c9a084fb6865400485904cc180bfa02c"
],
"layout": "IPY_MODEL_7b7b17673c6e49d9835071d55477e479"
}
},
"618b626c5b764fa7b2294c6b8604cf98": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "#1: 100%",
"description_tooltip": null,
"layout": "IPY_MODEL_3dc0cace250c4aa5b20f921a0cc777a6",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_8dce35a5be964ed1a06d9bd06040539f",
"value": 1
}
},
"c9a084fb6865400485904cc180bfa02c": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_4a05f2e28dc441309071657d230ad678",
"placeholder": "​",
"style": "IPY_MODEL_b1dfb29b78ab4bfb8c43ee61f0d0f24c",
"value": " 1/1 [00:00<00:00, 3.02ba/s]"
}
},
"7b7b17673c6e49d9835071d55477e479": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"3dc0cace250c4aa5b20f921a0cc777a6": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"8dce35a5be964ed1a06d9bd06040539f": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": "initial"
}
},
"4a05f2e28dc441309071657d230ad678": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"b1dfb29b78ab4bfb8c43ee61f0d0f24c": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"8abb2f81fbaf466783e51caf4ebddcd0": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_016145d53f1a4cf5802b70459def1ac3",
"IPY_MODEL_68ebc9d7fce34774bb140e9e1766e062"
],
"layout": "IPY_MODEL_a3e3a79a365b4131a5aed44dc649605d"
}
},
"016145d53f1a4cf5802b70459def1ac3": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "#3: 100%",
"description_tooltip": null,
"layout": "IPY_MODEL_652f1b75346744e4b722696680ea113d",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_0dfda1ea87b24084bebc3b435d5f94c8",
"value": 1
}
},
"68ebc9d7fce34774bb140e9e1766e062": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_3f74f0adea3d4569a36a949dc8e0fc54",
"placeholder": "​",
"style": "IPY_MODEL_acdc93dd64e54e3aa84dfb7f95d1b336",
"value": " 1/1 [00:00<00:00, 2.86ba/s]"
}
},
"a3e3a79a365b4131a5aed44dc649605d": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"652f1b75346744e4b722696680ea113d": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"0dfda1ea87b24084bebc3b435d5f94c8": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": "initial"
}
},
"3f74f0adea3d4569a36a949dc8e0fc54": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"acdc93dd64e54e3aa84dfb7f95d1b336": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"ee8a8ccd8da6473bbe84c7cbbf171c0e": {
"model_module": "@jupyter-widgets/controls",
"model_name": "VBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "VBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "VBoxView",
"box_style": "",
"children": [
"IPY_MODEL_62623aef388046f68cd027344d73bc3f",
"IPY_MODEL_83af7df52b194e36b2080746762750a8"
],
"layout": "IPY_MODEL_088fd5cda5fd4b4a92d73cf9ceac2f8b"
}
},
"62623aef388046f68cd027344d73bc3f": {
"model_module": "@jupyter-widgets/controls",
"model_name": "LabelModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "LabelModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "LabelView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_c06d9de88b50474394e9c16599201953",
"placeholder": "​",
"style": "IPY_MODEL_ad8df4eff0934d64b32d294134fe7da7",
"value": " 390.34MB of 390.34MB uploaded (0.00MB deduped)\r"
}
},
"83af7df52b194e36b2080746762750a8": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_4e62b898e7c44d98827f9ba531ee7e43",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_132ceb58c8f541f59d72ff0e5188adb6",
"value": 1
}
},
"088fd5cda5fd4b4a92d73cf9ceac2f8b": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"c06d9de88b50474394e9c16599201953": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"ad8df4eff0934d64b32d294134fe7da7": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"4e62b898e7c44d98827f9ba531ee7e43": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"132ceb58c8f541f59d72ff0e5188adb6": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": ""
}
}
}
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/neoyipeng2018/51faa34f9401c67e5d3116c938a1ca21/chinese-mlm-wwm-mac-si.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
"metadata": {
"id": "MOsHUjgdIrIW"
},
"source": [
"! pip install transformers"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "a3KD3WXU3l-O"
},
"source": [
"# Fine-tuning a language model"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "1r_n9OWV3l-Q"
},
"source": [
"## Preparing the dataset"
]
},
{
"cell_type": "code",
"metadata": {
"id": "HqAC7VRihYsw"
},
"source": [
"!pip install datasets"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "n2ZRs1cL3l-R"
},
"source": [
"from datasets import load_dataset\n",
"# datasets = load_dataset('wikitext', 'wikitext-2-raw-v1')"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "7_Wvd5_yhknX",
"outputId": "0f462be6-0273-4c24-8580-013172b5da1c"
},
"source": [
"%matplotlib inline\n",
"\n",
"from google.colab import drive; drive.mount('/content/gdrive', force_remount=True)\n",
"%cd '/content/gdrive/My Drive/Colab Notebooks'\n",
"\n",
"import pandas as pd\n",
"import glob"
],
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"text": [
"Mounted at /content/gdrive\n",
"/content/gdrive/My Drive/Colab Notebooks\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "8koYv-4pilBx"
},
"source": [
"get the list of text data"
]
},
{
"cell_type": "code",
"metadata": {
"id": "udV3L017in8v"
},
"source": [
"import os\n",
"\n",
"root='article'\n",
"ls=[]\n",
"for path, subdirs, files in os.walk(root):\n",
" for name in files:\n",
" if name[-3:]=='txt': ls.append(os.path.join(path, name))# print(os.path.join(path, name))"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "ZBiL00Uviv-V"
},
"source": [
"ls=ls[1:] #first file is log.txt"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "kjByFj-ei1Xf"
},
"source": [
"train=ls[:int(len(ls)*.8)]\n",
"test =ls[int(len(ls)*.8):]\n",
"assert len(train)+len(test)==len(ls)"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "uMF79HaHssyC",
"outputId": "53f9658a-7ba5-4426-eb3d-23d362288bb0"
},
"source": [
"len(train),len(test)"
],
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(328, 82)"
]
},
"metadata": {
"tags": []
},
"execution_count": 9
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "CxoTjOJ93fXt"
},
"source": [
"for `text`, the documents are read as a **line-by-line dataset**, not document by document.\n",
"\n",
"You can also load datasets from a csv or a JSON file, see the [full documentation](https://huggingface.co/docs/datasets/loading_datasets.html#from-local-files) for more information."
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 88,
"referenced_widgets": [
"88d5f1125dcf43f0a4f84980d1798155",
"e6d35c6c6c1d46ac948978054dbaa3a9",
"9c2d88aa220a4d6295c3f870053fcaaf",
"15438ba7ec8d4000b7fa6f1b333a6a55",
"2a9799302af04e309991bfa66f731556",
"87eab3762664485e9550a7cc690f284d",
"9b29308134434b24a9927ba267b1e950",
"428c4314438c4edf954acb2ce29e49fa",
"cc564e748a8a44a480915407506bc1a7",
"be37b8df736843589198d89b89c401d5",
"6bfd8d8f8249465daf72b6ad94f36095",
"a966c45ef2de4a29b303122c279410ae",
"df5b8c3751314b5e851bf862ad3adac2",
"208c26f1f4c6435a8f99472660451233",
"ce88abd84de14691bdff76a4d1b2a02e",
"89ac263e67a3437e8ae47ca8213cfb77"
]
},
"id": "uxSaGa_l3l-W",
"outputId": "ca8b4f87-1558-4460-8506-6761b2d01c0d"
},
"source": [
"# datasets = load_dataset(\"text\", data_files={\"train\": path_to_train.txt, \"validation\": path_to_validation.txt}\n",
"datasets = load_dataset(\"text\", data_files={\"train\": train, \"test\": test})"
],
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"text": [
"Using custom data configuration default-d875fd9026f4b48d\n"
],
"name": "stderr"
},
{
"output_type": "stream",
"text": [
"Downloading and preparing dataset text/default (download: Unknown size, generated: Unknown size, post-processed: Unknown size, total: Unknown size) to /root/.cache/huggingface/datasets/text/default-d875fd9026f4b48d/0.0.0/293ecb642f9fca45b44ad1f90c8445c54b9d80b95ab3fca3cfa5e1e3d85d4a57...\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "88d5f1125dcf43f0a4f84980d1798155",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=1.0, bar_style='info', max=1.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"\r"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "cc564e748a8a44a480915407506bc1a7",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=1.0, bar_style='info', max=1.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"\rDataset text downloaded and prepared to /root/.cache/huggingface/datasets/text/default-d875fd9026f4b48d/0.0.0/293ecb642f9fca45b44ad1f90c8445c54b9d80b95ab3fca3cfa5e1e3d85d4a57. Subsequent calls will reuse this data.\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "u3EtYfeHIrIz"
},
"source": [
"To access an actual element, you need to select a split first, then give an index:"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "bzTgrtMr6Bqj",
"outputId": "f917fd9b-ad22-4913-d655-00e4de54774d"
},
"source": [
"datasets"
],
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"DatasetDict({\n",
" train: Dataset({\n",
" features: ['text'],\n",
" num_rows: 2597\n",
" })\n",
" test: Dataset({\n",
" features: ['text'],\n",
" num_rows: 673\n",
" })\n",
"})"
]
},
"metadata": {
"tags": []
},
"execution_count": 11
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"id": "JgiKslq3m9Ne",
"outputId": "0f2d6659-de71-4aea-e21b-a0e4808d5699"
},
"source": [
"f'train lines: {len(datasets[\"train\"])}. val lines: {len(datasets[\"test\"])}'"
],
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
},
"text/plain": [
"'train lines: 2597. val lines: 673'"
]
},
"metadata": {
"tags": []
},
"execution_count": 12
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "X6HrpprwIrIz",
"outputId": "4eb34802-c7a3-4791-fb3a-31a1918fccab"
},
"source": [
"datasets[\"train\"][40]"
],
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"{'text': ' 受国际市场剧烈震荡及A股本周连续回调影响,本周北上资金净卖出75亿元。但从整个2月份来看,剔除春节长假,仅3个交易周,北上资金合计大幅净买入逾412亿元,今年以来两个月累计净买入812亿元,而去年全年才净买入2089亿元。'}"
]
},
"metadata": {
"tags": []
},
"execution_count": 13
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "WHUmphG3IrI3"
},
"source": [
"To get a sense of what the data looks like, the following function will show some examples picked randomly in the dataset."
]
},
{
"cell_type": "code",
"metadata": {
"id": "ur5sNUcZ3l-g"
},
"source": [
"from datasets import ClassLabel\n",
"import random\n",
"import pandas as pd\n",
"from IPython.display import display, HTML\n",
"\n",
"def show_random_elements(dataset, num_examples=10):\n",
" assert num_examples <= len(dataset), \"Can't pick more elements than there are in the dataset.\"\n",
" picks = []\n",
" for _ in range(num_examples):\n",
" pick = random.randint(0, len(dataset)-1)\n",
" while pick in picks:\n",
" pick = random.randint(0, len(dataset)-1)\n",
" picks.append(pick)\n",
" \n",
" df = pd.DataFrame(dataset[picks])\n",
" for column, typ in dataset.features.items():\n",
" if isinstance(typ, ClassLabel):\n",
" df[column] = df[column].transform(lambda i: typ.names[i])\n",
" display(HTML(df.to_html()))"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 444
},
"id": "1Uk8NROQ3l-k",
"outputId": "05991d50-19a8-486f-adef-6c9618c76a12"
},
"source": [
"show_random_elements(datasets[\"test\"])"
],
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>text</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>嘉欣丝绸是我国最大的丝绸产品生产和销售企业之一,主营高档丝、绸、服装等产品制造。对于此次事件的影响,公司证券部对记者表示,\"公司缅甸服装生产基地因为之前受到疫情影响尚未正式运营,目前还处于基建中,人员也因为疫情的原因还没到位,所以公司目前没有受到缅甸事件的影响。\"</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>港股通名单生变</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>北京一位对冲策略基金经理表示,以绝对收益为目标的对冲策略基金也算\"固收+\"的一种。目前,行业普遍预期今年权益投资的收益率要降低,加上股市回调压力,这类产品就成为各家公募产品布局的一个重要方向。</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>资料显示,2020年9月22日,证监会对*ST康得财务造假等违法行为作出正式行政处罚。根据2020年12月31日深交所发布的退市新规及相关过渡期安排,*ST康得属于新规施行前收到行政处罚决定书且可能触及重大违法强制退市情形的公司。</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>多家上市公司回应</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>肉毒素是国内两个最大的医美市场产品之一,另一个是玻尿酸。国内目前玻尿酸三大市场巨头是爱美客、华熙生物(688363)、昊海生科。</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td></td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>数据显示,截至2020年第三季度,朗姿股份共运营18家医美终端机构,目前已初成规模。但公司仍然在持续加码医美赛道,去年年底及今年年初先后设立了博辰五号、八号基金,用于投资医疗美容领域及相关产业未上市公司股权,基金规模分别为4亿元、2.5亿元。此外,公司还预计今年将继续加快晶肤门店连锁扩张,预计今年将新增超10家门店。</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>目前深圳市场的所谓一套刚需购房者,三成首付买一套房,按照一套房600万元计算,贷款要400多万元,30年月供每月付款超过2万元,这就要求月收入超过4万元;如果购买一套1000万元住宅,贷款700万元,则需要每月还款3.7万元,月收入要达到7.4万元。</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>缺芯不再是华为一家手机企业之忧。继前不久苹果公司自爆缺芯后,新春以来,OPPO、小米、一加、realme、vivo等一众全球手机代表企业也纷纷表示,全行业缺芯是事实,且可能持续两三年!</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "CKerdF353l-o"
},
"source": [
"As we can see, some of the texts are a full paragraph while others are just titles or empty lines."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "q-EIELH43l_T"
},
"source": [
"## Masked language modeling (WWM)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "LWk97-Ny3l_T"
},
"source": [
"For masked language modeling (MLM) we are going to use the same preprocessing as before for our dataset with one additional step: we will randomly mask some tokens (by replacing them by `[MASK]`) and the labels will be adjusted to only include the masked tokens (we don't have to predict the non-masked tokens)."
]
},
{
"cell_type": "code",
"metadata": {
"id": "QRTpmyCc3l_T"
},
"source": [
"model_checkpoint = \"hfl/chinese-macbert-base\""
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "12F1ulgT3l_V"
},
"source": [
"We can apply the same tokenization function as before, we just need to update our tokenizer to use the checkpoint we just picked:"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 311,
"referenced_widgets": [
"4b488ba931e243539b5d141305ad6d2a",
"744860302e9f4e8b9018bac277c2b1ce",
"fc4bfb65e8a8463fbd7370808966eccc",
"a9a9072f40c748c0a29357f00580f46a",
"3b4a45447102439c966df164bb808993",
"6c30daa0abb3447599bfc5e17d976f01",
"ae3edf356d614c6085ed6fc4caf5744a",
"7762b56ec51d4cbabf01e7bacd2320ec",
"184c22ad7a0148d6b00be0b144d2e5a5",
"f5c652dd7ed54561a93c1f1fc24b1e5e",
"9dd5634e66114c66acc0f5fdea6b1ad7",
"ead06abddaac437799d2bc1ab820dc6d",
"d7966e3cb88c46e6a577b024d8580520",
"39903036ce3f405fad6544fd7521a363",
"137c5c6606624ee1913015b6a250def4",
"9a6ee066f8b74457a95837982e3aa7e8",
"13c3b54474c94e8d9c08bebca80eaf09",
"c90500b16e8446c9b4005ac839a35c0c",
"f457c89709d546a79347a220967cc962",
"f7857fb2ddb546688497ef24deb3f387",
"af6cbfdfdba3437e88b7cd41625ac1f4",
"fd0ebb306abb404e9ec44db8f804ec7c",
"2d2c15684dd9424b90c0966e3b1da984",
"6fb2b0b9b1cf41db9a1d246c3e59dbbc",
"72fcad8039244a20ad53b77bed1ebc17",
"f0f1c0f4a38c4d339f7383c51e191be5",
"f57cddba1b144f3687b45a2bc650bddc",
"a122a350f432428c883f8043c3d39a97",
"e92f885ea8b5425ca95c29e5ce2b355c",
"0010ba5e4eb24a75b67f25c5d584e2b4",
"f6a52d8a3abd4027a63d96d9eba7c13d",
"6df979090f0b4fb38f923266d96c74bd",
"ba6b7fc4da3c42629824b91574a06b08",
"17ba0fe6aea54e7f86e00a0174f7364a",
"40985c3272914c1d9ac6975081c8c941",
"0152656dc8bb4f1199a0dfd8d02eb539",
"c2f12882e540409b999f7edfedddc7cb",
"36313fb58e33450ea26ab425cda49e80",
"5807a0fad6314f9cba7e71a549d820f3",
"4dbe063145744f08ba46a1ee61f3b288",
"39f8dce23d8b45c5ae6ee48337a1f545",
"44ca5b904696434cbcef3b4a2916e788",
"5f1b57f27de8416faa7db2d6ee1b89bf",
"1bfeceb3f1fc4999ad147d711fa2dfa6",
"178a4bc652a144c2822b39e2408ae88f",
"23c0ecfd86d245bbabbe93820210d127",
"7f5fd2b09aa241288e6d3d65cc0fcdc7",
"9ed078863b004af2a4794aa817fd80f9"
]
},
"id": "h8RCYcvr3l_V",
"outputId": "f27220b3-8bf8-49fb-9088-f6f481148a54"
},
"source": [
"from transformers import AutoTokenizer\n",
"tokenizer = AutoTokenizer.from_pretrained(model_checkpoint)#, use_fast=True)"
],
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "4b488ba931e243539b5d141305ad6d2a",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, description='Downloading', max=659.0, style=ProgressStyle(description_…"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "184c22ad7a0148d6b00be0b144d2e5a5",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, description='Downloading', max=109540.0, style=ProgressStyle(descripti…"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "13c3b54474c94e8d9c08bebca80eaf09",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, description='Downloading', max=268961.0, style=ProgressStyle(descripti…"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "72fcad8039244a20ad53b77bed1ebc17",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, description='Downloading', max=2.0, style=ProgressStyle(description_wi…"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "ba6b7fc4da3c42629824b91574a06b08",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, description='Downloading', max=112.0, style=ProgressStyle(description_…"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "39f8dce23d8b45c5ae6ee48337a1f545",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, description='Downloading', max=19.0, style=ProgressStyle(description_w…"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "c1wtfcVEEtd0",
"outputId": "e24e2b18-66ca-4d4d-e79a-a0caae693519"
},
"source": [
"tokenizer.encode('[CLS]')"
],
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[101, 101, 102]"
]
},
"metadata": {
"tags": []
},
"execution_count": 18
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "CzD5N4_UEwCu",
"outputId": "13076a5b-0739-4048-f94c-f19e877173bf"
},
"source": [
"tokenizer.encode('[SEP]')"
],
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[101, 102, 102]"
]
},
"metadata": {
"tags": []
},
"execution_count": 19
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "swuwOD8_FHl9",
"outputId": "265890ec-4adc-43d2-ec59-0e0ec851b814"
},
"source": [
"tokenizer.encode('[MASK]')"
],
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[101, 103, 102]"
]
},
"metadata": {
"tags": []
},
"execution_count": 20
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 443,
"referenced_widgets": [
"d6e2c6e169dc464a82cf3fb43f9a0520",
"70eafe17ec144198a745ac57ebcf5d4f",
"6c0c80bb5daa475ab0efb8d6f332c050",
"8daef61bb72542c69d8cda913d23521e",
"ffa32182c0074b3d8897567a80dd3de4",
"d0f83d818f5643c48e6e060c1571f579",
"3063de5131094b168fc2501e2a2cf146",
"9aa1a4ef24a9431492394873eb53e7ea",
"77570beeb55b4fe5aad9856647de138d",
"e1c0b1b8b018480bb35c0dc314b2e1d0",
"892cfb9cf4e24c90a30953d621545210",
"5aa7324992ae4a72a4c397c19ee8e6be",
"5347cf606d6d4316b4b45a4452374bfc",
"3faf849105f14069bba31c6bd62e303f",
"f9d7495af071444783c53335891f5362",
"e2f29a7646d4411ba57fc26ff7a978ce",
"f85d75dcc154445da13ddc8787896e73",
"ebc73c9f0e77448c98f3a03874e9ffaa",
"0c9305fb44c04780b40eff10ca2fd864",
"b3990af52b5c451f9b07e52f3713ee01",
"25e063c2152647488a6f86700e88ec71",
"bb634d4a47144c1ca170b84270b8b2e5",
"58e4146797724d3eb50bdbae203ba7d1",
"52eaaf6806c042b28f1659bb99c4a5ee",
"ded91c034e8f40e4b2200453a65cfd06",
"687eb83eef0c40d1beaafae8413cb70f",
"88ccc30426274f6b8d4037d20ed4ede0",
"574ceabaa5d44664b0fce7198630e7fb",
"0ae81681569b4f94b4dd685397e45635",
"e2eb81baac924afcbbb213e454797e2e",
"c86c985e485f4306a66e1687836f7aae",
"ef1c46b95cad4fb29f6157cfbad527c4",
"01e2aa6ea9534cf4aee3d4b8a4132c29",
"92f49383586444c29fe09e509e9cd69c",
"17292c98aa0a4592b84795596edc27b0",
"ef77e13438e140cfafdd1baefd90cc62",
"16f7195a089d465caac4e81ddda25d05",
"8075f5edaa4a41ebbb327898fa18d100",
"fb5dbfe9210946d4b0c57931218eb726",
"1dde267338634a42be15e0ddf702be1f",
"5cba3edf80d84f018597ac1f4af640e1",
"5cf59f70c22f4ef0a0e4bcdfcd35e26a",
"3d6509076bc349c99a1bfd1710e9db36",
"8641675a1deb45f3b88d6de68dd1941d",
"cbf938151f1f49c2b799561f2aef4dda",
"13c722fb87c8466ebf54fdadf3f5a3c6",
"d655e8cc43834990a0ee02a2a190eeb1",
"1a8c90e0ab664225b728bfe6b731927e",
"55c28cbe95b64ce9ab59cfbf66a835e9",
"89a85854787042e184fd0387360a8d73",
"2a1aef0ea97047bba128d8cfcf0c8c3e",
"34f572458d4144da997c25a8ec586fc6",
"76eaaa8361534085929f83f2d6fcab96",
"7af0a3c6403040c08015ee01d2ad2786",
"e63d0823b6504b58abdd829745c90cb8",
"8122a57b572e4eb881755012bd27faa2",
"be7da60efc104706934c272a82c99e0d",
"5091aee431154dcda9a19a815dc1e9ab",
"f52cf142b13d4460b1b70dce23780746",
"bcd80bddaaea4293b2ec17b48fa7cf63",
"1ff7f47138b54b588eecd096ee53eede",
"5cb432a932bc46989b86b51a7536200e",
"b2d6585fa2ba466e97b52fd6bd5921ae",
"bd417cbebe834d939d3beed0e3a91116"
]
},
"id": "nNZPUQBslpx0",
"outputId": "82c1724b-7912-42d7-b5dd-83aa3c05e794"
},
"source": [
"def tokenize_function(examples): \n",
" examples[\"text\"] = [line for line in examples[\"text\"] if len(line) > 0 and not line.isspace()] #changed to match WMM.py\n",
" return tokenizer(examples[\"text\"], truncation=True, max_length=512)\n",
" #return tokenizer(examples[\"text\"])\n",
"\n",
"tokenized_datasets = datasets.map(tokenize_function, batched=True, num_proc=4, remove_columns=[\"text\"])"
],
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"text": [
" "
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "d6e2c6e169dc464a82cf3fb43f9a0520",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, description='#0', max=1.0, style=ProgressStyle(description_width='init…"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "77570beeb55b4fe5aad9856647de138d",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, description='#1', max=1.0, style=ProgressStyle(description_width='init…"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "f85d75dcc154445da13ddc8787896e73",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, description='#3', max=1.0, style=ProgressStyle(description_width='init…"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "ded91c034e8f40e4b2200453a65cfd06",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, description='#2', max=1.0, style=ProgressStyle(description_width='init…"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"\n",
"\n",
"\n",
"\n",
" "
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "01e2aa6ea9534cf4aee3d4b8a4132c29",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, description='#0', max=1.0, style=ProgressStyle(description_width='init…"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "5cba3edf80d84f018597ac1f4af640e1",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, description='#1', max=1.0, style=ProgressStyle(description_width='init…"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "55c28cbe95b64ce9ab59cfbf66a835e9",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, description='#2', max=1.0, style=ProgressStyle(description_width='init…"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "be7da60efc104706934c272a82c99e0d",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, description='#3', max=1.0, style=ProgressStyle(description_width='init…"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"\n",
"\n",
"\n",
"\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "AQ0AdR8q6Yjp",
"outputId": "6c3e6928-6358-442c-c863-aa670a6e67b8"
},
"source": [
"datasets"
],
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"DatasetDict({\n",
" train: Dataset({\n",
" features: ['text'],\n",
" num_rows: 2597\n",
" })\n",
" test: Dataset({\n",
" features: ['text'],\n",
" num_rows: 673\n",
" })\n",
"})"
]
},
"metadata": {
"tags": []
},
"execution_count": 22
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "zBvO8w7T6Ths",
"outputId": "ced5ed5e-fd67-426d-b5e1-350b676444f3"
},
"source": [
"tokenized_datasets"
],
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"DatasetDict({\n",
" train: Dataset({\n",
" features: ['attention_mask', 'input_ids', 'token_type_ids'],\n",
" num_rows: 2326\n",
" })\n",
" test: Dataset({\n",
" features: ['attention_mask', 'input_ids', 'token_type_ids'],\n",
" num_rows: 653\n",
" })\n",
"})"
]
},
"metadata": {
"tags": []
},
"execution_count": 23
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 281
},
"id": "SvMAUF5KXUNu",
"outputId": "2e969a9d-10dd-4750-aedf-22218a2f7654"
},
"source": [
"show_random_elements(tokenized_datasets[\"test\"],num_examples=2)"
],
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>attention_mask</th>\n",
" <th>input_ids</th>\n",
" <th>token_type_ids</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...]</td>\n",
" <td>[101, 1762, 1155, 868, 5988, 4692, 3341, 8024, 1343, 2399, 3274, 1355, 4638, 3173, 1094, 5511, 4142, 4554, 2658, 8024, 1217, 1196, 749, 2797, 3322, 6121, 689, 5708, 4275, 5165, 5375, 4307, 1105, 511, 107, 4554, 2658, 3274, 1355, 4638, 2399, 1159, 8024, 6121, 689, 3146, 860, 7478, 2382, 2650, 6225, 8024, 1728, 3634, 677, 3952, 2832, 6598, 738, 1121, 2208, 8024, 852, 1139, 725, 2692, 3160, 4638, 3221, 8024, 4554, 2658, 998, 4495, 4638, 5296, 677, 1215, 1062, 510, 5296, 677, 3136, 5509, 5023, 1353, 5445, 1173, 4080, 749, 3867, 6589, 4510, 2094, 7566, 1818, 7444, 3724, 8024, 6821, ...]</td>\n",
" <td>[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...]</td>\n",
" <td>[101, 6818, 3309, 8024, 1914, 1765, 7032, 6084, 4664, 5052, 6956, 7305, 2190, 3868, 2791, 6598, 7032, 5125, 1114, 6444, 2971, 8024, 698, 7344, 3867, 6589, 6587, 510, 5307, 5852, 6587, 5023, 6598, 7032, 6824, 6226, 3837, 1057, 3517, 2356, 511, 2356, 1767, 3867, 2622, 2900, 1139, 8024, 3918, 1766, 2356, 4685, 1068, 7032, 6084, 4664, 5052, 6956, 7305, 3189, 1184, 1374, 7415, 1914, 2157, 1555, 689, 7213, 6121, 2458, 833, 8024, 6206, 3724, 1392, 7213, 6121, 2961, 3389, 5307, 5852, 6587, 3837, 1057, 2791, 1765, 772, 2356, 1767, 2658, 1105, 511, 2190, 754, 753, 2797, 2791, 2356, 1767, 8024, ...]</td>\n",
" <td>[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...]</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "TeUceLw4pkUA"
},
"source": [
"### `run_chinese_ref.py`\n",
"https://github.com/huggingface/transformers/blob/master/examples/research_projects/mlm_wwm/run_chinese_ref.py\n",
"\n",
"Using this so that I can do WWM"
]
},
{
"cell_type": "code",
"metadata": {
"id": "jalH7kqdpm9i"
},
"source": [
"!pip install ltp"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "Bks6fb9YpqZi"
},
"source": [
"import json\n",
"from typing import List\n",
"\n",
"from ltp import LTP\n",
"from datasets import Dataset\n",
"\n",
"from transformers.models.bert.tokenization_bert import BertTokenizer"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 66,
"referenced_widgets": [
"cafc91166c2642f8b50a40d73eb16a7c",
"94057e035e0c41b7964972544d281fe6",
"d7fab45109ee4e54a6a98b1abfd059f2",
"ca894d90361c4c1bbe99f9c999cf423e",
"ec388b32a8294eda9d65f0422f8e11da",
"15886ce0d5db46a7826e0dd9d66094b7",
"48079c8c7b984a5fb7798fc951f0c279",
"ae8d321dafbe4f84bdff58ea2c0b9f2d"
]
},
"id": "E9NKqACkqHo8",
"outputId": "49009810-1948-4fa4-c885-35b3a1606b7c"
},
"source": [
"ltp_tokenizer = LTP()"
],
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "cafc91166c2642f8b50a40d73eb16a7c",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, description='Downloading', max=164437832.0, style=ProgressStyle(descri…"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "rZEr4pWPqVaf"
},
"source": [
"bert_tokenizer = tokenizer"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "7wZgxWByUDmL"
},
"source": [
"def _is_chinese_char(cp):\n",
" \"\"\"Checks whether CP is the codepoint of a CJK character.\"\"\"\n",
" # This defines a \"chinese character\" as anything in the CJK Unicode block:\n",
" # https://en.wikipedia.org/wiki/CJK_Unified_Ideographs_(Unicode_block)\n",
" #\n",
" # Note that the CJK Unicode block is NOT all Japanese and Korean characters,\n",
" # despite its name. The modern Korean Hangul alphabet is a different block,\n",
" # as is Japanese Hiragana and Katakana. Those alphabets are used to write\n",
" # space-separated words, so they are not treated specially and handled\n",
" # like the all of the other languages.\n",
" if (\n",
" (cp >= 0x4E00 and cp <= 0x9FFF)\n",
" or (cp >= 0x3400 and cp <= 0x4DBF) #\n",
" or (cp >= 0x20000 and cp <= 0x2A6DF) #\n",
" or (cp >= 0x2A700 and cp <= 0x2B73F) #\n",
" or (cp >= 0x2B740 and cp <= 0x2B81F) #\n",
" or (cp >= 0x2B820 and cp <= 0x2CEAF) #\n",
" or (cp >= 0xF900 and cp <= 0xFAFF)\n",
" or (cp >= 0x2F800 and cp <= 0x2FA1F) #\n",
" ): #\n",
" return True\n",
"\n",
" return False\n",
"\n",
"def is_chinese(word: str):\n",
" # word like '180' or '身高' or '神'\n",
" for char in word:\n",
" char = ord(char)\n",
" if not _is_chinese_char(char):\n",
" return 0\n",
" return 1\n",
"def get_chinese_word(tokens: List[str]):\n",
" #get a set of chinese words, for masking Whole word later.\n",
" word_set = set()\n",
"\n",
" for token in tokens:\n",
" chinese_word = len(token) > 1 and is_chinese(token)\n",
" if chinese_word:\n",
" word_set.add(token)\n",
" word_list = list(word_set)\n",
" return word_list\n",
"\n",
"def add_sub_symbol(bert_tokens: List[str], chinese_word_set: set()):\n",
" #adds \"##\" to subword to denote that it is part of the full word, and not a word by itself.\n",
" if not chinese_word_set: return bert_tokens\n",
" max_word_len = max([len(w) for w in chinese_word_set])\n",
"\n",
" bert_word = bert_tokens\n",
" start, end = 0, len(bert_word)\n",
" while start < end:\n",
" single_word = True\n",
" if is_chinese(bert_word[start]):\n",
" l = min(end - start, max_word_len)\n",
" for i in range(l, 1, -1):\n",
" whole_word = \"\".join(bert_word[start : start + i])\n",
" if whole_word in chinese_word_set:\n",
" for j in range(start + 1, start + i):\n",
" bert_word[j] = \"##\" + bert_word[j]\n",
" start = start + i\n",
" single_word = False\n",
" break\n",
" if single_word:\n",
" start += 1\n",
" return bert_word\n",
"\n",
"def prepare_ref(lines: List[str], ltp_tokenizer: LTP, bert_tokenizer: BertTokenizer):\n",
" ltp_res = []\n",
"\n",
" for i in range(0, len(lines), 100):\n",
" res = ltp_tokenizer.seg(lines[i : i + 100])[0]\n",
" res = [get_chinese_word(r) for r in res]\n",
" ltp_res.extend(res)\n",
" assert len(ltp_res) == len(lines)\n",
"\n",
" bert_res = []\n",
" for i in range(0, len(lines), 100):\n",
" res = bert_tokenizer(lines[i : i + 100], add_special_tokens=True, truncation=True, max_length=512)\n",
" bert_res.extend(res[\"input_ids\"])\n",
" assert len(bert_res) == len(lines)\n",
"\n",
" ref_ids = []\n",
" for input_ids, chinese_word in zip(bert_res, ltp_res):\n",
"\n",
" input_tokens = []\n",
" for id in input_ids:\n",
" token = bert_tokenizer._convert_id_to_token(id)\n",
" input_tokens.append(token)\n",
" input_tokens = add_sub_symbol(input_tokens, chinese_word)\n",
" ref_id = []\n",
" # We only save pos of chinese subwords start with ##, which mean is part of a whole word.\n",
" for i, token in enumerate(input_tokens):\n",
" if token[:2] == \"##\":\n",
" clean_token = token[2:]\n",
" # save chinese tokens' pos\n",
" if len(clean_token) == 1 and _is_chinese_char(ord(clean_token)):\n",
" ref_id.append(i)\n",
" ref_ids.append(ref_id)\n",
"\n",
" assert len(ref_ids) == len(bert_res)\n",
"\n",
" return ref_ids"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "ZcYN2dAsptTx"
},
"source": [
"fin=[]\n",
"for f in train:\n",
" with open(f, \"r\", encoding=\"utf-8\") as f: data = f.readlines()\n",
" data = [line.strip() for line in data if len(line) > 0 and not line.isspace()] # avoid delimiter like '\\u2029'\n",
" fin+=data\n",
"\n",
"ref_ids = prepare_ref(fin, ltp_tokenizer, bert_tokenizer)\n",
"\n",
"with open('./resources/train_ref_file.txt', \"w+\", encoding=\"utf-8\") as f:\n",
" data = [json.dumps(ref) + \"\\n\" for ref in ref_ids]\n",
" f.writelines(data)"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "KEa7DDWmq_Mw"
},
"source": [
"fin=[]\n",
"for f in test:\n",
" with open(f, \"r\", encoding=\"utf-8\") as f: data = f.readlines()\n",
" data = [line.strip() for line in data if len(line) > 0 and not line.isspace()] # avoid delimiter like '\\u2029'\n",
" fin+=data\n",
"\n",
"ref_ids = prepare_ref(fin, ltp_tokenizer, bert_tokenizer)\n",
"\n",
"with open('./resources/validation_ref_file.txt', \"w+\", encoding=\"utf-8\") as f:\n",
" data = [json.dumps(ref) + \"\\n\" for ref in ref_ids]\n",
" f.writelines(data)"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "xK2sje3hrQJk"
},
"source": [
"import json\n",
"from typing import List\n",
"from datasets import Dataset\n",
"\n",
"def add_chinese_references(dataset, ref_file):\n",
" with open(ref_file, \"r\", encoding=\"utf-8\") as f:\n",
" refs = [json.loads(line) for line in f.read().splitlines() if (len(line) > 0 and not line.isspace())]\n",
" assert len(dataset) == len(refs)\n",
"\n",
" dataset_dict = {c: dataset[c] for c in dataset.column_names}\n",
" dataset_dict[\"chinese_ref\"] = refs\n",
" return Dataset.from_dict(dataset_dict)"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "p2-hxRndrUh1"
},
"source": [
"tokenized_datasets[\"train\"] = add_chinese_references(tokenized_datasets[\"train\"], './resources/train_ref_file.txt')"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "t4NPQlMkrQFU"
},
"source": [
"tokenized_datasets[\"test\"] = add_chinese_references(tokenized_datasets[\"test\"], './resources/validation_ref_file.txt')"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "MTuy8UUs3l_X"
},
"source": [
"And like before, we group texts together and chunk them in samples of length `block_size`. You can skip that step if your dataset is composed of individual sentences."
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "99imKRHc63Ju",
"outputId": "304f2125-2033-4cab-d470-02f811ca0c72"
},
"source": [
"tokenizer.model_max_length"
],
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"1000000000000000019884624838656"
]
},
"metadata": {
"tags": []
},
"execution_count": 30
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "T80eJ88jl3XR"
},
"source": [
"# block_size = tokenizer.model_max_length\n",
"block_size = 512"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "mt57nuXclumW"
},
"source": [
"def group_texts(examples):\n",
" # Concatenate all texts.\n",
" concatenated_examples = {k: sum(examples[k], []) for k in examples.keys()}\n",
" total_length = len(concatenated_examples[list(examples.keys())[0]])\n",
" # We drop the small remainder, we could add padding if the model supported it instead of this drop, you can\n",
" # customize this part to your needs.\n",
" total_length = (total_length // block_size) * block_size\n",
" # Split by chunks of max_len.\n",
" result = {\n",
" k: [t[i : i + block_size] for i in range(0, total_length, block_size)]\n",
" for k, t in concatenated_examples.items()\n",
" }\n",
" result[\"labels\"] = result[\"input_ids\"].copy()\n",
" return result"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 460,
"referenced_widgets": [
"80537456ac274451b3a5f2ea5c2c8acb",
"34c1a4b6e67b4c37bcef00b1fff790d4",
"34d2903964b14285b12ebb9dd95aa4ca",
"259878c209f94a218a35c139615d731b",
"e72c59be72864417a1350b9056fb1381",
"70e307c726ff416bacfec9e0db74b3b3",
"7a943232edff4f61bf4baa6f209333e5",
"ecd185bbcd86407fab8f05df99fec32a",
"c91a722c477949888c59ac919af6f3e4",
"15aeb4ebe7e54c0ab8ab4bf9c9ab9eed",
"55850d7e5bba49059121e890595a3256",
"e68f686446144685a38377cab26ba199",
"3941b41ef28a403faebb5a6150257855",
"f90cfd7b760240178f00c7f8b62bc8a0",
"4e02fb60751f4a35826b81eebb19db5e",
"74115a2e089f4330af095da887d4156d",
"6faa7b71f26245be8c7cb98f2c8aab9c",
"ff96984058b0469bbcad82d1c6bd8f53",
"07037ce99d28452b84087169aa99ce2f",
"4707d85ab5a6490a8a72fb2690de19aa",
"5eeb6f0cf9fe45e6a961c6ab172c92f1",
"8cd912ce51a546d29c56878e50ba4a6c",
"b3a67814ba4048f8baf10eec0ac64a6d",
"fd148c3c984f438d969b58c98a3a1371",
"9a775b9b12824a32841c3f61e35fa84f",
"8d3950f33c664edd8fa13d17c47dd7eb",
"b5f0219bdc7a4c20a78b891297cf6980",
"a76fc336dda245d9b0aacbb158f07f11",
"9284dffe013343ad9b0e017903201df9",
"c7529c99c4d9478c8fdfb849e9672947",
"0db8d47f4429434c8d3d5d9101bd89ce",
"8b37cb0e56894176abe07919847bc0b2",
"32575ce8492d475abfa4a16c7c8a91c2",
"9e3378e71e734737a3f975e74242152a",
"f98860961dbe437c96a8e433c4e4541e",
"e0e712e8f21c4a57b3d749be1d24aeb4",
"4195c84b16d1491d8b572898110cf56c",
"8aadcf843cce4eb0bdc40d84412b751f",
"7b678ad5e51b4e21b65ed3009db45e6a",
"0227f8abfb25426ba4072574e994cec3",
"83b9f5c470f94160b77b59de10c340f7",
"7b213973917240cb9c7c69a794b2d22c",
"fbc83f6ebdf544cfb337406babfaec51",
"b025c98176534c5786303bb9aca36c53",
"70e6878a30df4300b3d68ddc85c9fa70",
"14e402b3e5444e78974b74585128d625",
"e78abf30a1d04960b90034bc8468e5a3",
"a9fbe258aad24ce984d77c4097c42ec9",
"7969eff748bd4ae6bfaec5457b88ea00",
"618b626c5b764fa7b2294c6b8604cf98",
"c9a084fb6865400485904cc180bfa02c",
"7b7b17673c6e49d9835071d55477e479",
"3dc0cace250c4aa5b20f921a0cc777a6",
"8dce35a5be964ed1a06d9bd06040539f",
"4a05f2e28dc441309071657d230ad678",
"b1dfb29b78ab4bfb8c43ee61f0d0f24c",
"8abb2f81fbaf466783e51caf4ebddcd0",
"016145d53f1a4cf5802b70459def1ac3",
"68ebc9d7fce34774bb140e9e1766e062",
"a3e3a79a365b4131a5aed44dc649605d",
"652f1b75346744e4b722696680ea113d",
"0dfda1ea87b24084bebc3b435d5f94c8",
"3f74f0adea3d4569a36a949dc8e0fc54",
"acdc93dd64e54e3aa84dfb7f95d1b336"
]
},
"id": "LVYPMwEs3l_X",
"outputId": "0a09bfe9-b2b9-4d0b-f167-3d7651247873"
},
"source": [
"lm_datasets = tokenized_datasets.map(\n",
" group_texts,\n",
" batched=True,\n",
" batch_size=1000,\n",
" num_proc=4,\n",
")"
],
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"text": [
" "
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "80537456ac274451b3a5f2ea5c2c8acb",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, description='#1', max=1.0, style=ProgressStyle(description_width='init…"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "c91a722c477949888c59ac919af6f3e4",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, description='#0', max=1.0, style=ProgressStyle(description_width='init…"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
" "
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "6faa7b71f26245be8c7cb98f2c8aab9c",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, description='#2', max=1.0, style=ProgressStyle(description_width='init…"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "9a775b9b12824a32841c3f61e35fa84f",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, description='#3', max=1.0, style=ProgressStyle(description_width='init…"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"\n",
"\n",
"\n",
"\n",
" "
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "32575ce8492d475abfa4a16c7c8a91c2",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, description='#0', max=1.0, style=ProgressStyle(description_width='init…"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "83b9f5c470f94160b77b59de10c340f7",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, description='#2', max=1.0, style=ProgressStyle(description_width='init…"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "7969eff748bd4ae6bfaec5457b88ea00",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, description='#1', max=1.0, style=ProgressStyle(description_width='init…"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "8abb2f81fbaf466783e51caf4ebddcd0",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, description='#3', max=1.0, style=ProgressStyle(description_width='init…"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"\n",
"\n",
"\n",
"\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "NPQXzWh56-x4",
"outputId": "bd3884df-0d4e-4264-da4a-bb88eec92131"
},
"source": [
"lm_datasets"
],
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"DatasetDict({\n",
" train: Dataset({\n",
" features: ['attention_mask', 'chinese_ref', 'input_ids', 'labels', 'token_type_ids'],\n",
" num_rows: 436\n",
" })\n",
" test: Dataset({\n",
" features: ['attention_mask', 'chinese_ref', 'input_ids', 'labels', 'token_type_ids'],\n",
" num_rows: 117\n",
" })\n",
"})"
]
},
"metadata": {
"tags": []
},
"execution_count": 34
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
},
"id": "3-AfgDv87FkS",
"outputId": "a07b108d-d6be-4089-eb96-760d3944ca87"
},
"source": [
"show_random_elements(lm_datasets[\"test\"])"
],
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>attention_mask</th>\n",
" <th>chinese_ref</th>\n",
" <th>input_ids</th>\n",
" <th>labels</th>\n",
" <th>token_type_ids</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...]</td>\n",
" <td>[]</td>\n",
" <td>[8024, 4692, 1962, 677, 3952, 1278, 4545, 1690, 3462, 6612, 6887, 8024, 1398, 3198, 738, 4692, 1962, 5489, 3681, 5162, 510, 4390, 2228, 7000, 5023, 1278, 5401, 772, 1501, 511, 794, 677, 2356, 1062, 1385, 4638, 1062, 1440, 4692, 3341, 8024, 821, 689, 2357, 2229, 677, 3952, 1278, 4545, 1690, 3462, 4638, 1914, 809, 3119, 6579, 2501, 2466, 4684, 2970, 792, 1057, 8024, 2357, 2229, 5303, 4999, 1278, 5401, 772, 1501, 4638, 1156, 809, 807, 4415, 510, 2832, 6598, 3175, 2466, 1217, 4772, 511, 102, 101, 7987, 1928, 821, 689, 4263, 5401, 2145, 6818, 3309, 5500, 817, 1726, 6444, 3209, ...]</td>\n",
" <td>[8024, 4692, 1962, 677, 3952, 1278, 4545, 1690, 3462, 6612, 6887, 8024, 1398, 3198, 738, 4692, 1962, 5489, 3681, 5162, 510, 4390, 2228, 7000, 5023, 1278, 5401, 772, 1501, 511, 794, 677, 2356, 1062, 1385, 4638, 1062, 1440, 4692, 3341, 8024, 821, 689, 2357, 2229, 677, 3952, 1278, 4545, 1690, 3462, 4638, 1914, 809, 3119, 6579, 2501, 2466, 4684, 2970, 792, 1057, 8024, 2357, 2229, 5303, 4999, 1278, 5401, 772, 1501, 4638, 1156, 809, 807, 4415, 510, 2832, 6598, 3175, 2466, 1217, 4772, 511, 102, 101, 7987, 1928, 821, 689, 4263, 5401, 2145, 6818, 3309, 5500, 817, 1726, 6444, 3209, ...]</td>\n",
" <td>[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...]</td>\n",
" <td>[124, 129, 131, 133, 135, 137, 140, 142, 144, 146, 148, 151, 2, 4, 6, 8, 10, 13, 14, 16, 25, 27, 30, 32, 34, 41, 43, 45, 47, 49, 51, 54, 58, 62, 67, 69, 74, 77, 80, 82, 84, 86, 89, 90, 93, 94, 97, 98, 99, 103, 105, 107, 110, 112, 116, 119, 121, 124, 126, 128, 129, 133, 134, 137, 139, 142, 144, 146, 148, 150, 153, 155, 157, 158, 161, 164, 166, 169, 171, 174, 176, 180, 181, 188, 7, 8, 13, 15, 17, 19, 21, 23, 24, 27, 28, 30, 32, 33, 38, 40, ...]</td>\n",
" <td>[2356, 1767, 7444, 3724, 738, 2523, 3200, 4670, 8024, 2797, 3322, 6121, 689, 7444, 3724, 738, 3766, 3300, 678, 7360, 8024, 1728, 3634, 6821, 4905, 897, 2418, 7216, 5165, 2476, 510, 1737, 7410, 4638, 2658, 1105, 1377, 5543, 2898, 5330, 697, 676, 2399, 511, 107, 124, 3299, 8111, 3189, 8024, 8806, 11707, 10689, 5143, 1154, 1355, 2357, 1400, 8024, 8806, 1199, 2600, 6161, 510, 704, 1744, 1277, 2600, 6161, 1155, 3797, 6134, 4850, 511, 102, 101, 1155, 3797, 6237, 7025, 8024, 6863, 2768, 6821, 4905, 5708, 4275, 5375, 6573, 2229, 7481, 4638, 1333, 1728, 3221, 3146, 702, 5708, 4275, 897, ...]</td>\n",
" <td>[2356, 1767, 7444, 3724, 738, 2523, 3200, 4670, 8024, 2797, 3322, 6121, 689, 7444, 3724, 738, 3766, 3300, 678, 7360, 8024, 1728, 3634, 6821, 4905, 897, 2418, 7216, 5165, 2476, 510, 1737, 7410, 4638, 2658, 1105, 1377, 5543, 2898, 5330, 697, 676, 2399, 511, 107, 124, 3299, 8111, 3189, 8024, 8806, 11707, 10689, 5143, 1154, 1355, 2357, 1400, 8024, 8806, 1199, 2600, 6161, 510, 704, 1744, 1277, 2600, 6161, 1155, 3797, 6134, 4850, 511, 102, 101, 1155, 3797, 6237, 7025, 8024, 6863, 2768, 6821, 4905, 5708, 4275, 5375, 6573, 2229, 7481, 4638, 1333, 1728, 3221, 3146, 702, 5708, 4275, 897, ...]</td>\n",
" <td>[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...]</td>\n",
" <td>[]</td>\n",
" <td>[1403, 1079, 8024, 833, 6369, 2360, 752, 1218, 2792, 1469, 3800, 1085, 833, 6369, 2360, 2418, 2496, 2618, 2127, 1114, 1156, 3082, 2127, 8024, 2990, 7770, 2809, 689, 5543, 1213, 8024, 2990, 1285, 2144, 6369, 6574, 7030, 511, 102, 101, 6395, 1171, 3198, 2845, 147, 1062, 1385, 6380, 8024, 791, 3189, 3173, 7319, 5468, 3064, 2772, 3868, 1350, 6598, 3315, 2356, 1767, 4638, 1079, 2159, 8038, 122, 510, 523, 1762, 739, 6818, 2398, 3173, 3198, 807, 704, 1744, 4294, 5682, 4852, 833, 712, 721, 2590, 2682, 2900, 2471, 678, 118, 118, 6581, 2515, 3173, 1355, 2245, 4415, 2573, 2972, 1220, ...]</td>\n",
" <td>[1403, 1079, 8024, 833, 6369, 2360, 752, 1218, 2792, 1469, 3800, 1085, 833, 6369, 2360, 2418, 2496, 2618, 2127, 1114, 1156, 3082, 2127, 8024, 2990, 7770, 2809, 689, 5543, 1213, 8024, 2990, 1285, 2144, 6369, 6574, 7030, 511, 102, 101, 6395, 1171, 3198, 2845, 147, 1062, 1385, 6380, 8024, 791, 3189, 3173, 7319, 5468, 3064, 2772, 3868, 1350, 6598, 3315, 2356, 1767, 4638, 1079, 2159, 8038, 122, 510, 523, 1762, 739, 6818, 2398, 3173, 3198, 807, 704, 1744, 4294, 5682, 4852, 833, 712, 721, 2590, 2682, 2900, 2471, 678, 118, 118, 6581, 2515, 3173, 1355, 2245, 4415, 2573, 2972, 1220, ...]</td>\n",
" <td>[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...]</td>\n",
" <td>[]</td>\n",
" <td>[1400, 4638, 1062, 1385, 772, 1501, 7556, 2418, 2356, 1767, 7444, 3724, 8024, 3300, 6772, 2487, 4638, 2356, 1767, 4993, 751, 1213, 8024, 5307, 3845, 3126, 4660, 738, 2199, 2533, 1168, 3227, 5865, 2990, 1285, 511, 102, 101, 3862, 1298, 4771, 689, 2971, 5500, 5500, 691, 510, 2141, 2971, 782, 1350, 1068, 5468, 3175, 1772, 679, 1346, 680, 6371, 6579, 3315, 3613, 1355, 6121, 4638, 5500, 4873, 511, 1921, 4706, 3389, 928, 2622, 3227, 4850, 8024, 4680, 1184, 1908, 3215, 7770, 4906, 1350, 1071, 1059, 6598, 2094, 1062, 1385, 1908, 3215, 772, 2832, 1394, 6369, 2898, 3300, 3862, 1298, 4771, ...]</td>\n",
" <td>[1400, 4638, 1062, 1385, 772, 1501, 7556, 2418, 2356, 1767, 7444, 3724, 8024, 3300, 6772, 2487, 4638, 2356, 1767, 4993, 751, 1213, 8024, 5307, 3845, 3126, 4660, 738, 2199, 2533, 1168, 3227, 5865, 2990, 1285, 511, 102, 101, 3862, 1298, 4771, 689, 2971, 5500, 5500, 691, 510, 2141, 2971, 782, 1350, 1068, 5468, 3175, 1772, 679, 1346, 680, 6371, 6579, 3315, 3613, 1355, 6121, 4638, 5500, 4873, 511, 1921, 4706, 3389, 928, 2622, 3227, 4850, 8024, 4680, 1184, 1908, 3215, 7770, 4906, 1350, 1071, 1059, 6598, 2094, 1062, 1385, 1908, 3215, 772, 2832, 1394, 6369, 2898, 3300, 3862, 1298, 4771, ...]</td>\n",
" <td>[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...]</td>\n",
" <td>[127, 130, 134, 137, 139, 141, 2, 4, 6, 11, 15, 17, 20, 21, 23, 25, 27, 29, 37, 40, 44, 46, 48, 50, 53, 56, 59, 61, 63, 67, 68, 70, 71, 73, 75, 83, 85, 87, 89, 94, 96, 99, 4, 6, 9, 14, 16, 18, 27, 29, 31, 36, 38, 40, 42, 48, 51, 54, 59, 62, 64, 66, 71, 73, 75, 78, 80, 4, 6, 8, 9, 11, 13, 17, 19, 22, 27, 29, 31, 32, 34, 37, 41, 43, 47, 49, 54, 57, 59, 62, 64, 65, 69, 3, 5, 7, 10, 13, 18, 19, ...]</td>\n",
" <td>[3389, 1905, 511, 102, 101, 794, 809, 677, 3340, 3621, 1377, 809, 4692, 1139, 8024, 3187, 6389, 3221, 2458, 1355, 1555, 510, 704, 792, 3322, 3354, 8024, 6820, 3221, 743, 2791, 782, 8024, 5320, 5320, 6963, 6963, 1154, 1057, 4664, 5052, 5745, 1741, 511, 3300, 2356, 1767, 782, 1894, 6371, 711, 8024, 1963, 3362, 1728, 711, 743, 2791, 5445, 6411, 928, 1927, 928, 8024, 6929, 2218, 679, 788, 788, 3221, 124, 2399, 1079, 679, 5543, 743, 2791, 8024, 3291, 1377, 5543, 1728, 711, 1059, 4923, 5468, 1394, 2674, 2770, 5445, 1762, 3918, 1766, 100, 2189, 3635, 7410, 6121, 100, 8013, ...]</td>\n",
" <td>[3389, 1905, 511, 102, 101, 794, 809, 677, 3340, 3621, 1377, 809, 4692, 1139, 8024, 3187, 6389, 3221, 2458, 1355, 1555, 510, 704, 792, 3322, 3354, 8024, 6820, 3221, 743, 2791, 782, 8024, 5320, 5320, 6963, 6963, 1154, 1057, 4664, 5052, 5745, 1741, 511, 3300, 2356, 1767, 782, 1894, 6371, 711, 8024, 1963, 3362, 1728, 711, 743, 2791, 5445, 6411, 928, 1927, 928, 8024, 6929, 2218, 679, 788, 788, 3221, 124, 2399, 1079, 679, 5543, 743, 2791, 8024, 3291, 1377, 5543, 1728, 711, 1059, 4923, 5468, 1394, 2674, 2770, 5445, 1762, 3918, 1766, 100, 2189, 3635, 7410, 6121, 100, 8013, ...]</td>\n",
" <td>[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...]</td>\n",
" <td>[]</td>\n",
" <td>[1394, 2400, 6369, 5050, 8021, 2190, 1103, 5032, 4526, 1825, 7032, 791, 2399, 809, 3341, 3168, 5815, 121, 119, 8257, 110, 4638, 3633, 3119, 4660, 8024, 6651, 6617, 749, 712, 3837, 2356, 1767, 2900, 3144, 8024, 738, 7770, 754, 1398, 3309, 3326, 4660, 5102, 1825, 7032, 2398, 1772, 118, 123, 110, 4638, 3119, 4660, 3717, 2398, 511, 102, 101, 794, 671, 2399, 3309, 689, 5327, 4692, 8024, 8439, 2399, 2190, 1103, 5032, 4526, 1825, 7032, 2398, 1772, 3119, 4660, 4372, 711, 129, 119, 8394, 110, 511, 704, 6934, 5318, 2190, 3119, 4660, 5032, 4526, 510, 2128, 928, 4937, 978, 7350, ...]</td>\n",
" <td>[1394, 2400, 6369, 5050, 8021, 2190, 1103, 5032, 4526, 1825, 7032, 791, 2399, 809, 3341, 3168, 5815, 121, 119, 8257, 110, 4638, 3633, 3119, 4660, 8024, 6651, 6617, 749, 712, 3837, 2356, 1767, 2900, 3144, 8024, 738, 7770, 754, 1398, 3309, 3326, 4660, 5102, 1825, 7032, 2398, 1772, 118, 123, 110, 4638, 3119, 4660, 3717, 2398, 511, 102, 101, 794, 671, 2399, 3309, 689, 5327, 4692, 8024, 8439, 2399, 2190, 1103, 5032, 4526, 1825, 7032, 2398, 1772, 3119, 4660, 4372, 711, 129, 119, 8394, 110, 511, 704, 6934, 5318, 2190, 3119, 4660, 5032, 4526, 510, 2128, 928, 4937, 978, 7350, ...]</td>\n",
" <td>[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...]</td>\n",
" <td>[]</td>\n",
" <td>[2692, 2703, 3209, 3227, 8024, 3313, 3341, 1355, 2245, 4052, 1213, 2342, 1920, 8024, 7674, 3613, 5314, 750, 1278, 5401, 6121, 689, 3146, 860, 107, 2972, 5773, 107, 6397, 5277, 511, 102, 101, 1744, 7032, 6395, 1171, 6134, 4850, 8024, 4685, 3683, 754, 2797, 3318, 5102, 3146, 2501, 8024, 809, 3800, 2198, 5102, 711, 807, 6134, 4638, 6768, 1278, 5401, 8024, 2612, 1908, 3198, 7313, 2571, 510, 817, 3419, 1350, 7599, 7372, 4685, 2190, 6772, 856, 8024, 1728, 3634, 3300, 3291, 7770, 4638, 2356, 1767, 2970, 1358, 2428, 1469, 1908, 6579, 4372, 8024, 1728, 3634, 4390, 2228, 7000, 3221, 5905, ...]</td>\n",
" <td>[2692, 2703, 3209, 3227, 8024, 3313, 3341, 1355, 2245, 4052, 1213, 2342, 1920, 8024, 7674, 3613, 5314, 750, 1278, 5401, 6121, 689, 3146, 860, 107, 2972, 5773, 107, 6397, 5277, 511, 102, 101, 1744, 7032, 6395, 1171, 6134, 4850, 8024, 4685, 3683, 754, 2797, 3318, 5102, 3146, 2501, 8024, 809, 3800, 2198, 5102, 711, 807, 6134, 4638, 6768, 1278, 5401, 8024, 2612, 1908, 3198, 7313, 2571, 510, 817, 3419, 1350, 7599, 7372, 4685, 2190, 6772, 856, 8024, 1728, 3634, 3300, 3291, 7770, 4638, 2356, 1767, 2970, 1358, 2428, 1469, 1908, 6579, 4372, 8024, 1728, 3634, 4390, 2228, 7000, 3221, 5905, ...]</td>\n",
" <td>[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...]</td>\n",
" <td>[84, 87, 90, 92, 94, 95, 97, 99, 101, 103, 106, 109, 112, 114, 116, 117, 119, 121, 123, 125, 127, 129, 131, 133, 135, 139, 141, 143, 145, 148, 150, 152, 154, 156, 159, 161, 163, 165, 167, 170, 172, 174, 176, 178, 180, 183, 7, 9, 11, 13, 15, 17, 23, 25, 30, 32, 35, 36, 39, 41, 43, 45, 46, 49, 52, 55, 56, 58, 61, 63, 65, 67, 72, 76, 81, 87, 89, 94, 96, 98, 101, 104, 106, 108, 110, 112, 114, 116, 124, 126, 129, 131, 133, 140, 143, 145, 147, 149, 151, 157, ...]</td>\n",
" <td>[704, 143, 5102, 5500, 819, 2898, 3300, 782, 2792, 2898, 3680, 5500, 5500, 819, 3300, 8108, 4873, 2832, 4873, 3326, 8024, 5445, 144, 5102, 5500, 819, 2898, 3300, 782, 2792, 2898, 3680, 5500, 5500, 819, 3300, 122, 4873, 2832, 4873, 3326, 511, 1762, 2100, 2805, 1131, 6395, 1355, 6121, 1184, 8024, 3199, 6228, 4906, 2825, 2141, 2971, 782, 2881, 3300, 8121, 119, 8466, 110, 4638, 5500, 3326, 8024, 2832, 4873, 3326, 3683, 891, 1156, 711, 8203, 119, 8143, 110, 511, 102, 101, 2190, 3634, 3613, 8745, 1247, 7415, 6598, 7032, 4638, 4500, 6854, 8024, 3199, 6228, 4906, 2825, 4917, 8024, ...]</td>\n",
" <td>[704, 143, 5102, 5500, 819, 2898, 3300, 782, 2792, 2898, 3680, 5500, 5500, 819, 3300, 8108, 4873, 2832, 4873, 3326, 8024, 5445, 144, 5102, 5500, 819, 2898, 3300, 782, 2792, 2898, 3680, 5500, 5500, 819, 3300, 122, 4873, 2832, 4873, 3326, 511, 1762, 2100, 2805, 1131, 6395, 1355, 6121, 1184, 8024, 3199, 6228, 4906, 2825, 2141, 2971, 782, 2881, 3300, 8121, 119, 8466, 110, 4638, 5500, 3326, 8024, 2832, 4873, 3326, 3683, 891, 1156, 711, 8203, 119, 8143, 110, 511, 102, 101, 2190, 3634, 3613, 8745, 1247, 7415, 6598, 7032, 4638, 4500, 6854, 8024, 3199, 6228, 4906, 2825, 4917, 8024, ...]</td>\n",
" <td>[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...]</td>\n",
" <td>[]</td>\n",
" <td>[689, 2578, 1392, 3175, 5307, 5852, 5442, 6226, 5745, 5307, 5852, 8024, 2487, 1265, 5381, 5317, 3867, 6589, 5442, 1394, 3791, 3326, 4660, 924, 2844, 1213, 2428, 511, 102, 101, 6395, 1171, 3198, 2845, 147, 1062, 1385, 6380, 8024, 3217, 7599, 1220, 1213, 113, 13277, 8455, 8160, 114, 124, 3299, 8115, 3189, 3241, 1062, 1440, 8024, 1062, 1385, 2877, 1403, 679, 6631, 6814, 8198, 1399, 4294, 2137, 2832, 6598, 5442, 7478, 1062, 2458, 1355, 6121, 5500, 819, 8024, 1247, 6598, 679, 6631, 6814, 8126, 119, 8149, 783, 1039, 4500, 754, 1220, 1213, 6817, 1220, 6163, 1906, 2810, 772, 1350, 772, ...]</td>\n",
" <td>[689, 2578, 1392, 3175, 5307, 5852, 5442, 6226, 5745, 5307, 5852, 8024, 2487, 1265, 5381, 5317, 3867, 6589, 5442, 1394, 3791, 3326, 4660, 924, 2844, 1213, 2428, 511, 102, 101, 6395, 1171, 3198, 2845, 147, 1062, 1385, 6380, 8024, 3217, 7599, 1220, 1213, 113, 13277, 8455, 8160, 114, 124, 3299, 8115, 3189, 3241, 1062, 1440, 8024, 1062, 1385, 2877, 1403, 679, 6631, 6814, 8198, 1399, 4294, 2137, 2832, 6598, 5442, 7478, 1062, 2458, 1355, 6121, 5500, 819, 8024, 1247, 6598, 679, 6631, 6814, 8126, 119, 8149, 783, 1039, 4500, 754, 1220, 1213, 6817, 1220, 6163, 1906, 2810, 772, 1350, 772, ...]</td>\n",
" <td>[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...]</td>\n",
" <td>[116, 118, 121, 123, 126, 128, 130, 135, 137, 139, 141, 143, 2, 4, 6, 10, 12, 14, 17, 20, 22, 24, 26, 28, 31, 33, 35, 37, 39, 41, 43, 46, 48, 50, 51, 53, 54, 56, 58, 61, 65, 68, 70, 72, 75, 78, 80, 82, 83, 84, 86, 89, 91, 92, 94, 95, 97, 99, 101, 104, 106, 109, 111, 115, 117, 119, 122, 124, 127, 129, 132, 134, 137, 138, 140, 142, 144, 2, 4, 6, 10, 12, 14, 23, 25, 27, 29, 31, 33, 35, 39, 41, 43, 45, 47, 51, 53, 55, 57, 67, ...]</td>\n",
" <td>[6381, 5442, 511, 102, 101, 1155, 3797, 6134, 4850, 8024, 3313, 3341, 8806, 4993, 751, 7028, 4157, 2199, 3123, 1762, 6392, 6369, 680, 4906, 2825, 4638, 1394, 1213, 677, 8024, 5445, 679, 3221, 3378, 702, 772, 1501, 7023, 4500, 2356, 1767, 3297, 1962, 4638, 2242, 2391, 8024, 2772, 5442, 2496, 1184, 2356, 1767, 3297, 1044, 6822, 4638, 7732, 7987, 9389, 5708, 4275, 511, 8806, 3313, 3341, 6206, 976, 4638, 3221, 860, 7741, 4638, 1359, 1265, 511, 102, 101, 2945, 749, 6237, 8024, 3297, 3173, 1355, 2357, 4638, 8806, 11707, 10689, 5143, 1154, 3022, 6981, 8284, 8220, 2571, 1041, 8024, 852, ...]</td>\n",
" <td>[6381, 5442, 511, 102, 101, 1155, 3797, 6134, 4850, 8024, 3313, 3341, 8806, 4993, 751, 7028, 4157, 2199, 3123, 1762, 6392, 6369, 680, 4906, 2825, 4638, 1394, 1213, 677, 8024, 5445, 679, 3221, 3378, 702, 772, 1501, 7023, 4500, 2356, 1767, 3297, 1962, 4638, 2242, 2391, 8024, 2772, 5442, 2496, 1184, 2356, 1767, 3297, 1044, 6822, 4638, 7732, 7987, 9389, 5708, 4275, 511, 8806, 3313, 3341, 6206, 976, 4638, 3221, 860, 7741, 4638, 1359, 1265, 511, 102, 101, 2945, 749, 6237, 8024, 3297, 3173, 1355, 2357, 4638, 8806, 11707, 10689, 5143, 1154, 3022, 6981, 8284, 8220, 2571, 1041, 8024, 852, ...]</td>\n",
" <td>[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...]</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "nFJ49iHJ3l_Z"
},
"source": [
"The rest is very similar to what we had, with two exceptions. First we use a model suitable for masked LM:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "PM10A9Za3l_Z"
},
"source": [
"from transformers import AutoModelForMaskedLM\n",
"# model = AutoModelForMaskedLM.from_pretrained('hfl/chinese-macbert-base') #['cls.seq_relationship.weight', 'cls.seq_relationship.bias'] is for NSP. can load BertForPreTraining to check \n",
"model = AutoModelForMaskedLM.from_pretrained('chinese-macbert-base-chinastock') #['cls.seq_relationship.weight', 'cls.seq_relationship.bias'] is for NSP. can load BertForPreTraining to check "
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "z6uuUnvz3l_b"
},
"source": [
"And second, we use a special `data_collator`. The `data_collator` is a function that is responsible of taking the samples and batching them in tensors. In the previous example, we had nothing special to do, so we just used the default for this argument. Here we want to do the random-masking. We could do it as a pre-processing step (like the tokenization) but then the tokens would always be masked the same way at each epoch. By doing this step inside the `data_collator`, we ensure this random masking is done in a new way each time we go over the data.\n",
"\n",
"To do this masking for us, the library provides a `DataCollatorForLanguageModeling`. We can adjust the probability of the masking:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "nRZ-5v_P3l_b"
},
"source": [
"from transformers import DataCollatorForLanguageModeling,DataCollatorForWholeWordMask\n",
"data_collator = DataCollatorForLanguageModeling(tokenizer=tokenizer, mlm_probability=0.15)"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "-fFVn8EU8VQY"
},
"source": [
"data_collator = DataCollatorForWholeWordMask(tokenizer=tokenizer, mlm_probability=0.15)"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "vs_G2Qi18dSx"
},
"source": [
"# ??DataCollatorForWholeWordMask"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "hkuIkQTFimUe"
},
"source": [
"### Train"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "bqHnWcYC3l_d"
},
"source": [
"Then we just have to pass everything to `Trainer` and begin training:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "bPKWKe7smMEo"
},
"source": [
"from transformers import Trainer, TrainingArguments, EarlyStoppingCallback"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "WBm6pd-yjjln"
},
"source": [
"add in w&b for tracking and understanding what is happening in the nn\n",
"- https://colab.research.google.com/github/wandb/examples/blob/master/colabs/huggingface/Optimize_Hugging_Face_models_with_Weights_%26_Biases.ipynb#scrollTo=HZCgZZXJuzsz\n",
"- https://docs.wandb.ai/integrations/huggingface"
]
},
{
"cell_type": "code",
"metadata": {
"id": "w99NhfVhjoIU"
},
"source": [
"!pip install wandb"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 68
},
"id": "1ltTnZYAjokt",
"outputId": "094b0bce-6596-4bf4-a9a6-3d0a2dcca7ae"
},
"source": [
"import wandb\n",
"wandb.login()"
],
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"application/javascript": [
"\n",
" window._wandbApiKey = new Promise((resolve, reject) => {\n",
" function loadScript(url) {\n",
" return new Promise(function(resolve, reject) {\n",
" let newScript = document.createElement(\"script\");\n",
" newScript.onerror = reject;\n",
" newScript.onload = resolve;\n",
" document.body.appendChild(newScript);\n",
" newScript.src = url;\n",
" });\n",
" }\n",
" loadScript(\"https://cdn.jsdelivr.net/npm/postmate/build/postmate.min.js\").then(() => {\n",
" const iframe = document.createElement('iframe')\n",
" iframe.style.cssText = \"width:0;height:0;border:none\"\n",
" document.body.appendChild(iframe)\n",
" const handshake = new Postmate({\n",
" container: iframe,\n",
" url: 'https://wandb.ai/authorize'\n",
" });\n",
" const timeout = setTimeout(() => reject(\"Couldn't auto authenticate\"), 5000)\n",
" handshake.then(function(child) {\n",
" child.on('authorize', data => {\n",
" clearTimeout(timeout)\n",
" resolve(data)\n",
" });\n",
" });\n",
" })\n",
" });\n",
" "
],
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"\u001b[34m\u001b[1mwandb\u001b[0m: Appending key for api.wandb.ai to your netrc file: /root/.netrc\n"
],
"name": "stderr"
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"True"
]
},
"metadata": {
"tags": []
},
"execution_count": 44
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "vfvzzxydkLu5",
"outputId": "a915ac8a-1b3d-46e9-b3ef-3adf7785d617"
},
"source": [
"%env WANDB_LOG_MODEL=true"
],
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"text": [
"env: WANDB_LOG_MODEL=true\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "oCphsy_dmPRf"
},
"source": [
"training_args = TrainingArguments(\n",
" output_dir='./results', #The output directory where the model predictions and checkpoints will be written\n",
" overwrite_output_dir=True, #overwrite the content of the output directory to save space\n",
" save_total_limit=1, #prevents saving many models\n",
" lr_scheduler_type='cosine_with_restarts', #similar to fastai's one cycle\n",
" fp16=True, #used in NEZHA (mixed precision, positional encoding, WWM)\n",
" # gradient_accumulation_steps=100, #more for speeding up\n",
" report_to = ['wandb'], # enable logging to W&B\n",
" run_name = 'custom_training', # name of the W&B run\n",
"# per_device_train_batch_size=8, # batch size per device during training\n",
"# per_device_eval_batch_size=8, # batch size for evaluation\n",
"# warmup_steps=500, # number of warmup steps for learning rate scheduler\n",
" logging_steps = 100, # we will log every 100 steps\n",
" evaluation_strategy = \"steps\",\n",
" eval_steps=500,\n",
" learning_rate=2e-5,\n",
" weight_decay=0.01,\n",
" metric_for_best_model='eval_loss',#needed for early stopping callback to determine when to stop\n",
" load_best_model_at_end=True,\n",
" num_train_epochs=20, # following simple way to fine tune bert - 20 epochs, 2e-5 and early stopping.\n",
" remove_unused_columns=False, ## If we have ref files, need to avoid it removed by trainer\n",
" eval_accumulation_steps=5, # evaluation every X steps. default takes entire dataset and puts it into \n",
")"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"background_save": true,
"base_uri": "https://localhost:8080/",
"height": 296
},
"id": "V-Y3gNqV3l_d",
"outputId": "3b382365-53c4-456f-e47a-b785fcde6570"
},
"source": [
"trainer = Trainer(\n",
" model=model,\n",
" args=training_args,\n",
" train_dataset=lm_datasets[\"train\"],\n",
" eval_dataset=lm_datasets[\"test\"],\n",
" data_collator=data_collator,\n",
" callbacks=[EarlyStoppingCallback(early_stopping_patience=3)],\n",
")\n",
"\n",
"trainer.train()"
],
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"\n",
" Tracking run with wandb version 0.10.22<br/>\n",
" Syncing run <strong style=\"color:#cdcd00\">custom_training</strong> to <a href=\"https://wandb.ai\" target=\"_blank\">Weights & Biases</a> <a href=\"https://docs.wandb.com/integrations/jupyter.html\" target=\"_blank\">(Documentation)</a>.<br/>\n",
" Project page: <a href=\"https://wandb.ai/neoyipeng/huggingface\" target=\"_blank\">https://wandb.ai/neoyipeng/huggingface</a><br/>\n",
" Run page: <a href=\"https://wandb.ai/neoyipeng/huggingface/runs/3pevcsre\" target=\"_blank\">https://wandb.ai/neoyipeng/huggingface/runs/3pevcsre</a><br/>\n",
" Run data is saved locally in <code>/content/gdrive/My Drive/Colab Notebooks/wandb/run-20210316_011715-3pevcsre</code><br/><br/>\n",
" "
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"/usr/local/lib/python3.7/dist-packages/torch/nn/modules/module.py:760: UserWarning: Using non-full backward hooks on a Module that does not return a single Tensor or a tuple of Tensors is deprecated and will be removed in future versions. This hook will be missing some of the grad_output. Please use register_full_backward_hook to get the documented behavior.\n",
" warnings.warn(\"Using non-full backward hooks on a Module that does not return a \"\n",
"/usr/local/lib/python3.7/dist-packages/torch/nn/modules/module.py:795: UserWarning: Using a non-full backward hook when the forward contains multiple autograd Nodes is deprecated and will be removed in future versions. This hook will be missing some grad_input. Please use register_full_backward_hook to get the documented behavior.\n",
" warnings.warn(\"Using a non-full backward hook when the forward contains multiple autograd Nodes \"\n"
],
"name": "stderr"
},
{
"output_type": "display_data",
"data": {
"text/html": [
"\n",
" <div>\n",
" <style>\n",
" /* Turns off some styling */\n",
" progress {\n",
" /* gets rid of default border in Firefox and Opera. */\n",
" border: none;\n",
" /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
" background-size: auto;\n",
" }\n",
" </style>\n",
" \n",
" <progress value='1100' max='1100' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
" [1100/1100 08:09, Epoch 20/20]\n",
" </div>\n",
" <table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: left;\">\n",
" <th>Step</th>\n",
" <th>Training Loss</th>\n",
" <th>Validation Loss</th>\n",
" <th>Runtime</th>\n",
" <th>Samples Per Second</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>500</td>\n",
" <td>0.813500</td>\n",
" <td>0.955320</td>\n",
" <td>5.096000</td>\n",
" <td>22.959000</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1000</td>\n",
" <td>0.768800</td>\n",
" <td>1.057904</td>\n",
" <td>5.140200</td>\n",
" <td>22.762000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table><p>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"TrainOutput(global_step=1100, training_loss=0.8252798878062855, metrics={'train_runtime': 486.839, 'train_samples_per_second': 2.259, 'total_flos': 2740136511406080, 'epoch': 20.0})"
]
},
"metadata": {
"tags": []
},
"execution_count": 0
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "KDBi0reX3l_g"
},
"source": [
"Like before, we can evaluate our model on the validation set. The perplexity is much lower than for the CLM objective because for the MLM objective, we only have to make predictions for the masked tokens (which represent 15% of the total here) while having access to the rest of the tokens. It's thus an easier task for the model."
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 91
},
"id": "4hSaANqj3l_g",
"outputId": "acb9c7e5-b070-44dc-a93a-05165d206d5e"
},
"source": [
"import math\n",
"eval_results = trainer.evaluate()\n",
"print(f\"Perplexity: {math.exp(eval_results['eval_loss']):.2f}\")"
],
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"\n",
" <div>\n",
" <style>\n",
" /* Turns off some styling */\n",
" progress {\n",
" /* gets rid of default border in Firefox and Opera. */\n",
" border: none;\n",
" /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
" background-size: auto;\n",
" }\n",
" </style>\n",
" \n",
" <progress value='15' max='15' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
" [15/15 00:04]\n",
" </div>\n",
" "
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Step must only increase in log calls. Step 4 < 5; dropping {'eval/loss': 0.9264389276504517, 'eval/runtime': 4.5401, 'eval/samples_per_second': 25.77, 'train/epoch': 4.0}.\n"
],
"name": "stderr"
},
{
"output_type": "stream",
"text": [
"Perplexity: 2.53\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "5BBI1egXmr1t"
},
"source": [
"trainer.save_model(\"chinese-macbert-base-chinastock\")"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 709,
"referenced_widgets": [
"ee8a8ccd8da6473bbe84c7cbbf171c0e",
"62623aef388046f68cd027344d73bc3f",
"83af7df52b194e36b2080746762750a8",
"088fd5cda5fd4b4a92d73cf9ceac2f8b",
"c06d9de88b50474394e9c16599201953",
"ad8df4eff0934d64b32d294134fe7da7",
"4e62b898e7c44d98827f9ba531ee7e43",
"132ceb58c8f541f59d72ff0e5188adb6"
]
},
"id": "dM_Xozmkl4x_",
"outputId": "53d0affe-4f2e-4b52-9f80-aac0b4ec511f"
},
"source": [
"wandb.finish()"
],
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<br/>Waiting for W&B process to finish, PID 1135<br/>Program ended successfully."
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "ee8a8ccd8da6473bbe84c7cbbf171c0e",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"VBox(children=(Label(value=' 390.32MB of 390.32MB uploaded (0.00MB deduped)\\r'), FloatProgress(value=1.0, max=…"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"text/html": [
"Find user logs for this run at: <code>/content/gdrive/My Drive/Colab Notebooks/wandb/run-20210316_010802-2al6tuhc/logs/debug.log</code>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"text/html": [
"Find internal logs for this run at: <code>/content/gdrive/My Drive/Colab Notebooks/wandb/run-20210316_010802-2al6tuhc/logs/debug-internal.log</code>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"text/html": [
"<h3>Run summary:</h3><br/><style>\n",
" table.wandb td:nth-child(1) { padding: 0 10px; text-align: right }\n",
" </style><table class=\"wandb\">\n",
"<tr><td>eval/loss</td><td>0.98009</td></tr><tr><td>eval/runtime</td><td>4.7143</td></tr><tr><td>eval/samples_per_second</td><td>24.818</td></tr><tr><td>train/epoch</td><td>4.0</td></tr><tr><td>_runtime</td><td>135</td></tr><tr><td>_timestamp</td><td>1615857017</td></tr><tr><td>_step</td><td>4</td></tr><tr><td>train/train_runtime</td><td>134.429</td></tr><tr><td>train/train_samples_per_second</td><td>0.149</td></tr><tr><td>train/total_flos</td><td>548027302281216</td></tr></table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"text/html": [
"<h3>Run history:</h3><br/><style>\n",
" table.wandb td:nth-child(1) { padding: 0 10px; text-align: right }\n",
" </style><table class=\"wandb\">\n",
"<tr><td>eval/loss</td><td>▁▅█▄</td></tr><tr><td>eval/runtime</td><td>▁▃▅█</td></tr><tr><td>eval/samples_per_second</td><td>█▆▄▁</td></tr><tr><td>train/epoch</td><td>▁▃▆█</td></tr><tr><td>_runtime</td><td>▁▄▆█</td></tr><tr><td>_timestamp</td><td>▁▄▆█</td></tr><tr><td>_step</td><td>▁▃▆█</td></tr><tr><td>train/train_runtime</td><td>▁</td></tr><tr><td>train/train_samples_per_second</td><td>▁</td></tr><tr><td>train/total_flos</td><td>▁</td></tr></table><br/>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"text/html": [
"Synced 5 W&B file(s), 1 media file(s), 3 artifact file(s) and 0 other file(s)"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"text/html": [
"\n",
" <br/>Synced <strong style=\"color:#cdcd00\">custom_training</strong>: <a href=\"https://wandb.ai/neoyipeng/huggingface/runs/2al6tuhc\" target=\"_blank\">https://wandb.ai/neoyipeng/huggingface/runs/2al6tuhc</a><br/>\n",
" "
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"resources": {
"https://localhost:6006/?tensorboardColab=true": {
"data": "PCFkb2N0eXBlIGh0bWw+PG1ldGEgbmFtZT0idGItcmVsYXRpdmUtcm9vdCIgY29udGVudD0iLi8iPjwhZG9jdHlwZSBodG1sPjwhLS0KQGxpY2Vuc2UKQ29weXJpZ2h0IDIwMTkgVGhlIFRlbnNvckZsb3cgQXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KCkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwp5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQpkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZApsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLS0+PGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD0idXRmLTgiPgo8dGl0bGU+VGVuc29yQm9hcmQ8L3RpdGxlPgo8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTVFBQUFERUNBWUFBQURBcG81ckFBQUFCSE5DU1ZRSUNBZ0lmQWhraUFBQUFBbHdTRmx6QUFCYWJnQUFXbTRCeFdzak9BQUFBQmwwUlZoMFUyOW1kSGRoY21VQWQzZDNMbWx1YTNOallYQmxMbTl5WjV2dVBCb0FBQmwwU1VSQlZIaWM3WjE1ZUZUVjNjYy92NXNGQ1ZSeHFWdHB0VlcyVmx4ZjYxcXRpcTBMOUdsOU5YVUJGRXBGUlRJaGhCQURDVGRBTUFFa0NZc0s3cUI5K2tENzJxZkJXaXZxVzdWYTY3NGlyZTlyYXhYMWJaVldaVEhML040LzVnNEdTR0R1ekwxejc1MDVuMzg0ek13NTU4dk0vWEsyM3prSERJR2ppemhQRjNGZTBEb01JRUVMeUdkMFBvT3dhQUF1Y1Y1YWgwVzVWUEI2a0xyeUdXT0lBRkNiL3ZTakVxZ0crdXp3S3dnZHdDMTBVQ2ZWL0RzWWhmbUxNVVFXVVJ1TEVrWUQ4eEVPMnY3R2pvWndQc3hIV014aElFdWxsSzVzNnN4bmpDR3loQzdnSkpSVzRDU2daeFAwbkg0Smk1aVU4N2pmR2czR0VMNmpUUXdFNWdHamtXN2ZkK3FHU0xLV0lzcGtNbS83SU5QZ1lBemhFMnBUUWgrcXNLZ0MrZ0x1VGJCcmVpdXdtSFlhWkRxZmVpcllBQmhEZUk0cVFpTVhBd3NRRHZQQUJEMmxOeUxVczRuYnhTYWV1V3BERW1NSUQ5RWJPUUZvUlRodCs0ditHQ0w1NTdOQXVjUjRLaTNCaGwwd2h2QUFiZUFRTEd4Z0FtRDVhb0x1NmNTZml2QUxsRXFKOFk1TDZZYWRNSWJJQUxVcHBvaHJFV1lqN0wzOWpld2FJcG5lakxLUXZXbVVjV3hMNlI5ZzJBVmppRFRSdVl6Q29nWDRCcEE5RTNSUDkveiszNEdaVXNiS1hxUWJkb014aEV1MGdhTVJtbEhPOXZBQi82T1RPdGtEUXlUU3lpTW81UkxqdFo3K0hZYWVzWUlXRUJYVVpqK2RTeXZ3UE1yWkhoVzdFV0VpbjNFYVV6a1ZvUlQ0bXljbEMrZGc4Ykl1WmFYZXdvR2VsSmtIbUJaaUQ2aE5JVVdNUjJrQUR2Q29WZGlLc0pqNHJ1c0p1cHdTUHFNS3FFS2M5WXZleWttOXprMUFFd2ZTTEtXMFkrZ1ZZNGpkb1BXY2cwVUx3bEhiWDh6Y0VHc1J5bVRhN2xlY3RZbUJGRGtyM095d3hwMk9JWkxwRFFoVDVUb2UyRjNkK1l3eFJBL29IQVpCdDdCc2IxcUZGeW1nWENyZHhTVHBJczRFV2hDTzNhWE05TFdzbzRDWVhNTWJiclRrQThZUTNWQ2IvZ2lWeUU1aDJaa1o0aU9FT1J5ZWZ0U3EybGdNWURUS2ZPQWdqM1Ixb054Q0lYVXkwWVNaSnpHR3dIbmdMT2VCNnlrc083MEhML0hBaVhmN0duUVovV252d2JEcGF3U2NNUFA5VEpnNUdFT2dzMU1JeTNiL3NLMGpUa3hxL09tU2FDdURVQnFRN1R2dHZPald2WWhRTHRma2Q1aDUzaHBDYlJkaDJhay9WQnRRS3FTRzMzZ3F0aGUwbFhPQUZ1QW9EOWRFMWxKQW1mdzBQOFBNODg0UWFsTUN6clJtcW1IWmUzNlFOaUUwOFRuTlltZDNXbE50Q3RtWDhZZ3pMZHk3UmpmcFJKaDVFUTN5ay93S004OGJReWdJZFZ5TXhRTFVaVmgyNys5M290eUpNRk5xK0lmWG10MmdpOWlQUW1ZQjF5RVVibjhqTTNPOGgxTERSRmFKb0o0S0RpbDVZUWl0NVFRa2c3RHNubDk3Rkl0eXFlWlZUOFZtaUM1aEtFb3o0aHhyNDAxWDZsbVVtRnpEMHg1S0RTVTViUWl0NFJDS3NORU13N0ozZk8wdGxCcVp5UnFQNVhxS0xtWVVRZ3ZpQkI5Q3B1WlE0RjQ2cUpKSmZPQ3AyQkNSazRaUW0ySTZQUXpMVHZ5WkNLL2VoeHVsak04OWx1d0xhbFBNL3M3M0FIdDcxRnBzUmxoSVlXNkdtZWVjSVhTRzUySFpjWVQ3RUtiSkRENzBWbTEyME9VY1FnYzI0clNVNE1YMzhoWkNqVXdJZDB2cGxwd3hoTjdBVUFwb0JzN3pjQXJ5R1pTWTFQR01oMUlEUTI5MnRyZ3FwM24ySFZrOFNwd3A4bE5lOFZCcVlFVGVFR3F6SHgzTVFyZ09uTm1Wekgvc2Q0RVoxT2JlN0lvcXdpM09JUWh3R09ERjk5V0pPTE50NDRPZGJjdVV5QnBDYlFycFlEeDRHcGE5QlZqQWwyaVNDclo2S0RkMDZISks2S1FLU1NITVBOVzB4U2JpTkxGM2RNUE1JMmtJclhGV2FMMEx5MWJnRnhRd1RXWjZ0RUVuSXVqaUZNTE0zYVlUWWVZVk1pNDdLL1plRWlsRDZFd0dFZmM4TFBzNUxNcWxqajk0cHpSNjZNMmM2VXhHN0JwbTdqYjl4V3ZyS0tSTXhyTGVPNlgrRWdsRHFPMUVlU3JWQ0gyMnY1R1pJVFlDOVdBTyswcWlOaFlITzRjeGR3OHpoMHpXYlJKUnZ4M1JDRE1QdFNIVXhtSXJvN0djSHdpOGFCWGFnVnNwWWFZNURySm5kQm45c2FqRWNzTE1JUk5ESkVtRW1mY05kNWg1YUEyaE4zUUx5L1p1R25VdFFreHMvdGREcVRtTDNzb2d4T21pWm02SVpQb0ZsSElaeHhOZWF2V0swQmxDcXhpSTFXMlFCMTYwQ2kraGxNc2NmdStwMkR4QlZ6RENpWTlLVEdKa1pvaGtlaTF4SnNzNC91cWwxa3dKalNIVXBvUXR6alFnOVBXb1ZVaHMzMXpQVWxrVDNtWTZDcWhOSVY5eFRoOFJKOHdjTWpFRUpLYTVsOUNYdVZMS1o5NHFUby9BRGFFZ1RPTml4RmtvY3YrbDlwUk9YRXZWVHAwMGhYOGdGeVgwZHZaRG1RVk1BZ295TkVReS9SNUNEYU9EWHdnTjFCQTZsUk93ZWduTFR0OFE2eERLWlk2NXVOQlA5RGFHQVl1UWJyZW5adjdiL1FtTG1JemVmcEpoMWduRUVGcnVoR1h2N3JSczkxL3FCdUpNbFhubXpLRnNvcmN6Q3B4Z1NtOWFkMFdjTVBOeDJROHp6Nm9obk83Uk5KUmFoUDQ5cW5EL3BYNE0xRlBFeldMVDZhMWlReXJvWGV4Rm5BcmdCcUMvUitPL1Q3Q1lReEdMc3hrR2t2VVdRaXM0emprTjc0d2VWYVJ1aUVSWWRoR1ZZdk4vZm1nMXVFT1hjd2lGUG9XWlg1R2RNUFBBeGhCYXlTaUVWdURycmcyaFBJb3dSZWJsUnNoeHJxRjNjd0pkenRqUXV6V2tSMUhLWmJTL1czYURIVlRiRkxPWmF4SG1BRi9hUVZIUFg4eGJXTlJJUTI1dFNzbEZWQkh1OWlITUhPNmtpSmxTNmsrWWVlRFRyZ0JheGFIQUxHQUMwbU5UbTlpMldFeWoyTG0zYlRHWDBlV1VVSnppYWVhcHB6ZWgxSE1veStRc2I4ZU5vVEJFRXEzaVA1eHUxS21Pc3NURzlpNnFaRUh1Ym16UEIvUTJCbExNUE5URE1ITjRFNHNLdVpRSHZkSVpLa09BTXhNMW5URUlGMk5oeXp4ZUNGcVR3VHYwTHI3cmhKa2ZzLzNGek0xeFAzRXE1WXJNWTlSQ1p3aEQ3cU0yRm9jN1llYVNRWmo1anVrT0xHNmhnMW9aelNmcGFqT0dNQVNHcnFZL1c3dWRaZzZadHhiQyt5ZzJGbmVrRTJadURHRUlITDJQUVhTbEVXYSt1elE4ajBXNWxQS2tHeTNHRUliUW9QZHdQc0lpaEtGQXBvYUF4S1gyRStUSDNKbXFCdGUza0dvNUU3U2NIN3JOWnpEc0NibVNCOW5LMGNCRTRKOWVGQWtjNmlhRCsydDVsU05SN3RjWTYvUjZ4OGtHZzBmSVJEcGtEQ3Zvd3hCZ01XUjNIMHM2aGloeVV1ZFF3Q3NhbzFXdjZ4YW9aekI0Z0pUeXNZd21ScHpod0crelZhOTdRMWpiRFFGUUJKUlJ4SHFOTWRZelZRYURnNHhsdll6bWZJUWZnUDk3NFROcElib3pFTGhIeTNqWWRLTU1maUNYMDBZUnc0QnlTSCtkWVUrNE53UTlHaUtCTUlJQ1h0WXBOS3JOWHVuTE1oaDJSVXBwbHl0b1JSZ0cvcHlsNWEwaEVoU2pUT2Rmdks0eFJxWWp5bURZSFhJWkc4R2Z2ZGQrR0NMSk54RGFkQXB0V3NuWDA2akhZTWc2WG8waGRzZEl1bmhkSzdCTk44b1FkaktkWlVxVnZpaXorSVRYdEpJTDA4aHZNR1NGYkxRUTNUbUNPR3UxZ2pZdDUvQU15akVZZk1IUE1jVHVHRWtCYjJpbDZVWVp3a1ZRaG9Ca04rcFRYdFZwWE9CUm1RWkRSZ1JwaUNSSG9qeWdVMm5UYXRPTk1nUkx0c2NRdlNPTXBKUFh0UXBiSjNlN0ZNVmd5Q0x1RFNFK0dTSkJDY29zK3ZDYVR1dDJacWpCa0NYQzBHWGFGZUZJNEVHdG9rMm5PbWY2R0F4WklKeUcrSUxFYkpUcFJobXlSTmdOQVZBQ3pLS0VWM1U2Mzg5eTNZWThJd3FHU0RJSStLMVcwNmJUK1ZwQUdndzVUcFFNa1VBWmliQmVxN0hWcGpoUUxZYWNJM3FHU0pEb1JtM2pWYTNtZTBHTE1lUU9VVFZFa3NFSUQra050T2tNdmhxMEdFUDBpYm9oa293a3pucXRNZDBvUTJia2lpRUErZ0d6YU9jVnJlSGNvTVVZb29rclEyamk0S2RDbjdSNHhSRGdkenJEZEtNTTduSFhRbHdkZWpOMFp5U3dYbWVhYmxSZUUzZDNHSUhiTGxOWXUwdTkwUTlsRmwyOHJETVpFYlFZUTFiWmpGTFBOaGE1eWVUT0VQdEd6aEFKbEtIQTczUW1LN1dHZzRLV1kvQVZCVmJSd1NDNURGdkd1YnVDelowaE9pTnFpQVFDaktHQURUcVRtTnFSNnY0WlVrSDVFeGFueWFXTWxURzhuMDRSN2d6UkZXbERKTmtIb1lVdW50TmFUZ3Rhak1FVDNrVzRra3M1V1VwNU9wT0MzQm5DcjgxQndYQU13aE5hWjdwUmtVWFpBdFJUd0dDNWxKVWltUjllNXM0UThad3lCQ1M3VVlXOHFYWEU5QklLZ2haa1NCRmhGVVVNbHN1d3BaU3QzaFhyQXIyZW9SU3czbFdwMFVxL2hEQkpiSjdDa0plNGF5R0tjcTZGMkpsamdTZlZacVhhSEJpMEdFUDJ5ZWN4Uk0rbzA0MkNEVnBQVEZlYmJsUStZUXpST3dOUVdsalBzenFiVTRJV1k4Z091YjVTN1FYSG9meEI2MW1wOC9oeTBHSU0vbUphaU5SSWRLTTYyYUJ6VERjcWwzRm5DTW43SUxsOVVWcll3SjkwTGljSExjYmdQYWJMbEE3SzhTaFA2UnpUamNvMVRKY3BmUkxkcUM3VGpjb2xUQXVST2ZzaXRQQVhudEhabkJTMEdFTm11RE5FZXJjSDVRZktDVmc4cFhOWnFUWUhCQzNIa0I2bWhmQVdDMkVNUld6UUJtSnFwN1ZuUFZSb013T0MxcEFKdXBxRDNYemU3USsyNXowRXJxS2pjcGI5Z0JhS2VWSWJPU1pvTWVtZ1N6aFVsN0tjWXVZRXJTVWRkQlZEOUdjOFFBZFQzZVJ6TzZoMk4rMXF6SEVLU2xuUUl0eWdOc1c2aEJnV2J5SmNUWG9uc3dTRzNzZStlaCtOV0x3QzdtK21jcmRyVENsSyt5SGZNZDltNERHZ2pTNmVvSWpIMEJ6ZGt4Q25QV2dKcWFMTEdJWFNDdEc3VjF4dExJNWdOTEFBMGcvTWRMdU5NcE14eE5zb0R3TnIyWWVIeFA3aVFkRktLb0Q3TWlnN3ZBZ2RRVXZZRTdxTVk0blRnbkptMEZyU1FlL2pMT0swSUJ5ZGFWbnVER0ZSNUdKUFVoZUovUVZyRWRya0pwN3Y3WU95a0o5cEpaZEREdDVoTGVGdElYUXArd04xeEprRTBWdEgwWlY4RFl1NUtHTzg2cDY3N3pMdG5zMkkweFVxNU5leWdBOWNLTG1lTHI1TDRnUyszRUhEMTBMb2NvcG81enJpMUNQc0U3UWV0K2hLK2lGTUE2YWo3T1hsV05XTEx0UGJDQThqdTNhRjNDQ04vRldyYUVDWmwzZ2huVkpDU01nTW9Zc1p3ZWUwQU44S1dvdGJWQkh1WlF4S0U3aWJUazJWZEF6eFJWY29UcHNzN3IwcjVKb1NGckNaVWhJNzEzSURLeHlHMEtVTXBvdEZLQmRHOFQ4YnZZc1RXVVVyK0xzM3haMGh1cmliSXVaTE14LzdJVVpzT3JXUzZ4Q2VwUHQwWDIvN29LTkJvR01JYldZQVFqVmRUSUhvUlN2clBYd0Z1QkVZVFJaK2ZWZUdrS1c4NlplUTdYVXM1R21keG5MZ1dyL3J5Z29CZFpuVXhtSkE1dE9RUWFHcjZjdFd5b0Fad0pleVZXODRGMTIyVVkzdzNoNC9GNFhXSW9CWkpyMkpzOWlIRjRCN2lLSVo3bUlVVzNnRHBaRXNtZ0ZDYWdoWndpZEFoYnRNL21qSm1DeTJFSG9UWDlWbVZtTHhLRVF2WkVUdjVIaTlpOGNSZmcwY0hvU0cwSjV2S2syczFtbU1SaGpsUHJNUGd0SWxDNGJRQmZURFlockNkR0F2dit2ekdyMkgvZW1pRGdsK1BTUzBoZ0RBNG5xVXM0RCthWmNSdkRsODZ6S3BJaXppWW9TRkVMMnJpblU1UlJSekhWM2hXUThKWlpjcGlUVHhEa0s5ZHdWNlZsTHErRFR0cWdzNWtVVThDYXdtaW1hNGt4RVU4UkpLQzRURERKQmxRNmhOb2JwOUxQdlNBcnpvdVpqc21HTVR5cXRlRnFoTkhLb0xXWTd3UitCVUw4dk9Cbm9IUS9SMkhuRGkycjRadEo2ZDhkMFFPcGsrT29VUldrRXJuL0F1VTdqS1RYNng2VVM1bXNTQ29ELzRZUTdsQXl6T2tocmU4S3pJaFZ4RUFYK0c2SVZsQStqdGpBZGVROXlIWldjTFg3NVVuVUpmbmNJb25jSktDdmtRZUJnb0F3NUNhTllxQnJvcFQrYnpISEN6SDFwM3JjeVRVdDZtZ085SU5TOTdVdG9YSEVPMFk3MkdFZkp4cTJmaXRKd0JLT2NpakVMNUVkQy9sNGRySDdxNEJWek9IaWt6RUg0RTdzeVVFZW1aNHpVSytiNU1aNlBIYWd4WklLTVdRaWV4djhZWXF6SGFVRDRrTWNBYnc1NW5oVVpxQlQ5MlU1Zk01MU1rOUx2UEhxZUEwNDBab290clEraGtCbW9aVjJ1TU5ncDVuOFJxNkVqY3hza0lTN1hTM1NxcU5ISS95cTljMWVNVmUyNHQxbExDZVZMTnY3T2d4dUFUN2k1dUwrY2lMTjVCV0U3Q0JKbnNvRHVBT00ydWN5bVRJT0NIYm1kektQZnlaUzZTQ3U5dXNqRUVnOXNydGZyaDVaeU1jTGxPNVlldXNzeG5JOG9zenpSa2lzVVN1cmhTSm9ZanpOdVFHY0ZQM1FrM2F6WDd1c3JUbHlYQUgvMFJsRElLMU1zTXlzUW1IckFXZzBjRWJ3ZzRoRTZhM0dRUW16Z1dFeUd3LzVXN1VLNlJXdXlBNmpmNFJCZ01BVEJCcC9FOU54bGtIcThBUzN6U3N6dmFFUzZUT2xZRVVMZkJaOEppQ0NIT2NyVmRCdkgxb1JaNDJ4OUpQYklaWVpUTVpFMFc2elJra2JBWUFvVEQyY3hjVjFsc3RqZ2h3OW5nWXl4R1NDMi95MUo5aGdBSWp5RVNUTmJwbk80bWc4empRZUFYUHVsSjhnN0NxVEl6OElHOHdXZkNaZ2lMT0xlcjdYS1RTeWVUZ1gvNUk0bjFGSEM2MUxMQnAvSU5JU0pzaGdBWXdtWnEzV1J3RGtTYjZZT1c1eWppVEpuSjM5TXRRQnM0eWt0QkJuOEpveUVBcXJTYUUxemxLT1lXNENrUE5UekdYcHd0TmZ3ajNRTDBScVlqVkhxb3llQXpZVFZFSVhIdTBLdFREdzBSbXpnRlhJTTNheE8vQWk2UTZYeWFiZ0hhd0d6bjFBaERoQWlySVFDT1lRQlZiakxJSEY1RjBvaVAycEc3Z1V2RVpsczZtVlVSYmFBRmNkZnRNNFNETUJzQ29GYW51enlEZEFzMjhEOXAxU1kwaWMwNHNlbE1KN3V1cG9CNTNBN0UwcXJmRURoaE4wUWY0QTY5SlBXalNhU1pyVTVFYk9vSWlsSXBOdFZ1QlNiUjFSVHdaKzRDeHFkYmhpRjR3bTRJVUU3aTYweDJrMFhtOFJEQ3oxUDhlQmN3UVdaemszdHhDZFNtbUQrekJtRk11bVVZd2tINERRRWdOR2cxUjdyS0U2Y2MyTFNIVDMxT1lyeHdaN3JTMUthRVF0cUFINlZiaGlFOFJNTVFVSUp5bTVzamJHUWVIOEp1dTBEL3dtS0V6T2IrZEVYcEF2bzVabkFWbUdnSUwxRXhCTUIzcWVhbnJuSTBjQnZ3WkEvdkpJNklzWHQ4THlYVVpnRGJXQWVjblc0Wmh2QVJKVU9Bc2tCbjhOVlVQeTZKVFR3VFNIU05raVNPaUxGNUtXMFpOZ2RTd0g4REo2ZGJoaUdjUk1zUXNEZGQzT29tZzh4bEE3RFErZXZyeFBtTzJMeVZyZ0MxT1pnQ0hpR0NwMnNiOWt6VURBRndnVlp6aGFzY2hjeEZ1WnNDVHBlR0ZPNmQ2QVdkeTJGWVBBRW1QaWxYQ2ZVcGFydWhWV3RZNXd5Yzk0aXo2and1a3dyVlpqQngxa0hxWFRaRDlJaGlDd0d3UDhyaWJGV21jeGlHeFdNWU0rUThVVFVFS0tWNkF4ZjVYbzNOOGNSNUhEalU3N29Nd1JOZFF5UllwamI3K1ZXNHp1WkVoSWVCQS95cXd4QXVvbTZJZzltV2ZzakY3dERabklueUNQaG5PRVA0aUxvaFFMaEtxem5QeXlLMW52T0o4eUJadmdIVEVEelJOd1NBc0Z5cnZIbDQxZVlIS1BjRGZiMG96eEF0Y3NNUThEVUt1VEhUUXJTT3k0QmZrZ2c3TitRaHVXSUlnR3QxQm1la20xbHRya2E0bCtpdXpSZzhJSmNNWWFIY3BsUGNkM1cwamtuQXJlVFc5MkZJZzF4N0FBWlQ0dTRBWXExak9zSlNOQVEzV2hzQ0o5Y01BY3BVcmVYRWxENDZpM293SjJQa01HK2cvTkpOQm5lRzZPSnhKUFJubXhZUTV3NjFlNy9pUzBGMEZxMG9kZGtVWnNnYW00QnFDamxPUnJzN2Z0VFZBRktXOFRmZyt6cUZFY1JwQVpjblltU1A0YlJ6QTFDLzh4dHFZOUhKQ3BTZkJLREw0Qzl4NEQ2S21DcWw2UjB3bDFhWFNacFp4MWFPUXlrbjZQdmVla09vMFZxR2QzOUpMNkdBVHU1RWpCbHlEdUZSTEk2VEt4aWJyaGtnZ3pHRXJLQkRGdE5LSjBjQWkwbWNYaEVtaW9semo5cUpWbEJ0aWhuS2FvUXJneFptOEpTM0VFcmxDczZSeTNrbDA4SXlIbFRMTWo2U1ZtSUl3NEdITWkzUFk0NmpnM0tkVEI4NldRUCtSOGNhc3NabW9KNU9oc3NWM2wxZzQ5a2lsTFN3SGpoUFkxeUNNQjg0M0t1eU0wS1l6VDVjQkp3U3RCU0RKeWh3TDUxVXlUZys4THB3ejZkZHBaVTFER0FJUWpud2lkZmxwMEZmakJseWhXZFJUcE94alBYRERPRFRPb1RZdEVzenJSUXhERmdCNXRwYVEwYThoM0lsWXpoSnJ1UnBQeXZ5ZFdGTzVyTlJtcGtJbkFUOHdjKzZERG5KVnFDSnZneVZxMWdwZ3ZwZFlWWUMyYVNaNXhTK1F3VVhBd3VBdzdKUnJ5SFNyRVdaTEZmeDEyeFdtclhRRFFHVlJhemhNNzZKVUUvQy9RYkR6cnlBY29aY3hTZ1psMTB6UUFDeFRMS0NMYklRbXdJR0E2dkEvMmJRRUFrK0FzcnB4N2RsSEU4RUpTS3c0RDZaejd0eUUyT0JVeEJ6M1cwZTB3RXNwcDBqWkJ5dFVocnNBbS9nMGE2eWtHZm94Mm5PQ25KS0I0OFpjb1oxd0xFeW5waE1ERWNJVU9DR2dNU0ZpYktBbFNoSE9PT0x6L2VZeVJCbE5tQnhvWXpuWEJuUEcwR0w2VTRvREpGRUZySlo1bU5Ud0ZHSWQ4dnhodER3TWNway9zNVJNbzdmQkMybUowSzVmMWdhZVFzbzFXck9kc0xNaCs4cGp5SDh5SVRNRDRMd20xQzFFRHNqalR4S0NjY2pUSVQwUTNvTmhsUUp0U0VBeEtaVEdsbUJNQVNsQ1dnUFdwTWhkd205SVpKSUk1dGtQdFhFT1JyQzJmODBSSi9JR0NLSnpHZUROSEloY0M2RWE0YkNFSDBpWjRnazBzZzZQdUpZSjh3OEZIUFlodWdUV1VPQXM0MTFIcTNBRWM0RkttSGJ4bXFJR0pFMlJCSzVrWS9rUm1MRU9SRjRQR2c5aHVpU0U0WklJbzI4S1BNNEUvZ0I4SGJRZWd6Ukk2Y01rVVFhYUdNTDMwS3BCajROV284aE91U2tJUUNrbWEweWp5WUtHWXFhYmF5RzFNaFpReVFSbTQzU3dFU1VreENlQ2xwUHhQZ3Y0dHN2dmM4TGN0NFFTYVNCNTVqTjZRaWx3RHRCNndrNWJ3TG55eVQrVXlibjExZ3Nid3dCempiVzJheWhnR0Vrem4zZEZyU21rUEV4U2puL1pMaE00cmRCaXdtQ3ZESkVFckhaSXJPeHNSZ0VyQ0lMcHptRW5FNWdCVVVNa2NtMGlrMW4wSUtDSWk4TmtVUnMzcFhaaktXTHM0Q1hndFlUQ01vanhEbE9Kak5SSnZMUG9PVUVUVjRiSW9uTTRmY0lKK1RaTnRhL0lKUktHU01reG10Qml3a0x4aEFPWWhNWG01WEFrWkRUMjFnL1E2a0hoc3Rrc3l0eFo0d2hka0pzUGhNYm13S0dRMDQ5TUhGZ0ZjcVJFc09Xc3B3MWZFYUVjZ3RwR0pCYS9nS1VhajNuQU0xRWV4dnJNeWd4S2VlWm9JV0VIZE5DN0FHWnhTTW94ME1rdDdHK0MxeEpqRk9NR1ZMREdDSUZ4S1pUNmxoQm5LRWtia3NLKzdUa0ZxQ2VPSU9sUER1SEJPY0t4aEF1RUp1UHBZNFlCUXhIZVRCb1BUMmd3QnE2K0taTXdaWUtjMzZ1Vzh3WUlnMmtoamVCQzNRT0kwaTBHTU1DbGdUQzgwQk1wcGhyQnpMQnRCQVpJTFdzNDhzY0UvQnRyTzhqVE9UZmZOdVlJWE9NSVRKRUp0SWh0YlJpY1FTUzFXMnM3Y0JpaWhncVUxZ2h0Z2x2OXdKakNJK1FHajZTR21MQXQ4SDM0OXpYWWpGTXBoS1RzbERjNDVjem1ER0V4OGdNWGdETzBMbU13cUxWNCtMZlJEaGJwdktZeCtVYURQNmpOaVhheUJsQjZ6Q2t6djhEUWQ3UXJNYkxSMUFBQUFBQVNVVk9SSzVDWUlJPSI+CjxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgaHJlZj0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFNUUFBQURFQ0FZQUFBREFwbzVyQUFBQUJITkNTVlFJQ0FnSWZBaGtpQUFBQUFsd1NGbHpBQUJhYmdBQVdtNEJ4V3NqT0FBQUFCbDBSVmgwVTI5bWRIZGhjbVVBZDNkM0xtbHVhM05qWVhCbExtOXlaNXZ1UEJvQUFCbDBTVVJCVkhpYzdaMTVlRlRWM2NjL3Y1c0ZDVlJ4cVZ0cHRWVzJWbHhmNjFxdGlxMEw5R2w5TlhVQkZFcEZSVEloaEJBRENUZEFNQUVrQ1lzSzdxQjkra0Q3MnFmQldpdnFXN1ZhNjc0aXJlOXJheFgxYlpWV1pUSEwvTjQvNWc0R1NHRHV6TDF6NzUwNW4zODR6TXc1NTh2TS9YSzIzemtIRElHaml6aFBGM0ZlMERvTUlFRUx5R2QwUG9Pd2FBQXVjVjVhaDBXNVZQQjZrTHJ5R1dPSUFGQ2IvdlNqRXFnRyt1endLd2dkd0MxMFVDZlYvRHNZaGZtTE1VUVdVUnVMRWtZRDh4RU8ydjdHam9ad1BzeEhXTXhoSUV1bGxLNXM2c3huakNHeWhDN2dKSlJXNENTZ1p4UDBuSDRKaTVpVTg3amZHZzNHRUw2alRRd0U1Z0dqa1c3ZmQrcUdTTEtXSXNwa01tLzdJTlBnWUF6aEUycFRRaCtxc0tnQytnTHVUYkJyZWl1d21IWWFaRHFmZWlyWUFCaERlSTRxUWlNWEF3c1FEdlBBQkQybE55TFVzNG5ieFNhZXVXcERFbU1JRDlFYk9RRm9SVGh0KzR2K0dDTDU1N05BdWNSNEtpM0JobDB3aHZBQWJlQVFMR3hnQW1ENWFvTHU2Y1NmaXZBTGxFcUo4WTVMNllhZE1JYklBTFVwcG9ockVXWWo3TDM5amV3YUlwbmVqTEtRdldtVWNXeEw2UjlnMkFWamlEVFJ1WXpDb2dYNEJwQTlFM1JQOS96KzM0R1pVc2JLWHFRYmRvTXhoRXUwZ2FNUm1sSE85dkFCLzZPVE90a0RReVRTeWlNbzVSTGp0WjcrSFlhZXNZSVdFQlhVWmorZFN5dndQTXJaSGhXN0VXRWluM0VhVXprVm9SVDRteWNsQytkZzhiSXVaYVhld29HZWxKa0htQlppRDZoTklVV01SMmtBRHZDb1ZkaUtzSmo0cnVzSnVwd1NQcU1LcUVLYzlZdmV5a205emsxQUV3ZlNMS1cwWStnVlk0amRvUFdjZzBVTHdsSGJYOHpjRUdzUnltVGE3bGVjdFltQkZEa3IzT3l3eHAyT0laTHBEUWhUNVRvZTJGM2QrWXd4UkEvb0hBWkJ0N0JzYjFxRkZ5bWdYQ3JkeFNUcElzNEVXaENPM2FYTTlMV3NvNENZWE1NYmJyVGtBOFlRM1ZDYi9naVZ5RTVoMlprWjRpT0VPUnllZnRTcTJsZ01ZRFRLZk9BZ2ozUjFvTnhDSVhVeTBZU1pKekdHd0huZ0xPZUI2eWtzTzcwSEwvSEFpWGY3R25RWi9XbnZ3YkRwYXdTY01QUDlUSmc1R0VPZ3MxTUl5M2Ivc0swalRreHEvT21TYUN1RFVCcVE3VHZ0dk9qV3ZZaFFMdGZrZDVoNTNocENiUmRoMmFrL1ZCdFFLcVNHMzNncXRoZTBsWE9BRnVBb0Q5ZEUxbEpBbWZ3MFA4UE04ODRRYWxNQ3pyUm1xbUhaZTM2UU5pRTA4VG5OWW1kM1dsTnRDdG1YOFlnekxkeTdSamZwUkpoNUVRM3lrL3dLTTg4YlF5Z0lkVnlNeFFMVVpWaDI3Kzkzb3R5Sk1GTnErSWZYbXQyZ2k5aVBRbVlCMXlFVWJuOGpNM084aDFMRFJGYUpvSjRLRGlsNVlRaXQ1UVFrZzdEc25sOTdGSXR5cWVaVlQ4Vm1pQzVoS0VvejRoeHI0MDFYNmxtVW1GekQweDVLRFNVNWJRaXQ0UkNLc05FTXc3SjNmTzB0bEJxWnlScVA1WHFLTG1ZVVFndmlCQjlDcHVaUTRGNDZxSkpKZk9DcDJCQ1JrNFpRbTJJNlBRekxUdnlaQ0svZWh4dWxqTTg5bHV3TGFsUE0vczczQUh0NzFGcHNSbGhJWVc2R21lZWNJWFNHNTJIWmNZVDdFS2JKREQ3MFZtMTIwT1VjUWdjMjRyU1U0TVgzOGhaQ2pVd0lkMHZwbHB3eGhON0FVQXBvQnM3emNBcnlHWlNZMVBHTWgxSURRMjkydHJncXAzbjJIVms4U3B3cDhsTmU4VkJxWUVUZUVHcXpIeDNNUXJnT25ObVZ6SC9zZDRFWjFPYmU3SW9xd2kzT0lRaHdHT0RGOTlXSk9MTnQ0NE9kYmN1VXlCcENiUXJwWUR4NEdwYTlCVmpBbDJpU0NyWjZLRGQwNkhKSzZLUUtTU0hNUE5XMHhTYmlOTEYzZE1QTUkya0lyWEZXYUwwTHkxYmdGeFF3VFdaNnRFRW5JdWppRk1MTTNhWVRZZVlWTWk0N0svWmVFaWxENkV3R0VmYzhMUHM1TE1xbGpqOTRwelI2Nk0yYzZVeEc3QnBtN2piOXhXdnJLS1JNeHJMZU82WCtFZ2xEcU8xRWVTclZDSDIydjVHWklUWUM5V0FPKzBxaU5oWUhPNGN4ZHc4emgweldiUkpSdngzUkNETVB0U0hVeG1Jcm83R2NId2k4YUJYYWdWc3BZYVk1RHJKbmRCbjlzYWpFY3NMTUlSTkRKRW1FbWZjTmQ1aDVhQTJoTjNRTHkvWnVHblV0UWt4cy90ZERxVG1MM3NvZ3hPbWlabTZJWlBvRmxISVp4eE5lYXZXSzBCbENxeGlJMVcyUUIxNjBDaStobE1zY2Z1K3AyRHhCVnpEQ2lZOUtUR0prWm9oa2VpMXhKc3M0L3VxbDFrd0pqU0hVcG9RdHpqUWc5UFdvVlVoczMxelBVbGtUM21ZNkNxaE5JVjl4VGg4Uko4d2NNakVFSkthNWw5Q1h1VkxLWjk0cVRvL0FEYUVnVE9OaXhGa29jditsOXBST1hFdlZUcDAwaFg4Z0Z5WDBkdlpEbVFWTUFnb3lORVF5L1I1Q0RhT0RYd2dOMUJBNmxST3dlZ25MVHQ4UTZ4REtaWTY1dU5CUDlEYUdBWXVRYnJlblp2N2IvUW1MbUl6ZWZwSmgxZ25FRUZydWhHWHY3clJzOTEvcUJ1Sk1sWG5tektGc29yY3pDcHhnU205YWQwV2NNUE54MlE4eno2b2huTzdSTkpSYWhQNDlxbkQvcFg0TTFGUEV6V0xUNmExaVF5cm9YZXhGbkFyZ0JxQy9SK08vVDdDWVF4R0xzeGtHa3ZVV1FpczR6amtONzR3ZVZhUnVpRVJZZGhHVll2Ti9mbWcxdUVPWGN3aUZQb1daWDVHZE1QUEF4aEJheVNpRVZ1RHJyZzJoUElvd1JlYmxSc2h4cnFGM2N3SmR6dGpRdXpXa1IxSEtaYlMvVzNhREhWVGJGTE9aYXhIbUFGL2FRVkhQWDh4YldOUklRMjV0U3NsRlZCSHU5aUhNSE82a2lKbFM2aytZZWVEVHJnQmF4YUhBTEdBQzBtTlRtOWkyV0V5ajJMbTNiVEdYMGVXVVVKemlhZWFwcHplaDFITW95K1FzYjhlTm9UQkVFcTNpUDV4dTFLbU9zc1RHOWk2cVpFSHVibXpQQi9RMkJsTE1QTlRETUhONEU0c0t1WlFIdmRJWktrT0FNeE0xblRFSUYyTmh5enhlQ0ZxVHdUdjBMcjdyaEprZnMvM0Z6TTF4UDNFcTVZck1ZOVJDWndoRDdxTTJGb2M3WWVhU1FaajVqdWtPTEc2aGcxb1p6U2ZwYWpPR01BU0dycVkvVzd1ZFpnNlp0eGJDK3lnMkZuZWtFMlp1REdFSUhMMlBRWFNsRVdhK3V6UThqMFc1bFBLa0d5M0dFSWJRb1Bkd1BzSWloS0ZBcG9hQXhLWDJFK1RIM0ptcUJ0ZTNrR281RTdTY0g3ck5aekRzQ2JtU0I5bkswY0JFNEo5ZUZBa2M2aWFEKzJ0NWxTTlI3dGNZNi9SNng4a0dnMGZJUkRwa0RDdm93eEJnTVdSM0gwczZoaWh5VXVkUXdDc2FvMVd2Nnhhb1p6QjRnSlR5c1l3bVJwemh3Ryt6VmE5N1ExamJEUUZRQkpSUnhIcU5NZFl6VlFhRGc0eGx2WXptZklRZmdQOTc0VE5wSWJvekVMaEh5M2pZZEtNTWZpQ1gwMFlSdzRCeVNIK2RZVSs0TndROUdpS0JNSUlDWHRZcE5Lck5YdW5MTWhoMlJVcHBseXRvUlJnRy9weWw1YTBoRWhTalRPZGZ2SzR4UnFZanltRFlIWElaRzhHZnZkZCtHQ0xKTnhEYWRBcHRXc25YMDZqSFlNZzZYbzBoZHNkSXVuaGRLN0JOTjhvUWRqS2RaVXFWdmlpeitJVFh0SklMMDhodk1HU0ZiTFFRM1RtQ09HdTFnall0NS9BTXlqRVlmTUhQTWNUdUdFa0JiMmlsNlVZWndrVlFob0JrTitwVFh0VnBYT0JSbVFaRFJnUnBpQ1JIb2p5Z1UyblRhdE9OTWdSTHRzY1F2U09NcEpQWHRRcGJKM2U3Rk1WZ3lDTHVEU0UrR1NKQkNjb3MrdkNhVHV0MlpxakJrQ1hDMEdYYUZlRkk0RUd0b2sybk9tZjZHQXhaSUp5RytJTEViSlRwUmhteVJOZ05BVkFDektLRVYzVTYzODl5M1lZOEl3cUdTRElJK0sxVzA2YlQrVnBBR2d3NVRwUU1rVUFaaWJCZXE3SFZwamhRTFlhY0kzcUdTSkRvUm0zalZhM21lMEdMTWVRT1VUVkVrc0VJRCtrTnRPa012aHEwR0VQMGlib2hrb3drem5xdE1kMG9RMmJraWlFQStnR3phT2NWcmVIY29NVVlvb2tyUTJqaTRLZENuN1I0eFJEZ2R6ckRkS01NN25IWFFsd2Rlak4wWnlTd1htZWFibFJlRTNkM0dJSGJMbE5ZdTB1OTBROWxGbDI4ckRNWkViUVlRMWJaakZMUE5oYTV5ZVRPRVB0R3poQUpsS0hBNzNRbUs3V0dnNEtXWS9BVkJWYlJ3U0M1REZ2R3VidUN6WjBoT2lOcWlBUUNqS0dBRFRxVG1OcVI2djRaVWtINUV4YW55YVdNbFRHOG4wNFI3Z3pSRldsREpOa0hvWVV1bnROYVRndGFqTUVUM2tXNGtrczVXVXA1T3BPQzNCbkNyODFCd1hBTXdoTmFaN3BSa1VYWkF0UlR3R0M1bEpVaW1SOWU1czRROFp3eUJDUzdVWVc4cVhYRTlCSUtnaFprU0JGaEZVVU1sc3V3cFpTdDNoWHJBcjJlb1JTdzNsV3AwVXEvaERCSmJKN0NrSmU0YXlHS2NxNkYySmxqZ1NmVlpxWGFIQmkwR0VQMnllY3hSTStvMDQyQ0RWcFBURmViYmxRK1lRelJPd05RV2xqUHN6cWJVNElXWThnT3ViNVM3UVhIb2Z4QjYxbXA4L2h5MEdJTS9tSmFpTlJJZEtNNjJhQnpURGNxbDNGbkNNbjdJTGw5VVZyWXdKOTBMaWNITGNiZ1BhYkxsQTdLOFNoUDZSelRqY28xVEpjcGZSTGRxQzdUamNvbFRBdVJPZnNpdFBBWG50SFpuQlMwR0VObXVETkVlcmNINVFmS0NWZzhwWE5acVRZSEJDM0hrQjZtaGZBV0MyRU1SV3pRQm1KcXA3Vm5QVlJvTXdPQzFwQUp1cHFEM1h6ZTdRKzI1ejBFcnFLamNwYjlnQmFLZVZJYk9TWm9NZW1nU3poVWw3S2NZdVlFclNVZGRCVkQ5R2M4UUFkVDNlUnpPNmgyTisxcXpIRUtTbG5RSXR5Z05zVzZoQmdXYnlKY1RYb25zd1NHM3NlK2VoK05XTHdDN20rbWNyZHJUQ2xLK3lIZk1kOW00REdnalM2ZW9JakgwQnpka3hDblBXZ0pxYUxMR0lYU0N0RzdWMXh0TEk1Z05MQUEwZy9NZEx1Tk1wTXh4TnNvRHdOcjJZZUh4UDdpUWRGS0tvRDdNaWc3dkFnZFFVdllFN3FNWTRuVGduSm0wRnJTUWUvakxPSzBJQnlkYVZudURHRlI1R0pQVWhlSi9RVnJFZHJrSnA3djdZT3lrSjlwSlpkRER0NWhMZUZ0SVhRcCt3TjF4SmtFMFZ0SDBaVjhEWXU1S0dPODZwNjc3ekx0bnMySTB4VXE1TmV5Z0E5Y0tMbWVMcjVMNGdTKzNFSEQxMExvY29wbzV6cmkxQ1BzRTdRZXQraEsraUZNQTZhajdPWGxXTldMTHRQYkNBOGp1M2FGM0NDTi9GV3JhRUNabDNnaG5WSkNTTWdNb1lzWndlZTBBTjhLV290YlZCSHVaUXhLRTdpYlRrMlZkQXp4UlZjb1Rwc3M3cjByNUpvU0ZyQ1pVaEk3MTNJREt4eUcwS1VNcG90RktCZEc4VDhidllzVFdVVXIrTHMzeFowaHVyaWJJdVpMTXgvN0lVWnNPcldTNnhDZXBQdDBYMi83b0tOQm9HTUliV1lBUWpWZFRJSG9SU3ZyUFh3RnVCRVlUUlorZlZlR2tLVzg2WmVRN1hVczVHbWR4bkxnV3Ivcnlnb0JkWm5VeG1KQTV0T1FRYUdyNmN0V3lvQVp3SmV5Vlc4NEYxMjJVWTN3M2g0L0Y0WFdJb0JaSnIySnM5aUhGNEI3aUtJWjdtSVVXM2dEcFpFc21nRkNhZ2had2lkQWhidE0vbWpKbUN5MkVIb1RYOVZtVm1MeEtFUXZaRVR2NUhpOWk4Y1JmZzBjSG9TRzBKNXZLazJzMW1tTVJoamxQck1QZ3RJbEM0YlFCZlREWWhyQ2RHQXZ2K3Z6R3IySC9lbWlEZ2wrUFNTMGhnREE0bnFVczREK2FaY1J2RGw4NnpLcElpemlZb1NGRUwycmluVTVSUlJ6SFYzaFdROEpaWmNwaVRUeERrSzlkd1Y2VmxMcStEVHRxZ3M1a1VVOENhd21pbWE0a3hFVThSSktDNFREREpCbFE2aE5vYnA5TFB2U0Fyem91WmpzbUdNVHlxdGVGcWhOSEtvTFdZN3dSK0JVTDh2T0Jub0hRL1IySG5EaTJyNFp0SjZkOGQwUU9waytPb1VSV2tFcm4vQXVVN2pLVFg2eDZVUzVtc1NDb0QvNFlRN2xBeXpPa2hyZThLekloVnhFQVgrRzZJVmxBK2p0akFkZVE5eUhaV2NMWDc1VW5VSmZuY0lvbmNKS0N2a1FlQmdvQXc1Q2FOWXFCcm9wVCtiekhIQ3pIMXAzcmN5VFV0Nm1nTzlJTlM5N1V0b1hIRU8wWTcyR0VmSnhxMmZpdEp3QktPY2lqRUw1RWRDL2w0ZHJIN3E0QlZ6T0hpa3pFSDRFN3N5VUVlbVo0elVLK2I1TVo2UEhhZ3haSUtNV1FpZXh2OFlZcXpIYVVENGtNY0FidzU1bmhVWnFCVDkyVTVmTTUxTWs5THZQSHFlQTA0MFpvb3RyUStoa0Jtb1pWMnVNTmdwNW44UnE2RWpjeHNrSVM3WFMzU3FxTkhJL3lxOWMxZU1WZTI0dDFsTENlVkxOdjdPZ3h1QVQ3aTV1TCtjaUxONUJXRTdDQkpuc29EdUFPTTJ1Y3ltVElPQ0hibWR6S1BmeVpTNlNDdTl1c2pFRWc5c3J0ZnJoNVp5TWNMbE81WWV1c3N4bkk4b3N6elJraXNVU3VyaFNKb1lqek51UUdjRlAzUWszYXpYN3VzclRseVhBSC8wUmxESUsxTXNNeXNRbUhyQVdnMGNFYndnNGhFNmEzR1FRbXpnV0V5R3cvNVc3VUs2Uld1eUE2amY0UkJnTUFUQkJwL0U5Tnhsa0hxOEFTM3pTc3p2YUVTNlRPbFlFVUxmQlo4SmlDQ0hPY3JWZEJ2SDFvUlo0Mng5SlBiSVpZWlRNWkUwVzZ6UmtrYkFZQW9URDJjeGNWMWxzdGpnaHc5bmdZeXhHU0MyL3kxSjloZ0FJanlFU1ROYnBuTzRtZzh6alFlQVhQdWxKOGc3Q3FUSXo4SUc4d1dmQ1pnaUxPTGVyN1hLVFN5ZVRnWC81STRuMUZIQzYxTExCcC9JTklTSnNoZ0FZd21acTNXUndEa1NiNllPVzV5amlUSm5KMzlNdFFCczR5a3RCQm44Sm95RUFxclNhRTF6bEtPWVc0Q2tQTlR6R1hwd3ROZndqM1FMMFJxWWpWSHFveWVBellUVkVJWEh1MEt0VER3MFJtemdGWElNM2F4Ty9BaTZRNlh5YWJnSGF3R3puMUFoRGhBaXJJUUNPWVFCVmJqTElIRjVGMG9pUDJwRzdnVXZFWmxzNm1WVVJiYUFGY2RmdE00U0RNQnNDb0ZhbnV6eURkQXMyOEQ5cDFTWTBpYzA0c2VsTUo3dXVwb0I1M0E3RTBxcmZFRGhoTjBRZjRBNjlKUFdqU2FTWnJVNUViT29JaWxJcE50VnVCU2JSMVJUd1orNEN4cWRiaGlGNHdtNElVRTdpNjB4MmswWG04UkRDejFQOGVCY3dRV1p6azN0eENkU21tRCt6Qm1GTXVtVVl3a0g0RFFFZ05HZzFSN3JLRTZjYzJMU0hUMzFPWXJ4d1o3clMxS2FFUXRxQUg2VmJoaUU4Uk1NUVVJSnltNXNqYkdRZUg4SnV1MEQvd21LRXpPYitkRVhwQXZvNVpuQVZtR2dJTDFFeEJNQjNxZWFucm5JMGNCdndaQS92Skk2SXNYdDhMeVhVWmdEYldBZWNuVzRaaHZBUkpVT0Fza0JuOE5WVVB5NkpUVHdUU0hTTmtpU09pTEY1S1cwWk5nZFN3SDhESjZkYmhpR2NSTXNRc0RkZDNPb21nOHhsQTdEUStldnJ4UG1PMkx5VnJnQzFPWmdDSGlHQ3Ayc2I5a3pVREFGd2dWWnpoYXNjaGN4RnVac0NUcGVHRk82ZDZBV2R5MkZZUEFFbVBpbFhDZlVwYXJ1aFZXdFk1d3ljOTRpejZqd3Vrd3JWWmpCeDFrSHFYVFpEOUloaUN3R3dQOHJpYkZXbWN4aUd4V01ZTStROFVUVUVLS1Y2QXhmNVhvM044Y1I1SERqVTc3b013Uk5kUXlSWXBqYjcrVlc0enVaRWhJZUJBL3lxd3hBdW9tNklnOW1XZnNqRjd0RFpuSW55Q1Bobk9FUDRpTG9oUUxoS3F6blB5eUsxbnZPSjh5Qlp2Z0hURUR6Uk53U0FzRnlydkhsNDFlWUhLUGNEZmIwb3p4QXRjc01ROERVS3VUSFRRclNPeTRCZmtnZzdOK1FodVdJSWdHdDFCbWVrbTFsdHJrYTRsK2l1elJnOElKY01ZYUhjcGxQY2QzVzBqa25BcmVUVzkyRklnMXg3QUFaVDR1NEFZcTFqT3NKU05BUTNXaHNDSjljTUFjcFVyZVhFbEQ0Nmkzb3dKMlBrTUcrZy9OSk5CbmVHNk9KeEpQUm5teFlRNXc2MWU3L2lTMEYwRnEwb2Rka1Vac2dhbTRCcUNqbE9ScnM3ZnRUVkFGS1c4VGZnK3pxRkVjUnBBWmNuWW1TUDRiUnpBMUMvOHh0cVk5SEpDcFNmQktETDRDOXg0RDZLbUNxbDZSMHdsMWFYU1pwWngxYU9ReWtuNlB2ZWVrT28wVnFHZDM5Skw2R0FUdTVFakJseUR1RlJMSTZUS3hpYnJoa2dnekdFcktCREZ0TktKMGNBaTBtY1hoRW1pb2x6ajlxSlZsQnRpaG5LYW9Rcmd4Wm04SlMzRUVybENzNlJ5M2tsMDhJeUhsVExNajZTVm1JSXc0R0hNaTNQWTQ2amczS2RUQjg2V1FQK1I4Y2Fzc1ptb0o1T2hzc1YzbDFnNDlraWxMU3dIamhQWTF5Q01CODQzS3V5TTBLWXpUNWNCSndTdEJTREp5aHdMNTFVeVRnKzhMcHd6NmRkcFpVMURHQUlRam53aWRmbHAwRmZqQmx5aFdkUlRwT3hqUFhERE9EVE9vVFl0RXN6clJReERGZ0I1dHBhUTBhOGgzSWxZemhKcnVScFB5dnlkV0ZPNXJOUm1wa0luQVQ4d2MrNkREbkpWcUNKdmd5VnExZ3BndnBkWVZZQzJhU1o1eFMrUXdVWEF3dUF3N0pScnlIU3JFV1pMRmZ4MTJ4V21yWFFEUUdWUmF6aE03NkpVRS9DL1FiRHpyeUFjb1pjeFNnWmwxMHpRQUN4VExLQ0xiSVFtd0lHQTZ2QS8yYlFFQWsrQXNycHg3ZGxIRThFSlNLdzRENlp6N3R5RTJPQlV4QnozVzBlMHdFc3BwMGpaQnl0VWhyc0FtL2cwYTZ5a0dmb3gybk9DbkpLQjQ4WmNvWjF3TEV5bnBoTURFY0lVT0NHZ01TRmliS0FsU2hIT09PTHovZVl5UkJsTm1CeG9Zem5YQm5QRzBHTDZVNG9ESkZFRnJKWjVtTlR3RkdJZDh2eGh0RHdNY3BrL3M1Uk1vN2ZCQzJtSjBLNWYxZ2FlUXNvMVdyT2RzTE1oKzhwanlIOHlJVE1ENEx3bTFDMUVEc2pqVHhLQ2NjalRJVDBRM29OaGxRSnRTRUF4S1pUR2xtQk1BU2xDV2dQV3BNaGR3bTlJWkpJSTV0a1B0WEVPUnJDMmY4MFJKL0lHQ0tKekdlRE5ISWhjQzZFYTRiQ0VIMGlaNGdrMHNnNlB1SllKOHc4RkhQWWh1Z1RXVU9BczQxMUhxM0FFYzRGS21IYnhtcUlHSkUyUkJLNWtZL2tSbUxFT1JGNFBHZzlodWlTRTRaSUlvMjhLUE00RS9nQjhIYlFlZ3pSSTZjTWtVUWFhR01MMzBLcEJqNE5XbzhoT3VTa0lRQ2ttYTB5anlZS0dZcWFiYXlHMU1oWlF5UVJtNDNTd0VTVWt4Q2VDbHBQeFBndjR0c3Z2YzhMY3Q0UVNhU0I1NWpONlFpbHdEdEI2d2s1YndMbnl5VCtVeWJuMTFnc2J3d0J6amJXMmF5aGdHRWt6bjNkRnJTbWtQRXhTam4vWkxoTTRyZEJpd21DdkRKRUVySFpJck94c1JnRXJDSUxwem1FbkU1Z0JVVU1rY20waWsxbjBJS0NJaThOa1VSczNwWFpqS1dMczRDWGd0WVRDTW9qeERsT0pqTlJKdkxQb09VRVRWNGJJb25NNGZjSUorVFpOdGEvSUpSS0dTTWt4bXRCaXdrTHhoQU9ZaE1YbTVYQWtaRFQyMWcvUTZrSGhzdGtzeXR4WjR3aGRrSnNQaE1ibXdLR1EwNDlNSEZnRmNxUkVzT1dzcHcxZkVhRWNndHBHSkJhL2dLVWFqM25BTTFFZXh2ck15Z3hLZWVab0lXRUhkTkM3QUdaeFNNb3gwTWt0N0crQzF4SmpGT01HVkxER0NJRnhLWlQ2bGhCbktFa2Jrc0srN1RrRnFDZU9JT2xQRHVIQk9jS3hoQXVFSnVQcFk0WUJReEhlVEJvUFQyZ3dCcTYrS1pNd1pZS2MzNnVXOHdZSWcya2hqZUJDM1FPSTBpMEdNTUNsZ1RDODBCTXBwaHJCekxCdEJBWklMV3M0OHNjRS9CdHJPOGpUT1RmZk51WUlYT01JVEpFSnRJaHRiUmljUVNTMVcyczdjQmlpaGdxVTFnaHRnbHY5d0pqQ0krUUdqNlNHbUxBdDhIMzQ5elhZakZNcGhLVHNsRGM0NWN6bURHRXg4Z01YZ0RPMExtTXdxTFY0K0xmUkRoYnB2S1l4K1VhRFA2ak5pWGF5QmxCNnpDa3p2OERRZDdRck1iTFIxQUFBQUFBU1VWT1JLNUNZSUk9Ij4KCjxzdHlsZT4KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90bycpLCBsb2NhbCgnUm9ib3RvLVJlZ3VsYXInKSwgdXJsKC9mb250LXJvYm90by91WUVDTUtvSGNPOXgxd2RtYnlISW0zLV9rZjZCeVlPNkNMWWRCNEhRRS1ZLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8nKSwgbG9jYWwoJ1JvYm90by1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vc1RkYUE2ajBQc2I5MjBWanYtbXJ6SC1fa2Y2QnlZTzZDTFlkQjRIUUUtWS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvJyksIGxvY2FsKCdSb2JvdG8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL19WWUZ4LXM4MjRrWHFfVWwyQkhxWUgtX2tmNkJ5WU82Q0xZZEI0SFFFLVkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvJyksIGxvY2FsKCdSb2JvdG8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL3RuajRTQjZETmJkYVFuc004Q0ZxQlgtX2tmNkJ5WU82Q0xZZEI0SFFFLVkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvJyksIGxvY2FsKCdSb2JvdG8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL29NTWdmWk1RdGhPcnlRbzluMjJkY3V2dkRpbjFwSzhhS3RlTHBlWjVjMEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIyMTIsIFUrMjIxNTsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvJyksIGxvY2FsKCdSb2JvdG8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL0tzX2NWeGlDaXdVV1ZzRldGQTNCam4tX2tmNkJ5WU82Q0xZZEI0SFFFLVkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSsxRTAwLTFFRkYsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8nKSwgbG9jYWwoJ1JvYm90by1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vTko0dnhsZ1d3V2JFc3YxOGRBaHFubi1fa2Y2QnlZTzZDTFlkQjRIUUUtWS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by9pc1otd2JDWE5LQWJuam82X1R3SFRvWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by83N0ZYRmpSYkd6TjRhQ3JTRmhsaDNvWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by9qU04yQ0dWRGJjVnlDbmZKZmpTZGZJWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkJyksIGxvY2FsKCdSb2JvdG8tQm9sZCcpLCB1cmwoL2ZvbnQtcm9ib3RvL1VYNmk0SnhRRG0zZlZUYzFDUHV3cW9YMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQnKSwgbG9jYWwoJ1JvYm90by1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vZC02SVlwbE9Gb2NDYWNLenh3WFNPSkJ3MXhVMXJLcHRKal8wamFuczkyMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by85N3VhaHhpcVpSb25jQmFDRUkzYVc0WDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyNEYsIFUrMUUwMC0xRUZGLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQ0YsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQnKSwgbG9jYWwoJ1JvYm90by1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vUHdaYy1ZYklMNDE0d0I5ckIxSUFQWVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1Cb2xkSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vdDZOZDRjZlBSaFpQNDRRNVFBamNDMTRzWVlkSmc1ZFUycXpKRVZTdXRhMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQgSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tQm9sZEl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL3Q2TmQ0Y2ZQUmhaUDQ0UTVRQWpjQ19acmFSMlRnOHcybHptN2tMTkwwLXcud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUJvbGRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by90Nk5kNGNmUFJoWlA0NFE1UUFqY0N3dF9SbTY5MUxUZWJLZlkyWmtLU21JLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUJvbGRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by90Nk5kNGNmUFJoWlA0NFE1UUFqY0MxQlcyNlF4cFNqLV9aS21feFQ0aFd3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUJvbGRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by90Nk5kNGNmUFJoWlA0NFE1UUFqY0M0Z3A5UThnYllyaHFHbFJhdl9JWGZrLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQywgVSsyMjEyLCBVKzIyMTU7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUJvbGRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by90Nk5kNGNmUFJoWlA0NFE1UUFqY0M2RThrTTR4V1IxXzFiWVVSUm9qUkdjLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyNEYsIFUrMUUwMC0xRUZGLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQ0YsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQgSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tQm9sZEl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL3Q2TmQ0Y2ZQUmhaUDQ0UTVRQWpjQzlEaU5zUjVhLTlPZV9JdnB1OFhXbFkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL09wWFVxVG8wVWdRUWhHal9TRmRMV0JrQXo0clluNDdaeTJydmlnV1FmNncud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1JdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by9XeHJYSmEwQzNLZHRDN2xNYWZHNGRSa0F6NHJZbjQ3WnkycnZpZ1dRZjZ3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vY0RLaFJhWG5RVE9WYmFveHdkT3I5eGtBejRyWW40N1p5MnJ2aWdXUWY2dy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vMWhaZjAyUE9BTmgzMmsyVmtnRW9VQmtBejRyWW40N1p5MnJ2aWdXUWY2dy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vdlBjeW5TTDBxSHFfNmRYN2xLVkJ5WFloamJTcHZjNDdlZTZ4Ul84MEhudy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vdlN6dWxmS1NLMExMampmZWF4Y1JFaGtBejRyWW40N1p5MnJ2aWdXUWY2dy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1JdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by9LMjNjeFdWVHJJRkQ2REpzRVZpMDdSa0F6NHJZbjQ3WnkycnZpZ1dRZjZ3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCcpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0JyksIHVybCgvZm9udC1yb2JvdG8vRmw0eTBRZE94eXlUSEVHTVhYOGtjWVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0JyksIGxvY2FsKCdSb2JvdG8tTGlnaHQnKSwgdXJsKC9mb250LXJvYm90by8wZUM2ZmwwNmx1WEVZV3BCU0p2WENJWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQnKSwgbG9jYWwoJ1JvYm90by1MaWdodCcpLCB1cmwoL2ZvbnQtcm9ib3RvL0kzUzF3c2dTZzlZQ3VyVjZQVWtUT1lYMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0JyksIGxvY2FsKCdSb2JvdG8tTGlnaHQnKSwgdXJsKC9mb250LXJvYm90by8tTDE0SmswNm02cFVIQi01bVhRUW5ZWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCcpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0JyksIHVybCgvZm9udC1yb2JvdG8vSGdvMTNrLXRmU3BuMHFpMVNGZFVmWkJ3MXhVMXJLcHRKal8wamFuczkyMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQnKSwgbG9jYWwoJ1JvYm90by1MaWdodCcpLCB1cmwoL2ZvbnQtcm9ib3RvL1BydTMzcWpTaHBaU21HM3o2Vll3bllYMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSsxRTAwLTFFRkYsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQnKSwgbG9jYWwoJ1JvYm90by1MaWdodCcpLCB1cmwoL2ZvbnQtcm9ib3RvL05ZRFdCZEQ0Z0lxMjZHNVhZYkhzRklYMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0IEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0SXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vN204bDdUbEZPLVMzVmtoSHVSMGF0MTRzWVlkSmc1ZFUycXpKRVZTdXRhMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0IEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0SXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vN204bDdUbEZPLVMzVmtoSHVSMGF0X1pyYVIyVGc4dzJsem03a0xOTDAtdy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0IEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0SXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vN204bDdUbEZPLVMzVmtoSHVSMGF0d3RfUm02OTFMVGViS2ZZMlprS1NtSS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQgSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tTGlnaHRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by83bThsN1RsRk8tUzNWa2hIdVIwYXQxQlcyNlF4cFNqLV9aS21feFQ0aFd3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1MaWdodEl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvLzdtOGw3VGxGTy1TM1ZraEh1UjBhdDRncDlROGdiWXJocUdsUmF2X0lYZmsud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIyMTIsIFUrMjIxNTsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0IEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0SXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vN204bDdUbEZPLVMzVmtoSHVSMGF0NkU4a000eFdSMV8xYllVUlJvalJHYy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1MaWdodEl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvLzdtOGw3VGxGTy1TM1ZraEh1UjBhdDlEaU5zUjVhLTlPZV9JdnB1OFhXbFkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1lZGl1bScpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bScpLCB1cmwoL2ZvbnQtcm9ib3RvL29IaTMwa3dRV3ZwQ1dxQWh6SGNDU0lYMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0nKSwgbG9jYWwoJ1JvYm90by1NZWRpdW0nKSwgdXJsKC9mb250LXJvYm90by9aTHFLZWVsWWJBVEc2MEVwWkJTRHk0WDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtJyksIHVybCgvZm9udC1yb2JvdG8vbXg5VWNrNnVCNjNWSUtGWW5FTVhyWVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtJyksIHVybCgvZm9udC1yb2JvdG8vckd2SGRKbnIybDc1cWIwWU5EOU55SVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtJyksIHVybCgvZm9udC1yb2JvdG8vUnhaSmRuemVvM1I1elNleGdlOFVVWkJ3MXhVMXJLcHRKal8wamFuczkyMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtJyksIHVybCgvZm9udC1yb2JvdG8vb09lRndaTmxyVGVmekxZbWxWVjFVSVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0nKSwgbG9jYWwoJ1JvYm90by1NZWRpdW0nKSwgdXJsKC9mb250LXJvYm90by9tYm1ocHJNSDY5Wmk2ZUVQQllWRmhZWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vT0xmZkdCVGFGMFhGT1cxZ251SEYwVjRzWVlkSmc1ZFUycXpKRVZTdXRhMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1lZGl1bSBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1NZWRpdW1JdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by9PTGZmR0JUYUYwWEZPVzFnbnVIRjBmWnJhUjJUZzh3Mmx6bTdrTE5MMC13LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bUl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL09MZmZHQlRhRjBYRk9XMWdudUhGMFF0X1JtNjkxTFRlYktmWTJaa0tTbUkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1lZGl1bSBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1NZWRpdW1JdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by9PTGZmR0JUYUYwWEZPVzFnbnVIRjBWQlcyNlF4cFNqLV9aS21feFQ0aFd3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vT0xmZkdCVGFGMFhGT1cxZ251SEYwWWdwOVE4Z2JZcmhxR2xSYXZfSVhmay53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bUl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL09MZmZHQlRhRjBYRk9XMWdudUhGMGFFOGtNNHhXUjFfMWJZVVJSb2pSR2Mud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSsxRTAwLTFFRkYsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bUl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL09MZmZHQlRhRjBYRk9XMWdudUhGMGREaU5zUjVhLTlPZV9JdnB1OFhXbFkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubycpLCBsb2NhbCgnUm9ib3RvTW9uby1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vaE1xUE5Mc3VfZHl3TWE0Q19ERXBZMTRzWVlkSmc1ZFUycXpKRVZTdXRhMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubycpLCBsb2NhbCgnUm9ib3RvTW9uby1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vaE1xUE5Mc3VfZHl3TWE0Q19ERXBZX1pyYVIyVGc4dzJsem03a0xOTDAtdy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubycpLCBsb2NhbCgnUm9ib3RvTW9uby1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vaE1xUE5Mc3VfZHl3TWE0Q19ERXBZd3RfUm02OTFMVGViS2ZZMlprS1NtSS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNb25vJyksIGxvY2FsKCdSb2JvdG9Nb25vLVJlZ3VsYXInKSwgdXJsKC9mb250LXJvYm90by9oTXFQTkxzdV9keXdNYTRDX0RFcFkxQlcyNlF4cFNqLV9aS21feFQ0aFd3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8nKSwgbG9jYWwoJ1JvYm90b01vbm8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL2hNcVBOTHN1X2R5d01hNENfREVwWTRncDlROGdiWXJocUdsUmF2X0lYZmsud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIyMTIsIFUrMjIxNTsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubycpLCBsb2NhbCgnUm9ib3RvTW9uby1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vaE1xUE5Mc3VfZHl3TWE0Q19ERXBZNkU4a000eFdSMV8xYllVUlJvalJHYy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8nKSwgbG9jYWwoJ1JvYm90b01vbm8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL2hNcVBOTHN1X2R5d01hNENfREVwWTlEaU5zUjVhLTlPZV9JdnB1OFhXbFkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubyBCb2xkJyksIGxvY2FsKCdSb2JvdG9Nb25vLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by9ONGR1VmM5QzU4dXdQaVk4XzU5RnoxeC1NMUkxdzVPTWlxblZGOHhCTGhVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNb25vIEJvbGQnKSwgbG9jYWwoJ1JvYm90b01vbm8tQm9sZCcpLCB1cmwoL2ZvbnQtcm9ib3RvL040ZHVWYzlDNTh1d1BpWThfNTlGendYYUFYdXA1bVpsZks2eFJMcmhzY28ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvTW9uby1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vTjRkdVZjOUM1OHV3UGlZOF81OUZ6d242V3F4by14d3hpbERYUFU4Y2hWVS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNb25vIEJvbGQnKSwgbG9jYWwoJ1JvYm90b01vbm8tQm9sZCcpLCB1cmwoL2ZvbnQtcm9ib3RvL040ZHVWYzlDNTh1d1BpWThfNTlGejFUN2FKTEs2bktwbjM2SU13VGNNTWMud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubyBCb2xkJyksIGxvY2FsKCdSb2JvdG9Nb25vLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by9ONGR1VmM5QzU4dXdQaVk4XzU5RnpfNzlfWnVVeENpZ00yRGVzcFRuRmF3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQywgVSsyMjEyLCBVKzIyMTU7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvTW9uby1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vTjRkdVZjOUM1OHV3UGlZOF81OUZ6NGdkOU9FUFVDTjNBZFlXMGU4dGF0NC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvTW9uby1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vTjRkdVZjOUM1OHV3UGlZOF81OUZ6OGJJUVNZWm5XTGFXQzlRTkNwVEtfVS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9Cjwvc3R5bGU+CgoKCjxzdHlsZT4ubWF0LWJhZGdlLWNvbnRlbnR7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsIC5tYXQtYmFkZ2UtY29udGVudHtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2UgLm1hdC1iYWRnZS1jb250ZW50e2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDEsLm1hdC1oZWFkbGluZSwubWF0LXR5cG9ncmFwaHkgaDF7Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDIsLm1hdC10aXRsZSwubWF0LXR5cG9ncmFwaHkgaDJ7Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDMsLm1hdC1zdWJoZWFkaW5nLTIsLm1hdC10eXBvZ3JhcGh5IGgze2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0LC5tYXQtc3ViaGVhZGluZy0xLC5tYXQtdHlwb2dyYXBoeSBoNHtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNSwubWF0LXR5cG9ncmFwaHkgaDV7Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDYsLm1hdC10eXBvZ3JhcGh5IGg2e2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nLC5tYXQtYm9keS0ye2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keSwubWF0LWJvZHktMSwubWF0LXR5cG9ncmFwaHl7Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5IHAsLm1hdC1ib2R5LTEgcCwubWF0LXR5cG9ncmFwaHkgcHttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbCwubWF0LWNhcHRpb257Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTQsLm1hdC10eXBvZ3JhcGh5IC5tYXQtZGlzcGxheS00e2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktMywubWF0LXR5cG9ncmFwaHkgLm1hdC1kaXNwbGF5LTN7Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMiwubWF0LXR5cG9ncmFwaHkgLm1hdC1kaXNwbGF5LTJ7Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTEsLm1hdC10eXBvZ3JhcGh5IC5tYXQtZGlzcGxheS0xe2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJ7Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b24sLm1hdC1yYWlzZWQtYnV0dG9uLC5tYXQtaWNvbi1idXR0b24sLm1hdC1zdHJva2VkLWJ1dHRvbiwubWF0LWZsYXQtYnV0dG9uLC5tYXQtZmFiLC5tYXQtbWluaS1mYWJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGV7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxle2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyIC5tYXQtY2FyZC10aXRsZXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGUsLm1hdC1jYXJkLWNvbnRlbnR7Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXQgLm1hdC1jaGVja2JveC1sYWJlbHtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcHtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uLC5tYXQtY2hpcCAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29ue2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGV7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGx7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbCwubWF0LWZvb3Rlci1jZWxse2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWwsLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9ue2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlciB0aHtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGV7Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVye2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudHtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGR7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJ7cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29ue2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiwubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbi1idXR0b257aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCAubWF0LWljb24tYnV0dG9uIC5tYXQtaWNvbntoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXh7cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcjpmb2N1cysubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJ7dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVse3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcntmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtd3JhcHBlcntwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1pbmZpeHtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcjpmb2N1cysubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sOi13ZWJraXQtYXV0b2ZpbGwrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtbGFiZWx7dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJ7bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sOi13ZWJraXQtYXV0b2ZpbGwrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC1pbmZpeHtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1pbmZpeHtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXIsLm1hdC1ncmlkLXRpbGUtZm9vdGVye2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlciAubWF0LWxpbmUsLm1hdC1ncmlkLXRpbGUtZm9vdGVyIC5tYXQtbGluZXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyIC5tYXQtbGluZTpudGgtY2hpbGQobisyKSwubWF0LWdyaWQtdGlsZS1mb290ZXIgLm1hdC1saW5lOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50e21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVte2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3IsLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplIC5tYXQtc2VsZWN0LXRyaWdnZXJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9ue2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcntoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50e2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLC5tYXQtc3RlcHBlci1ob3Jpem9udGFse2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWx7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3J7Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcntmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWR7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3Vwe2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbCwubWF0LXRhYi1saW5re2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyLC5tYXQtdG9vbGJhciBoMSwubWF0LXRvb2xiYXIgaDIsLm1hdC10b29sYmFyIGgzLC5tYXQtdG9vbGJhciBoNCwubWF0LXRvb2xiYXIgaDUsLm1hdC10b29sYmFyIGg2e2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldHtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVte2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9ue2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZSAubWF0LWxpc3QtaXRlbXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZSAubWF0LWxpc3QtaXRlbSAubWF0LWxpbmV7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1pdGVtIC5tYXQtbGluZTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZSAubWF0LWxpc3Qtb3B0aW9ue2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1vcHRpb24gLm1hdC1saW5le3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZSAubWF0LWxpc3Qtb3B0aW9uIC5tYXQtbGluZTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZSAubWF0LXN1YmhlYWRlcntmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LWxpc3QtaXRlbXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV0gLm1hdC1saXN0LWl0ZW0gLm1hdC1saW5le3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV0gLm1hdC1saXN0LWl0ZW0gLm1hdC1saW5lOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LWxpc3Qtb3B0aW9ue2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LWxpc3Qtb3B0aW9uIC5tYXQtbGluZXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtbGlzdC1vcHRpb24gLm1hdC1saW5lOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LXN1YmhlYWRlcntmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9ue2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVse2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFye2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb257bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWV7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlLC5tYXQtbmVzdGVkLXRyZWUtbm9kZXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGV7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVke292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudHtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtcmlwcGxlLWVsZW1lbnR7ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVue2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyLC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcntwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJ7cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXI6ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcntkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5le3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ3tvcGFjaXR5OjF9QG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpey5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5ne29wYWNpdHk6LjZ9fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9we2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCwuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ3tvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3h7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja3twb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7LyohKi99QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7LyohKi99LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZDotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZDpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5ne3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3h7cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fS5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xKX0ubWF0LW9wdGlvbntjb2xvcjojMjEyMTIxfS5tYXQtb3B0aW9uOmhvdmVyOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCksLm1hdC1vcHRpb246Zm9jdXM6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtb3B0aW9uLm1hdC1hY3RpdmV7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCk7Y29sb3I6IzIxMjEyMX0ubWF0LW9wdGlvbi5tYXQtb3B0aW9uLWRpc2FibGVke2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXByaW1hcnkgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2Y1N2MwMH0ubWF0LWFjY2VudCAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZmY5ODAwfS5tYXQtd2FybiAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZjQ0MzM2fS5tYXQtb3B0Z3JvdXAtbGFiZWx7Y29sb3I6IzYxNjE2MX0ubWF0LW9wdGdyb3VwLWRpc2FibGVkIC5tYXQtb3B0Z3JvdXAtbGFiZWx7Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcHNldWRvLWNoZWNrYm94e2NvbG9yOiM2MTYxNjF9Lm1hdC1wc2V1ZG8tY2hlY2tib3g6OmFmdGVye2NvbG9yOiNmYWZhZmF9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWR7Y29sb3I6I2IwYjBiMH0ubWF0LXByaW1hcnkgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCwubWF0LXByaW1hcnkgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZXtiYWNrZ3JvdW5kOiNmNTdjMDB9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCwubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlLC5tYXQtYWNjZW50IC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsLm1hdC1hY2NlbnQgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZXtiYWNrZ3JvdW5kOiNmZjk4MDB9Lm1hdC13YXJuIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsLm1hdC13YXJuIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGV7YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZCwubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWR7YmFja2dyb3VuZDojYjBiMGIwfS5tYXQtZWxldmF0aW9uLXowe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoye2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejN7Ym94LXNoYWRvdzowcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16NHtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16NXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA1cHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16Nntib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejd7Ym94LXNoYWRvdzowcHggNHB4IDVweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggN3B4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDJweCAxNnB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo4e2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16OXtib3gtc2hhZG93OjBweCA1cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA5cHggMTJweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEwe2JveC1zaGFkb3c6MHB4IDZweCA2cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEwcHggMTRweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNHB4IDE4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejExe2JveC1zaGFkb3c6MHB4IDZweCA3cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDExcHggMTVweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNHB4IDIwcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEye2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEze2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEzcHggMTlweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDI0cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE0e2JveC1zaGFkb3c6MHB4IDdweCA5cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE0cHggMjFweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDI2cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE1e2JveC1zaGFkb3c6MHB4IDhweCA5cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE1cHggMjJweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDI4cHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE2e2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxN3tib3gtc2hhZG93OjBweCA4cHggMTFweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTdweCAyNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzJweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTh7Ym94LXNoYWRvdzowcHggOXB4IDExcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE4cHggMjhweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM0cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE5e2JveC1zaGFkb3c6MHB4IDlweCAxMnB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxOXB4IDI5cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDdweCAzNnB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyMHtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIwcHggMzFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDM4cHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIxe2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjFweCAzM3B4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDBweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjJ7Ym94LXNoYWRvdzowcHggMTBweCAxNHB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyMnB4IDM1cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDhweCA0MnB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyM3tib3gtc2hhZG93OjBweCAxMXB4IDE0cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIzcHggMzZweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ0cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejI0e2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWFwcC1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtjb2xvcjojMjEyMTIxfS5tYXQtdGhlbWUtbG9hZGVkLW1hcmtlcntkaXNwbGF5Om5vbmV9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWx7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWw6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWwgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkOm5vdCgubWF0LWFjdGl2ZSk6bm90KDpob3Zlcil7YmFja2dyb3VuZDojZmZmfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1hY3RpdmUpOm5vdCg6aG92ZXIpOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6IzIxMjEyMX0ubWF0LWJhZGdlLWNvbnRlbnR7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiNmNTdjMDB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJhZGdlLWNvbnRlbnR7b3V0bGluZTpzb2xpZCAxcHg7Ym9yZGVyLXJhZGl1czowfS5tYXQtYmFkZ2UtYWNjZW50IC5tYXQtYmFkZ2UtY29udGVudHtiYWNrZ3JvdW5kOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWJhZGdlLXdhcm4gLm1hdC1iYWRnZS1jb250ZW50e2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtYmFkZ2V7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1iYWRnZS1oaWRkZW4gLm1hdC1iYWRnZS1jb250ZW50e2Rpc3BsYXk6bm9uZX0ubWF0LWJhZGdlLWRpc2FibGVkIC5tYXQtYmFkZ2UtY29udGVudHtiYWNrZ3JvdW5kOiNiOWI5Yjk7Y29sb3I6Izc1NzU3NX0ubWF0LWJhZGdlLWNvbnRlbnR7cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ym9yZGVyLXJhZGl1czo1MCU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gMjAwbXMgZWFzZS1pbi1vdXQ7dHJhbnNmb3JtOnNjYWxlKDAuNik7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3BvaW50ZXItZXZlbnRzOm5vbmV9Lm5nLWFuaW1hdGUtZGlzYWJsZWQgLm1hdC1iYWRnZS1jb250ZW50LC5tYXQtYmFkZ2UtY29udGVudC5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZXt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1iYWRnZS1jb250ZW50Lm1hdC1iYWRnZS1hY3RpdmV7dHJhbnNmb3JtOm5vbmV9Lm1hdC1iYWRnZS1zbWFsbCAubWF0LWJhZGdlLWNvbnRlbnR7d2lkdGg6MTZweDtoZWlnaHQ6MTZweDtsaW5lLWhlaWdodDoxNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFib3ZlIC5tYXQtYmFkZ2UtY29udGVudHt0b3A6LThweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1iZWxvdyAubWF0LWJhZGdlLWNvbnRlbnR7Ym90dG9tOi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0Oi0xNnB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1iZWZvcmUgLm1hdC1iYWRnZS1jb250ZW50e2xlZnQ6YXV0bztyaWdodDotMTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hZnRlciAubWF0LWJhZGdlLWNvbnRlbnR7cmlnaHQ6LTE2cHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDphdXRvO2xlZnQ6LTE2cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0Oi04cHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZSAubWF0LWJhZGdlLWNvbnRlbnR7bGVmdDphdXRvO3JpZ2h0Oi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXIgLm1hdC1iYWRnZS1jb250ZW50e3JpZ2h0Oi04cHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDphdXRvO2xlZnQ6LThweH0ubWF0LWJhZGdlLW1lZGl1bSAubWF0LWJhZGdlLWNvbnRlbnR7d2lkdGg6MjJweDtoZWlnaHQ6MjJweDtsaW5lLWhlaWdodDoyMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hYm92ZSAubWF0LWJhZGdlLWNvbnRlbnR7dG9wOi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWxvdyAubWF0LWJhZGdlLWNvbnRlbnR7Ym90dG9tOi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWZvcmUgLm1hdC1iYWRnZS1jb250ZW50e2xlZnQ6LTIycHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWZvcmUgLm1hdC1iYWRnZS1jb250ZW50e2xlZnQ6YXV0bztyaWdodDotMjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWZ0ZXIgLm1hdC1iYWRnZS1jb250ZW50e3JpZ2h0Oi0yMnB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWZ0ZXIgLm1hdC1iYWRnZS1jb250ZW50e3JpZ2h0OmF1dG87bGVmdDotMjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0Oi0xMXB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0OmF1dG87cmlnaHQ6LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDotMTFweH1bZGlyPXJ0bF0gLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDphdXRvO2xlZnQ6LTExcHh9Lm1hdC1iYWRnZS1sYXJnZSAubWF0LWJhZGdlLWNvbnRlbnR7d2lkdGg6MjhweDtoZWlnaHQ6MjhweDtsaW5lLWhlaWdodDoyOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFib3ZlIC5tYXQtYmFkZ2UtY29udGVudHt0b3A6LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVsb3cgLm1hdC1iYWRnZS1jb250ZW50e2JvdHRvbTotMTRweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1iZWZvcmUgLm1hdC1iYWRnZS1jb250ZW50e2xlZnQ6LTI4cHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlZm9yZSAubWF0LWJhZGdlLWNvbnRlbnR7bGVmdDphdXRvO3JpZ2h0Oi0yOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDotMjhweH1bZGlyPXJ0bF0gLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYWZ0ZXIgLm1hdC1iYWRnZS1jb250ZW50e3JpZ2h0OmF1dG87bGVmdDotMjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmUgLm1hdC1iYWRnZS1jb250ZW50e2xlZnQ6LTE0cHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZSAubWF0LWJhZGdlLWNvbnRlbnR7bGVmdDphdXRvO3JpZ2h0Oi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDotMTRweH1bZGlyPXJ0bF0gLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXIgLm1hdC1iYWRnZS1jb250ZW50e3JpZ2h0OmF1dG87bGVmdDotMTRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJ7Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1idXR0b24sLm1hdC1pY29uLWJ1dHRvbiwubWF0LXN0cm9rZWQtYnV0dG9ue2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZDp0cmFuc3BhcmVudH0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeSwubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5LC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnl7Y29sb3I6I2Y1N2MwMH0ubWF0LWJ1dHRvbi5tYXQtYWNjZW50LC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudCwubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnR7Y29sb3I6I2ZmOTgwMH0ubWF0LWJ1dHRvbi5tYXQtd2FybiwubWF0LWljb24tYnV0dG9uLm1hdC13YXJuLC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm57Y29sb3I6I2Y0NDMzNn0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtkaXNhYmxlZF0sLm1hdC1idXR0b24ubWF0LWFjY2VudFtkaXNhYmxlZF0sLm1hdC1idXR0b24ubWF0LXdhcm5bZGlzYWJsZWRdLC5tYXQtYnV0dG9uW2Rpc2FibGVkXVtkaXNhYmxlZF0sLm1hdC1pY29uLWJ1dHRvbi5tYXQtcHJpbWFyeVtkaXNhYmxlZF0sLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50W2Rpc2FibGVkXSwubWF0LWljb24tYnV0dG9uLm1hdC13YXJuW2Rpc2FibGVkXSwubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtkaXNhYmxlZF0sLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtkaXNhYmxlZF0sLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50W2Rpc2FibGVkXSwubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC13YXJuW2Rpc2FibGVkXSwubWF0LXN0cm9rZWQtYnV0dG9uW2Rpc2FibGVkXVtkaXNhYmxlZF17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1pY29uLWJ1dHRvbi5tYXQtcHJpbWFyeSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1idXR0b24ubWF0LWFjY2VudCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWJ1dHRvbi5tYXQtd2FybiAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm4gLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC13YXJuIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtYnV0dG9uW2Rpc2FibGVkXSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbltkaXNhYmxlZF0gLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtYnV0dG9uIC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC1pY29uLWJ1dHRvbiAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtc3Ryb2tlZC1idXR0b24gLm1hdC1yaXBwbGUtZWxlbWVudHtvcGFjaXR5Oi4xO2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yfS5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7YmFja2dyb3VuZDojMDAwfS5tYXQtc3Ryb2tlZC1idXR0b246bm90KFtkaXNhYmxlZF0pe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mbGF0LWJ1dHRvbiwubWF0LXJhaXNlZC1idXR0b24sLm1hdC1mYWIsLm1hdC1taW5pLWZhYntjb2xvcjojMjEyMTIxO2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5LC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeSwubWF0LWZhYi5tYXQtcHJpbWFyeSwubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5e2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50LC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50LC5tYXQtZmFiLm1hdC1hY2NlbnQsLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50e2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2FybiwubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4sLm1hdC1mYWIubWF0LXdhcm4sLm1hdC1taW5pLWZhYi5tYXQtd2Fybntjb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnlbZGlzYWJsZWRdLC5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtkaXNhYmxlZF0sLm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2FybltkaXNhYmxlZF0sLm1hdC1mbGF0LWJ1dHRvbltkaXNhYmxlZF1bZGlzYWJsZWRdLC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtkaXNhYmxlZF0sLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnRbZGlzYWJsZWRdLC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2FybltkaXNhYmxlZF0sLm1hdC1yYWlzZWQtYnV0dG9uW2Rpc2FibGVkXVtkaXNhYmxlZF0sLm1hdC1mYWIubWF0LXByaW1hcnlbZGlzYWJsZWRdLC5tYXQtZmFiLm1hdC1hY2NlbnRbZGlzYWJsZWRdLC5tYXQtZmFiLm1hdC13YXJuW2Rpc2FibGVkXSwubWF0LWZhYltkaXNhYmxlZF1bZGlzYWJsZWRdLC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnlbZGlzYWJsZWRdLC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtkaXNhYmxlZF0sLm1hdC1taW5pLWZhYi5tYXQtd2FybltkaXNhYmxlZF0sLm1hdC1taW5pLWZhYltkaXNhYmxlZF1bZGlzYWJsZWRde2NvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5LC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeSwubWF0LWZhYi5tYXQtcHJpbWFyeSwubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5e2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQsLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQsLm1hdC1mYWIubWF0LWFjY2VudCwubWF0LW1pbmktZmFiLm1hdC1hY2NlbnR7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4sLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLC5tYXQtZmFiLm1hdC13YXJuLC5tYXQtbWluaS1mYWIubWF0LXdhcm57YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnlbZGlzYWJsZWRdLC5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtkaXNhYmxlZF0sLm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2FybltkaXNhYmxlZF0sLm1hdC1mbGF0LWJ1dHRvbltkaXNhYmxlZF1bZGlzYWJsZWRdLC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtkaXNhYmxlZF0sLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnRbZGlzYWJsZWRdLC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2FybltkaXNhYmxlZF0sLm1hdC1yYWlzZWQtYnV0dG9uW2Rpc2FibGVkXVtkaXNhYmxlZF0sLm1hdC1mYWIubWF0LXByaW1hcnlbZGlzYWJsZWRdLC5tYXQtZmFiLm1hdC1hY2NlbnRbZGlzYWJsZWRdLC5tYXQtZmFiLm1hdC13YXJuW2Rpc2FibGVkXSwubWF0LWZhYltkaXNhYmxlZF1bZGlzYWJsZWRdLC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnlbZGlzYWJsZWRdLC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtkaXNhYmxlZF0sLm1hdC1taW5pLWZhYi5tYXQtd2FybltkaXNhYmxlZF0sLm1hdC1taW5pLWZhYltkaXNhYmxlZF1bZGlzYWJsZWRde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LWZhYi5tYXQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC1mYWIubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtbWluaS1mYWIubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtZmFiLm1hdC13YXJuIC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC1taW5pLWZhYi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1zdHJva2VkLWJ1dHRvbjpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwubWF0LWZsYXQtYnV0dG9uOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b246bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b246bm90KFtkaXNhYmxlZF0pOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCA1cHggNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA4cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1yYWlzZWQtYnV0dG9uW2Rpc2FibGVkXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWI6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksLm1hdC1taW5pLWZhYjpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWI6bm90KFtkaXNhYmxlZF0pOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwubWF0LW1pbmktZmFiOm5vdChbZGlzYWJsZWRdKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTJweCAxN3B4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWZhYltkaXNhYmxlZF06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksLm1hdC1taW5pLWZhYltkaXNhYmxlZF06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cHtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQsLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmR7Ym94LXNoYWRvdzpub25lfS5tYXQtYnV0dG9uLXRvZ2dsZXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1idXR0b24tdG9nZ2xlIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJke2NvbG9yOiMyMTIxMjE7YmFja2dyb3VuZDojZmZmfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWJ1dHRvbi10b2dnbGUrLm1hdC1idXR0b24tdG9nZ2xle2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9W2Rpcj1ydGxdIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZSsubWF0LWJ1dHRvbi10b2dnbGV7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtYnV0dG9uLXRvZ2dsZS12ZXJ0aWNhbCAubWF0LWJ1dHRvbi10b2dnbGUrLm1hdC1idXR0b24tdG9nZ2xle2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0Om5vbmU7Ym9yZGVyLXRvcDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2Vke2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojNjE2MTYxfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmR7Y29sb3I6IzIxMjEyMX0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWR7Y29sb3I6cmdiYSgwLDAsMCwuMjYpO2JhY2tncm91bmQtY29sb3I6I2VlZX0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZHtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWR7YmFja2dyb3VuZC1jb2xvcjojYmRiZGJkfS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQsLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmR7Ym9yZGVyOnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1jYXJke2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtY2FyZDpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2FyZC5tYXQtY2FyZC1mbGF0Om5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNhcmQtc3VidGl0bGV7Y29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94LWZyYW1le2JvcmRlci1jb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJre2ZpbGw6I2ZhZmFmYX0ubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoe3N0cm9rZTojZmFmYWZhICFpbXBvcnRhbnR9Lm1hdC1jaGVja2JveC1taXhlZG1hcmt7YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtcHJpbWFyeSAubWF0LWNoZWNrYm94LWJhY2tncm91bmQsLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1wcmltYXJ5IC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1hY2NlbnQgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kLC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtYWNjZW50IC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC13YXJuIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCwubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXdhcm4gLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1jaGVja2VkIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCwubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOiNiMGIwYjB9Lm1hdC1jaGVja2JveC1kaXNhYmxlZDpub3QoLm1hdC1jaGVja2JveC1jaGVja2VkKSAubWF0LWNoZWNrYm94LWZyYW1le2JvcmRlci1jb2xvcjojYjBiMGIwfS5tYXQtY2hlY2tib3gtZGlzYWJsZWQgLm1hdC1jaGVja2JveC1sYWJlbHtjb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3ggLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1jaGVja2JveC1jaGVja2VkOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtY2hlY2tib3g6YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQ6I2Y1N2MwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWQ6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1hY2NlbnQgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LWNoZWNrYm94OmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQ6I2ZmOTgwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWQ6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC13YXJuIC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC1jaGVja2JveDphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC13YXJuIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcHtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7Y29sb3I6IzIxMjEyMX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLXJlbW92ZXtjb2xvcjojMjEyMTIxO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpOmFjdGl2ZXtib3gtc2hhZG93OjBweCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAzcHggNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcDpub3QoLm1hdC1jaGlwLWRpc2FibGVkKSAubWF0LWNoaXAtcmVtb3ZlOmhvdmVye29wYWNpdHk6LjU0fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1kaXNhYmxlZHtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcDo6YWZ0ZXJ7YmFja2dyb3VuZDojMDAwfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnkgLm1hdC1jaGlwLXJlbW92ZXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5IC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm57YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2O2NvbG9yOiNmZmZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuIC5tYXQtY2hpcC1yZW1vdmV7Y29sb3I6I2ZmZjtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnR7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnQgLm1hdC1jaGlwLXJlbW92ZXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnQgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtdGFibGV7YmFja2dyb3VuZDojZmZmfS5tYXQtdGFibGUgdGhlYWQsLm1hdC10YWJsZSB0Ym9keSwubWF0LXRhYmxlIHRmb290LG1hdC1oZWFkZXItcm93LG1hdC1yb3csbWF0LWZvb3Rlci1yb3csW21hdC1oZWFkZXItcm93XSxbbWF0LXJvd10sW21hdC1mb290ZXItcm93XSwubWF0LXRhYmxlLXN0aWNreXtiYWNrZ3JvdW5kOmluaGVyaXR9bWF0LXJvdyxtYXQtaGVhZGVyLXJvdyxtYXQtZm9vdGVyLXJvdyx0aC5tYXQtaGVhZGVyLWNlbGwsdGQubWF0LWNlbGwsdGQubWF0LWZvb3Rlci1jZWxse2JvcmRlci1ib3R0b20tY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaGVhZGVyLWNlbGx7Y29sb3I6IzYxNjE2MX0ubWF0LWNlbGwsLm1hdC1mb290ZXItY2VsbHtjb2xvcjojMjEyMTIxfS5tYXQtY2FsZW5kYXItYXJyb3d7Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZSwubWF0LWRhdGVwaWNrZXItY29udGVudCAubWF0LWNhbGVuZGFyLW5leHQtYnV0dG9uLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50IC5tYXQtY2FsZW5kYXItcHJldmlvdXMtYnV0dG9ue2NvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcntjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXItZGl2aWRlcjo6YWZ0ZXJ7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVse2NvbG9yOiM2MTYxNjF9Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudHtjb2xvcjojMjEyMTIxO2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQ+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKXtjb2xvcjojNzU3NTc1fS5tYXQtY2FsZW5kYXItYm9keS1jZWxsOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQpOmhvdmVyPi5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQ6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCksLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmU+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKSwuY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlPi5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQ6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkPi5tYXQtY2FsZW5kYXItYm9keS10b2RheTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMTgpfS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQ+Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjQpfS5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50e2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkPi5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC40KX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQ+Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjQpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50LXRvdWNoe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZXtjb2xvcjojZjU3YzAwfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlLm1hdC1hY2NlbnR7Y29sb3I6I2ZmOTgwMH0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZS5tYXQtd2Fybntjb2xvcjojZjQ0MzM2fS5tYXQtZGlhbG9nLWNvbnRhaW5lcntib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kaXZpZGVye2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZGl2aWRlci12ZXJ0aWNhbHtib3JkZXItcmlnaHQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZXhwYW5zaW9uLXBhbmVse2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZXhwYW5zaW9uLXBhbmVsOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1hY3Rpb24tcm93e2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZXhwYW5zaW9uLXBhbmVsIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pLC5tYXQtZXhwYW5zaW9uLXBhbmVsIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksLm1hdC1leHBhbnNpb24tcGFuZWw6bm90KC5tYXQtZXhwYW5kZWQpIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcjpob3Zlcjpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1leHBhbnNpb24tcGFuZWw6bm90KC5tYXQtZXhwYW5kZWQpOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSkgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyOmhvdmVye2JhY2tncm91bmQ6I2ZmZn19Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxle2NvbG9yOiMyMTIxMjF9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uLC5tYXQtZXhwYW5zaW9uLWluZGljYXRvcjo6YWZ0ZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0gLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxlLC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1kZXNjcmlwdGlvbntjb2xvcjppbmhlcml0fS5tYXQtZm9ybS1maWVsZC1sYWJlbHtjb2xvcjpyZ2JhKDk3LDk3LDk3LC42KX0ubWF0LWhpbnR7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNil9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbHtjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LWFjY2VudHtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LXdhcm57Y29sb3I6I2Y0NDMzNn0ubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlcntjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC1yaXBwbGV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnR7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC13YXJue2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZDpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZDpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpLm1hdC1hY2NlbnQgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LXdhcm4gLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1sYWJlbHtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50LC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1sYWJlbCAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2Vye2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZSwubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnR7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtZXJyb3J7Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOiM2MTYxNjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtaGludHtjb2xvcjojNjE2MTYxfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNDIpIDAlLCByZ2JhKDAsIDAsIDAsIDAuNDIpIDMzJSwgdHJhbnNwYXJlbnQgMCUpO2JhY2tncm91bmQtc2l6ZTo0cHggMTAwJTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC40MikgMCUsIHJnYmEoMCwgMCwgMCwgMC40MikgMzMlLCB0cmFuc3BhcmVudCAwJSk7YmFja2dyb3VuZC1zaXplOjRweCAxMDAlO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLWZsZXh7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtZmxleHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjAyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmU6OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC1sYWJlbHtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZTo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZXtjb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tjb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQubWF0LWFjY2VudCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQubWF0LXdhcm4gLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2t7Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWludmFsaWQubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZXtjb2xvcjpyZ2JhKDAsMCwwLC4wNil9Lm1hdC1pY29uLm1hdC1wcmltYXJ5e2NvbG9yOiNmNTdjMDB9Lm1hdC1pY29uLm1hdC1hY2NlbnR7Y29sb3I6I2ZmOTgwMH0ubWF0LWljb24ubWF0LXdhcm57Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye2NvbG9yOiM2MTYxNjF9Lm1hdC1pbnB1dC1lbGVtZW50OmRpc2FibGVkLC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7Y29sb3I6Izc1NzU3NX0ubWF0LWlucHV0LWVsZW1lbnR7Y2FyZXQtY29sb3I6I2Y1N2MwMH0ubWF0LWlucHV0LWVsZW1lbnQ6OnBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnQ6Oi1tb3otcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1hY2NlbnQgLm1hdC1pbnB1dC1lbGVtZW50e2NhcmV0LWNvbG9yOiNmZjk4MDB9Lm1hdC13YXJuIC5tYXQtaW5wdXQtZWxlbWVudCwubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWlucHV0LWVsZW1lbnR7Y2FyZXQtY29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7Y29sb3I6I2Y0NDMzNn0ubWF0LWxpc3QtYmFzZSAubWF0LWxpc3QtaXRlbXtjb2xvcjojMjEyMTIxfS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1vcHRpb257Y29sb3I6IzIxMjEyMX0ubWF0LWxpc3QtYmFzZSAubWF0LXN1YmhlYWRlcntjb2xvcjojNjE2MTYxfS5tYXQtbGlzdC1pdGVtLWRpc2FibGVke2JhY2tncm91bmQtY29sb3I6I2VlZX0ubWF0LWxpc3Qtb3B0aW9uOmhvdmVyLC5tYXQtbGlzdC1vcHRpb246Zm9jdXMsLm1hdC1uYXYtbGlzdCAubWF0LWxpc3QtaXRlbTpob3ZlciwubWF0LW5hdi1saXN0IC5tYXQtbGlzdC1pdGVtOmZvY3VzLC5tYXQtYWN0aW9uLWxpc3QgLm1hdC1saXN0LWl0ZW06aG92ZXIsLm1hdC1hY3Rpb24tbGlzdCAubWF0LWxpc3QtaXRlbTpmb2N1c3tiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbiwubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbjpob3ZlciwubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbjpmb2N1c3tiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LW1lbnUtcGFuZWx7YmFja2dyb3VuZDojZmZmfS5tYXQtbWVudS1wYW5lbDpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LW1lbnUtaXRlbXtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOiMyMTIxMjF9Lm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRdLC5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXTo6YWZ0ZXJ7Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtbWVudS1pdGVtIC5tYXQtaWNvbi1uby1jb2xvciwubWF0LW1lbnUtaXRlbS1zdWJtZW51LXRyaWdnZXI6OmFmdGVye2NvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LW1lbnUtaXRlbTpob3Zlcjpub3QoW2Rpc2FibGVkXSksLm1hdC1tZW51LWl0ZW0uY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoW2Rpc2FibGVkXSksLm1hdC1tZW51LWl0ZW0uY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KFtkaXNhYmxlZF0pLC5tYXQtbWVudS1pdGVtLWhpZ2hsaWdodGVkOm5vdChbZGlzYWJsZWRdKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LXBhZ2luYXRvcntiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1wYWdpbmF0b3IsLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplIC5tYXQtc2VsZWN0LXRyaWdnZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LXBhZ2luYXRvci1kZWNyZW1lbnQsLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50e2JvcmRlci10b3A6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KTtib3JkZXItcmlnaHQ6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KX0ubWF0LXBhZ2luYXRvci1maXJzdCwubWF0LXBhZ2luYXRvci1sYXN0e2JvcmRlci10b3A6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KX0ubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXSAubWF0LXBhZ2luYXRvci1kZWNyZW1lbnQsLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF0gLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50LC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdIC5tYXQtcGFnaW5hdG9yLWZpcnN0LC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdIC5tYXQtcGFnaW5hdG9yLWxhc3R7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5ke2ZpbGw6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci1idWZmZXJ7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGw6OmFmdGVye2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50IC5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmR7ZmlsbDojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnQgLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVye2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50IC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGw6OmFmdGVye2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2FybiAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5ke2ZpbGw6I2ZmY2RkMn0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2FybiAubWF0LXByb2dyZXNzLWJhci1idWZmZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZjZGQyfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGw6OmFmdGVye2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXByb2dyZXNzLXNwaW5uZXIgY2lyY2xlLC5tYXQtc3Bpbm5lciBjaXJjbGV7c3Ryb2tlOiNmNTdjMDB9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1hY2NlbnQgY2lyY2xlLC5tYXQtc3Bpbm5lci5tYXQtYWNjZW50IGNpcmNsZXtzdHJva2U6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXdhcm4gY2lyY2xlLC5tYXQtc3Bpbm5lci5tYXQtd2FybiBjaXJjbGV7c3Ryb2tlOiNmNDQzMzZ9Lm1hdC1yYWRpby1vdXRlci1jaXJjbGV7Ym9yZGVyLWNvbG9yOiM2MTYxNjF9Lm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnkubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1vdXRlci1jaXJjbGV7Ym9yZGVyLWNvbG9yOiNmNTdjMDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1yYWRpby1pbm5lci1jaXJjbGUsLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1yYWRpby1yaXBwbGUgLm1hdC1yaXBwbGUtZWxlbWVudDpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnkubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSwubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeTphY3RpdmUgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudC5tYXQtcmFkaW8tY2hlY2tlZCAubWF0LXJhZGlvLW91dGVyLWNpcmNsZXtib3JkZXItY29sb3I6I2ZmOTgwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtcmFkaW8taW5uZXItY2lyY2xlLC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQgLm1hdC1yYWRpby1yaXBwbGUgLm1hdC1yaXBwbGUtZWxlbWVudDpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudC5tYXQtcmFkaW8tY2hlY2tlZCAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlLC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQ6YWN0aXZlIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGV7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuLm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xle2JvcmRlci1jb2xvcjojZjQ0MzM2fS5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlLC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuIC5tYXQtcmFkaW8tcmlwcGxlIC5tYXQtcmlwcGxlLWVsZW1lbnQ6bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuLm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUsLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm46YWN0aXZlIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGV7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZC5tYXQtcmFkaW8tY2hlY2tlZCAubWF0LXJhZGlvLW91dGVyLWNpcmNsZSwubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWQgLm1hdC1yYWRpby1vdXRlci1jaXJjbGV7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWQgLm1hdC1yYWRpby1yaXBwbGUgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWQgLm1hdC1yYWRpby1pbm5lci1jaXJjbGV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkIC5tYXQtcmFkaW8tbGFiZWwtY29udGVudHtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b24gLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1zZWxlY3QtdmFsdWV7Y29sb3I6IzIxMjEyMX0ubWF0LXNlbGVjdC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1zZWxlY3QtZGlzYWJsZWQgLm1hdC1zZWxlY3QtdmFsdWV7Y29sb3I6Izc1NzU3NX0ubWF0LXNlbGVjdC1hcnJvd3tjb2xvcjojNjE2MTYxfS5tYXQtc2VsZWN0LXBhbmVse2JhY2tncm91bmQ6I2ZmZn0ubWF0LXNlbGVjdC1wYW5lbDpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXNlbGVjdC1wYW5lbCAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LXByaW1hcnkgLm1hdC1zZWxlY3QtYXJyb3d7Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LWFjY2VudCAubWF0LXNlbGVjdC1hcnJvd3tjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtd2FybiAubWF0LXNlbGVjdC1hcnJvd3tjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZCAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWludmFsaWQgLm1hdC1zZWxlY3QtYXJyb3d7Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1kaXNhYmxlZCAubWF0LXNlbGVjdC1hcnJvd3tjb2xvcjojNzU3NTc1fS5tYXQtZHJhd2VyLWNvbnRhaW5lcntiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7Y29sb3I6IzIxMjEyMX0ubWF0LWRyYXdlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRyYXdlci5tYXQtZHJhd2VyLXB1c2h7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtZHJhd2VyOm5vdCgubWF0LWRyYXdlci1zaWRlKXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWRyYXdlci1zaWRle2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmR7Ym9yZGVyLWxlZnQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKTtib3JkZXItcmlnaHQ6bm9uZX1bZGlyPXJ0bF0gLm1hdC1kcmF3ZXItc2lkZXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yaWdodDpub25lfVtkaXI9cnRsXSAubWF0LWRyYXdlci1zaWRlLm1hdC1kcmF3ZXItZW5ke2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1kcmF3ZXItYmFja2Ryb3AubWF0LWRyYXdlci1zaG93bntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjYpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1ie2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZCAubWF0LXNsaWRlLXRvZ2dsZS1iYXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1ie2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZCAubWF0LXNsaWRlLXRvZ2dsZS1iYXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1ie2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZCAubWF0LXNsaWRlLXRvZ2dsZS1iYXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtc2xpZGUtdG9nZ2xlOm5vdCgubWF0LWNoZWNrZWQpIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtc2xpZGUtdG9nZ2xlLXRodW1ie2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhfS5tYXQtc2xpZGUtdG9nZ2xlLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtcHJpbWFyeSAubWF0LXNsaWRlci10cmFjay1maWxsLC5tYXQtcHJpbWFyeSAubWF0LXNsaWRlci10aHVtYiwubWF0LXByaW1hcnkgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcHJpbWFyeSAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e2NvbG9yOiNmZmZ9Lm1hdC1hY2NlbnQgLm1hdC1zbGlkZXItdHJhY2stZmlsbCwubWF0LWFjY2VudCAubWF0LXNsaWRlci10aHVtYiwubWF0LWFjY2VudCAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1hY2NlbnQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dHtjb2xvcjojZmZmfS5tYXQtd2FybiAubWF0LXNsaWRlci10cmFjay1maWxsLC5tYXQtd2FybiAubWF0LXNsaWRlci10aHVtYiwubWF0LXdhcm4gLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtd2FybiAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e2NvbG9yOiNmZmZ9Lm1hdC1zbGlkZXItZm9jdXMtcmluZ3tiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4yKX0ubWF0LXNsaWRlcjpob3ZlciAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kLC5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmQsLm1hdC1zbGlkZXItZGlzYWJsZWQgLm1hdC1zbGlkZXItdHJhY2stZmlsbCwubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci10aHVtYntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1kaXNhYmxlZDpob3ZlciAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZSAubWF0LXNsaWRlci1mb2N1cy1yaW5ne2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcgLm1hdC1zbGlkZXItdGh1bWIsLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLC5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItbWluLXZhbHVlOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKSAubWF0LXNsaWRlci10aHVtYntib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMjYpO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1zbGlkZXItbWluLXZhbHVlOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3ZlciAubWF0LXNsaWRlci10aHVtYiwubWF0LXNsaWRlci1taW4tdmFsdWU6bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1ie2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItbWluLXZhbHVlOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3Zlci5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRodW1iLC5tYXQtc2xpZGVyLW1pbi12YWx1ZTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykuY2RrLWZvY3VzZWQubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci10aHVtYntib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLWhhcy10aWNrcyAubWF0LXNsaWRlci13cmFwcGVyOjphZnRlcntib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuNyl9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10aWNrc3tiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtaW1hZ2U6LW1vei1yZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDAuMDAwMWRlZywgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCl9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdGlja3N7YmFja2dyb3VuZC1pbWFnZTpyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCl9Lm1hdC1zdGVwLWhlYWRlci5jZGsta2V5Ym9hcmQtZm9jdXNlZCwubWF0LXN0ZXAtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWQsLm1hdC1zdGVwLWhlYWRlcjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtc3RlcC1oZWFkZXI6aG92ZXJ7YmFja2dyb3VuZDpub25lfX0ubWF0LXN0ZXAtaGVhZGVyIC5tYXQtc3RlcC1sYWJlbCwubWF0LXN0ZXAtaGVhZGVyIC5tYXQtc3RlcC1vcHRpb25hbHtjb2xvcjojNjE2MTYxfS5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWljb257YmFja2dyb3VuZC1jb2xvcjojNjE2MTYxO2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlciAubWF0LXN0ZXAtaWNvbi1zZWxlY3RlZCwubWF0LXN0ZXAtaGVhZGVyIC5tYXQtc3RlcC1pY29uLXN0YXRlLWRvbmUsLm1hdC1zdGVwLWhlYWRlciAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lZGl0e2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWljb24tc3RhdGUtZXJyb3J7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtjb2xvcjojZjQ0MzM2fS5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWFjdGl2ZXtjb2xvcjojMjEyMTIxfS5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWVycm9ye2NvbG9yOiNmNDQzMzZ9Lm1hdC1zdGVwcGVyLWhvcml6b250YWwsLm1hdC1zdGVwcGVyLXZlcnRpY2Fse2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZTo6YmVmb3Jle2JvcmRlci1sZWZ0LWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXI6OmJlZm9yZSwubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXI6OmFmdGVyLC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmV7Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1zb3J0LWhlYWRlci1hcnJvd3tjb2xvcjojNjE2MTYxfS5tYXQtdGFiLW5hdi1iYXIsLm1hdC10YWItaGVhZGVye2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEyKX0ubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXIgLm1hdC10YWItbmF2LWJhciwubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXIgLm1hdC10YWItaGVhZGVye2JvcmRlci10b3A6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEyKTtib3JkZXItYm90dG9tOm5vbmV9Lm1hdC10YWItbGFiZWwsLm1hdC10YWItbGlua3tjb2xvcjojMjEyMTIxfS5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWQsLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVke2NvbG9yOiM3NTc1NzV9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbntib3JkZXItY29sb3I6IzIxMjEyMX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue2JvcmRlci1jb2xvcjojNzU3NTc1fS5tYXQtdGFiLWdyb3VwW2NsYXNzKj1tYXQtYmFja2dyb3VuZC1dIC5tYXQtdGFiLWhlYWRlciwubWF0LXRhYi1uYXYtYmFyW2NsYXNzKj1tYXQtYmFja2dyb3VuZC1de2JvcmRlci1ib3R0b206bm9uZTtib3JkZXItdG9wOm5vbmV9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnkgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5IC5tYXQtaW5rLWJhciwubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5IC5tYXQtaW5rLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LWluay1iYXIsLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeS5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtaW5rLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudCAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnQgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnQgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50IC5tYXQtaW5rLWJhciwubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQgLm1hdC1pbmstYmFye2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LWluay1iYXIsLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LWluay1iYXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItZ3JvdXAubWF0LXdhcm4gLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC13YXJuIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtd2FybiAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtd2FybiAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtd2FybiAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtd2FybiAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIwNSwyMTAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuIC5tYXQtaW5rLWJhciwubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuIC5tYXQtaW5rLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC10YWItZ3JvdXAubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2FybiAubWF0LWluay1iYXIsLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtaW5rLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWhlYWRlciwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxpbmtzLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24sLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWhlYWRlciwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGlua3MsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9ue2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGluaywubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGFiZWwsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxpbmt7Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWQsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWQsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWQsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWhlYWRlciwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGlua3MsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWhlYWRlciwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1saW5rcywubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbntiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1saW5rLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxpbmt7Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZCwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWQsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVke2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbntib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjA1LDIxMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1oZWFkZXIsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1saW5rcywubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1oZWFkZXIsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWxpbmtzLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1sYWJlbCwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWxpbmssLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWxhYmVsLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1saW5re2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWR7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbntib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdG9vbGJhcntiYWNrZ3JvdW5kOiNmNWY1ZjU7Y29sb3I6IzIxMjEyMX0ubWF0LXRvb2xiYXIubWF0LXByaW1hcnl7YmFja2dyb3VuZDojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyLm1hdC1hY2NlbnR7YmFja2dyb3VuZDojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyLm1hdC13YXJue2JhY2tncm91bmQ6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtdG9vbGJhciAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lLC5tYXQtdG9vbGJhciAubWF0LWZvcm0tZmllbGQtcmlwcGxlLC5tYXQtdG9vbGJhciAubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LXRvb2xiYXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLC5tYXQtdG9vbGJhciAubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLC5tYXQtdG9vbGJhciAubWF0LXNlbGVjdC12YWx1ZSwubWF0LXRvb2xiYXIgLm1hdC1zZWxlY3QtYXJyb3csLm1hdC10b29sYmFyIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LXNlbGVjdC1hcnJvd3tjb2xvcjppbmhlcml0fS5tYXQtdG9vbGJhciAubWF0LWlucHV0LWVsZW1lbnR7Y2FyZXQtY29sb3I6Y3VycmVudENvbG9yfS5tYXQtdG9vbHRpcHtiYWNrZ3JvdW5kOnJnYmEoOTcsOTcsOTcsLjkpfS5tYXQtdHJlZXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC10cmVlLW5vZGUsLm1hdC1uZXN0ZWQtdHJlZS1ub2Rle2NvbG9yOiMyMTIxMjF9Lm1hdC1zbmFjay1iYXItY29udGFpbmVye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpO2JhY2tncm91bmQ6IzMyMzIzMjtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9ue2NvbG9yOiNmZjk4MDB9Cjwvc3R5bGU+Cgo8c3R5bGU+CiAgaHRtbCwKICBib2R5IHsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmc6IDA7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBmb250LWZhbWlseTogUm9ib3RvLCBzYW5zLXNlcmlmOwogICAgY29sb3I6IHZhcigtLXByaW1hcnktdGV4dC1jb2xvcik7CgogICAgLyogTGVnYWN5IG1lY2hhbmlzbSB0byBhdm9pZCBpc3N1ZXMgd2l0aCBzdWJwaXhlbCBhbnRpLWFsaWFzaW5nIG9uIG1hY09TLgogICAgICoKICAgICAqIEluIHRoZSBwYXN0IFsxXSwgbWFjT1Mgc3VicGl4ZWwgQUEgY2F1c2VkIGV4Y2Vzc2l2ZSBib2xkaW5nIGZvciBsaWdodC1vbi1kYXJrIHRleHQ7IHRoaXMgcnVsZQogICAgICogYXZvaWRzIHRoYXQgYnkgcmVxdWVzdGluZyBub24tc3VicGl4ZWwgQUEgYWx3YXlzLCByYXRoZXIgdGhhbiB0aGUgZGVmYXVsdCBiZWhhdmlvciwgd2hpY2ggaXMKICAgICAqIHRvIHVzZSBzdWJwaXhlbCBBQSB3aGVuIGF2YWlsYWJsZS4gVGhlIG9yaWdpbmFsIGlzc3VlIHdhcyAiZml4ZWQiIGJ5IHJlbW92aW5nIHN1YnBpeGVsIEFBIGluCiAgICAgKiBtYWNPUyAxNCAoTW9qYXZlKSwgYnV0IGZvciBsZWdhY3kgcmVhc29ucyB0aGV5IHByZXNlcnZlZCB0aGUgYm9sZGluZyBlZmZlY3QgYXMgYW4gb3B0aW9uLgogICAgICogQ2hyb21lIHRoZW4gaW4gdHVybiB1cGRhdGVkIGl0cyBmb250IHJlbmRlcmluZyB0byBhcHBseSB0aGF0IGJvbGRpbmcgZWZmZWN0IFsyXSwgd2hpY2ggbWVhbnMKICAgICAqIHRoYXQgZXZlbiB0aG91Z2ggdGhlIGAtd2Via2l0LWZvbnQtc21vb3RoaW5nYCBkb2NzIFszXSBzdWdnZXN0IHRoYXQgc2V0dGluZyBgYW50aWFsaWFzZWRgCiAgICAgKiB3b3VsZCBoYXZlIG5vIGVmZmVjdCBmb3IgcmVjZW50IHZlcnNpb25zIG9mIG1hY09TLCBpdCBzdGlsbCBpcyBuZWVkZWQgdG8gYXZvaWQgdGhlIGJvbGRpbmcuCiAgICAgKgogICAgICogWzFdOiBodHRwOi8vd3d3LmxpZ2h0ZXJyYS5jb20vYXJ0aWNsZXMvbWFjb3N4dGV4dGFhYnVnLwogICAgICogWzJdOiBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD04NTg4NjEKICAgICAqIFszXTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2ZvbnQtc21vb3RoCiAgICAgKgogICAgICovCgogICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgfQo8L3N0eWxlPgoKPC9oZWFkPjxib2R5Pjx0Yi13ZWJhcHA+PC90Yi13ZWJhcHA+PHNjcmlwdCBzcmM9ImluZGV4LmpzIj48L3NjcmlwdD48L2JvZHk+PC9odG1sPg==",
"ok": true,
"headers": [
[
"content-type",
"text/html; charset=utf-8"
]
],
"status": 200,
"status_text": ""
},
"https://localhost:6006/font-roboto/oMMgfZMQthOryQo9n22dcuvvDin1pK8aKteLpeZ5c0A.woff2": {
"data": "d09GMgABAAAAACn8AA4AAAAAUjgAACmjAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGmQbmUAcg0oGYACGTBEMCu1810YLg14AATYCJAOHNgQgBYJ0ByAbL0RFB2LYOGCA7DduwB2DjQOQz3hJ9n+ZwI0hWB/YxYSYMBRSFENBsWqrAkWbJBHpUKamYBECLd7YUy2OVYvlKX1dMf05+T/7LtU4wMKUW3v6cz1MLF0FGyHJLEG01r/VMHufgpZJIoGKBHQMKsYkFpgU4tsDmtv9xsaIGoiNiIJRtJKSElLSIdGjQuiRIypl0JtBlKISJSqZZnH/Oq0ZWaYZyYoPCFpukb7+N+xuwk6iBRZMI8WdlLQH1F3R7l157zoCyXjA9AD36nWBrP07PZhwgBLSeMnLEQ4VqJsqlv8siGuabsED3LeKFnxrugO3hMah9NJJ/ipRkvNo0bWSH6xvN8TX2qedvrqte1s1/yDEW6dCUB4tkIxQEeoDTSYMiiaAuBEGJLK/dSEgoaIi0Ua4CGXj/7vX2aa3YewLW7L1Fw6EC+fgxB/7NWWpMKZaUyFMhaxEyArLmA7J/62Zdje5MjlgYyvcOTf7ZycwswkX9oD2CklKoSNIzN4VWFXVET5/gKgKaO9USZgKCaxcreurQxDS1KS6SqUxAJqz+B+OtbQOoul9mcsgjITAKKN32318dn4Bhdn5t38EFHq8pCEUmUMECIAIFw4RKRIiRgxEnDiIBEkQpSqgdDmAQKCAVcCaECAgAiDACvyk0ex3gJounDg3gOACJy4k2DnDicusvN3gBBrAILTCpecT3AAH9C0NYpDo+7rNUJuyf/BUQ/cM42KIV0v11FyNhkyiUDj0XDKjjuX1lEnr9K7FjMnEPpZVifqZhCWKr4SbqzTQwLYaKjSBrueqpWpPjRbN9WixjymuFFH/CwqFBhYDRux4XXDRJZfdwE+IMBGibhEnQYq021SoUqPpHm069BkyZsKMhXQZsmTrQkH1yGNPPNWtR68+/Z4b8cJLr0x66515C1atWbdh05Z9BxC3mkNDHAcJeFI4TeKEYI8bP9Y44ePEm77r41+ewEGxRUrtUWZUuIsOetH6bTJql3HbzKjlpPZkximHvICSPiqPeMwTngZTLZpmhlleMxe8ac9b3jHPAmuss8EmW8F2u3bYZS/Yb9vBNIRJvask5+7FELPwimHcaoZ46yTaJ9WCSTY0DsjmwGD82Y7DoWmOfu1MGuY6fi64i8JTF1OyuErRYMJBFtuDaaussAMsMLJnmS0vuQHreu+JDYwyxjgTDXPAYsWQxpkTT6ltykCFu+glcU3S4tKxymCyyA7etO0t75hnoWEGSu1TRoW76JHEG97yjnkWzo2mioUhQSbYYOmYZg2ss8EmWw1jsBYFTyY55CV9Yp999tlnP46GGajhpolWtE5hDEphgsHaYdbBBptsWWTntaOdq59hH5i0BI2pTbJ9tW44FNXel24XIjwwjRl9q3SNYW6MMqPqdvrNMVySVP2Trj0U3CvhlYipV1w9cpuCyIgMoYoJ6uAoNADzvug45Zj7yoBXfrjWup4FNpUP90w83Gjmo+puO/m8JAbcN3D4dUpCw6N96EFl/RgLIB76ETisxR/w6aPfR7D+NjfOfbeHOYYeHrwM6cPqaG0C4EDa+qeN8E9UN/umlSM27Cex9S8bW/9cmENaN4plychcK2z/rnfLbrbSThvtiLBzSrZHuO7Wmpvu9U1ldbZfCTb4hlrtIxcAHO5g65ppXrrnhMPC1kvnK5fWHKkuAKxYS2ygcV0rlvjEtGOxglUm6USA2od7bZ7ZA0zgcMNXu6Vq96DjVnaFuUnt8GvYm+2/bLjrmx9odH8OHtYJcBgN/b8kxzn07RsPkp7oNsv+PxY7vLXhbI0B2O6kbBr78YIaGQ9mNpD/ZDn01If3Bh8OOu7XP4HYqD7kLYGVOfcyTk47aKYl0X7mMjiMDjPg7M42er6j3/abnabFTbZeexnmm/4ZPQMO37lXsuKw1GmniQNWEawkgpUo+P+g8bqExlXC6NwiDU+RkuNUiKeoeU+7RxcXffIw9p5jytx58d4L0uW4KO/t67osuGHVFr1lzLkJFBG7OIqjOKlO+kwUPh53gWwuEnGJGNdJ7wYZ8JOTEBHC5HCLTMRIT5wnSPAYSbKSIiNpslAk1h3SUiqP+NULp2hOtdHQAdF0S1ofe7ErOh/EMyMdczKLF9olnjsqE3JyqeeOygFPyuNJXV4ExVMo3X9j06MfxnOvIEZNoDdJXkZT5mC98R7x1gKc1fs01mxBk9dJBzawOQ5sKDkp7MUhWOFQrjBRrvMoIaKIEOVmyUxYL3rQ4QjYwQIGsIZUnapA3GVBSAIaNA5ND0QYkJFRiSHMgAOcYxIJoiQSJek+IlUaTgrBBg6wgcNx6IRwArCCIg8o0IFB0e4sQGgD2sfstj0Yi/vtsrpEq52XqxUx7wXavU9R5AbVfbV1p6EDtGWnJA/XVOMRsvo8RlPdHad9NxBpoVtpYHLL0QrVHnveFe6uwPf/7jyBq5c52luBaALJx8pX+LgSQAvlHBSU/jQISHSdPDXyK0T8EDNBpjzkeaygcCLzJqgiKV9QtldXCkW9eOkpVFBLmWjZoyokvMYGYuM3q7LDGjTAj7sPXGsYBaVQYdkTHmY1/zyKJHrVqlSqUatOvQaNHgpOvOwmgbx4I2vWolWbdigIDqeB6phIgQHjoSEEYoO3GfWG+xmO9H2b14EtgH09CwceqakEMmDjtbHwH1ywyEvghjwO6F0GGbeagAYru65f6TdFf8NxEZpQA3bCjcYxgDMmoUrc/1DdhozZ9MEhMsFlbnKRv254PFwOt8PD8DLMhvlhdVifRh0CAEy4lSj1fMkew8Zt+fiWtyg/Gs6H67an546+N+CsD3294PDnwOcHM058+/z/7Vt/15TJ8MUb+x/6/XXxtmRzAC4jjHlHw5q/XvcP1+XZL9e/HyHSqDHjJkyKEm3KtBmzXpsTI/YX7U0Txdm2Y9eeffEOMAIAZPHeNcAFkH5MT6DhJhQar4QOSmnAxmukk4d0404Pg1C8IcIZ7jem0m8c6GKCWZ7xmjkieMMCoyyyRBTLbDDlbRLDFh94430klk98Z5Uf/ITIL/6x7f0n3jtUBxqZCCT4yEItBRI1aiOQrFEfAiSN+hJI8bmP1LFAqs99ri4F0n3ua3UrkKW5HwRyNfeLQJ7PPVUzgXzNPRco1NwrgSLNvRYo1jyHQ6BkqJuBg+pwqVfwfijyRYUwvQnHv6TWp0PyKigaNh96H4GBhmyOegPVB40f59xGEvqhc+sAD9WxCKjVXrZAVDdIs68AhHKCotyajCaMMM33GHhE96JFqxBPQEEEoqpC8iJOGGL05OS/t6P7dswwoetDgYYOgzlyg98MT+zFf0ajcoEikxZ3w24atFBdBAG0lP/g72LZuroeHO2D0lGazKLkzmMauyiDCdhr2a5txrOVjSChgd2ova0t77MhhbcusVxATqdNzYG/FtlUbXRQPRO4OeZ3jE2LIpfa374QSXm/jXcJ1RlLGxZ+dBY1t4Brn0S4YIb5A885pd4Nm4nTxHTsncPU/uJFsrvfCo55+xh0RpRwlNVFmRZ5JT0a8vqz7YKjXITu0NETuTeLgWx0wlG1ZKwnE8zEIEPVAl29KW8grf5KvdJSAaHPwFwMFyKZcNGCzUM5o39uRYwWpCG2syOpPpQYJcOaFn+YiakAyoJBWW1PdQ3gky5Lyrv1Qu08YS8gSdFMp6Xw8V//1cwtjV/OeuogqHw10Ysw1TOlp8shZnahTTWfy4ZZH3Bv01/rq0FPiwuORTUH3Rr39SnJaRmeqQkMhbRqn4TlQFNuBzh2XJgnuDqHspyu0HjUXsMzfPUKBo4oQFl/59ra8oQdbCz13uBAOQ+7IIF6czUJA1lU66Bw5NYfWV31oNN7ypngGeWsuTqsEsrhFQEqG1WQZkIcz5vH8rsZjFklUsoKdqUiEv68IaVRHWA1ltQdWoR4IBbvBaMNWXDw7xohT2WjEINN7BucggQF7qiNneY8xhDhaJpbjN+TprJdqRJ68eUpZ5QTOoqiy71R/rGSuGKW/zv5f6bK+V+XqNf9bxu3tMVwufyHCz+PSnKjrh9+fWXoqLsUjumye4LFDWIi7dtumjw+brjklOBI+ScdTjXMTJQ4+jRhyjVAOkeCkt30cx/S2Z8qaXHhEDOrpWN7sCJd6FjeIVEmfARcWahxPLsI1sVRRvQyvF1z0BOqq/mw7dXZ5YiDWzSTRl1gQmV52yFfjGnz20KQxu571VcjSo6/lSSUtDza2mZJtR3ssJefgx5bpVWyM8HDYK/wkP5JPnL6UqVarauNUmfRkTOho3FTlGoP6PIFDRtZeBq6BcMRkGuIiNY4MYmDV0ujHNQz+aSb3NheHTbPCEeU8Mg3wvEIObtW60VLwLt7tL9LwT6HZUmRTfWEN7twFXImIwjFDI64QVhZ3NhBFt8eBbxHMZ8CaIe7H1C8xvXMdyxLPb6VIsSjjQ5Tu6SCqgAr05exOiWSIOmZeqYl2yAKsJ4IfFNStZo5LrDOMVUi2QHIrmqZ8dR/Sd8CWKfN1Wr8Mskb5eGEuUnILSj6pq4YSmagxspkGt6pTX8GqCojM8mUjwKb6kdQiWqQsEttHrQP39bBMb/jp+WMbYfEKRvFj3/DjHhrj/gV5E+5wKkhbQbvSCZBg9oF+S042qt+KCNAGgjS24pSDB1vg0HdlcYmpwORmpccTd0pV+zgEtazSNPfQ0pIHnElz5rKRywGsg04LtCsfnVCrglVCXW2UwSoJrdok1FMXuGCi+3BkEsTB73xIylxRo9pfLYQYxLuUC1A6WAXzk0miNkeiw1OG6sUC1JVAcxx+9QSh5gpb4ljMlXlQ8qQQ3dgkoicYMp93+rZewvB1cgE6qFuCI/w2OaxiJkb+/Jx6REGfgqeugr5MzGoCXlAhbvvgpRRatUGSqa0aT40UTVEIniStK2KkQNSWnadTS44MC0ZcShqn/tNbjSpzhJPWqmVtdIahqMy4JIurfISwFqdDknlN/ZkJWaJOfPmu0hCIViLEiCXeDo1fx31S8zs39RXB2funyM/h/4qJvzk1FE1AlLSBoRckNzDUC2Vie0A3dVydpP2+nlQlXWLmsM6kpxf2qNAnzxXE9I8zbaSdNBbUmBp9qN4v7SdxKEPSQw7OPKYqmGDHU1G25UrXOzQT8UESQ8gg7ZI7KplJNU1l8Ei8eqUd9TGu/Hq7MDh3qFLtVYpmTYB1RVu8jGGn+HIKixbp7pl08klbTB60qEpikY9sjLo9EaglvU96Bz3EvfEcLRjtkf+1rba2RopIJY4orU7uObY3Y9SlGnOR8UZRdWYYRWrEpkS6FgkfdvN4lxqew4RQe5mP6W+wnEkhvXYbXxIZd2qOGV+DxkBE9TT6D3p7Zq2VzJUAseOmluQLiocOOkAKDVWaXR015dYYhhgYrCcD6ml8QGDF/GOWXf4pN3DFIOvh2olo92vyup7stXa0MvaZcUB90LXMpfiqT0HdGwvKlR7KYetkJMa2zJ/eArTc+pPLwuQVoRD7jxII8nWDhElbFkfTa6MUhEyZ1g5yvyhBBlM5pzxUDZLT/37WD/EMrpTwTbt4IhlG7ZotGO0+OI4aZ8Go5MwWJcz21FJpnoSIFY/ccFOPVCPGOEsSkbF/PQIj5jGOrVbVnfwRTqNq6nNasQEQSYH7oLXLiW31UgXpk8J44vqKc0GKe+BUadt3wUGAkJHB7zFtQeGQxccdSieReslSPWf21E+PxPTi3gAyczhLgUOemFaBT28Nb0szb2eFfH0QV74/FTUWTUSxGVUnmvtGSxEF+eUJztVfeYpr5KlNEbYbqQ/w8UBwJAH0HamgKFli1D0/cDgt1aKRsyIiBkajPOqYfpIH2OmzjUXl2DjQBcnYNPzP23nDgeJTLHZjvA3F6eZS+qL+hBHp2CFSjh9r5hEHI5LWf8yYeu+fiXuj2dEpxTy4BSscCAS7mcaFpIjOC3TN15a8XSiiv1d5nw1J3XvVVdSdCXBLyTQ7X6UP791na9WoVPtyKsOfHdGN4V1cnOIkpCaGROZGQLYjJzIqtrI6Io6olJUVVV4RG1VQhxWw8BWVUnfSk9FQ88uQ89O+1zrjciqGmx1dYKSoDTFEzCaH0DKetZ6qpr6NipKhta6Pz/vyl71JjjIgm2Mo3dThbeljyxJqar/UU1W/8NoQ8MMt3tOGvIR8uHF1YdJ9djPRUuCiuyQgv0MsjKrmh7gbl1DWxUY4ZuThDq3YelD8tGWvyGgLy1vY6imbeEGLDOpHO7hsJgJURqr/sUfdMIUeQNS3akvcKdANyLxpG6ttwWvR5SKf+OeDogqLHnnfDSKVObzyPWhfkSuc08aOBScttLk84hUfq/nmw8c5a+vGV3LuuaOM8ilM73oei1b0HiQOciMcqb1WLAxXFpjymrKekl9Wf4AqqVC9FkHJbMIdHx1e6qd9XNg5NrO3gaSJT+J0MR/vZGQBOTgYj7stSKQKXNVXJDY31kSRgv+kF24ebC3cBUl1sW4FzlLSg6fQRYu7hOXE+KiplBr8IY64U2sYRs6DULU6B833EN1i/QIcale8TkFiZTnqB9vXuxNN79muxhd9Q6O2QgmRCCZ0QQ4jJKJnpTGv+v9oztv+iwCmx2v+PFGND0YOBw/gIUOqldmXGhMUkLkg/zYNCQBblntjGSPaFO1s10v9n8avPBleHDEAF69UZnZrVe/kugkTRzewS6vfEa97f0yw/q4iTWYFOobntaUn1ZEjgpQEKYF4W/NhTyv0Yd/jpcJkcNPVxmmV74yjU6gZf4ppenXaNNMkCyKPbn0FNpK3wWEJHdmZqV0gZyeMm+7ch9v5jGOnDmQHhB2JdRa3fDkj3rk9+T/0vjk3+XHvmFPPPktb7jXunTtve7t2X9N52URmJf7Oyv7Z1pSZER6MpvtCdeYGG/3KOJiemfEJYDQapiYQomOZSg1yG6ZmOa28yKIOPdT7qhorWaMNs35ggvr6G+bbL/MCjzP6ah2FK4FBKZTczOTe4A20vPvgNDZoDTV5MABkCq/LlcqJyNXIgcCLfEZqKciVoFpdFmDesA2F/EViFPTiYjRMXd1dPV1vB/kbEJBSleHOp5MjjQ3lda6OCtr5fRIdt1PHpfS7wyfXh9tfyRcLaIbr62anLqFf8lc4Y96mu5478FlTWmhS/jNdM+EJUwrPupOtsbzm0OtfvTfGH6QXPh6JozbrrScJ8y+FHD8bb/cUsVwggG/0BH0/sMvm6XGSpkVD6YkrWxDSTe7c+a4a9+DZXxyDkByItiaGDTEM0iu4ZkhD7Yc//CjBmoBQ54/eN/fc9+rwOayDzexK2zg39L2rRpGqZi8+EBartu5PKFZIS7+CS6kU6AePnpik+v3e5Sop2jiixQhuoqm7aMozvXeY41V+Vld4yx/kg4Gj7aU1KWcbDU7WvOfnqsuEoFnZqNFInyV/QiTCN5nZPE7+yH+3MbPICCNKvWjWSgsBAw5vWhq2g8k+yJtInsAQ44pGvpsA+o93SqOOAdyC3tVlhAy8kBF0JFz/cg210yPCDdP7xAzQPhtibvbpfSGstK9AlbQCoPe0sXS0v49hEVCL/h99hL428m9tBO/9ybefFp41hNCTIjwS8uEGDhR0dy1v7/a8ZixbckIvvJrm+BY0FLoZabrhRNHyKcHKnr6S5R8k83m9Hp++unpHLzlzRK4Kve1aWvrXsVreu2rvX03aKXVzpKkaavJDXQ1abeQV46TqbL0dQ1N9DUkmZmnCHqM41HHOAfqm/OfSS4K9QUz6i84iIkjPTGOf2D+8nwat/5Dv8AorzwlLqI8PxllC1r42qlofn899IsIf8EvSmxaRteT6WtFppluQF5yPm0H5ff4GW+Z9FRNX92p9/Tqd9zSLDHteYSAniPjaOrOBVJNenBsCSkb+ECP+P3O8mhOA355PmvXK+xFQG9UdVZuclGwu1FWoJPdy0Drcvdm9umtLDQhcfhBb1RfTnlOadBspjeo+OCnAYPvBgx+qug+qFaSF+EVYN6xnP1wEkFWlp++LWp8WFre0Fj0DuL/n6Bpnjw7SK47206egNWRk90XG/Don2Vs6T8vNHH1M59b7+U8Qm7CD/ByunG6sXvzNnHWWfcvykeYXlt9MTG7sG530/7m2uuFlxMrYDsd9PbtGZvUMz1npmGdh1sFsoXnUwTWI9iKfiQBd/t2N2CJ3TkBQNsVAKhoMpkPe40M8E5YoCEH5vQGfmL1womKR09WGi7PPrg0Ww9iYdkZ2RlwuuJtMcK7BBcPd0eHRbeWvGxLqAXqTpuelRfB0ybaRol6j5A1YOD7aIqKLv+cyWvA+jXRIN+IR2kxVXfYwMsK5FBsP9eu9rxyT8EF1wEWKFLu8fHLl9BdNE9SX8V1atZO69a2Rae/AqkIm3Q/WqMmGlOf6gEbtwUaPjhT5PVtLjaj4+Mb2sYmWofkGMekvJGec49yn4M576+9691P3cKFKYCFOpyXW+zQ432hn13YruyxGLJW4SftnAZi9gSosc+zc3/mKQ38O58cPrVzBK2+gC5uGYi3jtUUlPUwiB3He414ZJexpXEx0ybG5sFWfT2p3v0h5UmdzDJd5raIsZWDNWGLtFUPFrz/di73Drkl4PxquSd/fvrZZ8lGXN/CzTetITYrO97M7UHP010ByufOzPHYpntF73Xz6mKzJ4BDpzMwa9AAFfGC8hK8HdzdjWMteNXRFMACBfQo4pRhrmuuLiHGQS7OwNEm3nnrpJRAxg9haRk5nUd4rqtuIqKZvwlQvnr5B2uUXmrtq2WzUtE/4/MG9JI3MrBXiNP4+SaMrN1rFFFvsPC1xfjPUEa8HQkh9rGB9Paj1MH9rQ65PE6KOLC3iWNig/KfOSOIf67GfMXB/xbjSAusAv+Zivx/LyekzbMK/KXg2qreJCZVzg+31MwnxlW/AdlVth8r13oHPYLpKIB5W4vz80h43r/Ki+1Cd+ZPEWt0MjDa6fXRBZNgznu4PjDY4xZG61IHmLcUGnc/6sA2/98uWmrBVHSlfireILkspnAaLnllZAl0yOQBRbwNFWycUi36BPjPnrnroX1MokJHw0srermzqWv9SQZVLczV2s7TQEneUZ5Dql5P298gdeshJWLYxKPCkkJjGu9CcAzVhWM+MtgR0kixrIiMLHdQljK7YnBIZnzxIGkQC4Jhzs6hE41tz2Cgh/Lo+7NpxUJ2ijgZPv5e6b/95JiCeNKxKPEnoFBy6JYEhb1NPIvVS5gVLZzFXiHexaRzmaX/ciZ8f/ghfs6K04Vn9lfGr4zXLjxWnLNwwMzSf2XopPCKLdM8jwJjFru5w92zthddj52/PgJiWQHZJkReneNqucKR4OdKFmhZfzz8ZTp1+vM40vFwuUWQlzAud2JkrcqwymhjFIV/JQvyTJmAfZoJ+N8jMli6+a02nbZ7Oy9OjMvxEsgCzcvQNflhOnX6y8jjtpWHAqDxha6IOhen/EC4Jl3l3GUNHSfzEqSk81WCWsLtppJfvWrmXhZQW18D0xx9jJlqUfd4qETYpvvTGjZhQgafkY7vUHZbzg6fnD83/fwUmXuVspTJ2T2FyWx/XN5I63GlfZcnZbwABbhCdX+BCMQCRztfWViCQw9/PXj2dGGquds5NMjdMTw3BIe+XQgKHz2KIifGisKjY8Nj4hPt80dG3cvSssJj0zIL/foHivwzsiOJWbmuZS8G7IqSSZGx4qigIMJUf8Bqf6DHZNCww4C/h2e/370LcLb1uFDWjNsYJkShUiFYQa5XTjpYulI6hJZG+RykMR2lHn1G/U4FpdSmJxRdBX6lWNsa9NC6x7ObirfiPV5RkIjWrAJipbelUZLDuFT7jW430zx3aruBLP+dWNsq+uHFbfTKK0pIdV5CcgnBWvGmZowMl2aNkoelWBhXndFR1ROaeFVbxTsimlGyJ++R1dl1bBUN410Aq2cyj4Fgrmu8HNb/FBQ/6+U2lBQVPp7scCM/ncwvqS/PTLMx1zUxd44L8vR3jjM3NdWx+x/ZUHweXynDVll8vqGu8Cy+qrSEvaLoHKF2hGqkOhSmMkQ1GhlsNVAdHxpUHW03AMeeZr27emF+4UH27lV+DS7CscGKGiJCJQz29eFx0bnJMZJWx7VMAq8YXKAme2iDobSQOUis+FFx0aW3wWgO0UEYcqC8klL2moKzDfUF3Ozpp1v3V+2kexy5NREhQQ9kAgQgV0ofw5o6ReFmsSCgmx4UKCEGsqIq6pK28SC4wVlCKgHc+R6HjHwnh7Q8R6e0TAfHzMz/R0RV7oiJq6iK3lTVcFFVgYvp+i7ZLkXVReHZ4YXVHBxf5HPkoS7PwOXKcRc7RYG/knfv3BUrJFSl43JD3RycnHQ0mlJIwJpxX1dVSZL/2s4dMVXBS4XWZYHBcfn+DjcVjWWPZVwkOdUGE6MqQ5yLrmlIyN9RlhDyzEcMgX0Ilhl4M+GIsHgAlN3P9x6WyuamilfjCKYxdelayjMUwLyFGJzuJu7f7Azd/00mwJAhbe73yGi98ZCQDKdbc06kWRV7kLBOmvpCN67+ssKdiYb3eYVGr2+FWXvjgbbCpuhRX17+o54q1WJqr/CT3soyjK2lp66OOcFOw8bSU+eehStiCXerwfFiqIVPZw+9NYerF8HVNtjDhIKULL/oHJh51tpY/NDFQ1Y9rUcyfuzXrqbD6OMBXsyWwi8tV29iyJ05reyzGtnKR/C9emz+z7jmwVBZRVNJwzdQWUN5mq+koaJpVdXq8iy6yqyPuGeZl0zafNLtoDNDavVsevD9iqSi/0QqwislY/PVKvGcPNHOrWoRVqaAFlPHzQgeHU/j2wGzsc9NTgyZ92j6Owff3tA+2s01vBgVMGTKY54jycVZ/kHFWbEAz1AMxkd3qW0DLcUhD0YUhVTNH5H0YtWKR5o77rVdMbmcxxJzRcTZw0xbWMXicZp+3D2j+FFdc3snw7e8oLHMgYltldFbMUuqftSQXbjauLCk5+wa6OCY4HqvE0/61PbIq0lbQFtao1HfcXILdrzmsE2NTzMz/O++vx1b6H/bI0u5UOXIwbo3kuCqo+5oKoIW9sqoY40/cSYqOg2EFI/8pM01K/L++5oUE/suzH8pJt19ezQ8vNzf80ZfYuKbdGXr7ohI4w7+W0XvRR7GPw5TtsFGMh1ljFc2TS19Wp1Y1R8WkrPSBXKThptdmxZiMZHcSEhC/WAVfhwwcr7SgX+X40luZpeU04PtXvblyhQF/Vsipjjo8ahkBNuMvMzoEu2zdNNvX1KOr35j19ah76bT5CCXUPWWAnKE0fTiaUsooh6RfbKHelRxKnikgFYzB6HsX2YCM9SJNMSz/ssqC65lv/Nj4Uuu0I9mQUnmpKcdU7ILs0tj7zoyKjbVtwuWfCX+/94Sk+OeeUvayNj1EzzGdv7teY9ia8sHYh77OauEECO/xb50l7aRsh7yiJmnvfG/C9dZ/Dohrnh2tKNkLj62dEZufNYms+xIHPOJEGIm8Nu+p8/NrM2ozWX8xuIBPD5hBkHeJqaBPg2BAV2BAap6N+TkBfjlZa3lFAQEZRVBaGPeJTDa9FKrpVTDqUtFAkFYZ/8Es3NeFmJnz1y5JX8NWDfZHZVMQ1FpxC7v+5bDQJfB6aBkGo4ipXRGgI3lECSecFA2DkWl+lJs7ayfQ+JVByVjIiqHQqlwsZ6cv50bQmqFs+U44MppDNzcTU08Xcx4DVxdzc3c3AzhNC+SmMQXyc4XlQTMXu2zkGVMRpKQZChztf9XC2d/bUXwp8PQfa0Tld52Z9mL/U77/zx1HsPQEtwS1xLSQoc5xfXFKYaLvdSFx62CPIJ59CAkLC4MpFsS5LPlYWTu2FLT9tHnTzzqJLnygwU8/RycnM0XSAv1Ko2WUQhjE8Su9mzSeT5JKQc+HL7Q0N3ZbHdZEjBzlLlngRRjHMHL0cV8kbT46iml1KdRxEuEMJrPJpQ6HKgfYi0ferUX0wUKZdmNSQn59VCcXJ7XmJCUXY8UFGB74qPRra19CVHoNsCNDMfvAs3LzhHOtYW1fhg7f0xp0M7SWQZwjxBIXYwyO7JVVStzSjUsmRgQXJwSE1AVgrF9mM76elklVQVpdTVVlTrguZFrzMYI54dKhxF8Y1L8vItyoxKqKrOFflz46uUOuVPolSssPMdp696WUtcIvnMXKp40pVaZpg1GBBC/j6+vaLz42KnYn7Uv2klOxfL31Tv42mf5hISqKoiDwupi0rdVxYRF7oqF4k2b8OHmOv/1LY/vTvvDtz33k7HzTYwLDSgrDo/Lr0Cl7/5RIvvag6xIq8BC80t3JHU0NCUl7urIy6qow/BDX2R/8eCH/sKLD/7dvqB0/Tw9bdbyF/8BbA7/B8ACfv5RXi4s/FISFuuq3TPy/xld+aEw/7/MKFgNXAXhBB65quZ3mSNchXEMzjWjNmffEVy77YdFatbn0cri6o3s6doSBL/VEMh8d5R8AGqv7OXj7Ca4f4GMTaYvg+n0kAfMWAUnGXGbq5WubLETFC6/WIYgF1AL8uFFVasHdK2u0/W6QTfiIbHA5gvygmuF4A/RnOkT3Way54spBkO81cmv3dOk0ApZXJgOiMn5By5dK/gTcmD6RLyZLGPEyQCumQpztelDxEyeZUacZg8r6CL+WCHfqB23tFDzijCT7c2n2ArJAFtxcrcVQzi4EqKJ6RNUM9nAiJOvVkoJxLqiODYDRAJrtvBsknxFNpJyCU2M1VykPk3yDYNVohi3tQoHgVZp6OZCZDnjOkFDskq4nijcegh9PuvE5JKvQ50g+jd1bdeqZ1sdixjTOjCv6diLvkJ1nJdYR4410sawNoJ+zUjOShINpFgzFZyEmXM6HtqB8mpjAeduDMj/r/PZkuf+D7hl/haureDS0u+otzR8X3bZVuu5csq/2umBcedopEW8gHvF349HyjOhk4pHKvnj+bNyaIF8NLGTbM6MmQDumb/1qAmimZ+PBplWJmXh6LqSU9bIxFQDfVc/Ooi7qETTFD9xKpmamfyj8OaZZEJ1OAXGegvRs0KesdMf8OOk8lvar+fGgFrQByzkYE7awz8Q118VeWAeDX/e4QBmRp+xoE2+m7GMlofvvD/oaG9B4fka2H8Se6HrFqJLTH+wgH5KKNfdqN0JIDb2+w0mUSZMl/ar/dZgRnxZN8SfnmUeAnHhOHQfyB3h9xrb8lTF+40BiaA+G/tMsBstPAFki2qMQUS/5tcNCQScSy8XOQVfxRiEALnJ2ldCUowtWCR/bx1fBoCnf+puD8A7of3bP+v8X7X5l3kBy6EAAiwuW1oFsPzgUpZe2gHEfVPfVyJbQ+Pfi3eaa0BJkhD7gF+HchvzHPsXu7Bjn49F5zN8RXCq42hEmtMpgjdPSik1+KfGC9Rhhjki5BGFOh7P2jY+iolml5qNctvK6etiatjdxQ1O45ZT/UftEOE3bqvtRDIu1wZeAkdbRF7T2U5EBo1LadSY/qpN8LQwvoPx7dm69oGa7qbVQwQGv8Rx1KnFcVKDBsR6FEuP0M8z0krZRXo2dGVIpgrQZACxNubaIRKbn2lHsmgpZjlM0jyXZTtIjE+SYmfuBjMu9EnBAg0J7SSxU5jouEQW2Q64r7UQXTsi1rKzExqu1A+X6jlOatkw28nEF02OfXiKPKIS2pJjVzEZbbh3ISyxJ723GZchu0mFSaVLr173282DSdX1rOok5z8RfYdVfiCXH0hnhKAmyqsd8skpPf7wplGBVT7cT4/7Y57eJEJrEuNezyksAufPrcCIunfeVFXdJ2HqpdFkoZ1KqYlMukBm/Ja/KOWwUGBVA2qzUUANCRoyyqbbUiKXJc7FH9nO5zSHfEcye4+oFvHDWEbe54KHMapyEvmBaIey6DQ17eZMJ5Ccps8yPphAoIU0opigjziaqITS2h0IHAZOJg0ztFwK+wTcwrzSCwDrvIzxyBPmHfMMp0JDJH6JwCfgTFgBHAL+5BPz43dD42VNaMz8iDuhIZIjIvBGKEtHgB+QcNKFyZXG6iChNoVd1bfMfWhI0wE4A1wvQzAyX4bCzEmN3qWmgWUYfPyXYZ1S1F1muqjkufMQgMCRPQfeuAniJ9At5KbEXeAZLuxWVeHGxnWjrMG7WLQ1mFfOaLe47BD4atnWdUN2Z13y3lDgbc+HC6sgr7+IwIsjc7PHX98u5CYJ6wVv6hZ2bQUWvb15EHej0/q5rrPikXjbcGDnOhsJmr8hO7LRvBu4V/sNalTIU6RBh6Jrts38i4GTzfts3QMAAAA=",
"ok": true,
"headers": [
[
"content-type",
"font/woff2"
]
],
"status": 200,
"status_text": ""
},
"https://localhost:6006/index.js": {
"data": "dmFyIENMT1NVUkVfTk9fREVQUyA9IHRydWU7Ci8vIENvcHlyaWdodCAyMDA2IFRoZSBDbG9zdXJlIExpYnJhcnkgQXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLy8KLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci8vCi8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi8vCi8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTLUlTIiBCQVNJUywKLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgovKioKICogQGZpbGVvdmVydmlldyBCb290c3RyYXAgZm9yIHRoZSBHb29nbGUgSlMgTGlicmFyeSAoQ2xvc3VyZSkuCiAqCiAqIEluIHVuY29tcGlsZWQgbW9kZSBiYXNlLmpzIHdpbGwgYXR0ZW1wdCB0byBsb2FkIENsb3N1cmUncyBkZXBzIGZpbGUsIHVubGVzcwogKiB0aGUgZ2xvYmFsIDxjb2RlPkNMT1NVUkVfTk9fREVQUzwvY29kZT4gaXMgc2V0IHRvIHRydWUuICBUaGlzIGFsbG93cyBwcm9qZWN0cwogKiB0byBpbmNsdWRlIHRoZWlyIG93biBkZXBzIGZpbGUocykgZnJvbSBkaWZmZXJlbnQgbG9jYXRpb25zLgogKgogKiBBdm9pZCBpbmNsdWRpbmcgYmFzZS5qcyBtb3JlIHRoYW4gb25jZS4gVGhpcyBpcyBzdHJpY3RseSBkaXNjb3VyYWdlZCBhbmQgbm90CiAqIHN1cHBvcnRlZC4gZ29vZy5yZXF1aXJlKC4uLikgd29uJ3Qgd29yayBwcm9wZXJseSBpbiB0aGF0IGNhc2UuCiAqCiAqIEBwcm92aWRlR29vZwogKi8KCgovKioKICogQGRlZmluZSB7Ym9vbGVhbn0gT3ZlcnJpZGRlbiB0byB0cnVlIGJ5IHRoZSBjb21waWxlci4KICovCnZhciBDT01QSUxFRCA9IGZhbHNlOwoKCi8qKgogKiBCYXNlIG5hbWVzcGFjZSBmb3IgdGhlIENsb3N1cmUgbGlicmFyeS4gIENoZWNrcyB0byBzZWUgZ29vZyBpcyBhbHJlYWR5CiAqIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgc2NvcGUgYmVmb3JlIGFzc2lnbmluZyB0byBwcmV2ZW50IGNsb2JiZXJpbmcgaWYKICogYmFzZS5qcyBpcyBsb2FkZWQgbW9yZSB0aGFuIG9uY2UuCiAqCiAqIEBjb25zdAogKi8KdmFyIGdvb2cgPSBnb29nIHx8IHt9OwoKLyoqCiAqIFJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4KICogaHR0cHM6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi85LjAvaW5kZXguaHRtbCNzZWMtZ2xvYmFsLW9iamVjdAogKgogKiBNb3JlIGluZm8gb24gdGhpcyBpbXBsZW1lbnRhdGlvbiBoZXJlOgogKiBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFOQWVXNFdrN0k3RlYwWTJ0Y1VGdlFkR01jODlrMnZkZ1NYSW53OF9udkNJL2VkaXQKICoKICogQGNvbnN0CiAqIEBzdXBwcmVzcyB7dW5kZWZpbmVkVmFyc30gc2VsZiB3b24ndCBiZSByZWZlcmVuY2VkIHVubGVzcyBgdGhpc2AgaXMgZmFsc3kuCiAqIEB0eXBlIHshR2xvYmFsfQogKi8KZ29vZy5nbG9iYWwgPQogICAgLy8gQ2hlY2sgYHRoaXNgIGZpcnN0IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KICAgIC8vIFZhbGlkIHVubGVzcyBydW5uaW5nIGFzIGFuIEVTIG1vZHVsZSBvciBpbiBhIGZ1bmN0aW9uIHdyYXBwZXIgY2FsbGVkCiAgICAvLyAgIHdpdGhvdXQgc2V0dGluZyBgdGhpc2AgcHJvcGVybHkuCiAgICAvLyBOb3RlIHRoYXQgYmFzZS5qcyBjYW4ndCB1c2VmdWxseSBiZSBpbXBvcnRlZCBhcyBhbiBFUyBtb2R1bGUsIGJ1dCBpdCBtYXkKICAgIC8vIGJlIGNvbXBpbGVkIGludG8gYnVuZGxlcyB0aGF0IGFyZSBsb2FkYWJsZSBhcyBFUyBtb2R1bGVzLgogICAgdGhpcyB8fAogICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1dpbmRvdy9zZWxmCiAgICAvLyBGb3IgaW4tcGFnZSBicm93c2VyIGVudmlyb25tZW50cyBhbmQgd29ya2Vycy4KICAgIHNlbGY7CgoKLyoqCiAqIEEgaG9vayBmb3Igb3ZlcnJpZGluZyB0aGUgZGVmaW5lIHZhbHVlcyBpbiB1bmNvbXBpbGVkIG1vZGUuCiAqCiAqIEluIHVuY29tcGlsZWQgbW9kZSwgYENMT1NVUkVfVU5DT01QSUxFRF9ERUZJTkVTYCBtYXkgYmUgZGVmaW5lZCBiZWZvcmUKICogbG9hZGluZyBiYXNlLmpzLiAgSWYgYSBrZXkgaXMgZGVmaW5lZCBpbiBgQ0xPU1VSRV9VTkNPTVBJTEVEX0RFRklORVNgLAogKiBgZ29vZy5kZWZpbmVgIHdpbGwgdXNlIHRoZSB2YWx1ZSBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IHZhbHVlLiAgVGhpcwogKiBhbGxvd3MgZmxhZ3MgdG8gYmUgb3ZlcndyaXR0ZW4gd2l0aG91dCBjb21waWxhdGlvbiAodGhpcyBpcyBub3JtYWxseQogKiBhY2NvbXBsaXNoZWQgd2l0aCB0aGUgY29tcGlsZXIncyAiZGVmaW5lIiBmbGFnKS4KICoKICogRXhhbXBsZToKICogPHByZT4KICogICB2YXIgQ0xPU1VSRV9VTkNPTVBJTEVEX0RFRklORVMgPSB7J2dvb2cuREVCVUcnOiBmYWxzZX07CiAqIDwvcHJlPgogKgogKiBAdHlwZSB7T2JqZWN0PHN0cmluZywgKHN0cmluZ3xudW1iZXJ8Ym9vbGVhbik+fHVuZGVmaW5lZH0KICovCmdvb2cuZ2xvYmFsLkNMT1NVUkVfVU5DT01QSUxFRF9ERUZJTkVTOwoKCi8qKgogKiBBIGhvb2sgZm9yIG92ZXJyaWRpbmcgdGhlIGRlZmluZSB2YWx1ZXMgaW4gdW5jb21waWxlZCBvciBjb21waWxlZCBtb2RlLAogKiBsaWtlIENMT1NVUkVfVU5DT01QSUxFRF9ERUZJTkVTIGJ1dCBlZmZlY3RpdmUgaW4gY29tcGlsZWQgY29kZS4gIEluCiAqIHVuY29tcGlsZWQgY29kZSBDTE9TVVJFX1VOQ09NUElMRURfREVGSU5FUyB0YWtlcyBwcmVjZWRlbmNlLgogKgogKiBBbHNvIHVubGlrZSBDTE9TVVJFX1VOQ09NUElMRURfREVGSU5FUyB0aGUgdmFsdWVzIG11c3QgYmUgbnVtYmVyLCBib29sZWFuIG9yCiAqIHN0cmluZyBsaXRlcmFscyBvciB0aGUgY29tcGlsZXIgd2lsbCBlbWl0IGFuIGVycm9yLgogKgogKiBXaGlsZSBhbnkgQGRlZmluZSB2YWx1ZSBtYXkgYmUgc2V0LCBvbmx5IHRob3NlIHNldCB3aXRoIGdvb2cuZGVmaW5lIHdpbGwgYmUKICogZWZmZWN0aXZlIGZvciB1bmNvbXBpbGVkIGNvZGUuCiAqCiAqIEV4YW1wbGU6CiAqIDxwcmU+CiAqICAgdmFyIENMT1NVUkVfREVGSU5FUyA9IHsnZ29vZy5ERUJVRyc6IGZhbHNlfSA7CiAqIDwvcHJlPgogKgogKiBAdHlwZSB7T2JqZWN0PHN0cmluZywgKHN0cmluZ3xudW1iZXJ8Ym9vbGVhbik+fHVuZGVmaW5lZH0KICovCmdvb2cuZ2xvYmFsLkNMT1NVUkVfREVGSU5FUzsKCgovKioKICogUmV0dXJucyB0cnVlIGlmIHRoZSBzcGVjaWZpZWQgdmFsdWUgaXMgbm90IHVuZGVmaW5lZC4KICoKICogQHBhcmFtIHs/fSB2YWwgVmFyaWFibGUgdG8gdGVzdC4KICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciB2YXJpYWJsZSBpcyBkZWZpbmVkLgogKiBAZGVwcmVjYXRlZCBVc2UgYHZhbCAhPT0gdW5kZWZpbmVkYCBpbnN0ZWFkLgogKi8KZ29vZy5pc0RlZiA9IGZ1bmN0aW9uKHZhbCkgewogIC8vIHZvaWQgMCBhbHdheXMgZXZhbHVhdGVzIHRvIHVuZGVmaW5lZCBhbmQgaGVuY2Ugd2UgZG8gbm90IG5lZWQgdG8gZGVwZW5kIG9uCiAgLy8gdGhlIGRlZmluaXRpb24gb2YgdGhlIGdsb2JhbCB2YXJpYWJsZSBuYW1lZCAndW5kZWZpbmVkJy4KICByZXR1cm4gdmFsICE9PSB2b2lkIDA7Cn07CgovKioKICogUmV0dXJucyB0cnVlIGlmIHRoZSBzcGVjaWZpZWQgdmFsdWUgaXMgYSBzdHJpbmcuCiAqIEBwYXJhbSB7P30gdmFsIFZhcmlhYmxlIHRvIHRlc3QuCiAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgdmFyaWFibGUgaXMgYSBzdHJpbmcuCiAqIEBkZXByZWNhdGVkIFVzZSBgdHlwZW9mIHZhbCA9PT0gJ3N0cmluZydgIGluc3RlYWQuCiAqLwpnb29nLmlzU3RyaW5nID0gZnVuY3Rpb24odmFsKSB7CiAgcmV0dXJuIHR5cGVvZiB2YWwgPT0gJ3N0cmluZyc7Cn07CgoKLyoqCiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGlzIGEgYm9vbGVhbi4KICogQHBhcmFtIHs/fSB2YWwgVmFyaWFibGUgdG8gdGVzdC4KICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciB2YXJpYWJsZSBpcyBib29sZWFuLgogKiBAZGVwcmVjYXRlZCBVc2UgYHR5cGVvZiB2YWwgPT09ICdib29sZWFuJ2AgaW5zdGVhZC4KICovCmdvb2cuaXNCb29sZWFuID0gZnVuY3Rpb24odmFsKSB7CiAgcmV0dXJuIHR5cGVvZiB2YWwgPT0gJ2Jvb2xlYW4nOwp9OwoKCi8qKgogKiBSZXR1cm5zIHRydWUgaWYgdGhlIHNwZWNpZmllZCB2YWx1ZSBpcyBhIG51bWJlci4KICogQHBhcmFtIHs/fSB2YWwgVmFyaWFibGUgdG8gdGVzdC4KICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciB2YXJpYWJsZSBpcyBhIG51bWJlci4KICogQGRlcHJlY2F0ZWQgVXNlIGB0eXBlb2YgdmFsID09PSAnbnVtYmVyJ2AgaW5zdGVhZC4KICovCmdvb2cuaXNOdW1iZXIgPSBmdW5jdGlvbih2YWwpIHsKICByZXR1cm4gdHlwZW9mIHZhbCA9PSAnbnVtYmVyJzsKfTsKCgovKioKICogQnVpbGRzIGFuIG9iamVjdCBzdHJ1Y3R1cmUgZm9yIHRoZSBwcm92aWRlZCBuYW1lc3BhY2UgcGF0aCwgZW5zdXJpbmcgdGhhdAogKiBuYW1lcyB0aGF0IGFscmVhZHkgZXhpc3QgYXJlIG5vdCBvdmVyd3JpdHRlbi4gRm9yIGV4YW1wbGU6CiAqICJhLmIuYyIgLT4gYSA9IHt9O2EuYj17fTthLmIuYz17fTsKICogVXNlZCBieSBnb29nLnByb3ZpZGUgYW5kIGdvb2cuZXhwb3J0U3ltYm9sLgogKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBuYW1lIG9mIHRoZSBvYmplY3QgdGhhdCB0aGlzIGZpbGUgZGVmaW5lcy4KICogQHBhcmFtIHsqPX0gb3B0X29iamVjdCB0aGUgb2JqZWN0IHRvIGV4cG9zZSBhdCB0aGUgZW5kIG9mIHRoZSBwYXRoLgogKiBAcGFyYW0ge09iamVjdD19IG9wdF9vYmplY3RUb0V4cG9ydFRvIFRoZSBvYmplY3QgdG8gYWRkIHRoZSBwYXRoIHRvOyBkZWZhdWx0CiAqICAgICBpcyBgZ29vZy5nbG9iYWxgLgogKiBAcHJpdmF0ZQogKi8KZ29vZy5leHBvcnRQYXRoXyA9IGZ1bmN0aW9uKG5hbWUsIG9wdF9vYmplY3QsIG9wdF9vYmplY3RUb0V4cG9ydFRvKSB7CiAgdmFyIHBhcnRzID0gbmFtZS5zcGxpdCgnLicpOwogIHZhciBjdXIgPSBvcHRfb2JqZWN0VG9FeHBvcnRUbyB8fCBnb29nLmdsb2JhbDsKCiAgLy8gSW50ZXJuZXQgRXhwbG9yZXIgZXhoaWJpdHMgc3RyYW5nZSBiZWhhdmlvciB3aGVuIHRocm93aW5nIGVycm9ycyBmcm9tCiAgLy8gbWV0aG9kcyBleHRlcm5lZCBpbiB0aGlzIG1hbm5lci4gIFNlZSB0aGUgdGVzdEV4cG9ydFN5bWJvbEV4Y2VwdGlvbnMgaW4KICAvLyBiYXNlX3Rlc3QuaHRtbCBmb3IgYW4gZXhhbXBsZS4KICBpZiAoIShwYXJ0c1swXSBpbiBjdXIpICYmIHR5cGVvZiBjdXIuZXhlY1NjcmlwdCAhPSAndW5kZWZpbmVkJykgewogICAgY3VyLmV4ZWNTY3JpcHQoJ3ZhciAnICsgcGFydHNbMF0pOwogIH0KCiAgZm9yICh2YXIgcGFydDsgcGFydHMubGVuZ3RoICYmIChwYXJ0ID0gcGFydHMuc2hpZnQoKSk7KSB7CiAgICBpZiAoIXBhcnRzLmxlbmd0aCAmJiBvcHRfb2JqZWN0ICE9PSB1bmRlZmluZWQpIHsKICAgICAgLy8gbGFzdCBwYXJ0IGFuZCB3ZSBoYXZlIGFuIG9iamVjdDsgdXNlIGl0CiAgICAgIGN1cltwYXJ0XSA9IG9wdF9vYmplY3Q7CiAgICB9IGVsc2UgaWYgKGN1cltwYXJ0XSAmJiBjdXJbcGFydF0gIT09IE9iamVjdC5wcm90b3R5cGVbcGFydF0pIHsKICAgICAgY3VyID0gY3VyW3BhcnRdOwogICAgfSBlbHNlIHsKICAgICAgY3VyID0gY3VyW3BhcnRdID0ge307CiAgICB9CiAgfQp9OwoKCi8qKgogKiBEZWZpbmVzIGEgbmFtZWQgdmFsdWUuIEluIHVuY29tcGlsZWQgbW9kZSwgdGhlIHZhbHVlIGlzIHJldHJpZXZlZCBmcm9tCiAqIENMT1NVUkVfREVGSU5FUyBvciBDTE9TVVJFX1VOQ09NUElMRURfREVGSU5FUyBpZiB0aGUgb2JqZWN0IGlzIGRlZmluZWQgYW5kCiAqIGhhcyB0aGUgcHJvcGVydHkgc3BlY2lmaWVkLCBhbmQgb3RoZXJ3aXNlIHVzZWQgdGhlIGRlZmluZWQgZGVmYXVsdFZhbHVlLgogKiBXaGVuIGNvbXBpbGVkIHRoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIHVzaW5nIHRoZSBjb21waWxlciBvcHRpb25zIG9yIHRoZQogKiB2YWx1ZSBzZXQgaW4gdGhlIENMT1NVUkVfREVGSU5FUyBvYmplY3QuIFJldHVybnMgdGhlIGRlZmluZWQgdmFsdWUgc28gdGhhdCBpdAogKiBjYW4gYmUgdXNlZCBzYWZlbHkgaW4gbW9kdWxlcy4gTm90ZSB0aGF0IHRoZSB2YWx1ZSB0eXBlIE1VU1QgYmUgZWl0aGVyCiAqIGJvb2xlYW4sIG51bWJlciwgb3Igc3RyaW5nLgogKgogKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgZGlzdGluZ3Vpc2hlZCBuYW1lIHRvIHByb3ZpZGUuCiAqIEBwYXJhbSB7VH0gZGVmYXVsdFZhbHVlCiAqIEByZXR1cm4ge1R9IFRoZSBkZWZpbmVkIHZhbHVlLgogKiBAdGVtcGxhdGUgVAogKi8KZ29vZy5kZWZpbmUgPSBmdW5jdGlvbihuYW1lLCBkZWZhdWx0VmFsdWUpIHsKICB2YXIgdmFsdWUgPSBkZWZhdWx0VmFsdWU7CiAgaWYgKCFDT01QSUxFRCkgewogICAgdmFyIHVuY29tcGlsZWREZWZpbmVzID0gZ29vZy5nbG9iYWwuQ0xPU1VSRV9VTkNPTVBJTEVEX0RFRklORVM7CiAgICB2YXIgZGVmaW5lcyA9IGdvb2cuZ2xvYmFsLkNMT1NVUkVfREVGSU5FUzsKICAgIGlmICh1bmNvbXBpbGVkRGVmaW5lcyAmJgogICAgICAgIC8vIEFudGkgRE9NLWNsb2JiZXJpbmcgcnVudGltZSBjaGVjayAoYi8zNzczNjU3NikuCiAgICAgICAgLyoqIEB0eXBlIHs/fSAqLyAodW5jb21waWxlZERlZmluZXMpLm5vZGVUeXBlID09PSB1bmRlZmluZWQgJiYKICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodW5jb21waWxlZERlZmluZXMsIG5hbWUpKSB7CiAgICAgIHZhbHVlID0gdW5jb21waWxlZERlZmluZXNbbmFtZV07CiAgICB9IGVsc2UgaWYgKAogICAgICAgIGRlZmluZXMgJiYKICAgICAgICAvLyBBbnRpIERPTS1jbG9iYmVyaW5nIHJ1bnRpbWUgY2hlY2sgKGIvMzc3MzY1NzYpLgogICAgICAgIC8qKiBAdHlwZSB7P30gKi8gKGRlZmluZXMpLm5vZGVUeXBlID09PSB1bmRlZmluZWQgJiYKICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZGVmaW5lcywgbmFtZSkpIHsKICAgICAgdmFsdWUgPSBkZWZpbmVzW25hbWVdOwogICAgfQogIH0KICByZXR1cm4gdmFsdWU7Cn07CgoKLyoqCiAqIEBkZWZpbmUge251bWJlcn0gSW50ZWdlciB5ZWFyIGluZGljYXRpbmcgdGhlIHNldCBvZiBicm93c2VyIGZlYXR1cmVzIHRoYXQgYXJlCiAqIGd1YXJhbnRlZWQgdG8gYmUgcHJlc2VudC4gIFRoaXMgaXMgZGVmaW5lZCB0byBpbmNsdWRlIGV4YWN0bHkgZmVhdHVyZXMgdGhhdAogKiB3b3JrIGNvcnJlY3RseSBvbiBhbGwgIm1vZGVybiIgYnJvd3NlcnMgdGhhdCBhcmUgc3RhYmxlIG9uIEphbnVhcnkgMSBvZiB0aGUKICogc3BlY2lmaWVkIHllYXIuICBGb3IgZXhhbXBsZSwKICogYGBganMKICogaWYgKGdvb2cuRkVBVFVSRVNFVF9ZRUFSID49IDIwMTkpIHsKICogICAvLyB1c2UgQVBJcyBrbm93biB0byBiZSBhdmFpbGFibGUgb24gYWxsIG1ham9yIHN0YWJsZSBicm93c2VycyBKYW4gMSwgMjAxOQogKiB9IGVsc2UgewogKiAgIC8vIHBvbHlmaWxsIGZvciBvbGRlciBicm93c2VycwogKiB9CiAqIGBgYAogKiBUaGlzIGlzIGludGVuZGVkIHRvIGJlIHRoZSBwcmltYXJ5IGRlZmluZSBmb3IgcmVtb3ZpbmcKICogdW5uZWNlc3NhcnkgYnJvd3NlciBjb21wYXRpYmlsaXR5IGNvZGUgKHN1Y2ggYXMgcG9ueWZpbGxzIGFuZCB3b3JrYXJvdW5kcyksCiAqIGFuZCBzaG91bGQgaW5mb3JtIHRoZSBkZWZhdWx0IHZhbHVlIGZvciBtb3N0IG90aGVyIGRlZmluZXM6CiAqIGBgYGpzCiAqIGNvbnN0IEFTU1VNRV9OQVRJVkVfUFJPTUlTRSA9CiAqICAgICBnb29nLmRlZmluZSgnQVNTVU1FX05BVElWRV9QUk9NSVNFJywgZ29vZy5GRUFUVVJFU0VUX1lFQVIgPj0gMjAxNik7CiAqIGBgYAogKgogKiBUaGUgZGVmYXVsdCBhc3N1bXB0aW9uIGlzIHRoYXQgSUU5IGlzIHRoZSBsb3dlc3Qgc3VwcG9ydGVkIGJyb3dzZXIsIHdoaWNoIHdhcwogKiBmaXJzdCBhdmFpbGFibGUgSmFuIDEsIDIwMTIuCiAqCiAqIFRPRE8odXNlcik6IFJlZmVyZW5jZSBtb3JlIHRob3JvdWdoIGRvY3VtZW50YXRpb24gd2hlbiBpdCdzIGF2YWlsYWJsZS4KICovCmdvb2cuRkVBVFVSRVNFVF9ZRUFSID0gZ29vZy5kZWZpbmUoJ2dvb2cuRkVBVFVSRVNFVF9ZRUFSJywgMjAxMik7CgoKLyoqCiAqIEBkZWZpbmUge2Jvb2xlYW59IERFQlVHIGlzIHByb3ZpZGVkIGFzIGEgY29udmVuaWVuY2Ugc28gdGhhdCBkZWJ1Z2dpbmcgY29kZQogKiB0aGF0IHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gYSBwcm9kdWN0aW9uLiBJdCBjYW4gYmUgZWFzaWx5IHN0cmlwcGVkCiAqIGJ5IHNwZWNpZnlpbmcgLS1kZWZpbmUgZ29vZy5ERUJVRz1mYWxzZSB0byB0aGUgQ2xvc3VyZSBDb21waWxlciBha2EKICogSlNDb21waWxlci4gRm9yIGV4YW1wbGUsIG1vc3QgdG9TdHJpbmcoKSBtZXRob2RzIHNob3VsZCBiZSBkZWNsYXJlZCBpbnNpZGUgYW4KICogImlmIChnb29nLkRFQlVHKSIgY29uZGl0aW9uYWwgYmVjYXVzZSB0aGV5IGFyZSBnZW5lcmFsbHkgdXNlZCBmb3IgZGVidWdnaW5nCiAqIHB1cnBvc2VzIGFuZCBpdCBpcyBkaWZmaWN1bHQgZm9yIHRoZSBKU0NvbXBpbGVyIHRvIHN0YXRpY2FsbHkgZGV0ZXJtaW5lCiAqIHdoZXRoZXIgdGhleSBhcmUgdXNlZC4KICovCmdvb2cuREVCVUcgPSBnb29nLmRlZmluZSgnZ29vZy5ERUJVRycsIHRydWUpOwoKCi8qKgogKiBAZGVmaW5lIHtzdHJpbmd9IExPQ0FMRSBkZWZpbmVzIHRoZSBsb2NhbGUgYmVpbmcgdXNlZCBmb3IgY29tcGlsYXRpb24uIEl0IGlzCiAqIHVzZWQgdG8gc2VsZWN0IGxvY2FsZSBzcGVjaWZpYyBkYXRhIHRvIGJlIGNvbXBpbGVkIGluIGpzIGJpbmFyeS4gQlVJTEQgcnVsZQogKiBjYW4gc3BlY2lmeSB0aGlzIHZhbHVlIGJ5ICItLWRlZmluZSBnb29nLkxPQ0FMRT08bG9jYWxlX25hbWU+IiBhcyBhIGNvbXBpbGVyCiAqIG9wdGlvbi4KICoKICogVGFrZSBpbnRvIGFjY291bnQgdGhhdCB0aGUgbG9jYWxlIGNvZGUgZm9ybWF0IGlzIGltcG9ydGFudC4gWW91IHNob3VsZCB1c2UKICogdGhlIGNhbm9uaWNhbCBVbmljb2RlIGZvcm1hdCB3aXRoIGh5cGhlbiBhcyBhIGRlbGltaXRlci4gTGFuZ3VhZ2UgbXVzdCBiZQogKiBsb3dlcmNhc2UsIExhbmd1YWdlIFNjcmlwdCAtIENhcGl0YWxpemVkLCBSZWdpb24gLSBVUFBFUkNBU0UuCiAqIFRoZXJlIGFyZSBmZXcgZXhhbXBsZXM6IHB0LUJSLCBlbiwgZW4tVVMsIHNyLUxhdGluLUJPLCB6aC1IYW5zLUNOLgogKgogKiBTZWUgbW9yZSBpbmZvIGFib3V0IGxvY2FsZSBjb2RlcyBoZXJlOgogKiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIzNS8jVW5pY29kZV9MYW5ndWFnZV9hbmRfTG9jYWxlX0lkZW50aWZpZXJzCiAqCiAqIEZvciBsYW5ndWFnZSBjb2RlcyB5b3Ugc2hvdWxkIHVzZSB2YWx1ZXMgZGVmaW5lZCBieSBJU08gNjkzLTEuIFNlZSBpdCBoZXJlCiAqIGh0dHA6Ly93d3cudzMub3JnL1dBSS9FUi9JRy9lcnQvaXNvNjM5Lmh0bS4gVGhlcmUgaXMgb25seSBvbmUgZXhjZXB0aW9uIGZyb20KICogdGhpcyBydWxlOiB0aGUgSGVicmV3IGxhbmd1YWdlLiBGb3IgbGVnYWN5IHJlYXNvbnMgdGhlIG9sZCBjb2RlIChpdykgc2hvdWxkCiAqIGJlIHVzZWQgaW5zdGVhZCBvZiB0aGUgbmV3IGNvZGUgKGhlKS4KICoKICovCmdvb2cuTE9DQUxFID0gZ29vZy5kZWZpbmUoJ2dvb2cuTE9DQUxFJywgJ2VuJyk7ICAvLyBkZWZhdWx0IHRvIGVuCgoKLyoqCiAqIEBkZWZpbmUge2Jvb2xlYW59IFdoZXRoZXIgdGhpcyBjb2RlIGlzIHJ1bm5pbmcgb24gdHJ1c3RlZCBzaXRlcy4KICoKICogT24gdW50cnVzdGVkIHNpdGVzLCBzZXZlcmFsIG5hdGl2ZSBmdW5jdGlvbnMgY2FuIGJlIGRlZmluZWQgb3Igb3ZlcnJpZGRlbiBieQogKiBleHRlcm5hbCBsaWJyYXJpZXMgbGlrZSBQcm90b3R5cGUsIERhdGVqcywgYW5kIEpRdWVyeSBhbmQgc2V0dGluZyB0aGlzIGZsYWcKICogdG8gZmFsc2UgZm9yY2VzIGNsb3N1cmUgdG8gdXNlIGl0cyBvd24gaW1wbGVtZW50YXRpb25zIHdoZW4gcG9zc2libGUuCiAqCiAqIElmIHlvdXIgSmF2YVNjcmlwdCBjYW4gYmUgbG9hZGVkIGJ5IGEgdGhpcmQgcGFydHkgc2l0ZSBhbmQgeW91IGFyZSB3YXJ5IGFib3V0CiAqIHJlbHlpbmcgb24gbm9uLXN0YW5kYXJkIGltcGxlbWVudGF0aW9ucywgc3BlY2lmeQogKiAiLS1kZWZpbmUgZ29vZy5UUlVTVEVEX1NJVEU9ZmFsc2UiIHRvIHRoZSBjb21waWxlci4KICovCmdvb2cuVFJVU1RFRF9TSVRFID0gZ29vZy5kZWZpbmUoJ2dvb2cuVFJVU1RFRF9TSVRFJywgdHJ1ZSk7CgoKLyoqCiAqIEBkZWZpbmUge2Jvb2xlYW59IFdoZXRoZXIgYSBwcm9qZWN0IGlzIGV4cGVjdGVkIHRvIGJlIHJ1bm5pbmcgaW4gc3RyaWN0IG1vZGUuCiAqCiAqIFRoaXMgZGVmaW5lIGNhbiBiZSB1c2VkIHRvIHRyaWdnZXIgYWx0ZXJuYXRlIGltcGxlbWVudGF0aW9ucyBjb21wYXRpYmxlIHdpdGgKICogcnVubmluZyBpbiBFY21hU2NyaXB0IFN0cmljdCBtb2RlIG9yIHdhcm4gYWJvdXQgdW5hdmFpbGFibGUgZnVuY3Rpb25hbGl0eS4KICogQHNlZSBodHRwczovL2dvby5nbC9QdWRRNHkKICoKICovCmdvb2cuU1RSSUNUX01PREVfQ09NUEFUSUJMRSA9IGdvb2cuZGVmaW5lKCdnb29nLlNUUklDVF9NT0RFX0NPTVBBVElCTEUnLCBmYWxzZSk7CgoKLyoqCiAqIEBkZWZpbmUge2Jvb2xlYW59IFdoZXRoZXIgY29kZSB0aGF0IGNhbGxzIHtAbGluayBnb29nLnNldFRlc3RPbmx5fSBzaG91bGQKICogICAgIGJlIGRpc2FsbG93ZWQgaW4gdGhlIGNvbXBpbGF0aW9uIHVuaXQuCiAqLwpnb29nLkRJU0FMTE9XX1RFU1RfT05MWV9DT0RFID0KICAgIGdvb2cuZGVmaW5lKCdnb29nLkRJU0FMTE9XX1RFU1RfT05MWV9DT0RFJywgQ09NUElMRUQgJiYgIWdvb2cuREVCVUcpOwoKCi8qKgogKiBAZGVmaW5lIHtib29sZWFufSBXaGV0aGVyIHRvIHVzZSBhIENocm9tZSBhcHAgQ1NQLWNvbXBsaWFudCBtZXRob2QgZm9yCiAqICAgICBsb2FkaW5nIHNjcmlwdHMgdmlhIGdvb2cucmVxdWlyZS4gQHNlZSBhcHBlbmRTY3JpcHRTcmNOb2RlXy4KICovCmdvb2cuRU5BQkxFX0NIUk9NRV9BUFBfU0FGRV9TQ1JJUFRfTE9BRElORyA9CiAgICBnb29nLmRlZmluZSgnZ29vZy5FTkFCTEVfQ0hST01FX0FQUF9TQUZFX1NDUklQVF9MT0FESU5HJywgZmFsc2UpOwoKCi8qKgogKiBEZWZpbmVzIGEgbmFtZXNwYWNlIGluIENsb3N1cmUuCiAqCiAqIEEgbmFtZXNwYWNlIG1heSBvbmx5IGJlIGRlZmluZWQgb25jZSBpbiBhIGNvZGViYXNlLiBJdCBtYXkgYmUgZGVmaW5lZCB1c2luZwogKiBnb29nLnByb3ZpZGUoKSBvciBnb29nLm1vZHVsZSgpLgogKgogKiBUaGUgcHJlc2VuY2Ugb2Ygb25lIG9yIG1vcmUgZ29vZy5wcm92aWRlKCkgY2FsbHMgaW4gYSBmaWxlIGluZGljYXRlcwogKiB0aGF0IHRoZSBmaWxlIGRlZmluZXMgdGhlIGdpdmVuIG9iamVjdHMvbmFtZXNwYWNlcy4KICogUHJvdmlkZWQgc3ltYm9scyBtdXN0IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZC4KICoKICogSW4gYWRkaXRpb24sIGdvb2cucHJvdmlkZSgpIGNyZWF0ZXMgdGhlIG9iamVjdCBzdHVicyBmb3IgYSBuYW1lc3BhY2UKICogKGZvciBleGFtcGxlLCBnb29nLnByb3ZpZGUoImdvb2cuZm9vLmJhciIpIHdpbGwgY3JlYXRlIHRoZSBvYmplY3QKICogZ29vZy5mb28uYmFyIGlmIGl0IGRvZXMgbm90IGFscmVhZHkgZXhpc3QpLgogKgogKiBCdWlsZCB0b29scyBhbHNvIHNjYW4gZm9yIHByb3ZpZGUvcmVxdWlyZS9tb2R1bGUgc3RhdGVtZW50cwogKiB0byBkaXNjZXJuIGRlcGVuZGVuY2llcywgYnVpbGQgZGVwZW5kZW5jeSBmaWxlcyAoc2VlIGRlcHMuanMpLCBldGMuCiAqCiAqIEBzZWUgZ29vZy5yZXF1aXJlCiAqIEBzZWUgZ29vZy5tb2R1bGUKICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgTmFtZXNwYWNlIHByb3ZpZGVkIGJ5IHRoaXMgZmlsZSBpbiB0aGUgZm9ybQogKiAgICAgImdvb2cucGFja2FnZS5wYXJ0Ii4KICovCmdvb2cucHJvdmlkZSA9IGZ1bmN0aW9uKG5hbWUpIHsKICBpZiAoZ29vZy5pc0luTW9kdWxlTG9hZGVyXygpKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ2dvb2cucHJvdmlkZSBjYW5ub3QgYmUgdXNlZCB3aXRoaW4gYSBtb2R1bGUuJyk7CiAgfQogIGlmICghQ09NUElMRUQpIHsKICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBzYW1lIG5hbWVzcGFjZSBpc24ndCBwcm92aWRlZCB0d2ljZS4KICAgIC8vIEEgZ29vZy5tb2R1bGUvZ29vZy5wcm92aWRlIG1hcHMgYSBnb29nLnJlcXVpcmUgdG8gYSBzcGVjaWZpYyBmaWxlCiAgICBpZiAoZ29vZy5pc1Byb3ZpZGVkXyhuYW1lKSkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ05hbWVzcGFjZSAiJyArIG5hbWUgKyAnIiBhbHJlYWR5IGRlY2xhcmVkLicpOwogICAgfQogIH0KCiAgZ29vZy5jb25zdHJ1Y3ROYW1lc3BhY2VfKG5hbWUpOwp9OwoKCi8qKgogKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lc3BhY2UgcHJvdmlkZWQgYnkgdGhpcyBmaWxlIGluIHRoZSBmb3JtCiAqICAgICAiZ29vZy5wYWNrYWdlLnBhcnQiLgogKiBAcGFyYW0ge09iamVjdD19IG9wdF9vYmogVGhlIG9iamVjdCB0byBlbWJlZCBpbiB0aGUgbmFtZXNwYWNlLgogKiBAcHJpdmF0ZQogKi8KZ29vZy5jb25zdHJ1Y3ROYW1lc3BhY2VfID0gZnVuY3Rpb24obmFtZSwgb3B0X29iaikgewogIGlmICghQ09NUElMRUQpIHsKICAgIGRlbGV0ZSBnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bbmFtZV07CgogICAgdmFyIG5hbWVzcGFjZSA9IG5hbWU7CiAgICB3aGlsZSAoKG5hbWVzcGFjZSA9IG5hbWVzcGFjZS5zdWJzdHJpbmcoMCwgbmFtZXNwYWNlLmxhc3RJbmRleE9mKCcuJykpKSkgewogICAgICBpZiAoZ29vZy5nZXRPYmplY3RCeU5hbWUobmFtZXNwYWNlKSkgewogICAgICAgIGJyZWFrOwogICAgICB9CiAgICAgIGdvb2cuaW1wbGljaXROYW1lc3BhY2VzX1tuYW1lc3BhY2VdID0gdHJ1ZTsKICAgIH0KICB9CgogIGdvb2cuZXhwb3J0UGF0aF8obmFtZSwgb3B0X29iaik7Cn07CgoKLyoqCiAqIFJldHVybnMgQ1NQIG5vbmNlLCBpZiBzZXQgZm9yIGFueSBzY3JpcHQgdGFnLgogKiBAcGFyYW0gez9XaW5kb3c9fSBvcHRfd2luZG93IFRoZSB3aW5kb3cgY29udGV4dCB1c2VkIHRvIHJldHJpZXZlIHRoZSBub25jZS4KICogICAgIERlZmF1bHRzIHRvIGdsb2JhbCBjb250ZXh0LgogKiBAcmV0dXJuIHtzdHJpbmd9IENTUCBub25jZSBvciBlbXB0eSBzdHJpbmcgaWYgbm8gbm9uY2UgaXMgcHJlc2VudC4KICovCmdvb2cuZ2V0U2NyaXB0Tm9uY2UgPSBmdW5jdGlvbihvcHRfd2luZG93KSB7CiAgaWYgKG9wdF93aW5kb3cgJiYgb3B0X3dpbmRvdyAhPSBnb29nLmdsb2JhbCkgewogICAgcmV0dXJuIGdvb2cuZ2V0U2NyaXB0Tm9uY2VfKG9wdF93aW5kb3cuZG9jdW1lbnQpOwogIH0KICBpZiAoZ29vZy5jc3BOb25jZV8gPT09IG51bGwpIHsKICAgIGdvb2cuY3NwTm9uY2VfID0gZ29vZy5nZXRTY3JpcHROb25jZV8oZ29vZy5nbG9iYWwuZG9jdW1lbnQpOwogIH0KICByZXR1cm4gZ29vZy5jc3BOb25jZV87Cn07CgoKLyoqCiAqIEFjY29yZGluZyB0byB0aGUgQ1NQMyBzcGVjIGEgbm9uY2UgbXVzdCBiZSBhIHZhbGlkIGJhc2U2NCBzdHJpbmcuCiAqIEBzZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUDMvI2dyYW1tYXJkZWYtYmFzZTY0LXZhbHVlCiAqIEBwcml2YXRlIEBjb25zdAogKi8KZ29vZy5OT05DRV9QQVRURVJOXyA9IC9eW1x3Ky9fLV0rWz1dezAsMn0kLzsKCgovKioKICogQHByaXZhdGUgez9zdHJpbmd9CiAqLwpnb29nLmNzcE5vbmNlXyA9IG51bGw7CgoKLyoqCiAqIFJldHVybnMgQ1NQIG5vbmNlLCBpZiBzZXQgZm9yIGFueSBzY3JpcHQgdGFnLgogKiBAcGFyYW0geyFEb2N1bWVudH0gZG9jCiAqIEByZXR1cm4ge3N0cmluZ30gQ1NQIG5vbmNlIG9yIGVtcHR5IHN0cmluZyBpZiBubyBub25jZSBpcyBwcmVzZW50LgogKiBAcHJpdmF0ZQogKi8KZ29vZy5nZXRTY3JpcHROb25jZV8gPSBmdW5jdGlvbihkb2MpIHsKICB2YXIgc2NyaXB0ID0gZG9jLnF1ZXJ5U2VsZWN0b3IgJiYgZG9jLnF1ZXJ5U2VsZWN0b3IoJ3NjcmlwdFtub25jZV0nKTsKICBpZiAoc2NyaXB0KSB7CiAgICAvLyBUcnkgdG8gZ2V0IHRoZSBub25jZSBmcm9tIHRoZSBJREwgcHJvcGVydHkgZmlyc3QsIGJlY2F1c2UgYnJvd3NlcnMgdGhhdAogICAgLy8gaW1wbGVtZW50IGFkZGl0aW9uYWwgbm9uY2UgcHJvdGVjdGlvbiBmZWF0dXJlcyAoY3VycmVudGx5IG9ubHkgQ2hyb21lKSB0bwogICAgLy8gcHJldmVudCBub25jZSBzdGVhbGluZyB2aWEgQ1NTIGRvIG5vdCBleHBvc2UgdGhlIG5vbmNlIHZpYSBhdHRyaWJ1dGVzLgogICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvaHRtbC9pc3N1ZXMvMjM2OQogICAgdmFyIG5vbmNlID0gc2NyaXB0Wydub25jZSddIHx8IHNjcmlwdC5nZXRBdHRyaWJ1dGUoJ25vbmNlJyk7CiAgICBpZiAobm9uY2UgJiYgZ29vZy5OT05DRV9QQVRURVJOXy50ZXN0KG5vbmNlKSkgewogICAgICByZXR1cm4gbm9uY2U7CiAgICB9CiAgfQogIHJldHVybiAnJzsKfTsKCgovKioKICogTW9kdWxlIGlkZW50aWZpZXIgdmFsaWRhdGlvbiByZWdleHAuCiAqIE5vdGU6IFRoaXMgaXMgYSBjb25zZXJ2YXRpdmUgY2hlY2ssIGl0IGlzIHZlcnkgcG9zc2libGUgdG8gYmUgbW9yZSBsZW5pZW50LAogKiAgIHRoZSBwcmltYXJ5IGV4Y2x1c2lvbiBoZXJlIGlzICIvIiBhbmQgIlwiIGFuZCBhIGxlYWRpbmcgIi4iLCB0aGVzZQogKiAgIHJlc3RyaWN0aW9ucyBhcmUgaW50ZW5kZWQgdG8gbGVhdmUgdGhlIGRvb3Igb3BlbiBmb3IgdXNpbmcgZ29vZy5yZXF1aXJlCiAqICAgd2l0aCByZWxhdGl2ZSBmaWxlIHBhdGhzIHJhdGhlciB0aGFuIG1vZHVsZSBpZGVudGlmaWVycy4KICogQHByaXZhdGUKICovCmdvb2cuVkFMSURfTU9EVUxFX1JFXyA9IC9eW2EtekEtWl8kXVthLXpBLVowLTkuXyRdKiQvOwoKCi8qKgogKiBEZWZpbmVzIGEgbW9kdWxlIGluIENsb3N1cmUuCiAqCiAqIE1hcmtzIHRoYXQgdGhpcyBmaWxlIG11c3QgYmUgbG9hZGVkIGFzIGEgbW9kdWxlIGFuZCBjbGFpbXMgdGhlIG5hbWVzcGFjZS4KICoKICogQSBuYW1lc3BhY2UgbWF5IG9ubHkgYmUgZGVmaW5lZCBvbmNlIGluIGEgY29kZWJhc2UuIEl0IG1heSBiZSBkZWZpbmVkIHVzaW5nCiAqIGdvb2cucHJvdmlkZSgpIG9yIGdvb2cubW9kdWxlKCkuCiAqCiAqIGdvb2cubW9kdWxlKCkgaGFzIHRocmVlIHJlcXVpcmVtZW50czoKICogLSBnb29nLm1vZHVsZSBtYXkgbm90IGJlIHVzZWQgaW4gdGhlIHNhbWUgZmlsZSBhcyBnb29nLnByb3ZpZGUuCiAqIC0gZ29vZy5tb2R1bGUgbXVzdCBiZSB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZSBmaWxlLgogKiAtIG9ubHkgb25lIGdvb2cubW9kdWxlIGlzIGFsbG93ZWQgcGVyIGZpbGUuCiAqCiAqIFdoZW4gYSBnb29nLm1vZHVsZSBhbm5vdGF0ZWQgZmlsZSBpcyBsb2FkZWQsIGl0IGlzIGVuY2xvc2VkIGluCiAqIGEgc3RyaWN0IGZ1bmN0aW9uIGNsb3N1cmUuIFRoaXMgbWVhbnMgdGhhdDoKICogLSBhbnkgdmFyaWFibGVzIGRlY2xhcmVkIGluIGEgZ29vZy5tb2R1bGUgZmlsZSBhcmUgcHJpdmF0ZSB0byB0aGUgZmlsZQogKiAobm90IGdsb2JhbCksIHRob3VnaCB0aGUgY29tcGlsZXIgaXMgZXhwZWN0ZWQgdG8gaW5saW5lIHRoZSBtb2R1bGUuCiAqIC0gVGhlIGNvZGUgbXVzdCBvYmV5IGFsbCB0aGUgcnVsZXMgb2YgInN0cmljdCIgSmF2YVNjcmlwdC4KICogLSB0aGUgZmlsZSB3aWxsIGJlIG1hcmtlZCBhcyAidXNlIHN0cmljdCIKICoKICogTk9URTogdW5saWtlIGdvb2cucHJvdmlkZSwgZ29vZy5tb2R1bGUgZG9lcyBub3QgZGVjbGFyZSBhbnkgc3ltYm9scyBieQogKiBpdHNlbGYuIElmIGRlY2xhcmVkIHN5bWJvbHMgYXJlIGRlc2lyZWQsIHVzZQogKiBnb29nLm1vZHVsZS5kZWNsYXJlTGVnYWN5TmFtZXNwYWNlKCkuCiAqCiAqCiAqIFNlZSB0aGUgcHVibGljIGdvb2cubW9kdWxlIHByb3Bvc2FsOiBodHRwOi8vZ29vLmdsL1ZhMWhpbgogKgogKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lc3BhY2UgcHJvdmlkZWQgYnkgdGhpcyBmaWxlIGluIHRoZSBmb3JtCiAqICAgICAiZ29vZy5wYWNrYWdlLnBhcnQiLCBpcyBleHBlY3RlZCBidXQgbm90IHJlcXVpcmVkLgogKiBAcmV0dXJuIHt2b2lkfQogKi8KZ29vZy5tb2R1bGUgPSBmdW5jdGlvbihuYW1lKSB7CiAgaWYgKHR5cGVvZiBuYW1lICE9PSAnc3RyaW5nJyB8fCAhbmFtZSB8fAogICAgICBuYW1lLnNlYXJjaChnb29nLlZBTElEX01PRFVMRV9SRV8pID09IC0xKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbW9kdWxlIGlkZW50aWZpZXInKTsKICB9CiAgaWYgKCFnb29nLmlzSW5Hb29nTW9kdWxlTG9hZGVyXygpKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoCiAgICAgICAgJ01vZHVsZSAnICsgbmFtZSArICcgaGFzIGJlZW4gbG9hZGVkIGluY29ycmVjdGx5LiBOb3RlLCAnICsKICAgICAgICAnbW9kdWxlcyBjYW5ub3QgYmUgbG9hZGVkIGFzIG5vcm1hbCBzY3JpcHRzLiBUaGV5IHJlcXVpcmUgc29tZSBraW5kIG9mICcgKwogICAgICAgICdwcmUtcHJvY2Vzc2luZyBzdGVwLiBZb3VcJ3JlIGxpa2VseSB0cnlpbmcgdG8gbG9hZCBhIG1vZHVsZSB2aWEgYSAnICsKICAgICAgICAnc2NyaXB0IHRhZyBvciBhcyBhIHBhcnQgb2YgYSBjb25jYXRlbmF0ZWQgYnVuZGxlIHdpdGhvdXQgcmV3cml0aW5nIHRoZSAnICsKICAgICAgICAnbW9kdWxlLiBGb3IgbW9yZSBpbmZvIHNlZTogJyArCiAgICAgICAgJ2h0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvY2xvc3VyZS1saWJyYXJ5L3dpa2kvZ29vZy5tb2R1bGU6LWFuLUVTNi1tb2R1bGUtbGlrZS1hbHRlcm5hdGl2ZS10by1nb29nLnByb3ZpZGUuJyk7CiAgfQogIGlmIChnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ2dvb2cubW9kdWxlIG1heSBvbmx5IGJlIGNhbGxlZCBvbmNlIHBlciBtb2R1bGUuJyk7CiAgfQoKICAvLyBTdG9yZSB0aGUgbW9kdWxlIG5hbWUgZm9yIHRoZSBsb2FkZXIuCiAgZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8ubW9kdWxlTmFtZSA9IG5hbWU7CiAgaWYgKCFDT01QSUxFRCkgewogICAgLy8gRW5zdXJlIHRoYXQgdGhlIHNhbWUgbmFtZXNwYWNlIGlzbid0IHByb3ZpZGVkIHR3aWNlLgogICAgLy8gQSBnb29nLm1vZHVsZS9nb29nLnByb3ZpZGUgbWFwcyBhIGdvb2cucmVxdWlyZSB0byBhIHNwZWNpZmljIGZpbGUKICAgIGlmIChnb29nLmlzUHJvdmlkZWRfKG5hbWUpKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignTmFtZXNwYWNlICInICsgbmFtZSArICciIGFscmVhZHkgZGVjbGFyZWQuJyk7CiAgICB9CiAgICBkZWxldGUgZ29vZy5pbXBsaWNpdE5hbWVzcGFjZXNfW25hbWVdOwogIH0KfTsKCgovKioKICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG1vZHVsZSBpZGVudGlmaWVyLgogKiBAcmV0dXJuIHs/fSBUaGUgbW9kdWxlIGV4cG9ydHMgZm9yIGFuIGFscmVhZHkgbG9hZGVkIG1vZHVsZSBvciBudWxsLgogKgogKiBOb3RlOiBUaGlzIGlzIG5vdCBhbiBhbHRlcm5hdGl2ZSB0byBnb29nLnJlcXVpcmUsIGl0IGRvZXMgbm90CiAqIGluZGljYXRlIGEgaGFyZCBkZXBlbmRlbmN5LCBpbnN0ZWFkIGl0IGlzIHVzZWQgdG8gaW5kaWNhdGUKICogYW4gb3B0aW9uYWwgZGVwZW5kZW5jeSBvciB0byBhY2Nlc3MgdGhlIGV4cG9ydHMgb2YgYSBtb2R1bGUKICogdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGxvYWRlZC4KICogQHN1cHByZXNzIHttaXNzaW5nUHJvdmlkZX0KICovCmdvb2cubW9kdWxlLmdldCA9IGZ1bmN0aW9uKG5hbWUpIHsKICByZXR1cm4gZ29vZy5tb2R1bGUuZ2V0SW50ZXJuYWxfKG5hbWUpOwp9OwoKCi8qKgogKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbW9kdWxlIGlkZW50aWZpZXIuCiAqIEByZXR1cm4gez99IFRoZSBtb2R1bGUgZXhwb3J0cyBmb3IgYW4gYWxyZWFkeSBsb2FkZWQgbW9kdWxlIG9yIG51bGwuCiAqIEBwcml2YXRlCiAqLwpnb29nLm1vZHVsZS5nZXRJbnRlcm5hbF8gPSBmdW5jdGlvbihuYW1lKSB7CiAgaWYgKCFDT01QSUxFRCkgewogICAgaWYgKG5hbWUgaW4gZ29vZy5sb2FkZWRNb2R1bGVzXykgewogICAgICByZXR1cm4gZ29vZy5sb2FkZWRNb2R1bGVzX1tuYW1lXS5leHBvcnRzOwogICAgfSBlbHNlIGlmICghZ29vZy5pbXBsaWNpdE5hbWVzcGFjZXNfW25hbWVdKSB7CiAgICAgIHZhciBucyA9IGdvb2cuZ2V0T2JqZWN0QnlOYW1lKG5hbWUpOwogICAgICByZXR1cm4gbnMgIT0gbnVsbCA/IG5zIDogbnVsbDsKICAgIH0KICB9CiAgcmV0dXJuIG51bGw7Cn07CgoKLyoqCiAqIFR5cGVzIG9mIG1vZHVsZXMgdGhlIGRlYnVnIGxvYWRlciBjYW4gbG9hZC4KICogQGVudW0ge3N0cmluZ30KICovCmdvb2cuTW9kdWxlVHlwZSA9IHsKICBFUzY6ICdlczYnLAogIEdPT0c6ICdnb29nJwp9OwoKCi8qKgogKiBAcHJpdmF0ZSB7P3sKICogICBtb2R1bGVOYW1lOiAoc3RyaW5nfHVuZGVmaW5lZCksCiAqICAgZGVjbGFyZUxlZ2FjeU5hbWVzcGFjZTpib29sZWFuLAogKiAgIHR5cGU6ID9nb29nLk1vZHVsZVR5cGUKICogfX0KICovCmdvb2cubW9kdWxlTG9hZGVyU3RhdGVfID0gbnVsbDsKCgovKioKICogQHByaXZhdGUKICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciBhIGdvb2cubW9kdWxlIG9yIGFuIGVzNiBtb2R1bGUgaXMgY3VycmVudGx5IGJlaW5nCiAqICAgICBpbml0aWFsaXplZC4KICovCmdvb2cuaXNJbk1vZHVsZUxvYWRlcl8gPSBmdW5jdGlvbigpIHsKICByZXR1cm4gZ29vZy5pc0luR29vZ01vZHVsZUxvYWRlcl8oKSB8fCBnb29nLmlzSW5FczZNb2R1bGVMb2FkZXJfKCk7Cn07CgoKLyoqCiAqIEBwcml2YXRlCiAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgYSBnb29nLm1vZHVsZSBpcyBjdXJyZW50bHkgYmVpbmcgaW5pdGlhbGl6ZWQuCiAqLwpnb29nLmlzSW5Hb29nTW9kdWxlTG9hZGVyXyA9IGZ1bmN0aW9uKCkgewogIHJldHVybiAhIWdvb2cubW9kdWxlTG9hZGVyU3RhdGVfICYmCiAgICAgIGdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLnR5cGUgPT0gZ29vZy5Nb2R1bGVUeXBlLkdPT0c7Cn07CgoKLyoqCiAqIEBwcml2YXRlCiAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgYW4gZXM2IG1vZHVsZSBpcyBjdXJyZW50bHkgYmVpbmcgaW5pdGlhbGl6ZWQuCiAqLwpnb29nLmlzSW5FczZNb2R1bGVMb2FkZXJfID0gZnVuY3Rpb24oKSB7CiAgdmFyIGluTG9hZGVyID0gISFnb29nLm1vZHVsZUxvYWRlclN0YXRlXyAmJgogICAgICBnb29nLm1vZHVsZUxvYWRlclN0YXRlXy50eXBlID09IGdvb2cuTW9kdWxlVHlwZS5FUzY7CgogIGlmIChpbkxvYWRlcikgewogICAgcmV0dXJuIHRydWU7CiAgfQoKICB2YXIganNjb21wID0gZ29vZy5nbG9iYWxbJyRqc2NvbXAnXTsKCiAgaWYgKGpzY29tcCkgewogICAgLy8ganNjb21wIG1heSBub3QgaGF2ZSBnZXRDdXJyZW50TW9kdWxlUGF0aCBpZiB0aGlzIGlzIGEgY29tcGlsZWQgYnVuZGxlCiAgICAvLyB0aGF0IGhhcyBzb21lIG9mIHRoZSBydW50aW1lLCBidXQgbm90IGFsbCBvZiBpdC4gVGhpcyBjYW4gaGFwcGVuIGlmCiAgICAvLyBvcHRpbWl6YXRpb25zIGFyZSB0dXJuZWQgb24gc28gdGhlIHVudXNlZCBydW50aW1lIGlzIHJlbW92ZWQgYnV0IHJlbmFtaW5nCiAgICAvLyBhbmQgQ2xvc3VyZSBwYXNzIGFyZSBvZmYgKHNvICRqc2NvbXAgaXMgc3RpbGwgbmFtZWQgJGpzY29tcCBhbmQgdGhlCiAgICAvLyBnb29nLnByb3ZpZGUvcmVxdWlyZSBjYWxscyBzdGlsbCBleGlzdCkuCiAgICBpZiAodHlwZW9mIGpzY29tcC5nZXRDdXJyZW50TW9kdWxlUGF0aCAhPSAnZnVuY3Rpb24nKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyBCdW5kbGVkIEVTNiBtb2R1bGUuCiAgICByZXR1cm4gISFqc2NvbXAuZ2V0Q3VycmVudE1vZHVsZVBhdGgoKTsKICB9CgogIHJldHVybiBmYWxzZTsKfTsKCgovKioKICogUHJvdmlkZSB0aGUgbW9kdWxlJ3MgZXhwb3J0cyBhcyBhIGdsb2JhbGx5IGFjY2Vzc2libGUgb2JqZWN0IHVuZGVyIHRoZQogKiBtb2R1bGUncyBkZWNsYXJlZCBuYW1lLiAgVGhpcyBpcyBpbnRlbmRlZCB0byBlYXNlIG1pZ3JhdGlvbiB0byBnb29nLm1vZHVsZQogKiBmb3IgZmlsZXMgdGhhdCBoYXZlIGV4aXN0aW5nIHVzYWdlcy4KICogQHN1cHByZXNzIHttaXNzaW5nUHJvdmlkZX0KICovCmdvb2cubW9kdWxlLmRlY2xhcmVMZWdhY3lOYW1lc3BhY2UgPSBmdW5jdGlvbigpIHsKICBpZiAoIUNPTVBJTEVEICYmICFnb29nLmlzSW5Hb29nTW9kdWxlTG9hZGVyXygpKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoCiAgICAgICAgJ2dvb2cubW9kdWxlLmRlY2xhcmVMZWdhY3lOYW1lc3BhY2UgbXVzdCBiZSBjYWxsZWQgZnJvbSAnICsKICAgICAgICAnd2l0aGluIGEgZ29vZy5tb2R1bGUnKTsKICB9CiAgaWYgKCFDT01QSUxFRCAmJiAhZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8ubW9kdWxlTmFtZSkgewogICAgdGhyb3cgbmV3IEVycm9yKAogICAgICAgICdnb29nLm1vZHVsZSBtdXN0IGJlIGNhbGxlZCBwcmlvciB0byAnICsKICAgICAgICAnZ29vZy5tb2R1bGUuZGVjbGFyZUxlZ2FjeU5hbWVzcGFjZS4nKTsKICB9CiAgZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8uZGVjbGFyZUxlZ2FjeU5hbWVzcGFjZSA9IHRydWU7Cn07CgoKLyoqCiAqIEFzc29jaWF0ZXMgYW4gRVM2IG1vZHVsZSB3aXRoIGEgQ2xvc3VyZSBtb2R1bGUgSUQgc28gdGhhdCBpcyBhdmFpbGFibGUgdmlhCiAqIGdvb2cucmVxdWlyZS4gVGhlIGFzc29jaWF0ZWQgSUQgIGFjdHMgbGlrZSBhIGdvb2cubW9kdWxlIElEIC0gaXQgZG9lcyBub3QKICogY3JlYXRlIGFueSBnbG9iYWwgbmFtZXMsIGl0IGlzIG1lcmVseSBhdmFpbGFibGUgdmlhIGdvb2cucmVxdWlyZSAvCiAqIGdvb2cubW9kdWxlLmdldCAvIGdvb2cuZm9yd2FyZERlY2xhcmUgLyBnb29nLnJlcXVpcmVUeXBlLiBnb29nLnJlcXVpcmUgYW5kCiAqIGdvb2cubW9kdWxlLmdldCB3aWxsIHJldHVybiB0aGUgZW50aXJlIG1vZHVsZSBhcyBpZiBpdCB3YXMgaW1wb3J0IConZC4gVGhpcwogKiBhbGxvd3MgQ2xvc3VyZSBmaWxlcyB0byByZWZlcmVuY2UgRVM2IG1vZHVsZXMgZm9yIHRoZSBzYWtlIG9mIG1pZ3JhdGlvbi4KICoKICogQHBhcmFtIHtzdHJpbmd9IG5hbWVzcGFjZQogKiBAc3VwcHJlc3Mge21pc3NpbmdQcm92aWRlfQogKi8KZ29vZy5kZWNsYXJlTW9kdWxlSWQgPSBmdW5jdGlvbihuYW1lc3BhY2UpIHsKICBpZiAoIUNPTVBJTEVEKSB7CiAgICBpZiAoIWdvb2cuaXNJbkVzNk1vZHVsZUxvYWRlcl8oKSkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoCiAgICAgICAgICAnZ29vZy5kZWNsYXJlTW9kdWxlSWQgbWF5IG9ubHkgYmUgY2FsbGVkIGZyb20gJyArCiAgICAgICAgICAnd2l0aGluIGFuIEVTNiBtb2R1bGUnKTsKICAgIH0KICAgIGlmIChnb29nLm1vZHVsZUxvYWRlclN0YXRlXyAmJiBnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigKICAgICAgICAgICdnb29nLmRlY2xhcmVNb2R1bGVJZCBtYXkgb25seSBiZSBjYWxsZWQgb25jZSBwZXIgbW9kdWxlLicpOwogICAgfQogICAgaWYgKG5hbWVzcGFjZSBpbiBnb29nLmxvYWRlZE1vZHVsZXNfKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigKICAgICAgICAgICdNb2R1bGUgd2l0aCBuYW1lc3BhY2UgIicgKyBuYW1lc3BhY2UgKyAnIiBhbHJlYWR5IGV4aXN0cy4nKTsKICAgIH0KICB9CiAgaWYgKGdvb2cubW9kdWxlTG9hZGVyU3RhdGVfKSB7CiAgICAvLyBOb3QgYnVuZGxlZCAtIGRlYnVnIGxvYWRpbmcuCiAgICBnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lID0gbmFtZXNwYWNlOwogIH0gZWxzZSB7CiAgICAvLyBCdW5kbGVkIC0gbm90IGRlYnVnIGxvYWRpbmcsIG5vIG1vZHVsZSBsb2FkZXIgc3RhdGUuCiAgICB2YXIganNjb21wID0gZ29vZy5nbG9iYWxbJyRqc2NvbXAnXTsKICAgIGlmICghanNjb21wIHx8IHR5cGVvZiBqc2NvbXAuZ2V0Q3VycmVudE1vZHVsZVBhdGggIT0gJ2Z1bmN0aW9uJykgewogICAgICB0aHJvdyBuZXcgRXJyb3IoCiAgICAgICAgICAnTW9kdWxlIHdpdGggbmFtZXNwYWNlICInICsgbmFtZXNwYWNlICsKICAgICAgICAgICciIGhhcyBiZWVuIGxvYWRlZCBpbmNvcnJlY3RseS4nKTsKICAgIH0KICAgIHZhciBleHBvcnRzID0ganNjb21wLnJlcXVpcmUoanNjb21wLmdldEN1cnJlbnRNb2R1bGVQYXRoKCkpOwogICAgZ29vZy5sb2FkZWRNb2R1bGVzX1tuYW1lc3BhY2VdID0gewogICAgICBleHBvcnRzOiBleHBvcnRzLAogICAgICB0eXBlOiBnb29nLk1vZHVsZVR5cGUuRVM2LAogICAgICBtb2R1bGVJZDogbmFtZXNwYWNlCiAgICB9OwogIH0KfTsKCgovKioKICogTWFya3MgdGhhdCB0aGUgY3VycmVudCBmaWxlIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIHRlc3RpbmcsIGFuZCBuZXZlciBmb3IKICogbGl2ZSBjb2RlIGluIHByb2R1Y3Rpb24uCiAqCiAqIEluIHRoZSBjYXNlIG9mIHVuaXQgdGVzdHMsIHRoZSBtZXNzYWdlIG1heSBvcHRpb25hbGx5IGJlIGFuIGV4YWN0IG5hbWVzcGFjZQogKiBmb3IgdGhlIHRlc3QgKGUuZy4gJ2dvb2cuc3RyaW5nVGVzdCcpLiBUaGUgbGludGVyIHdpbGwgdGhlbiBpZ25vcmUgdGhlIGV4dHJhCiAqIHByb3ZpZGUgKGlmIG5vdCBleHBsaWNpdGx5IGRlZmluZWQgaW4gdGhlIGNvZGUpLgogKgogKiBAcGFyYW0ge3N0cmluZz19IG9wdF9tZXNzYWdlIE9wdGlvbmFsIG1lc3NhZ2UgdG8gYWRkIHRvIHRoZSBlcnJvciB0aGF0J3MKICogICAgIHJhaXNlZCB3aGVuIHVzZWQgaW4gcHJvZHVjdGlvbiBjb2RlLgogKi8KZ29vZy5zZXRUZXN0T25seSA9IGZ1bmN0aW9uKG9wdF9tZXNzYWdlKSB7CiAgaWYgKGdvb2cuRElTQUxMT1dfVEVTVF9PTkxZX0NPREUpIHsKICAgIG9wdF9tZXNzYWdlID0gb3B0X21lc3NhZ2UgfHwgJyc7CiAgICB0aHJvdyBuZXcgRXJyb3IoCiAgICAgICAgJ0ltcG9ydGluZyB0ZXN0LW9ubHkgY29kZSBpbnRvIG5vbi1kZWJ1ZyBlbnZpcm9ubWVudCcgKwogICAgICAgIChvcHRfbWVzc2FnZSA/ICc6ICcgKyBvcHRfbWVzc2FnZSA6ICcuJykpOwogIH0KfTsKCgovKioKICogRm9yd2FyZCBkZWNsYXJlcyBhIHN5bWJvbC4gVGhpcyBpcyBhbiBpbmRpY2F0aW9uIHRvIHRoZSBjb21waWxlciB0aGF0IHRoZQogKiBzeW1ib2wgbWF5IGJlIHVzZWQgaW4gdGhlIHNvdXJjZSB5ZXQgaXMgbm90IHJlcXVpcmVkIGFuZCBtYXkgbm90IGJlIHByb3ZpZGVkCiAqIGluIGNvbXBpbGF0aW9uLgogKgogKiBUaGUgbW9zdCBjb21tb24gdXNhZ2Ugb2YgZm9yd2FyZCBkZWNsYXJhdGlvbiBpcyBjb2RlIHRoYXQgdGFrZXMgYSB0eXBlIGFzIGEKICogZnVuY3Rpb24gcGFyYW1ldGVyIGJ1dCBkb2VzIG5vdCBuZWVkIHRvIHJlcXVpcmUgaXQuIEJ5IGZvcndhcmQgZGVjbGFyaW5nCiAqIGluc3RlYWQgb2YgcmVxdWlyaW5nLCBubyBoYXJkIGRlcGVuZGVuY3kgaXMgbWFkZSwgYW5kIChpZiBub3QgcmVxdWlyZWQKICogZWxzZXdoZXJlKSB0aGUgbmFtZXNwYWNlIG1heSBuZXZlciBiZSByZXF1aXJlZCBhbmQgdGh1cywgbm90IGJlIHB1bGxlZAogKiBpbnRvIHRoZSBKYXZhU2NyaXB0IGJpbmFyeS4gSWYgaXQgaXMgcmVxdWlyZWQgZWxzZXdoZXJlLCBpdCB3aWxsIGJlIHR5cGUKICogY2hlY2tlZCBhcyBub3JtYWwuCiAqCiAqIEJlZm9yZSB1c2luZyBnb29nLmZvcndhcmREZWNsYXJlLCBwbGVhc2UgcmVhZCB0aGUgZG9jdW1lbnRhdGlvbiBhdAogKiBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2Nsb3N1cmUtY29tcGlsZXIvd2lraS9CYWQtVHlwZS1Bbm5vdGF0aW9uIHRvCiAqIHVuZGVyc3RhbmQgdGhlIG9wdGlvbnMgYW5kIHRyYWRlb2ZmcyB3aGVuIHdvcmtpbmcgd2l0aCBmb3J3YXJkIGRlY2xhcmF0aW9ucy4KICoKICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWVzcGFjZSB0byBmb3J3YXJkIGRlY2xhcmUgaW4gdGhlIGZvcm0gb2YKICogICAgICJnb29nLnBhY2thZ2UucGFydCIuCiAqLwpnb29nLmZvcndhcmREZWNsYXJlID0gZnVuY3Rpb24obmFtZSkge307CgoKLyoqCiAqIEZvcndhcmQgZGVjbGFyZSB0eXBlIGluZm9ybWF0aW9uLiBVc2VkIHRvIGFzc2lnbiB0eXBlcyB0byBnb29nLmdsb2JhbAogKiByZWZlcmVuY2VkIG9iamVjdCB0aGF0IHdvdWxkIG90aGVyd2lzZSByZXN1bHQgaW4gdW5rbm93biB0eXBlIHJlZmVyZW5jZXMKICogYW5kIHRodXMgYmxvY2sgcHJvcGVydHkgZGlzYW1iaWd1YXRpb24uCiAqLwpnb29nLmZvcndhcmREZWNsYXJlKCdEb2N1bWVudCcpOwpnb29nLmZvcndhcmREZWNsYXJlKCdIVE1MU2NyaXB0RWxlbWVudCcpOwpnb29nLmZvcndhcmREZWNsYXJlKCdYTUxIdHRwUmVxdWVzdCcpOwoKCmlmICghQ09NUElMRUQpIHsKICAvKioKICAgKiBDaGVjayBpZiB0aGUgZ2l2ZW4gbmFtZSBoYXMgYmVlbiBnb29nLnByb3ZpZGVkLiBUaGlzIHdpbGwgcmV0dXJuIGZhbHNlIGZvcgogICAqIG5hbWVzIHRoYXQgYXJlIGF2YWlsYWJsZSBvbmx5IGFzIGltcGxpY2l0IG5hbWVzcGFjZXMuCiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgbmFtZSBvZiB0aGUgb2JqZWN0IHRvIGxvb2sgZm9yLgogICAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgdGhlIG5hbWUgaGFzIGJlZW4gcHJvdmlkZWQuCiAgICogQHByaXZhdGUKICAgKi8KICBnb29nLmlzUHJvdmlkZWRfID0gZnVuY3Rpb24obmFtZSkgewogICAgcmV0dXJuIChuYW1lIGluIGdvb2cubG9hZGVkTW9kdWxlc18pIHx8CiAgICAgICAgKCFnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bbmFtZV0gJiYgZ29vZy5nZXRPYmplY3RCeU5hbWUobmFtZSkgIT0gbnVsbCk7CiAgfTsKCiAgLyoqCiAgICogTmFtZXNwYWNlcyBpbXBsaWNpdGx5IGRlZmluZWQgYnkgZ29vZy5wcm92aWRlLiBGb3IgZXhhbXBsZSwKICAgKiBnb29nLnByb3ZpZGUoJ2dvb2cuZXZlbnRzLkV2ZW50JykgaW1wbGljaXRseSBkZWNsYXJlcyB0aGF0ICdnb29nJyBhbmQKICAgKiAnZ29vZy5ldmVudHMnIG11c3QgYmUgbmFtZXNwYWNlcy4KICAgKgogICAqIEB0eXBlIHshT2JqZWN0PHN0cmluZywgKGJvb2xlYW58dW5kZWZpbmVkKT59CiAgICogQHByaXZhdGUKICAgKi8KICBnb29nLmltcGxpY2l0TmFtZXNwYWNlc18gPSB7J2dvb2cubW9kdWxlJzogdHJ1ZX07CgogIC8vIE5PVEU6IFdlIGFkZCBnb29nLm1vZHVsZSBhcyBhbiBpbXBsaWNpdCBuYW1lc3BhY2UgYXMgZ29vZy5tb2R1bGUgaXMgZGVmaW5lZAogIC8vIGhlcmUgYW5kIGJlY2F1c2UgdGhlIGV4aXN0aW5nIG1vZHVsZSBwYWNrYWdlIGhhcyBub3QgYmVlbiBtb3ZlZCB5ZXQgb3V0IG9mCiAgLy8gdGhlIGdvb2cubW9kdWxlIG5hbWVzcGFjZS4gVGhpcyBzYXRpc2lmaWVzIGJvdGggdGhlIGRlYnVnIGxvYWRlciBhbmQKICAvLyBhaGVhZC1vZi10aW1lIGRlcGVuZGVuY3kgbWFuYWdlbWVudC4KfQoKCi8qKgogKiBSZXR1cm5zIGFuIG9iamVjdCBiYXNlZCBvbiBpdHMgZnVsbHkgcXVhbGlmaWVkIGV4dGVybmFsIG5hbWUuICBUaGUgb2JqZWN0CiAqIGlzIG5vdCBmb3VuZCBpZiBudWxsIG9yIHVuZGVmaW5lZC4gIElmIHlvdSBhcmUgdXNpbmcgYSBjb21waWxhdGlvbiBwYXNzIHRoYXQKICogcmVuYW1lcyBwcm9wZXJ0eSBuYW1lcyBiZXdhcmUgdGhhdCB1c2luZyB0aGlzIGZ1bmN0aW9uIHdpbGwgbm90IGZpbmQgcmVuYW1lZAogKiBwcm9wZXJ0aWVzLgogKgogKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUuCiAqIEBwYXJhbSB7T2JqZWN0PX0gb3B0X29iaiBUaGUgb2JqZWN0IHdpdGhpbiB3aGljaCB0byBsb29rOyBkZWZhdWx0IGlzCiAqICAgICB8Z29vZy5nbG9iYWx8LgogKiBAcmV0dXJuIHs/fSBUaGUgdmFsdWUgKG9iamVjdCBvciBwcmltaXRpdmUpIG9yLCBpZiBub3QgZm91bmQsIG51bGwuCiAqLwpnb29nLmdldE9iamVjdEJ5TmFtZSA9IGZ1bmN0aW9uKG5hbWUsIG9wdF9vYmopIHsKICB2YXIgcGFydHMgPSBuYW1lLnNwbGl0KCcuJyk7CiAgdmFyIGN1ciA9IG9wdF9vYmogfHwgZ29vZy5nbG9iYWw7CiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGg7IGkrKykgewogICAgY3VyID0gY3VyW3BhcnRzW2ldXTsKICAgIGlmIChjdXIgPT0gbnVsbCkgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KICB9CiAgcmV0dXJuIGN1cjsKfTsKCgovKioKICogR2xvYmFsaXplcyBhIHdob2xlIG5hbWVzcGFjZSwgc3VjaCBhcyBnb29nIG9yIGdvb2cubGFuZy4KICoKICogQHBhcmFtIHshT2JqZWN0fSBvYmogVGhlIG5hbWVzcGFjZSB0byBnbG9iYWxpemUuCiAqIEBwYXJhbSB7T2JqZWN0PX0gb3B0X2dsb2JhbCBUaGUgb2JqZWN0IHRvIGFkZCB0aGUgcHJvcGVydGllcyB0by4KICogQGRlcHJlY2F0ZWQgUHJvcGVydGllcyBtYXkgYmUgZXhwbGljaXRseSBleHBvcnRlZCB0byB0aGUgZ2xvYmFsIHNjb3BlLCBidXQKICogICAgIHRoaXMgc2hvdWxkIG5vIGxvbmdlciBiZSBkb25lIGluIGJ1bGsuCiAqLwpnb29nLmdsb2JhbGl6ZSA9IGZ1bmN0aW9uKG9iaiwgb3B0X2dsb2JhbCkgewogIHZhciBnbG9iYWwgPSBvcHRfZ2xvYmFsIHx8IGdvb2cuZ2xvYmFsOwogIGZvciAodmFyIHggaW4gb2JqKSB7CiAgICBnbG9iYWxbeF0gPSBvYmpbeF07CiAgfQp9OwoKCi8qKgogKiBBZGRzIGEgZGVwZW5kZW5jeSBmcm9tIGEgZmlsZSB0byB0aGUgZmlsZXMgaXQgcmVxdWlyZXMuCiAqIEBwYXJhbSB7c3RyaW5nfSByZWxQYXRoIFRoZSBwYXRoIHRvIHRoZSBqcyBmaWxlLgogKiBAcGFyYW0geyFBcnJheTxzdHJpbmc+fSBwcm92aWRlcyBBbiBhcnJheSBvZiBzdHJpbmdzIHdpdGgKICogICAgIHRoZSBuYW1lcyBvZiB0aGUgb2JqZWN0cyB0aGlzIGZpbGUgcHJvdmlkZXMuCiAqIEBwYXJhbSB7IUFycmF5PHN0cmluZz59IHJlcXVpcmVzIEFuIGFycmF5IG9mIHN0cmluZ3Mgd2l0aAogKiAgICAgdGhlIG5hbWVzIG9mIHRoZSBvYmplY3RzIHRoaXMgZmlsZSByZXF1aXJlcy4KICogQHBhcmFtIHtib29sZWFufCFPYmplY3Q8c3RyaW5nPj19IG9wdF9sb2FkRmxhZ3MgUGFyYW1ldGVycyBpbmRpY2F0aW5nCiAqICAgICBob3cgdGhlIGZpbGUgbXVzdCBiZSBsb2FkZWQuICBUaGUgYm9vbGVhbiAndHJ1ZScgaXMgZXF1aXZhbGVudAogKiAgICAgdG8geydtb2R1bGUnOiAnZ29vZyd9IGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eS4gIFZhbGlkIHByb3BlcnRpZXMKICogICAgIGFuZCB2YWx1ZXMgaW5jbHVkZSB7J21vZHVsZSc6ICdnb29nJ30gYW5kIHsnbGFuZyc6ICdlczYnfS4KICovCmdvb2cuYWRkRGVwZW5kZW5jeSA9IGZ1bmN0aW9uKHJlbFBhdGgsIHByb3ZpZGVzLCByZXF1aXJlcywgb3B0X2xvYWRGbGFncykgewogIGlmICghQ09NUElMRUQgJiYgZ29vZy5ERVBFTkRFTkNJRVNfRU5BQkxFRCkgewogICAgZ29vZy5kZWJ1Z0xvYWRlcl8uYWRkRGVwZW5kZW5jeShyZWxQYXRoLCBwcm92aWRlcywgcmVxdWlyZXMsIG9wdF9sb2FkRmxhZ3MpOwogIH0KfTsKCgoKCi8vIE5PVEUobm5hemUpOiBUaGUgZGVidWcgRE9NIGxvYWRlciB3YXMgaW5jbHVkZWQgaW4gYmFzZS5qcyBhcyBhbiBvcmlnaW5hbCB3YXkKLy8gdG8gZG8gImRlYnVnLW1vZGUiIGRldmVsb3BtZW50LiAgVGhlIGRlcGVuZGVuY3kgc3lzdGVtIGNhbiBzb21ldGltZXMgYmUKLy8gY29uZnVzaW5nLCBhcyBjYW4gdGhlIGRlYnVnIERPTSBsb2FkZXIncyBhc3luY2hyb25vdXMgbmF0dXJlLgovLwovLyBXaXRoIHRoZSBET00gbG9hZGVyLCBhIGNhbGwgdG8gZ29vZy5yZXF1aXJlKCkgaXMgbm90IGJsb2NraW5nIC0tIHRoZSBzY3JpcHQKLy8gd2lsbCBub3QgbG9hZCB1bnRpbCBzb21lIHBvaW50IGFmdGVyIHRoZSBjdXJyZW50IHNjcmlwdC4gIElmIGEgbmFtZXNwYWNlIGlzCi8vIG5lZWRlZCBhdCBydW50aW1lLCBpdCBuZWVkcyB0byBiZSBkZWZpbmVkIGluIGEgcHJldmlvdXMgc2NyaXB0LCBvciBsb2FkZWQgdmlhCi8vIHJlcXVpcmUoKSB3aXRoIGl0cyByZWdpc3RlcmVkIGRlcGVuZGVuY2llcy4KLy8KLy8gVXNlci1kZWZpbmVkIG5hbWVzcGFjZXMgbWF5IG5lZWQgdGhlaXIgb3duIGRlcHMgZmlsZS4gRm9yIGEgcmVmZXJlbmNlIG9uCi8vIGNyZWF0aW5nIGEgZGVwcyBmaWxlLCBzZWU6Ci8vIEV4dGVybmFsbHk6IGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2Nsb3N1cmUvbGlicmFyeS9kb2NzL2RlcHN3cml0ZXIKLy8KLy8gQmVjYXVzZSBvZiBsZWdhY3kgY2xpZW50cywgdGhlIERPTSBsb2FkZXIgY2FuJ3QgYmUgZWFzaWx5IHJlbW92ZWQgZnJvbQovLyBiYXNlLmpzLiAgV29yayB3YXMgZG9uZSB0byBtYWtlIGl0IGRpc2FibGVhYmxlIG9yIHJlcGxhY2VhYmxlIGZvcgovLyBkaWZmZXJlbnQgZW52aXJvbm1lbnRzIChET00tbGVzcyBKYXZhU2NyaXB0IGludGVycHJldGVycyBsaWtlIFJoaW5vIG9yIFY4LAovLyBmb3IgZXhhbXBsZSkuIFNlZSBib290c3RyYXAvIGZvciBtb3JlIGluZm9ybWF0aW9uLgoKCi8qKgogKiBAZGVmaW5lIHtib29sZWFufSBXaGV0aGVyIHRvIGVuYWJsZSB0aGUgZGVidWcgbG9hZGVyLgogKgogKiBJZiBlbmFibGVkLCBhIGNhbGwgdG8gZ29vZy5yZXF1aXJlKCkgd2lsbCBhdHRlbXB0IHRvIGxvYWQgdGhlIG5hbWVzcGFjZSBieQogKiBhcHBlbmRpbmcgYSBzY3JpcHQgdGFnIHRvIHRoZSBET00gKGlmIHRoZSBuYW1lc3BhY2UgaGFzIGJlZW4gcmVnaXN0ZXJlZCkuCiAqCiAqIElmIGRpc2FibGVkLCBnb29nLnJlcXVpcmUoKSB3aWxsIHNpbXBseSBhc3NlcnQgdGhhdCB0aGUgbmFtZXNwYWNlIGhhcyBiZWVuCiAqIHByb3ZpZGVkIChhbmQgZGVwZW5kIG9uIHRoZSBmYWN0IHRoYXQgc29tZSBvdXRzaWRlIHRvb2wgY29ycmVjdGx5IG9yZGVyZWQKICogdGhlIHNjcmlwdCkuCiAqLwpnb29nLkVOQUJMRV9ERUJVR19MT0FERVIgPSBnb29nLmRlZmluZSgnZ29vZy5FTkFCTEVfREVCVUdfTE9BREVSJywgdHJ1ZSk7CgoKLyoqCiAqIEBwYXJhbSB7c3RyaW5nfSBtc2cKICogQHByaXZhdGUKICovCmdvb2cubG9nVG9Db25zb2xlXyA9IGZ1bmN0aW9uKG1zZykgewogIGlmIChnb29nLmdsb2JhbC5jb25zb2xlKSB7CiAgICBnb29nLmdsb2JhbC5jb25zb2xlWydlcnJvciddKG1zZyk7CiAgfQp9OwoKCi8qKgogKiBJbXBsZW1lbnRzIGEgc3lzdGVtIGZvciB0aGUgZHluYW1pYyByZXNvbHV0aW9uIG9mIGRlcGVuZGVuY2llcyB0aGF0IHdvcmtzIGluCiAqIHBhcmFsbGVsIHdpdGggdGhlIEJVSUxEIHN5c3RlbS4KICoKICogTm90ZSB0aGF0IGFsbCBjYWxscyB0byBnb29nLnJlcXVpcmUgd2lsbCBiZSBzdHJpcHBlZCBieSB0aGUgY29tcGlsZXIuCiAqCiAqIEBzZWUgZ29vZy5wcm92aWRlCiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lc3BhY2UgTmFtZXNwYWNlIChhcyB3YXMgZ2l2ZW4gaW4gZ29vZy5wcm92aWRlLAogKiAgICAgZ29vZy5tb2R1bGUsIG9yIGdvb2cuZGVjbGFyZU1vZHVsZUlkKSBpbiB0aGUgZm9ybQogKiAgICAgImdvb2cucGFja2FnZS5wYXJ0Ii4KICogQHJldHVybiB7P30gSWYgY2FsbGVkIHdpdGhpbiBhIGdvb2cubW9kdWxlIG9yIEVTNiBtb2R1bGUgZmlsZSwgdGhlIGFzc29jaWF0ZWQKICogICAgIG5hbWVzcGFjZSBvciBtb2R1bGUgb3RoZXJ3aXNlIG51bGwuCiAqLwpnb29nLnJlcXVpcmUgPSBmdW5jdGlvbihuYW1lc3BhY2UpIHsKICBpZiAoIUNPTVBJTEVEKSB7CiAgICAvLyBNaWdodCBuZWVkIHRvIGxhenkgbG9hZCBvbiBvbGQgSUUuCiAgICBpZiAoZ29vZy5FTkFCTEVfREVCVUdfTE9BREVSKSB7CiAgICAgIGdvb2cuZGVidWdMb2FkZXJfLnJlcXVlc3RlZChuYW1lc3BhY2UpOwogICAgfQoKICAgIC8vIElmIHRoZSBvYmplY3QgYWxyZWFkeSBleGlzdHMgd2UgZG8gbm90IG5lZWQgdG8gZG8gYW55dGhpbmcuCiAgICBpZiAoZ29vZy5pc1Byb3ZpZGVkXyhuYW1lc3BhY2UpKSB7CiAgICAgIGlmIChnb29nLmlzSW5Nb2R1bGVMb2FkZXJfKCkpIHsKICAgICAgICByZXR1cm4gZ29vZy5tb2R1bGUuZ2V0SW50ZXJuYWxfKG5hbWVzcGFjZSk7CiAgICAgIH0KICAgIH0gZWxzZSBpZiAoZ29vZy5FTkFCTEVfREVCVUdfTE9BREVSKSB7CiAgICAgIHZhciBtb2R1bGVMb2FkZXJTdGF0ZSA9IGdvb2cubW9kdWxlTG9hZGVyU3RhdGVfOwogICAgICBnb29nLm1vZHVsZUxvYWRlclN0YXRlXyA9IG51bGw7CiAgICAgIHRyeSB7CiAgICAgICAgZ29vZy5kZWJ1Z0xvYWRlcl8ubG9hZF8obmFtZXNwYWNlKTsKICAgICAgfSBmaW5hbGx5IHsKICAgICAgICBnb29nLm1vZHVsZUxvYWRlclN0YXRlXyA9IG1vZHVsZUxvYWRlclN0YXRlOwogICAgICB9CiAgICB9CgogICAgcmV0dXJuIG51bGw7CiAgfQp9OwoKCi8qKgogKiBSZXF1aXJlcyBhIHN5bWJvbCBmb3IgaXRzIHR5cGUgaW5mb3JtYXRpb24uIFRoaXMgaXMgYW4gaW5kaWNhdGlvbiB0byB0aGUKICogY29tcGlsZXIgdGhhdCB0aGUgc3ltYm9sIG1heSBhcHBlYXIgaW4gdHlwZSBhbm5vdGF0aW9ucywgeWV0IGl0IGlzIG5vdAogKiByZWZlcmVuY2VkIGF0IHJ1bnRpbWUuCiAqCiAqIFdoZW4gY2FsbGVkIHdpdGhpbiBhIGdvb2cubW9kdWxlIG9yIEVTNiBtb2R1bGUgZmlsZSwgdGhlIHJldHVybiB2YWx1ZSBtYXkgYmUKICogYXNzaWduZWQgdG8gb3IgZGVzdHJ1Y3R1cmVkIGludG8gYSB2YXJpYWJsZSwgYnV0IGl0IG1heSBub3QgYmUgb3RoZXJ3aXNlIHVzZWQKICogaW4gY29kZSBvdXRzaWRlIG9mIGEgdHlwZSBhbm5vdGF0aW9uLgogKgogKiBOb3RlIHRoYXQgYWxsIGNhbGxzIHRvIGdvb2cucmVxdWlyZVR5cGUgd2lsbCBiZSBzdHJpcHBlZCBieSB0aGUgY29tcGlsZXIuCiAqCiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lc3BhY2UgTmFtZXNwYWNlIChhcyB3YXMgZ2l2ZW4gaW4gZ29vZy5wcm92aWRlLAogKiAgICAgZ29vZy5tb2R1bGUsIG9yIGdvb2cuZGVjbGFyZU1vZHVsZUlkKSBpbiB0aGUgZm9ybQogKiAgICAgImdvb2cucGFja2FnZS5wYXJ0Ii4KICogQHJldHVybiB7P30KICovCmdvb2cucmVxdWlyZVR5cGUgPSBmdW5jdGlvbihuYW1lc3BhY2UpIHsKICAvLyBSZXR1cm4gYW4gZW1wdHkgb2JqZWN0IHNvIHRoYXQgc2luZ2xlLWxldmVsIGRlc3RydWN0dXJpbmcgb2YgdGhlIHJldHVybgogIC8vIHZhbHVlIGRvZXNuJ3QgY3Jhc2ggYXQgcnVudGltZSB3aGVuIHVzaW5nIHRoZSBkZWJ1ZyBsb2FkZXIuIE11bHRpLWxldmVsCiAgLy8gZGVzdHJ1Y3R1cmluZyBpc24ndCBzdXBwb3J0ZWQuCiAgcmV0dXJuIHt9Owp9OwoKCi8qKgogKiBQYXRoIGZvciBpbmNsdWRlZCBzY3JpcHRzLgogKiBAdHlwZSB7c3RyaW5nfQogKi8KZ29vZy5iYXNlUGF0aCA9ICcnOwoKCi8qKgogKiBBIGhvb2sgZm9yIG92ZXJyaWRpbmcgdGhlIGJhc2UgcGF0aC4KICogQHR5cGUge3N0cmluZ3x1bmRlZmluZWR9CiAqLwpnb29nLmdsb2JhbC5DTE9TVVJFX0JBU0VfUEFUSDsKCgovKioKICogV2hldGhlciB0byBhdHRlbXB0IHRvIGxvYWQgQ2xvc3VyZSdzIGRlcHMgZmlsZS4gQnkgZGVmYXVsdCwgd2hlbiB1bmNvbXBpbGVkLAogKiBkZXBzIGZpbGVzIHdpbGwgYXR0ZW1wdCB0byBiZSBsb2FkZWQuCiAqIEB0eXBlIHtib29sZWFufHVuZGVmaW5lZH0KICovCmdvb2cuZ2xvYmFsLkNMT1NVUkVfTk9fREVQUzsKCgovKioKICogQSBmdW5jdGlvbiB0byBpbXBvcnQgYSBzaW5nbGUgc2NyaXB0LiBUaGlzIGlzIG1lYW50IHRvIGJlIG92ZXJyaWRkZW4gd2hlbgogKiBDbG9zdXJlIGlzIGJlaW5nIHJ1biBpbiBub24tSFRNTCBjb250ZXh0cywgc3VjaCBhcyB3ZWIgd29ya2Vycy4gSXQncyBkZWZpbmVkCiAqIGluIHRoZSBnbG9iYWwgc2NvcGUgc28gdGhhdCBpdCBjYW4gYmUgc2V0IGJlZm9yZSBiYXNlLmpzIGlzIGxvYWRlZCwgd2hpY2gKICogYWxsb3dzIGRlcHMuanMgdG8gYmUgaW1wb3J0ZWQgcHJvcGVybHkuCiAqCiAqIFRoZSBmaXJzdCBwYXJhbWV0ZXIgdGhlIHNjcmlwdCBzb3VyY2UsIHdoaWNoIGlzIGEgcmVsYXRpdmUgVVJJLiBUaGUgc2Vjb25kLAogKiBvcHRpb25hbCBwYXJhbWV0ZXIgaXMgdGhlIHNjcmlwdCBjb250ZW50cywgaW4gdGhlIGV2ZW50IHRoZSBzY3JpcHQgbmVlZGVkCiAqIHRyYW5zZm9ybWF0aW9uLiBJdCBzaG91bGQgcmV0dXJuIHRydWUgaWYgdGhlIHNjcmlwdCB3YXMgaW1wb3J0ZWQsIGZhbHNlCiAqIG90aGVyd2lzZS4KICogQHR5cGUgeyhmdW5jdGlvbihzdHJpbmcsIHN0cmluZz0pOiBib29sZWFuKXx1bmRlZmluZWR9CiAqLwpnb29nLmdsb2JhbC5DTE9TVVJFX0lNUE9SVF9TQ1JJUFQ7CgoKLyoqCiAqIE51bGwgZnVuY3Rpb24gdXNlZCBmb3IgZGVmYXVsdCB2YWx1ZXMgb2YgY2FsbGJhY2tzLCBldGMuCiAqIEByZXR1cm4ge3ZvaWR9IE5vdGhpbmcuCiAqLwpnb29nLm51bGxGdW5jdGlvbiA9IGZ1bmN0aW9uKCkge307CgoKLyoqCiAqIFdoZW4gZGVmaW5pbmcgYSBjbGFzcyBGb28gd2l0aCBhbiBhYnN0cmFjdCBtZXRob2QgYmFyKCksIHlvdSBjYW4gZG86CiAqIEZvby5wcm90b3R5cGUuYmFyID0gZ29vZy5hYnN0cmFjdE1ldGhvZAogKgogKiBOb3cgaWYgYSBzdWJjbGFzcyBvZiBGb28gZmFpbHMgdG8gb3ZlcnJpZGUgYmFyKCksIGFuIGVycm9yIHdpbGwgYmUgdGhyb3duCiAqIHdoZW4gYmFyKCkgaXMgaW52b2tlZC4KICoKICogQHR5cGUgeyFGdW5jdGlvbn0KICogQHRocm93cyB7RXJyb3J9IHdoZW4gaW52b2tlZCB0byBpbmRpY2F0ZSB0aGUgbWV0aG9kIHNob3VsZCBiZSBvdmVycmlkZGVuLgogKiBAZGVwcmVjYXRlZCBVc2UgIkBhYnN0cmFjdCIgYW5ub3RhdGlvbiBpbnN0ZWFkIG9mIGdvb2cuYWJzdHJhY3RNZXRob2QgaW4gbmV3CiAqICAgICBjb2RlLiBTZWUKICogICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvY2xvc3VyZS1jb21waWxlci93aWtpL0BhYnN0cmFjdC1jbGFzc2VzLWFuZC1tZXRob2RzCiAqLwpnb29nLmFic3RyYWN0TWV0aG9kID0gZnVuY3Rpb24oKSB7CiAgdGhyb3cgbmV3IEVycm9yKCd1bmltcGxlbWVudGVkIGFic3RyYWN0IG1ldGhvZCcpOwp9OwoKCi8qKgogKiBBZGRzIGEgYGdldEluc3RhbmNlYCBzdGF0aWMgbWV0aG9kIHRoYXQgYWx3YXlzIHJldHVybnMgdGhlIHNhbWUKICogaW5zdGFuY2Ugb2JqZWN0LgogKiBAcGFyYW0geyFGdW5jdGlvbn0gY3RvciBUaGUgY29uc3RydWN0b3IgZm9yIHRoZSBjbGFzcyB0byBhZGQgdGhlIHN0YXRpYwogKiAgICAgbWV0aG9kIHRvLgogKiBAc3VwcHJlc3Mge21pc3NpbmdQcm9wZXJ0aWVzfSAnaW5zdGFuY2VfJyBpc24ndCBhIHByb3BlcnR5IG9uICdGdW5jdGlvbicKICogICAgIGJ1dCB3ZSBkb24ndCBoYXZlIGEgYmV0dGVyIHR5cGUgdG8gdXNlIGhlcmUuCiAqLwpnb29nLmFkZFNpbmdsZXRvbkdldHRlciA9IGZ1bmN0aW9uKGN0b3IpIHsKICAvLyBpbnN0YW5jZV8gaXMgaW1tZWRpYXRlbHkgc2V0IHRvIHByZXZlbnQgaXNzdWVzIHdpdGggc2VhbGVkIGNvbnN0cnVjdG9ycwogIC8vIHN1Y2ggYXMgYXJlIGVuY291bnRlcmVkIHdoZW4gYSBjb25zdHJ1Y3RvciBpcyByZXR1cm5lZCBhcyB0aGUgZXhwb3J0IG9iamVjdAogIC8vIG9mIGEgZ29vZy5tb2R1bGUgaW4gdW5vcHRpbWl6ZWQgY29kZS4KICAvLyBEZWxjYXJlIHR5cGUgdG8gYXZvaWQgY29uZm9ybWFuY2UgdmlvbGF0aW9ucyB0aGF0IGN0b3IuaW5zdGFuY2VfIGlzIHVua25vd24KICAvKiogQHR5cGUge3VuZGVmaW5lZHwhT2JqZWN0fSBAc3VwcHJlc3Mge3VuZGVyc2NvcmV9ICovCiAgY3Rvci5pbnN0YW5jZV8gPSB1bmRlZmluZWQ7CiAgY3Rvci5nZXRJbnN0YW5jZSA9IGZ1bmN0aW9uKCkgewogICAgaWYgKGN0b3IuaW5zdGFuY2VfKSB7CiAgICAgIHJldHVybiBjdG9yLmluc3RhbmNlXzsKICAgIH0KICAgIGlmIChnb29nLkRFQlVHKSB7CiAgICAgIC8vIE5PVEU6IEpTQ29tcGlsZXIgY2FuJ3Qgb3B0aW1pemUgYXdheSBBcnJheSNwdXNoLgogICAgICBnb29nLmluc3RhbnRpYXRlZFNpbmdsZXRvbnNfW2dvb2cuaW5zdGFudGlhdGVkU2luZ2xldG9uc18ubGVuZ3RoXSA9IGN0b3I7CiAgICB9CiAgICAvLyBDYXN0IHRvIGF2b2lkIGNvbmZvcm1hbmNlIHZpb2xhdGlvbnMgdGhhdCBjdG9yLmluc3RhbmNlXyBpcyB1bmtub3duCiAgICByZXR1cm4gLyoqIEB0eXBlIHshT2JqZWN0fHVuZGVmaW5lZH0gKi8gKGN0b3IuaW5zdGFuY2VfKSA9IG5ldyBjdG9yOwogIH07Cn07CgoKLyoqCiAqIEFsbCBzaW5nbGV0b24gY2xhc3NlcyB0aGF0IGhhdmUgYmVlbiBpbnN0YW50aWF0ZWQsIGZvciB0ZXN0aW5nLiBEb24ndCByZWFkCiAqIGl0IGRpcmVjdGx5LCB1c2UgdGhlIGBnb29nLnRlc3Rpbmcuc2luZ2xldG9uYCBtb2R1bGUuIFRoZSBjb21waWxlcgogKiByZW1vdmVzIHRoaXMgdmFyaWFibGUgaWYgdW51c2VkLgogKiBAdHlwZSB7IUFycmF5PCFGdW5jdGlvbj59CiAqIEBwcml2YXRlCiAqLwpnb29nLmluc3RhbnRpYXRlZFNpbmdsZXRvbnNfID0gW107CgoKLyoqCiAqIEBkZWZpbmUge2Jvb2xlYW59IFdoZXRoZXIgdG8gbG9hZCBnb29nLm1vZHVsZXMgdXNpbmcgYGV2YWxgIHdoZW4gdXNpbmcKICogdGhlIGRlYnVnIGxvYWRlci4gIFRoaXMgcHJvdmlkZXMgYSBiZXR0ZXIgZGVidWdnaW5nIGV4cGVyaWVuY2UgYXMgdGhlCiAqIHNvdXJjZSBpcyB1bm1vZGlmaWVkIGFuZCBjYW4gYmUgZWRpdGVkIHVzaW5nIENocm9tZSBXb3Jrc3BhY2VzIG9yIHNpbWlsYXIuCiAqIEhvd2V2ZXIgaW4gc29tZSBlbnZpcm9ubWVudHMgdGhlIHVzZSBvZiBgZXZhbGAgaXMgYmFubmVkCiAqIHNvIHdlIHByb3ZpZGUgYW4gYWx0ZXJuYXRpdmUuCiAqLwpnb29nLkxPQURfTU9EVUxFX1VTSU5HX0VWQUwgPSBnb29nLmRlZmluZSgnZ29vZy5MT0FEX01PRFVMRV9VU0lOR19FVkFMJywgdHJ1ZSk7CgoKLyoqCiAqIEBkZWZpbmUge2Jvb2xlYW59IFdoZXRoZXIgdGhlIGV4cG9ydHMgb2YgZ29vZy5tb2R1bGVzIHNob3VsZCBiZSBzZWFsZWQgd2hlbgogKiBwb3NzaWJsZS4KICovCmdvb2cuU0VBTF9NT0RVTEVfRVhQT1JUUyA9IGdvb2cuZGVmaW5lKCdnb29nLlNFQUxfTU9EVUxFX0VYUE9SVFMnLCBnb29nLkRFQlVHKTsKCgovKioKICogVGhlIHJlZ2lzdHJ5IG9mIGluaXRpYWxpemVkIG1vZHVsZXM6CiAqIFRoZSBtb2R1bGUgaWRlbnRpZmllciBvciBwYXRoIHRvIG1vZHVsZSBleHBvcnRzIG1hcC4KICogQHByaXZhdGUgQGNvbnN0IHshT2JqZWN0PHN0cmluZywge2V4cG9ydHM6Pyx0eXBlOnN0cmluZyxtb2R1bGVJZDpzdHJpbmd9Pn0KICovCmdvb2cubG9hZGVkTW9kdWxlc18gPSB7fTsKCgovKioKICogVHJ1ZSBpZiB0aGUgZGVidWcgbG9hZGVyIGVuYWJsZWQgYW5kIHVzZWQuCiAqIEBjb25zdCB7Ym9vbGVhbn0KICovCmdvb2cuREVQRU5ERU5DSUVTX0VOQUJMRUQgPSAhQ09NUElMRUQgJiYgZ29vZy5FTkFCTEVfREVCVUdfTE9BREVSOwoKCi8qKgogKiBAZGVmaW5lIHtzdHJpbmd9IEhvdyB0byBkZWNpZGUgd2hldGhlciB0byB0cmFuc3BpbGUuICBWYWxpZCB2YWx1ZXMKICogYXJlICdhbHdheXMnLCAnbmV2ZXInLCBhbmQgJ2RldGVjdCcuICBUaGUgZGVmYXVsdCAoJ2RldGVjdCcpIGlzIHRvCiAqIHVzZSBmZWF0dXJlIGRldGVjdGlvbiB0byBkZXRlcm1pbmUgd2hpY2ggbGFuZ3VhZ2UgbGV2ZWxzIG5lZWQKICogdHJhbnNwaWxhdGlvbi4KICovCi8vIE5PVEUoc2RoKTogd2UgY291bGQgZXhwYW5kIHRoaXMgdG8gYWNjZXB0IGEgbGFuZ3VhZ2UgbGV2ZWwgdG8gYnlwYXNzCi8vIGRldGVjdGlvbjogZS5nLiBnb29nLlRSQU5TUElMRSA9PSAnZXM1JyB3b3VsZCB0cmFuc3BpbGUgRVM2IGZpbGVzIGJ1dAovLyB3b3VsZCBsZWF2ZSBFUzMgYW5kIEVTNSBmaWxlcyBhbG9uZS4KZ29vZy5UUkFOU1BJTEUgPSBnb29nLmRlZmluZSgnZ29vZy5UUkFOU1BJTEUnLCAnZGV0ZWN0Jyk7CgovKioKICogQGRlZmluZSB7Ym9vbGVhbn0gSWYgdHJ1ZSBhc3N1bWUgdGhhdCBFUyBtb2R1bGVzIGhhdmUgYWxyZWFkeSBiZWVuCiAqIHRyYW5zcGlsZWQgYnkgdGhlIGpzY29tcGlsZXIgKGluIHRoZSBzYW1lIHdheSB0aGF0IHRyYW5zcGlsZS5qcyB3b3VsZAogKiB0cmFuc3BpbGUgdGhlbSAtIHRvIGpzY29tcCBtb2R1bGVzKS4gVXNlZnVsIG9ubHkgZm9yIHNlcnZlcnMgdGhhdCB3aXNoIHRvIHVzZQogKiB0aGUgZGVidWcgbG9hZGVyIGFuZCB0cmFuc3BpbGUgc2VydmVyIHNpZGUuIFRodXMgdGhpcyBpcyBvbmx5IHJlc3BlY3RlZCBpZgogKiBnb29nLlRSQU5TUElMRSBpcyAibmV2ZXIiLgogKi8KZ29vZy5BU1NVTUVfRVNfTU9EVUxFU19UUkFOU1BJTEVEID0KICAgIGdvb2cuZGVmaW5lKCdnb29nLkFTU1VNRV9FU19NT0RVTEVTX1RSQU5TUElMRUQnLCBmYWxzZSk7CgoKLyoqCiAqIEBkZWZpbmUge3N0cmluZ30gSWYgYSBmaWxlIG5lZWRzIHRvIGJlIHRyYW5zcGlsZWQgd2hhdCB0aGUgb3V0cHV0IGxhbmd1YWdlCiAqIHNob3VsZCBiZS4gQnkgZGVmYXVsdCB0aGlzIGlzIHRoZSBoaWdoZXN0IGxhbmd1YWdlIGxldmVsIHRoaXMgZmlsZSBkZXRlY3RzCiAqIHRoZSBjdXJyZW50IGVudmlyb25tZW50IHN1cHBvcnRzLiBHZW5lcmFsbHkgdGhpcyBmbGFnIHNob3VsZCBub3QgYmUgc2V0LCBidXQKICogaXQgY291bGQgYmUgdXNlZnVsIHRvIG92ZXJyaWRlLiBFeGFtcGxlOiBJZiB0aGUgY3VycmVudCBlbnZpcm9ubWVudCBzdXBwb3J0cwogKiBFUzYgdGhlbiBieSBkZWZhdWx0IEVTNysgZmlsZXMgd2lsbCBiZSB0cmFuc3BpbGVkIHRvIEVTNiwgdW5sZXNzIHRoaXMgaXMKICogb3ZlcnJpZGRlbi4KICoKICogVmFsaWQgdmFsdWVzIGluY2x1ZGU6IGVzMywgZXM1LCBlczYsIGVzNywgYW5kIGVzOC4gQW55dGhpbmcgbm90IHJlY29nbml6ZWQKICogaXMgdHJlYXRlZCBhcyBlczMuCiAqCiAqIE5vdGUgdGhhdCBzZXR0aW5nIHRoaXMgdmFsdWUgZG9lcyBub3QgZm9yY2UgdHJhbnNwaWxhdGlvbi4gSnVzdCBpZgogKiB0cmFuc3BpbGF0aW9uIG9jY3VycyB0aGlzIHdpbGwgYmUgdGhlIG91dHB1dC4gU28gdGhpcyBpcyBtb3N0IHVzZWZ1bCB3aGVuCiAqIGdvb2cuVFJBTlNQSUxFIGlzIHNldCB0byAnYWx3YXlzJyBhbmQgdGhlbiBmb3JjaW5nIHRoZSBsYW5ndWFnZSBsZXZlbCB0byBiZQogKiBzb21ldGhpbmcgbG93ZXIgdGhhbiB3aGF0IHRoZSBlbnZpcm9ubWVudCBkZXRlY3RzLgogKi8KZ29vZy5UUkFOU1BJTEVfVE9fTEFOR1VBR0UgPSBnb29nLmRlZmluZSgnZ29vZy5UUkFOU1BJTEVfVE9fTEFOR1VBR0UnLCAnJyk7CgoKLyoqCiAqIEBkZWZpbmUge3N0cmluZ30gUGF0aCB0byB0aGUgdHJhbnNwaWxlci4gIEV4ZWN1dGluZyB0aGUgc2NyaXB0IGF0IHRoaXMKICogcGF0aCAocmVsYXRpdmUgdG8gYmFzZS5qcykgc2hvdWxkIGRlZmluZSBhIGZ1bmN0aW9uICRqc2NvbXAudHJhbnNwaWxlLgogKi8KZ29vZy5UUkFOU1BJTEVSID0gZ29vZy5kZWZpbmUoJ2dvb2cuVFJBTlNQSUxFUicsICd0cmFuc3BpbGUuanMnKTsKCgovKioKICogQHBhY2thZ2Ugez9ib29sZWFufQogKiBWaXNpYmxlIGZvciB0ZXN0aW5nLgogKi8KZ29vZy5oYXNCYWRMZXRTY29waW5nID0gbnVsbDsKCgovKioKICogQHJldHVybiB7Ym9vbGVhbn0KICogQHBhY2thZ2UgVmlzaWJsZSBmb3IgdGVzdGluZy4KICovCmdvb2cudXNlU2FmYXJpMTBXb3JrYXJvdW5kID0gZnVuY3Rpb24oKSB7CiAgaWYgKGdvb2cuaGFzQmFkTGV0U2NvcGluZyA9PSBudWxsKSB7CiAgICB2YXIgaGFzQmFkTGV0U2NvcGluZzsKICAgIHRyeSB7CiAgICAgIGhhc0JhZExldFNjb3BpbmcgPSAhZXZhbCgKICAgICAgICAgICcidXNlIHN0cmljdCI7JyArCiAgICAgICAgICAnbGV0IHggPSAxOyBmdW5jdGlvbiBmKCkgeyByZXR1cm4gdHlwZW9mIHg7IH07JyArCiAgICAgICAgICAnZigpID09ICJudW1iZXIiOycpOwogICAgfSBjYXRjaCAoZSkgewogICAgICAvLyBBc3N1bWUgdGhhdCBFUzYgc3ludGF4IGlzbid0IHN1cHBvcnRlZC4KICAgICAgaGFzQmFkTGV0U2NvcGluZyA9IGZhbHNlOwogICAgfQogICAgZ29vZy5oYXNCYWRMZXRTY29waW5nID0gaGFzQmFkTGV0U2NvcGluZzsKICB9CiAgcmV0dXJuIGdvb2cuaGFzQmFkTGV0U2NvcGluZzsKfTsKCgovKioKICogQHBhcmFtIHtzdHJpbmd9IG1vZHVsZURlZgogKiBAcmV0dXJuIHtzdHJpbmd9CiAqIEBwYWNrYWdlIFZpc2libGUgZm9yIHRlc3RpbmcuCiAqLwpnb29nLndvcmthcm91bmRTYWZhcmkxMEV2YWxCdWcgPSBmdW5jdGlvbihtb2R1bGVEZWYpIHsKICByZXR1cm4gJyhmdW5jdGlvbigpeycgKyBtb2R1bGVEZWYgKwogICAgICAnXG4nICsgIC8vIFRlcm1pbmF0ZSBhbnkgdHJhaWxpbmcgc2luZ2xlIGxpbmUgY29tbWVudC4KICAgICAgJzsnICsgICAvLyBUZXJtaW5hdGUgYW55IHRyYWlsaW5nIGV4cHJlc3Npb24uCiAgICAgICd9KSgpO1xuJzsKfTsKCgovKioKICogQHBhcmFtIHtmdW5jdGlvbig/KTo/fHN0cmluZ30gbW9kdWxlRGVmIFRoZSBtb2R1bGUgZGVmaW5pdGlvbi4KICovCmdvb2cubG9hZE1vZHVsZSA9IGZ1bmN0aW9uKG1vZHVsZURlZikgewogIC8vIE5PVEU6IHdlIGFsbG93IGZ1bmN0aW9uIGRlZmluaXRpb25zIHRvIGJlIGVpdGhlciBpbiB0aGUgZnJvbQogIC8vIG9mIGEgc3RyaW5nIHRvIGV2YWwgKHdoaWNoIGtlZXBzIHRoZSBvcmlnaW5hbCBzb3VyY2UgaW50YWN0KSBvcgogIC8vIGluIGEgZXZhbCBmb3JiaWRkZW4gZW52aXJvbm1lbnQgKENTUCkgd2UgYWxsb3cgYSBmdW5jdGlvbiBkZWZpbml0aW9uCiAgLy8gd2hpY2ggaW4gaXRzIGJvZHkgbXVzdCBjYWxsIGBnb29nLm1vZHVsZWAsIGFuZCByZXR1cm4gdGhlIGV4cG9ydHMKICAvLyBvZiB0aGUgbW9kdWxlLgogIHZhciBwcmV2aW91c1N0YXRlID0gZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV87CiAgdHJ5IHsKICAgIGdvb2cubW9kdWxlTG9hZGVyU3RhdGVfID0gewogICAgICBtb2R1bGVOYW1lOiAnJywKICAgICAgZGVjbGFyZUxlZ2FjeU5hbWVzcGFjZTogZmFsc2UsCiAgICAgIHR5cGU6IGdvb2cuTW9kdWxlVHlwZS5HT09HCiAgICB9OwogICAgdmFyIGV4cG9ydHM7CiAgICBpZiAoZ29vZy5pc0Z1bmN0aW9uKG1vZHVsZURlZikpIHsKICAgICAgZXhwb3J0cyA9IG1vZHVsZURlZi5jYWxsKHVuZGVmaW5lZCwge30pOwogICAgfSBlbHNlIGlmICh0eXBlb2YgbW9kdWxlRGVmID09PSAnc3RyaW5nJykgewogICAgICBpZiAoZ29vZy51c2VTYWZhcmkxMFdvcmthcm91bmQoKSkgewogICAgICAgIG1vZHVsZURlZiA9IGdvb2cud29ya2Fyb3VuZFNhZmFyaTEwRXZhbEJ1Zyhtb2R1bGVEZWYpOwogICAgICB9CgogICAgICBleHBvcnRzID0gZ29vZy5sb2FkTW9kdWxlRnJvbVNvdXJjZV8uY2FsbCh1bmRlZmluZWQsIG1vZHVsZURlZik7CiAgICB9IGVsc2UgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbW9kdWxlIGRlZmluaXRpb24nKTsKICAgIH0KCiAgICB2YXIgbW9kdWxlTmFtZSA9IGdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLm1vZHVsZU5hbWU7CiAgICBpZiAodHlwZW9mIG1vZHVsZU5hbWUgPT09ICdzdHJpbmcnICYmIG1vZHVsZU5hbWUpIHsKICAgICAgLy8gRG9uJ3Qgc2VhbCBsZWdhY3kgbmFtZXNwYWNlcyBhcyB0aGV5IG1heSBiZSB1c2VkIGFzIGEgcGFyZW50IG9mCiAgICAgIC8vIGFub3RoZXIgbmFtZXNwYWNlCiAgICAgIGlmIChnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5kZWNsYXJlTGVnYWN5TmFtZXNwYWNlKSB7CiAgICAgICAgZ29vZy5jb25zdHJ1Y3ROYW1lc3BhY2VfKG1vZHVsZU5hbWUsIGV4cG9ydHMpOwogICAgICB9IGVsc2UgaWYgKAogICAgICAgICAgZ29vZy5TRUFMX01PRFVMRV9FWFBPUlRTICYmIE9iamVjdC5zZWFsICYmCiAgICAgICAgICB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICE9IG51bGwpIHsKICAgICAgICBPYmplY3Quc2VhbChleHBvcnRzKTsKICAgICAgfQoKICAgICAgdmFyIGRhdGEgPSB7CiAgICAgICAgZXhwb3J0czogZXhwb3J0cywKICAgICAgICB0eXBlOiBnb29nLk1vZHVsZVR5cGUuR09PRywKICAgICAgICBtb2R1bGVJZDogZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8ubW9kdWxlTmFtZQogICAgICB9OwogICAgICBnb29nLmxvYWRlZE1vZHVsZXNfW21vZHVsZU5hbWVdID0gZGF0YTsKICAgIH0gZWxzZSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBtb2R1bGUgbmFtZSBcIicgKyBtb2R1bGVOYW1lICsgJ1wiJyk7CiAgICB9CiAgfSBmaW5hbGx5IHsKICAgIGdvb2cubW9kdWxlTG9hZGVyU3RhdGVfID0gcHJldmlvdXNTdGF0ZTsKICB9Cn07CgoKLyoqCiAqIEBwcml2YXRlIEBjb25zdAogKi8KZ29vZy5sb2FkTW9kdWxlRnJvbVNvdXJjZV8gPSAvKiogQHR5cGUge2Z1bmN0aW9uKHN0cmluZyk6P30gKi8gKGZ1bmN0aW9uKCkgewogIC8vIE5PVEU6IHdlIGF2b2lkIGRlY2xhcmluZyBwYXJhbWV0ZXJzIG9yIGxvY2FsIHZhcmlhYmxlcyBoZXJlIHRvIGF2b2lkCiAgLy8gbWFza2luZyBnbG9iYWxzIG9yIGxlYWtpbmcgdmFsdWVzIGludG8gdGhlIG1vZHVsZSBkZWZpbml0aW9uLgogICd1c2Ugc3RyaWN0JzsKICB2YXIgZXhwb3J0cyA9IHt9OwogIGV2YWwoYXJndW1lbnRzWzBdKTsKICByZXR1cm4gZXhwb3J0czsKfSk7CgoKLyoqCiAqIE5vcm1hbGl6ZSBhIGZpbGUgcGF0aCBieSByZW1vdmluZyByZWR1bmRhbnQgIi4uIiBhbmQgZXh0cmFuZW91cyAiLiIgZmlsZQogKiBwYXRoIGNvbXBvbmVudHMuCiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoCiAqIEByZXR1cm4ge3N0cmluZ30KICogQHByaXZhdGUKICovCmdvb2cubm9ybWFsaXplUGF0aF8gPSBmdW5jdGlvbihwYXRoKSB7CiAgdmFyIGNvbXBvbmVudHMgPSBwYXRoLnNwbGl0KCcvJyk7CiAgdmFyIGkgPSAwOwogIHdoaWxlIChpIDwgY29tcG9uZW50cy5sZW5ndGgpIHsKICAgIGlmIChjb21wb25lbnRzW2ldID09ICcuJykgewogICAgICBjb21wb25lbnRzLnNwbGljZShpLCAxKTsKICAgIH0gZWxzZSBpZiAoCiAgICAgICAgaSAmJiBjb21wb25lbnRzW2ldID09ICcuLicgJiYgY29tcG9uZW50c1tpIC0gMV0gJiYKICAgICAgICBjb21wb25lbnRzW2kgLSAxXSAhPSAnLi4nKSB7CiAgICAgIGNvbXBvbmVudHMuc3BsaWNlKC0taSwgMik7CiAgICB9IGVsc2UgewogICAgICBpKys7CiAgICB9CiAgfQogIHJldHVybiBjb21wb25lbnRzLmpvaW4oJy8nKTsKfTsKCgovKioKICogUHJvdmlkZXMgYSBob29rIGZvciBsb2FkaW5nIGEgZmlsZSB3aGVuIHVzaW5nIENsb3N1cmUncyBnb29nLnJlcXVpcmUoKSBBUEkKICogd2l0aCBnb29nLm1vZHVsZXMuICBJbiBwYXJ0aWN1bGFyIHRoaXMgaG9vayBpcyBwcm92aWRlZCB0byBzdXBwb3J0IE5vZGUuanMuCiAqCiAqIEB0eXBlIHsoZnVuY3Rpb24oc3RyaW5nKTpzdHJpbmcpfHVuZGVmaW5lZH0KICovCmdvb2cuZ2xvYmFsLkNMT1NVUkVfTE9BRF9GSUxFX1NZTkM7CgoKLyoqCiAqIExvYWRzIGZpbGUgYnkgc3luY2hyb25vdXMgWEhSLiBTaG91bGQgbm90IGJlIHVzZWQgaW4gcHJvZHVjdGlvbiBlbnZpcm9ubWVudHMuCiAqIEBwYXJhbSB7c3RyaW5nfSBzcmMgU291cmNlIFVSTC4KICogQHJldHVybiB7P3N0cmluZ30gRmlsZSBjb250ZW50cywgb3IgbnVsbCBpZiBsb2FkIGZhaWxlZC4KICogQHByaXZhdGUKICovCmdvb2cubG9hZEZpbGVTeW5jXyA9IGZ1bmN0aW9uKHNyYykgewogIGlmIChnb29nLmdsb2JhbC5DTE9TVVJFX0xPQURfRklMRV9TWU5DKSB7CiAgICByZXR1cm4gZ29vZy5nbG9iYWwuQ0xPU1VSRV9MT0FEX0ZJTEVfU1lOQyhzcmMpOwogIH0gZWxzZSB7CiAgICB0cnkgewogICAgICAvKiogQHR5cGUge1hNTEh0dHBSZXF1ZXN0fSAqLwogICAgICB2YXIgeGhyID0gbmV3IGdvb2cuZ2xvYmFsWydYTUxIdHRwUmVxdWVzdCddKCk7CiAgICAgIHhoci5vcGVuKCdnZXQnLCBzcmMsIGZhbHNlKTsKICAgICAgeGhyLnNlbmQoKTsKICAgICAgLy8gTk9URTogU3VjY2Vzc2Z1bCBodHRwOiByZXF1ZXN0cyBoYXZlIGEgc3RhdHVzIG9mIDIwMCwgYnV0IHN1Y2Nlc3NmdWwKICAgICAgLy8gZmlsZTogcmVxdWVzdHMgbWF5IGhhdmUgYSBzdGF0dXMgb2YgemVyby4gIEFueSBvdGhlciBzdGF0dXMsIG9yIGEKICAgICAgLy8gdGhyb3duIGV4Y2VwdGlvbiAocGFydGljdWxhcmx5IGluIGNhc2Ugb2YgZmlsZTogcmVxdWVzdHMpIGluZGljYXRlcwogICAgICAvLyBzb21lIHNvcnQgb2YgZXJyb3IsIHdoaWNoIHdlIHRyZWF0IGFzIGEgbWlzc2luZyBvciB1bmF2YWlsYWJsZSBmaWxlLgogICAgICByZXR1cm4geGhyLnN0YXR1cyA9PSAwIHx8IHhoci5zdGF0dXMgPT0gMjAwID8geGhyLnJlc3BvbnNlVGV4dCA6IG51bGw7CiAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgLy8gTm8gbmVlZCB0byByZXRocm93IG9yIGxvZywgc2luY2UgZXJyb3JzIHNob3VsZCBzaG93IHVwIG9uIHRoZWlyIG93bi4KICAgICAgcmV0dXJuIG51bGw7CiAgICB9CiAgfQp9OwoKCi8qKgogKiBMYXppbHkgcmV0cmlldmVzIHRoZSB0cmFuc3BpbGVyIGFuZCBhcHBsaWVzIGl0IHRvIHRoZSBzb3VyY2UuCiAqIEBwYXJhbSB7c3RyaW5nfSBjb2RlIEpTIGNvZGUuCiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFBhdGggdG8gdGhlIGNvZGUuCiAqIEBwYXJhbSB7c3RyaW5nfSB0YXJnZXQgTGFuZ3VhZ2UgbGV2ZWwgb3V0cHV0LgogKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSB0cmFuc3BpbGVkIGNvZGUuCiAqIEBwcml2YXRlCiAqLwpnb29nLnRyYW5zcGlsZV8gPSBmdW5jdGlvbihjb2RlLCBwYXRoLCB0YXJnZXQpIHsKICB2YXIganNjb21wID0gZ29vZy5nbG9iYWxbJyRqc2NvbXAnXTsKICBpZiAoIWpzY29tcCkgewogICAgZ29vZy5nbG9iYWxbJyRqc2NvbXAnXSA9IGpzY29tcCA9IHt9OwogIH0KICB2YXIgdHJhbnNwaWxlID0ganNjb21wLnRyYW5zcGlsZTsKICBpZiAoIXRyYW5zcGlsZSkgewogICAgdmFyIHRyYW5zcGlsZXJQYXRoID0gZ29vZy5iYXNlUGF0aCArIGdvb2cuVFJBTlNQSUxFUjsKICAgIHZhciB0cmFuc3BpbGVyQ29kZSA9IGdvb2cubG9hZEZpbGVTeW5jXyh0cmFuc3BpbGVyUGF0aCk7CiAgICBpZiAodHJhbnNwaWxlckNvZGUpIHsKICAgICAgLy8gVGhpcyBtdXN0IGJlIGV4ZWN1dGVkIHN5bmNocm9ub3VzbHksIHNpbmNlIGJ5IHRoZSB0aW1lIHdlIGtub3cgd2UKICAgICAgLy8gbmVlZCBpdCwgd2UncmUgYWJvdXQgdG8gbG9hZCBhbmQgd3JpdGUgdGhlIEVTNiBjb2RlIHN5bmNocm9ub3VzbHksCiAgICAgIC8vIHNvIGEgbm9ybWFsIHNjcmlwdC10YWcgbG9hZCB3aWxsIGJlIHRvbyBzbG93LiBXcmFwcGVkIGluIGEgZnVuY3Rpb24KICAgICAgLy8gc28gdGhhdCBjb2RlIGlzIGV2YWwnZCBpbiB0aGUgZ2xvYmFsIHNjb3BlLgogICAgICAoZnVuY3Rpb24oKSB7CiAgICAgICAgKDAsIGV2YWwpKHRyYW5zcGlsZXJDb2RlICsgJ1xuLy8jIHNvdXJjZVVSTD0nICsgdHJhbnNwaWxlclBhdGgpOwogICAgICB9KS5jYWxsKGdvb2cuZ2xvYmFsKTsKICAgICAgLy8gRXZlbiB0aG91Z2ggdGhlIHRyYW5zcGlsZXIgaXMgb3B0aW9uYWwsIGlmICRnd3RFeHBvcnQgaXMgZm91bmQsIGl0J3MKICAgICAgLy8gYSBzaWduIHRoZSB0cmFuc3BpbGVyIHdhcyBsb2FkZWQgYW5kIHRoZSAkanNjb21wLnRyYW5zcGlsZSAqc2hvdWxkKgogICAgICAvLyBiZSB0aGVyZS4KICAgICAgaWYgKGdvb2cuZ2xvYmFsWyckZ3d0RXhwb3J0J10gJiYgZ29vZy5nbG9iYWxbJyRnd3RFeHBvcnQnXVsnJGpzY29tcCddICYmCiAgICAgICAgICAhZ29vZy5nbG9iYWxbJyRnd3RFeHBvcnQnXVsnJGpzY29tcCddWyd0cmFuc3BpbGUnXSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcigKICAgICAgICAgICAgJ1RoZSB0cmFuc3BpbGVyIGRpZCBub3QgcHJvcGVybHkgZXhwb3J0IHRoZSAidHJhbnNwaWxlIiAnICsKICAgICAgICAgICAgJ21ldGhvZC4gJGd3dEV4cG9ydDogJyArIEpTT04uc3RyaW5naWZ5KGdvb2cuZ2xvYmFsWyckZ3d0RXhwb3J0J10pKTsKICAgICAgfQogICAgICAvLyB0cmFuc3BpbGUuanMgb25seSBleHBvcnRzIGEgc2luZ2xlICRqc2NvbXAgZnVuY3Rpb24sIHRyYW5zcGlsZS4gV2UKICAgICAgLy8gZ3JhYiBqdXN0IHRoYXQgYW5kIGFkZCBpdCB0byB0aGUgZXhpc3RpbmcgZGVmaW5pdGlvbiBvZiAkanNjb21wIHdoaWNoCiAgICAgIC8vIGNvbnRhaW5zIHRoZSBwb2x5ZmlsbHMuCiAgICAgIGdvb2cuZ2xvYmFsWyckanNjb21wJ10udHJhbnNwaWxlID0KICAgICAgICAgIGdvb2cuZ2xvYmFsWyckZ3d0RXhwb3J0J11bJyRqc2NvbXAnXVsndHJhbnNwaWxlJ107CiAgICAgIGpzY29tcCA9IGdvb2cuZ2xvYmFsWyckanNjb21wJ107CiAgICAgIHRyYW5zcGlsZSA9IGpzY29tcC50cmFuc3BpbGU7CiAgICB9CiAgfQogIGlmICghdHJhbnNwaWxlKSB7CiAgICAvLyBUaGUgdHJhbnNwaWxlciBpcyBhbiBvcHRpb25hbCBjb21wb25lbnQuICBJZiBpdCdzIG5vdCBhdmFpbGFibGUgdGhlbgogICAgLy8gcmVwbGFjZSBpdCB3aXRoIGEgcGFzcy10aHJvdWdoIGZ1bmN0aW9uIHRoYXQgc2ltcGx5IGxvZ3MuCiAgICB2YXIgc3VmZml4ID0gJyByZXF1aXJlcyB0cmFuc3BpbGF0aW9uIGJ1dCBubyB0cmFuc3BpbGVyIHdhcyBmb3VuZC4nOwogICAgdHJhbnNwaWxlID0ganNjb21wLnRyYW5zcGlsZSA9IGZ1bmN0aW9uKGNvZGUsIHBhdGgpIHsKICAgICAgLy8gVE9ETyhzZGgpOiBmaWd1cmUgb3V0IHNvbWUgd2F5IHRvIGdldCB0aGlzIGVycm9yIHRvIHNob3cgdXAKICAgICAgLy8gaW4gdGVzdCByZXN1bHRzLCBub3RpbmcgdGhhdCB0aGUgZmFpbHVyZSBtYXkgb2NjdXIgaW4gbWFueQogICAgICAvLyBkaWZmZXJlbnQgd2F5cywgaW5jbHVkaW5nIGluIGxvYWRNb2R1bGUoKSBiZWZvcmUgdGhlIHRlc3QKICAgICAgLy8gcnVubmVyIGV2ZW4gY29tZXMgdXAuCiAgICAgIGdvb2cubG9nVG9Db25zb2xlXyhwYXRoICsgc3VmZml4KTsKICAgICAgcmV0dXJuIGNvZGU7CiAgICB9OwogIH0KICAvLyBOb3RlOiBhbnkgdHJhbnNwaWxhdGlvbiBlcnJvcnMvd2FybmluZ3Mgd2lsbCBiZSBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuCiAgcmV0dXJuIHRyYW5zcGlsZShjb2RlLCBwYXRoLCB0YXJnZXQpOwp9OwoKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8gTGFuZ3VhZ2UgRW5oYW5jZW1lbnRzCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgoKLyoqCiAqIFRoaXMgaXMgYSAiZml4ZWQiIHZlcnNpb24gb2YgdGhlIHR5cGVvZiBvcGVyYXRvci4gIEl0IGRpZmZlcnMgZnJvbSB0aGUgdHlwZW9mCiAqIG9wZXJhdG9yIGluIHN1Y2ggYSB3YXkgdGhhdCBudWxsIHJldHVybnMgJ251bGwnIGFuZCBhcnJheXMgcmV0dXJuICdhcnJheScuCiAqIEBwYXJhbSB7P30gdmFsdWUgVGhlIHZhbHVlIHRvIGdldCB0aGUgdHlwZSBvZi4KICogQHJldHVybiB7c3RyaW5nfSBUaGUgbmFtZSBvZiB0aGUgdHlwZS4KICovCmdvb2cudHlwZU9mID0gZnVuY3Rpb24odmFsdWUpIHsKICB2YXIgcyA9IHR5cGVvZiB2YWx1ZTsKICBpZiAocyA9PSAnb2JqZWN0JykgewogICAgaWYgKHZhbHVlKSB7CiAgICAgIC8vIENoZWNrIHRoZXNlIGZpcnN0LCBzbyB3ZSBjYW4gYXZvaWQgY2FsbGluZyBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nIGlmCiAgICAgIC8vIHBvc3NpYmxlLgogICAgICAvLwogICAgICAvLyBJRSBpbXByb3Blcmx5IG1hcnNoYWxzIHR5cGVvZiBhY3Jvc3MgZXhlY3V0aW9uIGNvbnRleHRzLCBidXQgYQogICAgICAvLyBjcm9zcy1jb250ZXh0IG9iamVjdCB3aWxsIHN0aWxsIHJldHVybiBmYWxzZSBmb3IgImluc3RhbmNlb2YgT2JqZWN0Ii4KICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHsKICAgICAgICByZXR1cm4gJ2FycmF5JzsKICAgICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCkgewogICAgICAgIHJldHVybiBzOwogICAgICB9CgogICAgICAvLyBIQUNLOiBJbiBvcmRlciB0byB1c2UgYW4gT2JqZWN0IHByb3RvdHlwZSBtZXRob2Qgb24gdGhlIGFyYml0cmFyeQogICAgICAvLyAgIHZhbHVlLCB0aGUgY29tcGlsZXIgcmVxdWlyZXMgdGhlIHZhbHVlIGJlIGNhc3QgdG8gdHlwZSBPYmplY3QsCiAgICAgIC8vICAgZXZlbiB0aG91Z2ggdGhlIEVDTUEgc3BlYyBleHBsaWNpdGx5IGFsbG93cyBpdC4KICAgICAgdmFyIGNsYXNzTmFtZSA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCgKICAgICAgICAgIC8qKiBAdHlwZSB7IU9iamVjdH0gKi8gKHZhbHVlKSk7CiAgICAgIC8vIEluIEZpcmVmb3ggMy42LCBhdHRlbXB0aW5nIHRvIGFjY2VzcyBpZnJhbWUgd2luZG93IG9iamVjdHMnIGxlbmd0aAogICAgICAvLyBwcm9wZXJ0eSB0aHJvd3MgYW4gTlNfRVJST1JfRkFJTFVSRSwgc28gd2UgbmVlZCB0byBzcGVjaWFsLWNhc2UgaXQKICAgICAgLy8gaGVyZS4KICAgICAgaWYgKGNsYXNzTmFtZSA9PSAnW29iamVjdCBXaW5kb3ddJykgewogICAgICAgIHJldHVybiAnb2JqZWN0JzsKICAgICAgfQoKICAgICAgLy8gV2UgY2Fubm90IGFsd2F5cyB1c2UgY29uc3RydWN0b3IgPT0gQXJyYXkgb3IgaW5zdGFuY2VvZiBBcnJheSBiZWNhdXNlCiAgICAgIC8vIGRpZmZlcmVudCBmcmFtZXMgaGF2ZSBkaWZmZXJlbnQgQXJyYXkgb2JqZWN0cy4gSW4gSUU2LCBpZiB0aGUgaWZyYW1lCiAgICAgIC8vIHdoZXJlIHRoZSBhcnJheSB3YXMgY3JlYXRlZCBpcyBkZXN0cm95ZWQsIHRoZSBhcnJheSBsb3NlcyBpdHMKICAgICAgLy8gcHJvdG90eXBlLiBUaGVuIGRlcmVmZXJlbmNpbmcgdmFsLnNwbGljZSBoZXJlIHRocm93cyBhbiBleGNlcHRpb24sIHNvCiAgICAgIC8vIHdlIGNhbid0IHVzZSBnb29nLmlzRnVuY3Rpb24uIENhbGxpbmcgdHlwZW9mIGRpcmVjdGx5IHJldHVybnMgJ3Vua25vd24nCiAgICAgIC8vIHNvIHRoYXQgd2lsbCB3b3JrLiBJbiB0aGlzIGNhc2UsIHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gZmFsc2UgYW5kCiAgICAgIC8vIG1vc3QgYXJyYXkgZnVuY3Rpb25zIHdpbGwgc3RpbGwgd29yayBiZWNhdXNlIHRoZSBhcnJheSBpcyBzdGlsbAogICAgICAvLyBhcnJheS1saWtlIChzdXBwb3J0cyBsZW5ndGggYW5kIFtdKSBldmVuIHRob3VnaCBpdCBoYXMgbG9zdCBpdHMKICAgICAgLy8gcHJvdG90eXBlLgogICAgICAvLyBNYXJrIE1pbGxlciBub3RpY2VkIHRoYXQgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZwogICAgICAvLyBhbGxvd3MgYWNjZXNzIHRvIHRoZSB1bmZvcmdlYWJsZSBbW0NsYXNzXV0gcHJvcGVydHkuCiAgICAgIC8vICAxNS4yLjQuMiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nICggKQogICAgICAvLyAgV2hlbiB0aGUgdG9TdHJpbmcgbWV0aG9kIGlzIGNhbGxlZCwgdGhlIGZvbGxvd2luZyBzdGVwcyBhcmUgdGFrZW46CiAgICAgIC8vICAgICAgMS4gR2V0IHRoZSBbW0NsYXNzXV0gcHJvcGVydHkgb2YgdGhpcyBvYmplY3QuCiAgICAgIC8vICAgICAgMi4gQ29tcHV0ZSBhIHN0cmluZyB2YWx1ZSBieSBjb25jYXRlbmF0aW5nIHRoZSB0aHJlZSBzdHJpbmdzCiAgICAgIC8vICAgICAgICAgIltvYmplY3QgIiwgUmVzdWx0KDEpLCBhbmQgIl0iLgogICAgICAvLyAgICAgIDMuIFJldHVybiBSZXN1bHQoMikuCiAgICAgIC8vIGFuZCB0aGlzIGJlaGF2aW9yIHN1cnZpdmVzIHRoZSBkZXN0cnVjdGlvbiBvZiB0aGUgZXhlY3V0aW9uIGNvbnRleHQuCiAgICAgIGlmICgoY2xhc3NOYW1lID09ICdbb2JqZWN0IEFycmF5XScgfHwKICAgICAgICAgICAvLyBJbiBJRSBhbGwgbm9uIHZhbHVlIHR5cGVzIGFyZSB3cmFwcGVkIGFzIG9iamVjdHMgYWNyb3NzIHdpbmRvdwogICAgICAgICAgIC8vIGJvdW5kYXJpZXMgKG5vdCBpZnJhbWUgdGhvdWdoKSBzbyB3ZSBoYXZlIHRvIGRvIG9iamVjdCBkZXRlY3Rpb24KICAgICAgICAgICAvLyBmb3IgdGhpcyBlZGdlIGNhc2UuCiAgICAgICAgICAgdHlwZW9mIHZhbHVlLmxlbmd0aCA9PSAnbnVtYmVyJyAmJgogICAgICAgICAgICAgICB0eXBlb2YgdmFsdWUuc3BsaWNlICE9ICd1bmRlZmluZWQnICYmCiAgICAgICAgICAgICAgIHR5cGVvZiB2YWx1ZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSAhPSAndW5kZWZpbmVkJyAmJgogICAgICAgICAgICAgICAhdmFsdWUucHJvcGVydHlJc0VudW1lcmFibGUoJ3NwbGljZScpCgogICAgICAgICAgICAgICApKSB7CiAgICAgICAgcmV0dXJuICdhcnJheSc7CiAgICAgIH0KICAgICAgLy8gSEFDSzogVGhlcmUgaXMgc3RpbGwgYW4gYXJyYXkgY2FzZSB0aGF0IGZhaWxzLgogICAgICAvLyAgICAgZnVuY3Rpb24gQXJyYXlJbXBvc3RvcigpIHt9CiAgICAgIC8vICAgICBBcnJheUltcG9zdG9yLnByb3RvdHlwZSA9IFtdOwogICAgICAvLyAgICAgdmFyIGltcG9zdG9yID0gbmV3IEFycmF5SW1wb3N0b3I7CiAgICAgIC8vIHRoaXMgY2FuIGJlIGZpeGVkIGJ5IGdldHRpbmcgcmlkIG9mIHRoZSBmYXN0IHBhdGgKICAgICAgLy8gKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIGFuZCBzb2xlbHkgcmVseWluZyBvbgogICAgICAvLyAodmFsdWUgJiYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy52YWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgQXJyYXldJykKICAgICAgLy8gYnV0IHRoYXQgd291bGQgcmVxdWlyZSBtYW55IG1vcmUgZnVuY3Rpb24gY2FsbHMgYW5kIGlzIG5vdCB3YXJyYW50ZWQKICAgICAgLy8gdW5sZXNzIGNsb3N1cmUgY29kZSBpcyByZWNlaXZpbmcgb2JqZWN0cyBmcm9tIHVudHJ1c3RlZCBzb3VyY2VzLgoKICAgICAgLy8gSUUgaW4gY3Jvc3Mtd2luZG93IGNhbGxzIGRvZXMgbm90IGNvcnJlY3RseSBtYXJzaGFsIHRoZSBmdW5jdGlvbiB0eXBlCiAgICAgIC8vIChpdCBhcHBlYXJzIGp1c3QgYXMgYW4gb2JqZWN0KSBzbyB3ZSBjYW5ub3QgdXNlIGp1c3QgdHlwZW9mIHZhbCA9PQogICAgICAvLyAnZnVuY3Rpb24nLiBIb3dldmVyLCBpZiB0aGUgb2JqZWN0IGhhcyBhIGNhbGwgcHJvcGVydHksIGl0IGlzIGEKICAgICAgLy8gZnVuY3Rpb24uCiAgICAgIGlmICgoY2xhc3NOYW1lID09ICdbb2JqZWN0IEZ1bmN0aW9uXScgfHwKICAgICAgICAgICB0eXBlb2YgdmFsdWUuY2FsbCAhPSAndW5kZWZpbmVkJyAmJgogICAgICAgICAgICAgICB0eXBlb2YgdmFsdWUucHJvcGVydHlJc0VudW1lcmFibGUgIT0gJ3VuZGVmaW5lZCcgJiYKICAgICAgICAgICAgICAgIXZhbHVlLnByb3BlcnR5SXNFbnVtZXJhYmxlKCdjYWxsJykpKSB7CiAgICAgICAgcmV0dXJuICdmdW5jdGlvbic7CiAgICAgIH0KCiAgICB9IGVsc2UgewogICAgICByZXR1cm4gJ251bGwnOwogICAgfQoKICB9IGVsc2UgaWYgKHMgPT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgdmFsdWUuY2FsbCA9PSAndW5kZWZpbmVkJykgewogICAgLy8gSW4gU2FmYXJpIHR5cGVvZiBub2RlTGlzdCByZXR1cm5zICdmdW5jdGlvbicsIGFuZCBvbiBGaXJlZm94IHR5cGVvZgogICAgLy8gYmVoYXZlcyBzaW1pbGFybHkgZm9yIEhUTUx7QXBwbGV0LEVtYmVkLE9iamVjdH0sIEVsZW1lbnRzIGFuZCBSZWdFeHBzLiBXZQogICAgLy8gd291bGQgbGlrZSB0byByZXR1cm4gb2JqZWN0IGZvciB0aG9zZSBhbmQgd2UgY2FuIGRldGVjdCBhbiBpbnZhbGlkCiAgICAvLyBmdW5jdGlvbiBieSBtYWtpbmcgc3VyZSB0aGF0IHRoZSBmdW5jdGlvbiBvYmplY3QgaGFzIGEgY2FsbCBtZXRob2QuCiAgICByZXR1cm4gJ29iamVjdCc7CiAgfQogIHJldHVybiBzOwp9OwoKCi8qKgogKiBSZXR1cm5zIHRydWUgaWYgdGhlIHNwZWNpZmllZCB2YWx1ZSBpcyBudWxsLgogKiBAcGFyYW0gez99IHZhbCBWYXJpYWJsZSB0byB0ZXN0LgogKiBAcmV0dXJuIHtib29sZWFufSBXaGV0aGVyIHZhcmlhYmxlIGlzIG51bGwuCiAqIEBkZXByZWNhdGVkIFVzZSBgdmFsID09PSBudWxsYCBpbnN0ZWFkLgogKi8KZ29vZy5pc051bGwgPSBmdW5jdGlvbih2YWwpIHsKICByZXR1cm4gdmFsID09PSBudWxsOwp9OwoKCi8qKgogKiBSZXR1cm5zIHRydWUgaWYgdGhlIHNwZWNpZmllZCB2YWx1ZSBpcyBkZWZpbmVkIGFuZCBub3QgbnVsbC4KICogQHBhcmFtIHs/fSB2YWwgVmFyaWFibGUgdG8gdGVzdC4KICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciB2YXJpYWJsZSBpcyBkZWZpbmVkIGFuZCBub3QgbnVsbC4KICogQGRlcHJlY2F0ZWQgVXNlIGB2YWwgIT0gbnVsbGAgaW5zdGVhZC4KICovCmdvb2cuaXNEZWZBbmROb3ROdWxsID0gZnVuY3Rpb24odmFsKSB7CiAgLy8gTm90ZSB0aGF0IHVuZGVmaW5lZCA9PSBudWxsLgogIHJldHVybiB2YWwgIT0gbnVsbDsKfTsKCgovKioKICogUmV0dXJucyB0cnVlIGlmIHRoZSBzcGVjaWZpZWQgdmFsdWUgaXMgYW4gYXJyYXkuCiAqIEBwYXJhbSB7P30gdmFsIFZhcmlhYmxlIHRvIHRlc3QuCiAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgdmFyaWFibGUgaXMgYW4gYXJyYXkuCiAqLwpnb29nLmlzQXJyYXkgPSBmdW5jdGlvbih2YWwpIHsKICByZXR1cm4gZ29vZy50eXBlT2YodmFsKSA9PSAnYXJyYXknOwp9OwoKCi8qKgogKiBSZXR1cm5zIHRydWUgaWYgdGhlIG9iamVjdCBsb29rcyBsaWtlIGFuIGFycmF5LiBUbyBxdWFsaWZ5IGFzIGFycmF5IGxpa2UKICogdGhlIHZhbHVlIG5lZWRzIHRvIGJlIGVpdGhlciBhIE5vZGVMaXN0IG9yIGFuIG9iamVjdCB3aXRoIGEgTnVtYmVyIGxlbmd0aAogKiBwcm9wZXJ0eS4gTm90ZSB0aGF0IGZvciB0aGlzIGZ1bmN0aW9uIG5laXRoZXIgc3RyaW5ncyBub3IgZnVuY3Rpb25zIGFyZQogKiBjb25zaWRlcmVkICJhcnJheS1saWtlIi4KICoKICogQHBhcmFtIHs/fSB2YWwgVmFyaWFibGUgdG8gdGVzdC4KICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciB2YXJpYWJsZSBpcyBhbiBhcnJheS4KICovCmdvb2cuaXNBcnJheUxpa2UgPSBmdW5jdGlvbih2YWwpIHsKICB2YXIgdHlwZSA9IGdvb2cudHlwZU9mKHZhbCk7CiAgLy8gV2UgZG8gbm90IHVzZSBnb29nLmlzT2JqZWN0IGhlcmUgaW4gb3JkZXIgdG8gZXhjbHVkZSBmdW5jdGlvbiB2YWx1ZXMuCiAgcmV0dXJuIHR5cGUgPT0gJ2FycmF5JyB8fCB0eXBlID09ICdvYmplY3QnICYmIHR5cGVvZiB2YWwubGVuZ3RoID09ICdudW1iZXInOwp9OwoKCi8qKgogKiBSZXR1cm5zIHRydWUgaWYgdGhlIG9iamVjdCBsb29rcyBsaWtlIGEgRGF0ZS4gVG8gcXVhbGlmeSBhcyBEYXRlLWxpa2UgdGhlCiAqIHZhbHVlIG5lZWRzIHRvIGJlIGFuIG9iamVjdCBhbmQgaGF2ZSBhIGdldEZ1bGxZZWFyKCkgZnVuY3Rpb24uCiAqIEBwYXJhbSB7P30gdmFsIFZhcmlhYmxlIHRvIHRlc3QuCiAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgdmFyaWFibGUgaXMgYSBsaWtlIGEgRGF0ZS4KICovCmdvb2cuaXNEYXRlTGlrZSA9IGZ1bmN0aW9uKHZhbCkgewogIHJldHVybiBnb29nLmlzT2JqZWN0KHZhbCkgJiYgdHlwZW9mIHZhbC5nZXRGdWxsWWVhciA9PSAnZnVuY3Rpb24nOwp9OwoKCi8qKgogKiBSZXR1cm5zIHRydWUgaWYgdGhlIHNwZWNpZmllZCB2YWx1ZSBpcyBhIGZ1bmN0aW9uLgogKiBAcGFyYW0gez99IHZhbCBWYXJpYWJsZSB0byB0ZXN0LgogKiBAcmV0dXJuIHtib29sZWFufSBXaGV0aGVyIHZhcmlhYmxlIGlzIGEgZnVuY3Rpb24uCiAqLwpnb29nLmlzRnVuY3Rpb24gPSBmdW5jdGlvbih2YWwpIHsKICByZXR1cm4gZ29vZy50eXBlT2YodmFsKSA9PSAnZnVuY3Rpb24nOwp9OwoKCi8qKgogKiBSZXR1cm5zIHRydWUgaWYgdGhlIHNwZWNpZmllZCB2YWx1ZSBpcyBhbiBvYmplY3QuICBUaGlzIGluY2x1ZGVzIGFycmF5cyBhbmQKICogZnVuY3Rpb25zLgogKiBAcGFyYW0gez99IHZhbCBWYXJpYWJsZSB0byB0ZXN0LgogKiBAcmV0dXJuIHtib29sZWFufSBXaGV0aGVyIHZhcmlhYmxlIGlzIGFuIG9iamVjdC4KICovCmdvb2cuaXNPYmplY3QgPSBmdW5jdGlvbih2YWwpIHsKICB2YXIgdHlwZSA9IHR5cGVvZiB2YWw7CiAgcmV0dXJuIHR5cGUgPT0gJ29iamVjdCcgJiYgdmFsICE9IG51bGwgfHwgdHlwZSA9PSAnZnVuY3Rpb24nOwogIC8vIHJldHVybiBPYmplY3QodmFsKSA9PT0gdmFsIGFsc28gd29ya3MsIGJ1dCBpcyBzbG93ZXIsIGVzcGVjaWFsbHkgaWYgdmFsIGlzCiAgLy8gbm90IGFuIG9iamVjdC4KfTsKCgovKioKICogR2V0cyBhIHVuaXF1ZSBJRCBmb3IgYW4gb2JqZWN0LiBUaGlzIG11dGF0ZXMgdGhlIG9iamVjdCBzbyB0aGF0IGZ1cnRoZXIgY2FsbHMKICogd2l0aCB0aGUgc2FtZSBvYmplY3QgYXMgYSBwYXJhbWV0ZXIgcmV0dXJucyB0aGUgc2FtZSB2YWx1ZS4gVGhlIHVuaXF1ZSBJRCBpcwogKiBndWFyYW50ZWVkIHRvIGJlIHVuaXF1ZSBhY3Jvc3MgdGhlIGN1cnJlbnQgc2Vzc2lvbiBhbW9uZ3N0IG9iamVjdHMgdGhhdCBhcmUKICogcGFzc2VkIGludG8gYGdldFVpZGAuIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSBJRCBpcyB1bmlxdWUgb3IKICogY29uc2lzdGVudCBhY3Jvc3Mgc2Vzc2lvbnMuIEl0IGlzIHVuc2FmZSB0byBnZW5lcmF0ZSB1bmlxdWUgSUQgZm9yIGZ1bmN0aW9uCiAqIHByb3RvdHlwZXMuCiAqCiAqIEBwYXJhbSB7T2JqZWN0fSBvYmogVGhlIG9iamVjdCB0byBnZXQgdGhlIHVuaXF1ZSBJRCBmb3IuCiAqIEByZXR1cm4ge251bWJlcn0gVGhlIHVuaXF1ZSBJRCBmb3IgdGhlIG9iamVjdC4KICovCmdvb2cuZ2V0VWlkID0gZnVuY3Rpb24ob2JqKSB7CiAgLy8gVE9ETyhhcnYpOiBNYWtlIHRoZSB0eXBlIHN0cmljdGVyLCBkbyBub3QgYWNjZXB0IG51bGwuCgogIC8vIEluIE9wZXJhIHdpbmRvdy5oYXNPd25Qcm9wZXJ0eSBleGlzdHMgYnV0IGFsd2F5cyByZXR1cm5zIGZhbHNlIHNvIHdlIGF2b2lkCiAgLy8gdXNpbmcgaXQuIEFzIGEgY29uc2VxdWVuY2UgdGhlIHVuaXF1ZSBJRCBnZW5lcmF0ZWQgZm9yIEJhc2VDbGFzcy5wcm90b3R5cGUKICAvLyBhbmQgU3ViQ2xhc3MucHJvdG90eXBlIHdpbGwgYmUgdGhlIHNhbWUuCiAgLy8gVE9ETyhiLzE0MTUxMjMyMyk6IFVVSURzIGFyZSBicm9rZW4gZm9yIGN0b3JzIHdpdGggY2xhc3Mtc2lkZSBpbmhlcml0YW5jZS4KICByZXR1cm4gb2JqW2dvb2cuVUlEX1BST1BFUlRZX10gfHwKICAgICAgKG9ialtnb29nLlVJRF9QUk9QRVJUWV9dID0gKytnb29nLnVpZENvdW50ZXJfKTsKfTsKCgovKioKICogV2hldGhlciB0aGUgZ2l2ZW4gb2JqZWN0IGlzIGFscmVhZHkgYXNzaWduZWQgYSB1bmlxdWUgSUQuCiAqCiAqIFRoaXMgZG9lcyBub3QgbW9kaWZ5IHRoZSBvYmplY3QuCiAqCiAqIEBwYXJhbSB7IU9iamVjdH0gb2JqIFRoZSBvYmplY3QgdG8gY2hlY2suCiAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgdGhlcmUgaXMgYW4gYXNzaWduZWQgdW5pcXVlIGlkIGZvciB0aGUgb2JqZWN0LgogKi8KZ29vZy5oYXNVaWQgPSBmdW5jdGlvbihvYmopIHsKICByZXR1cm4gISFvYmpbZ29vZy5VSURfUFJPUEVSVFlfXTsKfTsKCgovKioKICogUmVtb3ZlcyB0aGUgdW5pcXVlIElEIGZyb20gYW4gb2JqZWN0LiBUaGlzIGlzIHVzZWZ1bCBpZiB0aGUgb2JqZWN0IHdhcwogKiBwcmV2aW91c2x5IG11dGF0ZWQgdXNpbmcgYGdvb2cuZ2V0VWlkYCBpbiB3aGljaCBjYXNlIHRoZSBtdXRhdGlvbiBpcwogKiB1bmRvbmUuCiAqIEBwYXJhbSB7T2JqZWN0fSBvYmogVGhlIG9iamVjdCB0byByZW1vdmUgdGhlIHVuaXF1ZSBJRCBmaWVsZCBmcm9tLgogKi8KZ29vZy5yZW1vdmVVaWQgPSBmdW5jdGlvbihvYmopIHsKICAvLyBUT0RPKGFydik6IE1ha2UgdGhlIHR5cGUgc3RyaWN0ZXIsIGRvIG5vdCBhY2NlcHQgbnVsbC4KCiAgLy8gSW4gSUUsIERPTSBub2RlcyBhcmUgbm90IGluc3RhbmNlcyBvZiBPYmplY3QgYW5kIHRocm93IGFuIGV4Y2VwdGlvbiBpZiB3ZQogIC8vIHRyeSB0byBkZWxldGUuICBJbnN0ZWFkIHdlIHRyeSB0byB1c2UgcmVtb3ZlQXR0cmlidXRlLgogIGlmIChvYmogIT09IG51bGwgJiYgJ3JlbW92ZUF0dHJpYnV0ZScgaW4gb2JqKSB7CiAgICBvYmoucmVtb3ZlQXR0cmlidXRlKGdvb2cuVUlEX1BST1BFUlRZXyk7CiAgfQoKICB0cnkgewogICAgZGVsZXRlIG9ialtnb29nLlVJRF9QUk9QRVJUWV9dOwogIH0gY2F0Y2ggKGV4KSB7CiAgfQp9OwoKCi8qKgogKiBOYW1lIGZvciB1bmlxdWUgSUQgcHJvcGVydHkuIEluaXRpYWxpemVkIGluIGEgd2F5IHRvIGhlbHAgYXZvaWQgY29sbGlzaW9ucwogKiB3aXRoIG90aGVyIGNsb3N1cmUgSmF2YVNjcmlwdCBvbiB0aGUgc2FtZSBwYWdlLgogKiBAdHlwZSB7c3RyaW5nfQogKiBAcHJpdmF0ZQogKi8KZ29vZy5VSURfUFJPUEVSVFlfID0gJ2Nsb3N1cmVfdWlkXycgKyAoKE1hdGgucmFuZG9tKCkgKiAxZTkpID4+PiAwKTsKCgovKioKICogQ291bnRlciBmb3IgVUlELgogKiBAdHlwZSB7bnVtYmVyfQogKiBAcHJpdmF0ZQogKi8KZ29vZy51aWRDb3VudGVyXyA9IDA7CgoKLyoqCiAqIEFkZHMgYSBoYXNoIGNvZGUgZmllbGQgdG8gYW4gb2JqZWN0LiBUaGUgaGFzaCBjb2RlIGlzIHVuaXF1ZSBmb3IgdGhlCiAqIGdpdmVuIG9iamVjdC4KICogQHBhcmFtIHtPYmplY3R9IG9iaiBUaGUgb2JqZWN0IHRvIGdldCB0aGUgaGFzaCBjb2RlIGZvci4KICogQHJldHVybiB7bnVtYmVyfSBUaGUgaGFzaCBjb2RlIGZvciB0aGUgb2JqZWN0LgogKiBAZGVwcmVjYXRlZCBVc2UgZ29vZy5nZXRVaWQgaW5zdGVhZC4KICovCmdvb2cuZ2V0SGFzaENvZGUgPSBnb29nLmdldFVpZDsKCgovKioKICogUmVtb3ZlcyB0aGUgaGFzaCBjb2RlIGZpZWxkIGZyb20gYW4gb2JqZWN0LgogKiBAcGFyYW0ge09iamVjdH0gb2JqIFRoZSBvYmplY3QgdG8gcmVtb3ZlIHRoZSBmaWVsZCBmcm9tLgogKiBAZGVwcmVjYXRlZCBVc2UgZ29vZy5yZW1vdmVVaWQgaW5zdGVhZC4KICovCmdvb2cucmVtb3ZlSGFzaENvZGUgPSBnb29nLnJlbW92ZVVpZDsKCgovKioKICogQ2xvbmVzIGEgdmFsdWUuIFRoZSBpbnB1dCBtYXkgYmUgYW4gT2JqZWN0LCBBcnJheSwgb3IgYmFzaWMgdHlwZS4gT2JqZWN0cyBhbmQKICogYXJyYXlzIHdpbGwgYmUgY2xvbmVkIHJlY3Vyc2l2ZWx5LgogKgogKiBXQVJOSU5HUzoKICogPGNvZGU+Z29vZy5jbG9uZU9iamVjdDwvY29kZT4gZG9lcyBub3QgZGV0ZWN0IHJlZmVyZW5jZSBsb29wcy4gT2JqZWN0cyB0aGF0CiAqIHJlZmVyIHRvIHRoZW1zZWx2ZXMgd2lsbCBjYXVzZSBpbmZpbml0ZSByZWN1cnNpb24uCiAqCiAqIDxjb2RlPmdvb2cuY2xvbmVPYmplY3Q8L2NvZGU+IGlzIHVuYXdhcmUgb2YgdW5pcXVlIGlkZW50aWZpZXJzLCBhbmQgY29waWVzCiAqIFVJRHMgY3JlYXRlZCBieSA8Y29kZT5nZXRVaWQ8L2NvZGU+IGludG8gY2xvbmVkIHJlc3VsdHMuCiAqCiAqIEBwYXJhbSB7Kn0gb2JqIFRoZSB2YWx1ZSB0byBjbG9uZS4KICogQHJldHVybiB7Kn0gQSBjbG9uZSBvZiB0aGUgaW5wdXQgdmFsdWUuCiAqIEBkZXByZWNhdGVkIGdvb2cuY2xvbmVPYmplY3QgaXMgdW5zYWZlLiBQcmVmZXIgdGhlIGdvb2cub2JqZWN0IG1ldGhvZHMuCiAqLwpnb29nLmNsb25lT2JqZWN0ID0gZnVuY3Rpb24ob2JqKSB7CiAgdmFyIHR5cGUgPSBnb29nLnR5cGVPZihvYmopOwogIGlmICh0eXBlID09ICdvYmplY3QnIHx8IHR5cGUgPT0gJ2FycmF5JykgewogICAgaWYgKHR5cGVvZiBvYmouY2xvbmUgPT09ICdmdW5jdGlvbicpIHsKICAgICAgcmV0dXJuIG9iai5jbG9uZSgpOwogICAgfQogICAgdmFyIGNsb25lID0gdHlwZSA9PSAnYXJyYXknID8gW10gOiB7fTsKICAgIGZvciAodmFyIGtleSBpbiBvYmopIHsKICAgICAgY2xvbmVba2V5XSA9IGdvb2cuY2xvbmVPYmplY3Qob2JqW2tleV0pOwogICAgfQogICAgcmV0dXJuIGNsb25lOwogIH0KCiAgcmV0dXJuIG9iajsKfTsKCgovKioKICogQSBuYXRpdmUgaW1wbGVtZW50YXRpb24gb2YgZ29vZy5iaW5kLgogKiBAcGFyYW0gez9mdW5jdGlvbih0aGlzOlQsIC4uLil9IGZuIEEgZnVuY3Rpb24gdG8gcGFydGlhbGx5IGFwcGx5LgogKiBAcGFyYW0ge1R9IHNlbGZPYmogU3BlY2lmaWVzIHRoZSBvYmplY3Qgd2hpY2ggdGhpcyBzaG91bGQgcG9pbnQgdG8gd2hlbiB0aGUKICogICAgIGZ1bmN0aW9uIGlzIHJ1bi4KICogQHBhcmFtIHsuLi4qfSB2YXJfYXJncyBBZGRpdGlvbmFsIGFyZ3VtZW50cyB0aGF0IGFyZSBwYXJ0aWFsbHkgYXBwbGllZCB0byB0aGUKICogICAgIGZ1bmN0aW9uLgogKiBAcmV0dXJuIHshRnVuY3Rpb259IEEgcGFydGlhbGx5LWFwcGxpZWQgZm9ybSBvZiB0aGUgZnVuY3Rpb24gZ29vZy5iaW5kKCkgd2FzCiAqICAgICBpbnZva2VkIGFzIGEgbWV0aG9kIG9mLgogKiBAdGVtcGxhdGUgVAogKiBAcHJpdmF0ZQogKi8KZ29vZy5iaW5kTmF0aXZlXyA9IGZ1bmN0aW9uKGZuLCBzZWxmT2JqLCB2YXJfYXJncykgewogIHJldHVybiAvKiogQHR5cGUgeyFGdW5jdGlvbn0gKi8gKGZuLmNhbGwuYXBwbHkoZm4uYmluZCwgYXJndW1lbnRzKSk7Cn07CgoKLyoqCiAqIEEgcHVyZS1KUyBpbXBsZW1lbnRhdGlvbiBvZiBnb29nLmJpbmQuCiAqIEBwYXJhbSB7P2Z1bmN0aW9uKHRoaXM6VCwgLi4uKX0gZm4gQSBmdW5jdGlvbiB0byBwYXJ0aWFsbHkgYXBwbHkuCiAqIEBwYXJhbSB7VH0gc2VsZk9iaiBTcGVjaWZpZXMgdGhlIG9iamVjdCB3aGljaCB0aGlzIHNob3VsZCBwb2ludCB0byB3aGVuIHRoZQogKiAgICAgZnVuY3Rpb24gaXMgcnVuLgogKiBAcGFyYW0gey4uLip9IHZhcl9hcmdzIEFkZGl0aW9uYWwgYXJndW1lbnRzIHRoYXQgYXJlIHBhcnRpYWxseSBhcHBsaWVkIHRvIHRoZQogKiAgICAgZnVuY3Rpb24uCiAqIEByZXR1cm4geyFGdW5jdGlvbn0gQSBwYXJ0aWFsbHktYXBwbGllZCBmb3JtIG9mIHRoZSBmdW5jdGlvbiBnb29nLmJpbmQoKSB3YXMKICogICAgIGludm9rZWQgYXMgYSBtZXRob2Qgb2YuCiAqIEB0ZW1wbGF0ZSBUCiAqIEBwcml2YXRlCiAqLwpnb29nLmJpbmRKc18gPSBmdW5jdGlvbihmbiwgc2VsZk9iaiwgdmFyX2FyZ3MpIHsKICBpZiAoIWZuKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoKTsKICB9CgogIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMikgewogICAgdmFyIGJvdW5kQXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMik7CiAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgIC8vIFByZXBlbmQgdGhlIGJvdW5kIGFyZ3VtZW50cyB0byB0aGUgY3VycmVudCBhcmd1bWVudHMuCiAgICAgIHZhciBuZXdBcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTsKICAgICAgQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuYXBwbHkobmV3QXJncywgYm91bmRBcmdzKTsKICAgICAgcmV0dXJuIGZuLmFwcGx5KHNlbGZPYmosIG5ld0FyZ3MpOwogICAgfTsKCiAgfSBlbHNlIHsKICAgIHJldHVybiBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIGZuLmFwcGx5KHNlbGZPYmosIGFyZ3VtZW50cyk7CiAgICB9OwogIH0KfTsKCgovKioKICogUGFydGlhbGx5IGFwcGxpZXMgdGhpcyBmdW5jdGlvbiB0byBhIHBhcnRpY3VsYXIgJ3RoaXMgb2JqZWN0JyBhbmQgemVybyBvcgogKiBtb3JlIGFyZ3VtZW50cy4gVGhlIHJlc3VsdCBpcyBhIG5ldyBmdW5jdGlvbiB3aXRoIHNvbWUgYXJndW1lbnRzIG9mIHRoZSBmaXJzdAogKiBmdW5jdGlvbiBwcmUtZmlsbGVkIGFuZCB0aGUgdmFsdWUgb2YgdGhpcyAncHJlLXNwZWNpZmllZCcuCiAqCiAqIFJlbWFpbmluZyBhcmd1bWVudHMgc3BlY2lmaWVkIGF0IGNhbGwtdGltZSBhcmUgYXBwZW5kZWQgdG8gdGhlIHByZS1zcGVjaWZpZWQKICogb25lcy4KICoKICogQWxzbyBzZWU6IHtAbGluayAjcGFydGlhbH0uCiAqCiAqIFVzYWdlOgogKiA8cHJlPnZhciBiYXJNZXRoQm91bmQgPSBnb29nLmJpbmQobXlGdW5jdGlvbiwgbXlPYmosICdhcmcxJywgJ2FyZzInKTsKICogYmFyTWV0aEJvdW5kKCdhcmczJywgJ2FyZzQnKTs8L3ByZT4KICoKICogQHBhcmFtIHs/ZnVuY3Rpb24odGhpczpULCAuLi4pfSBmbiBBIGZ1bmN0aW9uIHRvIHBhcnRpYWxseSBhcHBseS4KICogQHBhcmFtIHtUfSBzZWxmT2JqIFNwZWNpZmllcyB0aGUgb2JqZWN0IHdoaWNoIHRoaXMgc2hvdWxkIHBvaW50IHRvIHdoZW4gdGhlCiAqICAgICBmdW5jdGlvbiBpcyBydW4uCiAqIEBwYXJhbSB7Li4uKn0gdmFyX2FyZ3MgQWRkaXRpb25hbCBhcmd1bWVudHMgdGhhdCBhcmUgcGFydGlhbGx5IGFwcGxpZWQgdG8gdGhlCiAqICAgICBmdW5jdGlvbi4KICogQHJldHVybiB7IUZ1bmN0aW9ufSBBIHBhcnRpYWxseS1hcHBsaWVkIGZvcm0gb2YgdGhlIGZ1bmN0aW9uIGdvb2cuYmluZCgpIHdhcwogKiAgICAgaW52b2tlZCBhcyBhIG1ldGhvZCBvZi4KICogQHRlbXBsYXRlIFQKICogQHN1cHByZXNzIHtkZXByZWNhdGVkfSBTZWUgYWJvdmUuCiAqLwpnb29nLmJpbmQgPSBmdW5jdGlvbihmbiwgc2VsZk9iaiwgdmFyX2FyZ3MpIHsKICAvLyBUT0RPKG5pY2tzYW50b3MpOiBuYXJyb3cgdGhlIHR5cGUgc2lnbmF0dXJlLgogIGlmIChGdW5jdGlvbi5wcm90b3R5cGUuYmluZCAmJgogICAgICAvLyBOT1RFKG5pY2tzYW50b3MpOiBTb21lYm9keSBwdWxsZWQgYmFzZS5qcyBpbnRvIHRoZSBkZWZhdWx0IENocm9tZQogICAgICAvLyBleHRlbnNpb24gZW52aXJvbm1lbnQuIFRoaXMgbWVhbnMgdGhhdCBmb3IgQ2hyb21lIGV4dGVuc2lvbnMsIHRoZXkgZ2V0CiAgICAgIC8vIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCB0aGF0IGNhbGxzIGdvb2cuYmluZAogICAgICAvLyBpbnN0ZWFkIG9mIHRoZSBuYXRpdmUgb25lLiBFdmVuIHdvcnNlLCB3ZSBkb24ndCB3YW50IHRvIGludHJvZHVjZSBhCiAgICAgIC8vIGNpcmN1bGFyIGRlcGVuZGVuY3kgYmV0d2VlbiBnb29nLmJpbmQgYW5kIEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLCBzbwogICAgICAvLyB3ZSBoYXZlIHRvIGhhY2sgdGhpcyB0byBtYWtlIHN1cmUgaXQgd29ya3MgY29ycmVjdGx5LgogICAgICBGdW5jdGlvbi5wcm90b3R5cGUuYmluZC50b1N0cmluZygpLmluZGV4T2YoJ25hdGl2ZSBjb2RlJykgIT0gLTEpIHsKICAgIGdvb2cuYmluZCA9IGdvb2cuYmluZE5hdGl2ZV87CiAgfSBlbHNlIHsKICAgIGdvb2cuYmluZCA9IGdvb2cuYmluZEpzXzsKICB9CiAgcmV0dXJuIGdvb2cuYmluZC5hcHBseShudWxsLCBhcmd1bWVudHMpOwp9OwoKCi8qKgogKiBMaWtlIGdvb2cuYmluZCgpLCBleGNlcHQgdGhhdCBhICd0aGlzIG9iamVjdCcgaXMgbm90IHJlcXVpcmVkLiBVc2VmdWwgd2hlbgogKiB0aGUgdGFyZ2V0IGZ1bmN0aW9uIGlzIGFscmVhZHkgYm91bmQuCiAqCiAqIFVzYWdlOgogKiB2YXIgZyA9IGdvb2cucGFydGlhbChmLCBhcmcxLCBhcmcyKTsKICogZyhhcmczLCBhcmc0KTsKICoKICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gQSBmdW5jdGlvbiB0byBwYXJ0aWFsbHkgYXBwbHkuCiAqIEBwYXJhbSB7Li4uKn0gdmFyX2FyZ3MgQWRkaXRpb25hbCBhcmd1bWVudHMgdGhhdCBhcmUgcGFydGlhbGx5IGFwcGxpZWQgdG8gZm4uCiAqIEByZXR1cm4geyFGdW5jdGlvbn0gQSBwYXJ0aWFsbHktYXBwbGllZCBmb3JtIG9mIHRoZSBmdW5jdGlvbiBnb29nLnBhcnRpYWwoKQogKiAgICAgd2FzIGludm9rZWQgYXMgYSBtZXRob2Qgb2YuCiAqLwpnb29nLnBhcnRpYWwgPSBmdW5jdGlvbihmbiwgdmFyX2FyZ3MpIHsKICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7CiAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgLy8gQ2xvbmUgdGhlIGFycmF5ICh3aXRoIHNsaWNlKCkpIGFuZCBhcHBlbmQgYWRkaXRpb25hbCBhcmd1bWVudHMKICAgIC8vIHRvIHRoZSBleGlzdGluZyBhcmd1bWVudHMuCiAgICB2YXIgbmV3QXJncyA9IGFyZ3Muc2xpY2UoKTsKICAgIG5ld0FyZ3MucHVzaC5hcHBseShuZXdBcmdzLCBhcmd1bWVudHMpOwogICAgcmV0dXJuIGZuLmFwcGx5KC8qKiBAdHlwZSB7P30gKi8gKHRoaXMpLCBuZXdBcmdzKTsKICB9Owp9OwoKCi8qKgogKiBDb3BpZXMgYWxsIHRoZSBtZW1iZXJzIG9mIGEgc291cmNlIG9iamVjdCB0byBhIHRhcmdldCBvYmplY3QuIFRoaXMgbWV0aG9kCiAqIGRvZXMgbm90IHdvcmsgb24gYWxsIGJyb3dzZXJzIGZvciBhbGwgb2JqZWN0cyB0aGF0IGNvbnRhaW4ga2V5cyBzdWNoIGFzCiAqIHRvU3RyaW5nIG9yIGhhc093blByb3BlcnR5LiBVc2UgZ29vZy5vYmplY3QuZXh0ZW5kIGZvciB0aGlzIHB1cnBvc2UuCiAqCiAqIE5PVEU6IFNvbWUgaGF2ZSBhZHZvY2F0ZWQgZm9yIHRoZSB1c2Ugb2YgZ29vZy5taXhpbiB0byBzZXR1cCBjbGFzc2VzCiAqIHdpdGggbXVsdGlwbGUgaW5oZXJpdGVuY2UgKHRyYWl0cywgbWl4aW5zLCBldGMpLiAgSG93ZXZlciwgYXMgaXQgc2ltcGx5CiAqIHVzZXMgImZvciBpbiIsIHRoaXMgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBFUzYgY2xhc3NlcyB3aG9zZSBtZXRob2RzIGFyZQogKiBub24tZW51bWVyYWJsZS4gIENoYW5naW5nIHRoaXMsIHdvdWxkIGJyZWFrIGNhc2VzIHdoZXJlIG5vbi1lbnVtZXJhYmxlCiAqIHByb3BlcnRpZXMgYXJlIG5vdCBleHBlY3RlZC4KICoKICogQHBhcmFtIHtPYmplY3R9IHRhcmdldCBUYXJnZXQuCiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgU291cmNlLgogKiBAZGVwcmVjYXRlZCBQcmVmZXIgT2JqZWN0LmFzc2lnbgogKi8KZ29vZy5taXhpbiA9IGZ1bmN0aW9uKHRhcmdldCwgc291cmNlKSB7CiAgZm9yICh2YXIgeCBpbiBzb3VyY2UpIHsKICAgIHRhcmdldFt4XSA9IHNvdXJjZVt4XTsKICB9CgogIC8vIEZvciBJRTcgb3IgbG93ZXIsIHRoZSBmb3ItaW4tbG9vcCBkb2VzIG5vdCBjb250YWluIGFueSBwcm9wZXJ0aWVzIHRoYXQgYXJlCiAgLy8gbm90IGVudW1lcmFibGUgb24gdGhlIHByb3RvdHlwZSBvYmplY3QgKGZvciBleGFtcGxlLCBpc1Byb3RvdHlwZU9mIGZyb20KICAvLyBPYmplY3QucHJvdG90eXBlKSBidXQgYWxzbyBpdCB3aWxsIG5vdCBpbmNsdWRlICdyZXBsYWNlJyBvbiBvYmplY3RzIHRoYXQKICAvLyBleHRlbmQgU3RyaW5nIGFuZCBjaGFuZ2UgJ3JlcGxhY2UnIChub3QgdGhhdCBpdCBpcyBjb21tb24gZm9yIGFueW9uZSB0bwogIC8vIGV4dGVuZCBhbnl0aGluZyBleGNlcHQgT2JqZWN0KS4KfTsKCgovKioKICogQHJldHVybiB7bnVtYmVyfSBBbiBpbnRlZ2VyIHZhbHVlIHJlcHJlc2VudGluZyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcwogKiAgICAgYmV0d2VlbiBtaWRuaWdodCwgSmFudWFyeSAxLCAxOTcwIGFuZCB0aGUgY3VycmVudCB0aW1lLgogKiBAZGVwcmVjYXRlZCBVc2UgRGF0ZS5ub3cKICovCmdvb2cubm93ID0gKGdvb2cuVFJVU1RFRF9TSVRFICYmIERhdGUubm93KSB8fCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAvLyBVbmFyeSBwbHVzIG9wZXJhdG9yIGNvbnZlcnRzIGl0cyBvcGVyYW5kIHRvIGEgbnVtYmVyIHdoaWNoIGluCiAgICAgICAgICAgICAvLyB0aGUgY2FzZSBvZgogICAgICAgICAgICAgLy8gYSBkYXRlIGlzIGRvbmUgYnkgY2FsbGluZyBnZXRUaW1lKCkuCiAgICAgICAgICAgICByZXR1cm4gK25ldyBEYXRlKCk7CiAgICAgICAgICAgfSk7CgoKLyoqCiAqIEV2YWxzIEphdmFTY3JpcHQgaW4gdGhlIGdsb2JhbCBzY29wZS4gIEluIElFIHRoaXMgdXNlcyBleGVjU2NyaXB0LCBvdGhlcgogKiBicm93c2VycyB1c2UgZ29vZy5nbG9iYWwuZXZhbC4gSWYgZ29vZy5nbG9iYWwuZXZhbCBkb2VzIG5vdCBldmFsdWF0ZSBpbiB0aGUKICogZ2xvYmFsIHNjb3BlIChmb3IgZXhhbXBsZSwgaW4gU2FmYXJpKSwgYXBwZW5kcyBhIHNjcmlwdCB0YWcgaW5zdGVhZC4KICogVGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiBuZWl0aGVyIGV4ZWNTY3JpcHQgb3IgZXZhbCBpcyBkZWZpbmVkLgogKiBAcGFyYW0ge3N0cmluZ30gc2NyaXB0IEphdmFTY3JpcHQgc3RyaW5nLgogKi8KZ29vZy5nbG9iYWxFdmFsID0gZnVuY3Rpb24oc2NyaXB0KSB7CiAgaWYgKGdvb2cuZ2xvYmFsLmV4ZWNTY3JpcHQpIHsKICAgIGdvb2cuZ2xvYmFsLmV4ZWNTY3JpcHQoc2NyaXB0LCAnSmF2YVNjcmlwdCcpOwogIH0gZWxzZSBpZiAoZ29vZy5nbG9iYWwuZXZhbCkgewogICAgLy8gVGVzdCB0byBzZWUgaWYgZXZhbCB3b3JrcwogICAgaWYgKGdvb2cuZXZhbFdvcmtzRm9yR2xvYmFsc18gPT0gbnVsbCkgewogICAgICB0cnkgewogICAgICAgIGdvb2cuZ2xvYmFsLmV2YWwoJ3ZhciBfZXZhbFRlc3RfID0gMTsnKTsKICAgICAgfSBjYXRjaCAoaWdub3JlKSB7CiAgICAgIH0KICAgICAgaWYgKHR5cGVvZiBnb29nLmdsb2JhbFsnX2V2YWxUZXN0XyddICE9ICd1bmRlZmluZWQnKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgIGRlbGV0ZSBnb29nLmdsb2JhbFsnX2V2YWxUZXN0XyddOwogICAgICAgIH0gY2F0Y2ggKGlnbm9yZSkgewogICAgICAgICAgLy8gTWljcm9zb2Z0IGVkZ2UgZmFpbHMgdGhlIGRlbGV0aW9uIGFib3ZlIGluIHN0cmljdCBtb2RlLgogICAgICAgIH0KICAgICAgICBnb29nLmV2YWxXb3Jrc0Zvckdsb2JhbHNfID0gdHJ1ZTsKICAgICAgfSBlbHNlIHsKICAgICAgICBnb29nLmV2YWxXb3Jrc0Zvckdsb2JhbHNfID0gZmFsc2U7CiAgICAgIH0KICAgIH0KCiAgICBpZiAoZ29vZy5ldmFsV29ya3NGb3JHbG9iYWxzXykgewogICAgICBnb29nLmdsb2JhbC5ldmFsKHNjcmlwdCk7CiAgICB9IGVsc2UgewogICAgICAvKiogQHR5cGUgeyFEb2N1bWVudH0gKi8KICAgICAgdmFyIGRvYyA9IGdvb2cuZ2xvYmFsLmRvY3VtZW50OwogICAgICB2YXIgc2NyaXB0RWx0ID0KICAgICAgICAgIC8qKiBAdHlwZSB7IUhUTUxTY3JpcHRFbGVtZW50fSAqLyAoZG9jLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpKTsKICAgICAgc2NyaXB0RWx0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsKICAgICAgc2NyaXB0RWx0LmRlZmVyID0gZmFsc2U7CiAgICAgIC8vIE5vdGUodXNlcik6IGNhbid0IHVzZSAuaW5uZXJIVE1MIHNpbmNlICJ0KCc8dGVzdD4nKSIgd2lsbCBmYWlsIGFuZAogICAgICAvLyAudGV4dCBkb2Vzbid0IHdvcmsgaW4gU2FmYXJpIDIuICBUaGVyZWZvcmUgd2UgYXBwZW5kIGEgdGV4dCBub2RlLgogICAgICBzY3JpcHRFbHQuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKHNjcmlwdCkpOwogICAgICBkb2MuaGVhZC5hcHBlbmRDaGlsZChzY3JpcHRFbHQpOwogICAgICBkb2MuaGVhZC5yZW1vdmVDaGlsZChzY3JpcHRFbHQpOwogICAgfQogIH0gZWxzZSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ2dvb2cuZ2xvYmFsRXZhbCBub3QgYXZhaWxhYmxlJyk7CiAgfQp9OwoKCi8qKgogKiBJbmRpY2F0ZXMgd2hldGhlciBvciBub3Qgd2UgY2FuIGNhbGwgJ2V2YWwnIGRpcmVjdGx5IHRvIGV2YWwgY29kZSBpbiB0aGUKICogZ2xvYmFsIHNjb3BlLiBTZXQgdG8gYSBCb29sZWFuIGJ5IHRoZSBmaXJzdCBjYWxsIHRvIGdvb2cuZ2xvYmFsRXZhbCAod2hpY2gKICogZW1waXJpY2FsbHkgdGVzdHMgd2hldGhlciBldmFsIHdvcmtzIGZvciBnbG9iYWxzKS4gQHNlZSBnb29nLmdsb2JhbEV2YWwKICogQHR5cGUgez9ib29sZWFufQogKiBAcHJpdmF0ZQogKi8KZ29vZy5ldmFsV29ya3NGb3JHbG9iYWxzXyA9IG51bGw7CgoKLyoqCiAqIE9wdGlvbmFsIG1hcCBvZiBDU1MgY2xhc3MgbmFtZXMgdG8gb2JmdXNjYXRlZCBuYW1lcyB1c2VkIHdpdGgKICogZ29vZy5nZXRDc3NOYW1lKCkuCiAqIEBwcml2YXRlIHshT2JqZWN0PHN0cmluZywgc3RyaW5nPnx1bmRlZmluZWR9CiAqIEBzZWUgZ29vZy5zZXRDc3NOYW1lTWFwcGluZwogKi8KZ29vZy5jc3NOYW1lTWFwcGluZ187CgoKLyoqCiAqIE9wdGlvbmFsIG9iZnVzY2F0aW9uIHN0eWxlIGZvciBDU1MgY2xhc3MgbmFtZXMuIFNob3VsZCBiZSBzZXQgdG8gZWl0aGVyCiAqICdCWV9XSE9MRScgb3IgJ0JZX1BBUlQnIGlmIGRlZmluZWQuCiAqIEB0eXBlIHtzdHJpbmd8dW5kZWZpbmVkfQogKiBAcHJpdmF0ZQogKiBAc2VlIGdvb2cuc2V0Q3NzTmFtZU1hcHBpbmcKICovCmdvb2cuY3NzTmFtZU1hcHBpbmdTdHlsZV87CgoKCi8qKgogKiBBIGhvb2sgZm9yIG1vZGlmeWluZyB0aGUgZGVmYXVsdCBiZWhhdmlvciBnb29nLmdldENzc05hbWUuIFRoZSBmdW5jdGlvbgogKiBpZiBwcmVzZW50LCB3aWxsIHJlY2VpdmUgdGhlIHN0YW5kYXJkIG91dHB1dCBvZiB0aGUgZ29vZy5nZXRDc3NOYW1lIGFzCiAqIGl0cyBpbnB1dC4KICoKICogQHR5cGUgeyhmdW5jdGlvbihzdHJpbmcpOnN0cmluZyl8dW5kZWZpbmVkfQogKi8KZ29vZy5nbG9iYWwuQ0xPU1VSRV9DU1NfTkFNRV9NQVBfRk47CgoKLyoqCiAqIEhhbmRsZXMgc3RyaW5ncyB0aGF0IGFyZSBpbnRlbmRlZCB0byBiZSB1c2VkIGFzIENTUyBjbGFzcyBuYW1lcy4KICoKICogVGhpcyBmdW5jdGlvbiB3b3JrcyBpbiB0YW5kZW0gd2l0aCBAc2VlIGdvb2cuc2V0Q3NzTmFtZU1hcHBpbmcuCiAqCiAqIFdpdGhvdXQgYW55IG1hcHBpbmcgc2V0LCB0aGUgYXJndW1lbnRzIGFyZSBzaW1wbGUgam9pbmVkIHdpdGggYSBoeXBoZW4gYW5kCiAqIHBhc3NlZCB0aHJvdWdoIHVuYWx0ZXJlZC4KICoKICogV2hlbiB0aGVyZSBpcyBhIG1hcHBpbmcsIHRoZXJlIGFyZSB0d28gcG9zc2libGUgc3R5bGVzIGluIHdoaWNoIHRoZXNlCiAqIG1hcHBpbmdzIGFyZSB1c2VkLiBJbiB0aGUgQllfUEFSVCBzdHlsZSwgZWFjaCBwYXJ0IChpLmUuIGluIGJldHdlZW4gaHlwaGVucykKICogb2YgdGhlIHBhc3NlZCBpbiBjc3MgbmFtZSBpcyByZXdyaXR0ZW4gYWNjb3JkaW5nIHRvIHRoZSBtYXAuIEluIHRoZSBCWV9XSE9MRQogKiBzdHlsZSwgdGhlIGZ1bGwgY3NzIG5hbWUgaXMgbG9va2VkIHVwIGluIHRoZSBtYXAgZGlyZWN0bHkuIElmIGEgcmV3cml0ZSBpcwogKiBub3Qgc3BlY2lmaWVkIGJ5IHRoZSBtYXAsIHRoZSBjb21waWxlciB3aWxsIG91dHB1dCBhIHdhcm5pbmcuCiAqCiAqIFdoZW4gdGhlIG1hcHBpbmcgaXMgcGFzc2VkIHRvIHRoZSBjb21waWxlciwgaXQgd2lsbCByZXBsYWNlIGNhbGxzIHRvCiAqIGdvb2cuZ2V0Q3NzTmFtZSB3aXRoIHRoZSBzdHJpbmdzIGZyb20gdGhlIG1hcHBpbmcsIGUuZy4KICogICAgIHZhciB4ID0gZ29vZy5nZXRDc3NOYW1lKCdmb28nKTsKICogICAgIHZhciB5ID0gZ29vZy5nZXRDc3NOYW1lKHRoaXMuYmFzZUNsYXNzLCAnYWN0aXZlJyk7CiAqICBiZWNvbWVzOgogKiAgICAgdmFyIHggPSAnZm9vJzsKICogICAgIHZhciB5ID0gdGhpcy5iYXNlQ2xhc3MgKyAnLWFjdGl2ZSc7CiAqCiAqIElmIG9uZSBhcmd1bWVudCBpcyBwYXNzZWQgaXQgd2lsbCBiZSBwcm9jZXNzZWQsIGlmIHR3byBhcmUgcGFzc2VkIG9ubHkgdGhlCiAqIG1vZGlmaWVyIHdpbGwgYmUgcHJvY2Vzc2VkLCBhcyBpdCBpcyBhc3N1bWVkIHRoZSBmaXJzdCBhcmd1bWVudCB3YXMgZ2VuZXJhdGVkCiAqIGFzIGEgcmVzdWx0IG9mIGNhbGxpbmcgZ29vZy5nZXRDc3NOYW1lLgogKgogKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NOYW1lIFRoZSBjbGFzcyBuYW1lLgogKiBAcGFyYW0ge3N0cmluZz19IG9wdF9tb2RpZmllciBBIG1vZGlmaWVyIHRvIGJlIGFwcGVuZGVkIHRvIHRoZSBjbGFzcyBuYW1lLgogKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBjbGFzcyBuYW1lIG9yIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSBjbGFzcyBuYW1lIGFuZAogKiAgICAgdGhlIG1vZGlmaWVyLgogKi8KZ29vZy5nZXRDc3NOYW1lID0gZnVuY3Rpb24oY2xhc3NOYW1lLCBvcHRfbW9kaWZpZXIpIHsKICAvLyBTdHJpbmcoKSBpcyB1c2VkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggY29tcGlsZWQgc295IHdoZXJlIHRoZSBwYXNzZWQKICAvLyBjbGFzc05hbWUgY2FuIGJlIG5vbi1zdHJpbmcgb2JqZWN0cy4KICBpZiAoU3RyaW5nKGNsYXNzTmFtZSkuY2hhckF0KDApID09ICcuJykgewogICAgdGhyb3cgbmV3IEVycm9yKAogICAgICAgICdjbGFzc05hbWUgcGFzc2VkIGluIGdvb2cuZ2V0Q3NzTmFtZSBtdXN0IG5vdCBzdGFydCB3aXRoICIuIi4nICsKICAgICAgICAnIFlvdSBwYXNzZWQ6ICcgKyBjbGFzc05hbWUpOwogIH0KCiAgdmFyIGdldE1hcHBpbmcgPSBmdW5jdGlvbihjc3NOYW1lKSB7CiAgICByZXR1cm4gZ29vZy5jc3NOYW1lTWFwcGluZ19bY3NzTmFtZV0gfHwgY3NzTmFtZTsKICB9OwoKICB2YXIgcmVuYW1lQnlQYXJ0cyA9IGZ1bmN0aW9uKGNzc05hbWUpIHsKICAgIC8vIFJlbWFwIGFsbCB0aGUgcGFydHMgaW5kaXZpZHVhbGx5LgogICAgdmFyIHBhcnRzID0gY3NzTmFtZS5zcGxpdCgnLScpOwogICAgdmFyIG1hcHBlZCA9IFtdOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGg7IGkrKykgewogICAgICBtYXBwZWQucHVzaChnZXRNYXBwaW5nKHBhcnRzW2ldKSk7CiAgICB9CiAgICByZXR1cm4gbWFwcGVkLmpvaW4oJy0nKTsKICB9OwoKICB2YXIgcmVuYW1lOwogIGlmIChnb29nLmNzc05hbWVNYXBwaW5nXykgewogICAgcmVuYW1lID0KICAgICAgICBnb29nLmNzc05hbWVNYXBwaW5nU3R5bGVfID09ICdCWV9XSE9MRScgPyBnZXRNYXBwaW5nIDogcmVuYW1lQnlQYXJ0czsKICB9IGVsc2UgewogICAgcmVuYW1lID0gZnVuY3Rpb24oYSkgewogICAgICByZXR1cm4gYTsKICAgIH07CiAgfQoKICB2YXIgcmVzdWx0ID0KICAgICAgb3B0X21vZGlmaWVyID8gY2xhc3NOYW1lICsgJy0nICsgcmVuYW1lKG9wdF9tb2RpZmllcikgOiByZW5hbWUoY2xhc3NOYW1lKTsKCiAgLy8gVGhlIHNwZWNpYWwgQ0xPU1VSRV9DU1NfTkFNRV9NQVBfRk4gYWxsb3dzIHVzZXJzIHRvIHNwZWNpZnkgZnVydGhlcgogIC8vIHByb2Nlc3Npbmcgb2YgdGhlIGNsYXNzIG5hbWUuCiAgaWYgKGdvb2cuZ2xvYmFsLkNMT1NVUkVfQ1NTX05BTUVfTUFQX0ZOKSB7CiAgICByZXR1cm4gZ29vZy5nbG9iYWwuQ0xPU1VSRV9DU1NfTkFNRV9NQVBfRk4ocmVzdWx0KTsKICB9CgogIHJldHVybiByZXN1bHQ7Cn07CgoKLyoqCiAqIFNldHMgdGhlIG1hcCB0byBjaGVjayB3aGVuIHJldHVybmluZyBhIHZhbHVlIGZyb20gZ29vZy5nZXRDc3NOYW1lKCkuIEV4YW1wbGU6CiAqIDxwcmU+CiAqIGdvb2cuc2V0Q3NzTmFtZU1hcHBpbmcoewogKiAgICJnb29nIjogImEiLAogKiAgICJkaXNhYmxlZCI6ICJiIiwKICogfSk7CiAqCiAqIHZhciB4ID0gZ29vZy5nZXRDc3NOYW1lKCdnb29nJyk7CiAqIC8vIFRoZSBmb2xsb3dpbmcgZXZhbHVhdGVzIHRvOiAiYSBhLWIiLgogKiBnb29nLmdldENzc05hbWUoJ2dvb2cnKSArICcgJyArIGdvb2cuZ2V0Q3NzTmFtZSh4LCAnZGlzYWJsZWQnKQogKiA8L3ByZT4KICogV2hlbiBkZWNsYXJlZCBhcyBhIG1hcCBvZiBzdHJpbmcgbGl0ZXJhbHMgdG8gc3RyaW5nIGxpdGVyYWxzLCB0aGUgSlNDb21waWxlcgogKiB3aWxsIHJlcGxhY2UgYWxsIGNhbGxzIHRvIGdvb2cuZ2V0Q3NzTmFtZSgpIHVzaW5nIHRoZSBzdXBwbGllZCBtYXAgaWYgdGhlCiAqIC0tcHJvY2Vzc19jbG9zdXJlX3ByaW1pdGl2ZXMgZmxhZyBpcyBzZXQuCiAqCiAqIEBwYXJhbSB7IU9iamVjdH0gbWFwcGluZyBBIG1hcCBvZiBzdHJpbmdzIHRvIHN0cmluZ3Mgd2hlcmUga2V5cyBhcmUgcG9zc2libGUKICogICAgIGFyZ3VtZW50cyB0byBnb29nLmdldENzc05hbWUoKSBhbmQgdmFsdWVzIGFyZSB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZXMKICogICAgIHRoYXQgc2hvdWxkIGJlIHJldHVybmVkLgogKiBAcGFyYW0ge3N0cmluZz19IG9wdF9zdHlsZSBUaGUgc3R5bGUgb2YgY3NzIG5hbWUgbWFwcGluZy4gVGhlcmUgYXJlIHR3byB2YWxpZAogKiAgICAgb3B0aW9uczogJ0JZX1BBUlQnLCBhbmQgJ0JZX1dIT0xFJy4KICogQHNlZSBnb29nLmdldENzc05hbWUgZm9yIGEgZGVzY3JpcHRpb24uCiAqLwpnb29nLnNldENzc05hbWVNYXBwaW5nID0gZnVuY3Rpb24obWFwcGluZywgb3B0X3N0eWxlKSB7CiAgZ29vZy5jc3NOYW1lTWFwcGluZ18gPSBtYXBwaW5nOwogIGdvb2cuY3NzTmFtZU1hcHBpbmdTdHlsZV8gPSBvcHRfc3R5bGU7Cn07CgoKLyoqCiAqIFRvIHVzZSBDU1MgcmVuYW1pbmcgaW4gY29tcGlsZWQgbW9kZSwgb25lIG9mIHRoZSBpbnB1dCBmaWxlcyBzaG91bGQgaGF2ZSBhCiAqIGNhbGwgdG8gZ29vZy5zZXRDc3NOYW1lTWFwcGluZygpIHdpdGggYW4gb2JqZWN0IGxpdGVyYWwgdGhhdCB0aGUgSlNDb21waWxlcgogKiBjYW4gZXh0cmFjdCBhbmQgdXNlIHRvIHJlcGxhY2UgYWxsIGNhbGxzIHRvIGdvb2cuZ2V0Q3NzTmFtZSgpLiBJbiB1bmNvbXBpbGVkCiAqIG1vZGUsIEphdmFTY3JpcHQgY29kZSBzaG91bGQgYmUgbG9hZGVkIGJlZm9yZSB0aGlzIGJhc2UuanMgZmlsZSB0aGF0IGRlY2xhcmVzCiAqIGEgZ2xvYmFsIHZhcmlhYmxlLCBDTE9TVVJFX0NTU19OQU1FX01BUFBJTkcsIHdoaWNoIGlzIHVzZWQgYmVsb3cuIFRoaXMgaXMKICogdG8gZW5zdXJlIHRoYXQgdGhlIG1hcHBpbmcgaXMgbG9hZGVkIGJlZm9yZSBhbnkgY2FsbHMgdG8gZ29vZy5nZXRDc3NOYW1lKCkKICogYXJlIG1hZGUgaW4gdW5jb21waWxlZCBtb2RlLgogKgogKiBBIGhvb2sgZm9yIG92ZXJyaWRpbmcgdGhlIENTUyBuYW1lIG1hcHBpbmcuCiAqIEB0eXBlIHshT2JqZWN0PHN0cmluZywgc3RyaW5nPnx1bmRlZmluZWR9CiAqLwpnb29nLmdsb2JhbC5DTE9TVVJFX0NTU19OQU1FX01BUFBJTkc7CgoKaWYgKCFDT01QSUxFRCAmJiBnb29nLmdsb2JhbC5DTE9TVVJFX0NTU19OQU1FX01BUFBJTkcpIHsKICAvLyBUaGlzIGRvZXMgbm90IGNhbGwgZ29vZy5zZXRDc3NOYW1lTWFwcGluZygpIGJlY2F1c2UgdGhlIEpTQ29tcGlsZXIKICAvLyByZXF1aXJlcyB0aGF0IGdvb2cuc2V0Q3NzTmFtZU1hcHBpbmcoKSBiZSBjYWxsZWQgd2l0aCBhbiBvYmplY3QgbGl0ZXJhbC4KICBnb29nLmNzc05hbWVNYXBwaW5nXyA9IGdvb2cuZ2xvYmFsLkNMT1NVUkVfQ1NTX05BTUVfTUFQUElORzsKfQoKCi8qKgogKiBHZXRzIGEgbG9jYWxpemVkIG1lc3NhZ2UuCiAqCiAqIFRoaXMgZnVuY3Rpb24gaXMgYSBjb21waWxlciBwcmltaXRpdmUuIElmIHlvdSBnaXZlIHRoZSBjb21waWxlciBhIGxvY2FsaXplZAogKiBtZXNzYWdlIGJ1bmRsZSwgaXQgd2lsbCByZXBsYWNlIHRoZSBzdHJpbmcgYXQgY29tcGlsZS10aW1lIHdpdGggYSBsb2NhbGl6ZWQKICogdmVyc2lvbiwgYW5kIGV4cGFuZCBnb29nLmdldE1zZyBjYWxsIHRvIGEgY29uY2F0ZW5hdGVkIHN0cmluZy4KICoKICogTWVzc2FnZXMgbXVzdCBiZSBpbml0aWFsaXplZCBpbiB0aGUgZm9ybToKICogPGNvZGU+CiAqIHZhciBNU0dfTkFNRSA9IGdvb2cuZ2V0TXNnKCdIZWxsbyB7JHBsYWNlaG9sZGVyfScsIHsncGxhY2Vob2xkZXInOiAnd29ybGQnfSk7CiAqIDwvY29kZT4KICoKICogVGhpcyBmdW5jdGlvbiBwcm9kdWNlcyBhIHN0cmluZyB3aGljaCBzaG91bGQgYmUgdHJlYXRlZCBhcyBwbGFpbiB0ZXh0LiBVc2UKICoge0BsaW5rIGdvb2cuaHRtbC5TYWZlSHRtbEZvcm1hdHRlcn0gaW4gY29uanVuY3Rpb24gd2l0aCBnb29nLmdldE1zZyB0bwogKiBwcm9kdWNlIFNhZmVIdG1sLgogKgogKiBAcGFyYW0ge3N0cmluZ30gc3RyIFRyYW5zbGF0YWJsZSBzdHJpbmcsIHBsYWNlcyBob2xkZXJzIGluIHRoZSBmb3JtIHskZm9vfS4KICogQHBhcmFtIHtPYmplY3Q8c3RyaW5nLCBzdHJpbmc+PX0gb3B0X3ZhbHVlcyBNYXBzIHBsYWNlIGhvbGRlciBuYW1lIHRvIHZhbHVlLgogKiBAcGFyYW0ge3todG1sOiBib29sZWFufT19IG9wdF9vcHRpb25zIE9wdGlvbnM6CiAqICAgICBodG1sOiBFc2NhcGUgJzwnIGluIHN0ciB0byAnJmx0OycuIFVzZWQgYnkgQ2xvc3VyZSBUZW1wbGF0ZXMgd2hlcmUgdGhlCiAqICAgICBnZW5lcmF0ZWQgY29kZSBzaXplIGFuZCBwZXJmb3JtYW5jZSBpcyBjcml0aWNhbCB3aGljaCBpcyB3aHkge0BsaW5rCiAqICAgICBnb29nLmh0bWwuU2FmZUh0bWxGb3JtYXR0ZXJ9IGlzIG5vdCB1c2VkLiBUaGUgdmFsdWUgbXVzdCBiZSBsaXRlcmFsIHRydWUKICogICAgIG9yIGZhbHNlLgogKiBAcmV0dXJuIHtzdHJpbmd9IG1lc3NhZ2Ugd2l0aCBwbGFjZWhvbGRlcnMgZmlsbGVkLgogKi8KZ29vZy5nZXRNc2cgPSBmdW5jdGlvbihzdHIsIG9wdF92YWx1ZXMsIG9wdF9vcHRpb25zKSB7CiAgaWYgKG9wdF9vcHRpb25zICYmIG9wdF9vcHRpb25zLmh0bWwpIHsKICAgIC8vIE5vdGUgdGhhdCAnJicgaXMgbm90IHJlcGxhY2VkIGJlY2F1c2UgdGhlIHRyYW5zbGF0aW9uIGNhbiBjb250YWluIEhUTUwKICAgIC8vIGVudGl0aWVzLgogICAgc3RyID0gc3RyLnJlcGxhY2UoLzwvZywgJyZsdDsnKTsKICB9CiAgaWYgKG9wdF92YWx1ZXMpIHsKICAgIHN0ciA9IHN0ci5yZXBsYWNlKC9ce1wkKFtefV0rKX0vZywgZnVuY3Rpb24obWF0Y2gsIGtleSkgewogICAgICByZXR1cm4gKG9wdF92YWx1ZXMgIT0gbnVsbCAmJiBrZXkgaW4gb3B0X3ZhbHVlcykgPyBvcHRfdmFsdWVzW2tleV0gOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaDsKICAgIH0pOwogIH0KICByZXR1cm4gc3RyOwp9OwoKCi8qKgogKiBHZXRzIGEgbG9jYWxpemVkIG1lc3NhZ2UuIElmIHRoZSBtZXNzYWdlIGRvZXMgbm90IGhhdmUgYSB0cmFuc2xhdGlvbiwgZ2l2ZXMgYQogKiBmYWxsYmFjayBtZXNzYWdlLgogKgogKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIGludHJvZHVjaW5nIGEgbmV3IG1lc3NhZ2UgdGhhdCBoYXMgbm90IHlldCBiZWVuCiAqIHRyYW5zbGF0ZWQgaW50byBhbGwgbGFuZ3VhZ2VzLgogKgogKiBUaGlzIGZ1bmN0aW9uIGlzIGEgY29tcGlsZXIgcHJpbWl0aXZlLiBNdXN0IGJlIHVzZWQgaW4gdGhlIGZvcm06CiAqIDxjb2RlPnZhciB4ID0gZ29vZy5nZXRNc2dXaXRoRmFsbGJhY2soTVNHX0EsIE1TR19CKTs8L2NvZGU+CiAqIHdoZXJlIE1TR19BIGFuZCBNU0dfQiB3ZXJlIGluaXRpYWxpemVkIHdpdGggZ29vZy5nZXRNc2cuCiAqCiAqIEBwYXJhbSB7c3RyaW5nfSBhIFRoZSBwcmVmZXJyZWQgbWVzc2FnZS4KICogQHBhcmFtIHtzdHJpbmd9IGIgVGhlIGZhbGxiYWNrIG1lc3NhZ2UuCiAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGJlc3QgdHJhbnNsYXRlZCBtZXNzYWdlLgogKi8KZ29vZy5nZXRNc2dXaXRoRmFsbGJhY2sgPSBmdW5jdGlvbihhLCBiKSB7CiAgcmV0dXJuIGE7Cn07CgoKLyoqCiAqIEV4cG9zZXMgYW4gdW5vYmZ1c2NhdGVkIGdsb2JhbCBuYW1lc3BhY2UgcGF0aCBmb3IgdGhlIGdpdmVuIG9iamVjdC4KICogTm90ZSB0aGF0IGZpZWxkcyBvZiB0aGUgZXhwb3J0ZWQgb2JqZWN0ICp3aWxsKiBiZSBvYmZ1c2NhdGVkLCB1bmxlc3MgdGhleSBhcmUKICogZXhwb3J0ZWQgaW4gdHVybiB2aWEgdGhpcyBmdW5jdGlvbiBvciBnb29nLmV4cG9ydFByb3BlcnR5LgogKgogKiBBbHNvIGhhbmR5IGZvciBtYWtpbmcgcHVibGljIGl0ZW1zIHRoYXQgYXJlIGRlZmluZWQgaW4gYW5vbnltb3VzIGNsb3N1cmVzLgogKgogKiBleC4gZ29vZy5leHBvcnRTeW1ib2woJ3B1YmxpYy5wYXRoLkZvbycsIEZvbyk7CiAqCiAqIGV4LiBnb29nLmV4cG9ydFN5bWJvbCgncHVibGljLnBhdGguRm9vLnN0YXRpY0Z1bmN0aW9uJywgRm9vLnN0YXRpY0Z1bmN0aW9uKTsKICogICAgIHB1YmxpYy5wYXRoLkZvby5zdGF0aWNGdW5jdGlvbigpOwogKgogKiBleC4gZ29vZy5leHBvcnRTeW1ib2woJ3B1YmxpYy5wYXRoLkZvby5wcm90b3R5cGUubXlNZXRob2QnLAogKiAgICAgICAgICAgICAgICAgICAgICAgRm9vLnByb3RvdHlwZS5teU1ldGhvZCk7CiAqICAgICBuZXcgcHVibGljLnBhdGguRm9vKCkubXlNZXRob2QoKTsKICoKICogQHBhcmFtIHtzdHJpbmd9IHB1YmxpY1BhdGggVW5vYmZ1c2NhdGVkIG5hbWUgdG8gZXhwb3J0LgogKiBAcGFyYW0geyp9IG9iamVjdCBPYmplY3QgdGhlIG5hbWUgc2hvdWxkIHBvaW50IHRvLgogKiBAcGFyYW0ge09iamVjdD19IG9wdF9vYmplY3RUb0V4cG9ydFRvIFRoZSBvYmplY3QgdG8gYWRkIHRoZSBwYXRoIHRvOyBkZWZhdWx0CiAqICAgICBpcyBnb29nLmdsb2JhbC4KICovCmdvb2cuZXhwb3J0U3ltYm9sID0gZnVuY3Rpb24ocHVibGljUGF0aCwgb2JqZWN0LCBvcHRfb2JqZWN0VG9FeHBvcnRUbykgewogIGdvb2cuZXhwb3J0UGF0aF8ocHVibGljUGF0aCwgb2JqZWN0LCBvcHRfb2JqZWN0VG9FeHBvcnRUbyk7Cn07CgoKLyoqCiAqIEV4cG9ydHMgYSBwcm9wZXJ0eSB1bm9iZnVzY2F0ZWQgaW50byB0aGUgb2JqZWN0J3MgbmFtZXNwYWNlLgogKiBleC4gZ29vZy5leHBvcnRQcm9wZXJ0eShGb28sICdzdGF0aWNGdW5jdGlvbicsIEZvby5zdGF0aWNGdW5jdGlvbik7CiAqIGV4LiBnb29nLmV4cG9ydFByb3BlcnR5KEZvby5wcm90b3R5cGUsICdteU1ldGhvZCcsIEZvby5wcm90b3R5cGUubXlNZXRob2QpOwogKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IE9iamVjdCB3aG9zZSBzdGF0aWMgcHJvcGVydHkgaXMgYmVpbmcgZXhwb3J0ZWQuCiAqIEBwYXJhbSB7c3RyaW5nfSBwdWJsaWNOYW1lIFVub2JmdXNjYXRlZCBuYW1lIHRvIGV4cG9ydC4KICogQHBhcmFtIHsqfSBzeW1ib2wgT2JqZWN0IHRoZSBuYW1lIHNob3VsZCBwb2ludCB0by4KICovCmdvb2cuZXhwb3J0UHJvcGVydHkgPSBmdW5jdGlvbihvYmplY3QsIHB1YmxpY05hbWUsIHN5bWJvbCkgewogIG9iamVjdFtwdWJsaWNOYW1lXSA9IHN5bWJvbDsKfTsKCgovKioKICogSW5oZXJpdCB0aGUgcHJvdG90eXBlIG1ldGhvZHMgZnJvbSBvbmUgY29uc3RydWN0b3IgaW50byBhbm90aGVyLgogKgogKiBVc2FnZToKICogPHByZT4KICogZnVuY3Rpb24gUGFyZW50Q2xhc3MoYSwgYikgeyB9CiAqIFBhcmVudENsYXNzLnByb3RvdHlwZS5mb28gPSBmdW5jdGlvbihhKSB7IH07CiAqCiAqIGZ1bmN0aW9uIENoaWxkQ2xhc3MoYSwgYiwgYykgewogKiAgIENoaWxkQ2xhc3MuYmFzZSh0aGlzLCAnY29uc3RydWN0b3InLCBhLCBiKTsKICogfQogKiBnb29nLmluaGVyaXRzKENoaWxkQ2xhc3MsIFBhcmVudENsYXNzKTsKICoKICogdmFyIGNoaWxkID0gbmV3IENoaWxkQ2xhc3MoJ2EnLCAnYicsICdzZWUnKTsKICogY2hpbGQuZm9vKCk7IC8vIFRoaXMgd29ya3MuCiAqIDwvcHJlPgogKgogKiBAcGFyYW0geyFGdW5jdGlvbn0gY2hpbGRDdG9yIENoaWxkIGNsYXNzLgogKiBAcGFyYW0geyFGdW5jdGlvbn0gcGFyZW50Q3RvciBQYXJlbnQgY2xhc3MuCiAqIEBzdXBwcmVzcyB7c3RyaWN0TWlzc2luZ1Byb3BlcnRpZXN9IHN1cGVyQ2xhc3NfIGFuZCBiYXNlIGlzIG5vdCBkZWZpbmVkIG9uCiAqICAgIEZ1bmN0aW9uLgogKi8KZ29vZy5pbmhlcml0cyA9IGZ1bmN0aW9uKGNoaWxkQ3RvciwgcGFyZW50Q3RvcikgewogIC8qKiBAY29uc3RydWN0b3IgKi8KICBmdW5jdGlvbiB0ZW1wQ3RvcigpIHt9CiAgdGVtcEN0b3IucHJvdG90eXBlID0gcGFyZW50Q3Rvci5wcm90b3R5cGU7CiAgY2hpbGRDdG9yLnN1cGVyQ2xhc3NfID0gcGFyZW50Q3Rvci5wcm90b3R5cGU7CiAgY2hpbGRDdG9yLnByb3RvdHlwZSA9IG5ldyB0ZW1wQ3RvcigpOwogIC8qKiBAb3ZlcnJpZGUgKi8KICBjaGlsZEN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY2hpbGRDdG9yOwoKICAvKioKICAgKiBDYWxscyBzdXBlcmNsYXNzIGNvbnN0cnVjdG9yL21ldGhvZC4KICAgKgogICAqIFRoaXMgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgaWYgeW91IHVzZSBnb29nLmluaGVyaXRzIHRvCiAgICogZXhwcmVzcyBpbmhlcml0YW5jZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gY2xhc3Nlcy4KICAgKgogICAqIE5PVEU6IFRoaXMgaXMgYSByZXBsYWNlbWVudCBmb3IgZ29vZy5iYXNlIGFuZCBmb3Igc3VwZXJDbGFzc18KICAgKiBwcm9wZXJ0eSBkZWZpbmVkIGluIGNoaWxkQ3Rvci4KICAgKgogICAqIEBwYXJhbSB7IU9iamVjdH0gbWUgU2hvdWxkIGFsd2F5cyBiZSAidGhpcyIuCiAgICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZE5hbWUgVGhlIG1ldGhvZCBuYW1lIHRvIGNhbGwuIENhbGxpbmcKICAgKiAgICAgc3VwZXJjbGFzcyBjb25zdHJ1Y3RvciBjYW4gYmUgZG9uZSB3aXRoIHRoZSBzcGVjaWFsIHN0cmluZwogICAqICAgICAnY29uc3RydWN0b3InLgogICAqIEBwYXJhbSB7Li4uKn0gdmFyX2FyZ3MgVGhlIGFyZ3VtZW50cyB0byBwYXNzIHRvIHN1cGVyY2xhc3MKICAgKiAgICAgbWV0aG9kL2NvbnN0cnVjdG9yLgogICAqIEByZXR1cm4geyp9IFRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHN1cGVyY2xhc3MgbWV0aG9kL2NvbnN0cnVjdG9yLgogICAqLwogIGNoaWxkQ3Rvci5iYXNlID0gZnVuY3Rpb24obWUsIG1ldGhvZE5hbWUsIHZhcl9hcmdzKSB7CiAgICAvLyBDb3B5aW5nIHVzaW5nIGxvb3AgdG8gYXZvaWQgZGVvcCBkdWUgdG8gcGFzc2luZyBhcmd1bWVudHMgb2JqZWN0IHRvCiAgICAvLyBmdW5jdGlvbi4gVGhpcyBpcyBmYXN0ZXIgaW4gbWFueSBKUyBlbmdpbmVzIGFzIG9mIGxhdGUgMjAxNC4KICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAyKTsKICAgIGZvciAodmFyIGkgPSAyOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgIGFyZ3NbaSAtIDJdID0gYXJndW1lbnRzW2ldOwogICAgfQogICAgcmV0dXJuIHBhcmVudEN0b3IucHJvdG90eXBlW21ldGhvZE5hbWVdLmFwcGx5KG1lLCBhcmdzKTsKICB9Owp9OwoKCi8qKgogKiBDYWxsIHVwIHRvIHRoZSBzdXBlcmNsYXNzLgogKgogKiBJZiB0aGlzIGlzIGNhbGxlZCBmcm9tIGEgY29uc3RydWN0b3IsIHRoZW4gdGhpcyBjYWxscyB0aGUgc3VwZXJjbGFzcwogKiBjb25zdHJ1Y3RvciB3aXRoIGFyZ3VtZW50cyAxLU4uCiAqCiAqIElmIHRoaXMgaXMgY2FsbGVkIGZyb20gYSBwcm90b3R5cGUgbWV0aG9kLCB0aGVuIHlvdSBtdXN0IHBhc3MgdGhlIG5hbWUgb2YgdGhlCiAqIG1ldGhvZCBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIHRoaXMgZnVuY3Rpb24uIElmIHlvdSBkbyBub3QsIHlvdSB3aWxsIGdldCBhCiAqIHJ1bnRpbWUgZXJyb3IuIFRoaXMgY2FsbHMgdGhlIHN1cGVyY2xhc3MnIG1ldGhvZCB3aXRoIGFyZ3VtZW50cyAyLU4uCiAqCiAqIFRoaXMgZnVuY3Rpb24gb25seSB3b3JrcyBpZiB5b3UgdXNlIGdvb2cuaW5oZXJpdHMgdG8gZXhwcmVzcyBpbmhlcml0YW5jZQogKiByZWxhdGlvbnNoaXBzIGJldHdlZW4geW91ciBjbGFzc2VzLgogKgogKiBUaGlzIGZ1bmN0aW9uIGlzIGEgY29tcGlsZXIgcHJpbWl0aXZlLiBBdCBjb21waWxlLXRpbWUsIHRoZSBjb21waWxlciB3aWxsIGRvCiAqIG1hY3JvIGV4cGFuc2lvbiB0byByZW1vdmUgYSBsb3Qgb2YgdGhlIGV4dHJhIG92ZXJoZWFkIHRoYXQgdGhpcyBmdW5jdGlvbgogKiBpbnRyb2R1Y2VzLiBUaGUgY29tcGlsZXIgd2lsbCBhbHNvIGVuZm9yY2UgYSBsb3Qgb2YgdGhlIGFzc3VtcHRpb25zIHRoYXQgdGhpcwogKiBmdW5jdGlvbiBtYWtlcywgYW5kIHRyZWF0IGl0IGFzIGEgY29tcGlsZXIgZXJyb3IgaWYgeW91IGJyZWFrIHRoZW0uCiAqCiAqIEBwYXJhbSB7IU9iamVjdH0gbWUgU2hvdWxkIGFsd2F5cyBiZSAidGhpcyIuCiAqIEBwYXJhbSB7Kj19IG9wdF9tZXRob2ROYW1lIFRoZSBtZXRob2QgbmFtZSBpZiBjYWxsaW5nIGEgc3VwZXIgbWV0aG9kLgogKiBAcGFyYW0gey4uLip9IHZhcl9hcmdzIFRoZSByZXN0IG9mIHRoZSBhcmd1bWVudHMuCiAqIEByZXR1cm4geyp9IFRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHN1cGVyY2xhc3MgbWV0aG9kLgogKiBAc3VwcHJlc3Mge2VzNVN0cmljdH0gVGhpcyBtZXRob2QgY2FuIG5vdCBiZSB1c2VkIGluIHN0cmljdCBtb2RlLCBidXQKICogICAgIGFsbCBDbG9zdXJlIExpYnJhcnkgY29uc3VtZXJzIG11c3QgZGVwZW5kIG9uIHRoaXMgZmlsZS4KICogQGRlcHJlY2F0ZWQgZ29vZy5iYXNlIGlzIG5vdCBzdHJpY3QgbW9kZSBjb21wYXRpYmxlLiAgUHJlZmVyIHRoZSBzdGF0aWMKICogICAgICJiYXNlIiBtZXRob2QgYWRkZWQgdG8gdGhlIGNvbnN0cnVjdG9yIGJ5IGdvb2cuaW5oZXJpdHMKICogICAgIG9yIEVTNiBjbGFzc2VzIGFuZCB0aGUgInN1cGVyIiBrZXl3b3JkLgogKi8KZ29vZy5iYXNlID0gZnVuY3Rpb24obWUsIG9wdF9tZXRob2ROYW1lLCB2YXJfYXJncykgewogIHZhciBjYWxsZXIgPSBhcmd1bWVudHMuY2FsbGVlLmNhbGxlcjsKCiAgaWYgKGdvb2cuU1RSSUNUX01PREVfQ09NUEFUSUJMRSB8fCAoZ29vZy5ERUJVRyAmJiAhY2FsbGVyKSkgewogICAgdGhyb3cgbmV3IEVycm9yKAogICAgICAgICdhcmd1bWVudHMuY2FsbGVyIG5vdCBkZWZpbmVkLiAgZ29vZy5iYXNlKCkgY2Fubm90IGJlIHVzZWQgJyArCiAgICAgICAgJ3dpdGggc3RyaWN0IG1vZGUgY29kZS4gU2VlICcgKwogICAgICAgICdodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNS4xLyNzZWMtQycpOwogIH0KCiAgaWYgKHR5cGVvZiBjYWxsZXIuc3VwZXJDbGFzc18gIT09ICd1bmRlZmluZWQnKSB7CiAgICAvLyBDb3B5aW5nIHVzaW5nIGxvb3AgdG8gYXZvaWQgZGVvcCBkdWUgdG8gcGFzc2luZyBhcmd1bWVudHMgb2JqZWN0IHRvCiAgICAvLyBmdW5jdGlvbi4gVGhpcyBpcyBmYXN0ZXIgaW4gbWFueSBKUyBlbmdpbmVzIGFzIG9mIGxhdGUgMjAxNC4KICAgIHZhciBjdG9yQXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSk7CiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgewogICAgICBjdG9yQXJnc1tpIC0gMV0gPSBhcmd1bWVudHNbaV07CiAgICB9CiAgICAvLyBUaGlzIGlzIGEgY29uc3RydWN0b3IuIENhbGwgdGhlIHN1cGVyY2xhc3MgY29uc3RydWN0b3IuCiAgICByZXR1cm4gLyoqIEB0eXBlIHshRnVuY3Rpb259ICovIChjYWxsZXIuc3VwZXJDbGFzc18pCiAgICAgICAgLmNvbnN0cnVjdG9yLmFwcGx5KG1lLCBjdG9yQXJncyk7CiAgfQoKICBpZiAodHlwZW9mIG9wdF9tZXRob2ROYW1lICE9ICdzdHJpbmcnICYmIHR5cGVvZiBvcHRfbWV0aG9kTmFtZSAhPSAnc3ltYm9sJykgewogICAgdGhyb3cgbmV3IEVycm9yKAogICAgICAgICdtZXRob2QgbmFtZXMgcHJvdmlkZWQgdG8gZ29vZy5iYXNlIG11c3QgYmUgYSBzdHJpbmcgb3IgYSBzeW1ib2wnKTsKICB9CgogIC8vIENvcHlpbmcgdXNpbmcgbG9vcCB0byBhdm9pZCBkZW9wIGR1ZSB0byBwYXNzaW5nIGFyZ3VtZW50cyBvYmplY3QgdG8KICAvLyBmdW5jdGlvbi4gVGhpcyBpcyBmYXN0ZXIgaW4gbWFueSBKUyBlbmdpbmVzIGFzIG9mIGxhdGUgMjAxNC4KICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMik7CiAgZm9yICh2YXIgaSA9IDI7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsKICAgIGFyZ3NbaSAtIDJdID0gYXJndW1lbnRzW2ldOwogIH0KICB2YXIgZm91bmRDYWxsZXIgPSBmYWxzZTsKICBmb3IgKHZhciBwcm90byA9IG1lLmNvbnN0cnVjdG9yLnByb3RvdHlwZTsgcHJvdG87CiAgICAgICBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm90bykpIHsKICAgIGlmIChwcm90b1tvcHRfbWV0aG9kTmFtZV0gPT09IGNhbGxlcikgewogICAgICBmb3VuZENhbGxlciA9IHRydWU7CiAgICB9IGVsc2UgaWYgKGZvdW5kQ2FsbGVyKSB7CiAgICAgIHJldHVybiBwcm90b1tvcHRfbWV0aG9kTmFtZV0uYXBwbHkobWUsIGFyZ3MpOwogICAgfQogIH0KCiAgLy8gSWYgd2UgZGlkIG5vdCBmaW5kIHRoZSBjYWxsZXIgaW4gdGhlIHByb3RvdHlwZSBjaGFpbiwgdGhlbiBvbmUgb2YgdHdvCiAgLy8gdGhpbmdzIGhhcHBlbmVkOgogIC8vIDEpIFRoZSBjYWxsZXIgaXMgYW4gaW5zdGFuY2UgbWV0aG9kLgogIC8vIDIpIFRoaXMgbWV0aG9kIHdhcyBub3QgY2FsbGVkIGJ5IHRoZSByaWdodCBjYWxsZXIuCiAgaWYgKG1lW29wdF9tZXRob2ROYW1lXSA9PT0gY2FsbGVyKSB7CiAgICByZXR1cm4gbWUuY29uc3RydWN0b3IucHJvdG90eXBlW29wdF9tZXRob2ROYW1lXS5hcHBseShtZSwgYXJncyk7CiAgfSBlbHNlIHsKICAgIHRocm93IG5ldyBFcnJvcigKICAgICAgICAnZ29vZy5iYXNlIGNhbGxlZCBmcm9tIGEgbWV0aG9kIG9mIG9uZSBuYW1lICcgKwogICAgICAgICd0byBhIG1ldGhvZCBvZiBhIGRpZmZlcmVudCBuYW1lJyk7CiAgfQp9OwoKCi8qKgogKiBBbGxvdyBmb3IgYWxpYXNpbmcgd2l0aGluIHNjb3BlIGZ1bmN0aW9ucy4gIFRoaXMgZnVuY3Rpb24gZXhpc3RzIGZvcgogKiB1bmNvbXBpbGVkIGNvZGUgLSBpbiBjb21waWxlZCBjb2RlIHRoZSBjYWxscyB3aWxsIGJlIGlubGluZWQgYW5kIHRoZSBhbGlhc2VzCiAqIGFwcGxpZWQuICBJbiB1bmNvbXBpbGVkIGNvZGUgdGhlIGZ1bmN0aW9uIGlzIHNpbXBseSBydW4gc2luY2UgdGhlIGFsaWFzZXMgYXMKICogd3JpdHRlbiBhcmUgdmFsaWQgSmF2YVNjcmlwdC4KICoKICoKICogQHBhcmFtIHtmdW5jdGlvbigpfSBmbiBGdW5jdGlvbiB0byBjYWxsLiAgVGhpcyBmdW5jdGlvbiBjYW4gY29udGFpbiBhbGlhc2VzCiAqICAgICB0byBuYW1lc3BhY2VzIChlLmcuICJ2YXIgZG9tID0gZ29vZy5kb20iKSBvciBjbGFzc2VzCiAqICAgICAoZS5nLiAidmFyIFRpbWVyID0gZ29vZy5UaW1lciIpLgogKi8KZ29vZy5zY29wZSA9IGZ1bmN0aW9uKGZuKSB7CiAgaWYgKGdvb2cuaXNJbk1vZHVsZUxvYWRlcl8oKSkgewogICAgdGhyb3cgbmV3IEVycm9yKCdnb29nLnNjb3BlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aGluIGEgbW9kdWxlLicpOwogIH0KICBmbi5jYWxsKGdvb2cuZ2xvYmFsKTsKfTsKCgovKgogKiBUbyBzdXBwb3J0IHVuY29tcGlsZWQsIHN0cmljdCBtb2RlIGJ1bmRsZXMgdGhhdCB1c2UgZXZhbCB0byBkaXZpZGUgc291cmNlCiAqIGxpa2Ugc286CiAqICAgIGV2YWwoJ3NvbWVTb3VyY2U7Ly8jIHNvdXJjZVVybCBzb3VyY2VmaWxlLmpzJyk7CiAqIFdlIG5lZWQgdG8gZXhwb3J0IHRoZSBnbG9iYWxseSBkZWZpbmVkIHN5bWJvbHMgImdvb2ciIGFuZCAiQ09NUElMRUQiLgogKiBFeHBvcnRpbmcgImdvb2ciIGJyZWFrcyB0aGUgY29tcGlsZXIgb3B0aW1pemF0aW9ucywgc28gd2UgcmVxdWlyZWQgdGhhdAogKiBiZSBkZWZpbmVkIGV4dGVybmFsbHkuCiAqIE5PVEU6IFdlIGRvbid0IHVzZSBnb29nLmV4cG9ydFN5bWJvbCBoZXJlIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byB0cmlnZ2VyCiAqIGV4dGVybiBnZW5lcmF0aW9uIHdoZW4gdGhhdCBjb21waWxlciBvcHRpb24gaXMgZW5hYmxlZC4KICovCmlmICghQ09NUElMRUQpIHsKICBnb29nLmdsb2JhbFsnQ09NUElMRUQnXSA9IENPTVBJTEVEOwp9CgoKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8gZ29vZy5kZWZpbmVDbGFzcyBpbXBsZW1lbnRhdGlvbgovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKCi8qKgogKiBDcmVhdGVzIGEgcmVzdHJpY3RlZCBmb3JtIG9mIGEgQ2xvc3VyZSAiY2xhc3MiOgogKiAgIC0gZnJvbSB0aGUgY29tcGlsZXIncyBwZXJzcGVjdGl2ZSwgdGhlIGluc3RhbmNlIHJldHVybmVkIGZyb20gdGhlCiAqICAgICBjb25zdHJ1Y3RvciBpcyBzZWFsZWQgKG5vIG5ldyBwcm9wZXJ0aWVzIG1heSBiZSBhZGRlZCkuICBUaGlzIGVuYWJsZXMKICogICAgIGJldHRlciBjaGVja3MuCiAqICAgLSB0aGUgY29tcGlsZXIgd2lsbCByZXdyaXRlIHRoaXMgZGVmaW5pdGlvbiB0byBhIGZvcm0gdGhhdCBpcyBvcHRpbWFsCiAqICAgICBmb3IgdHlwZSBjaGVja2luZyBhbmQgb3B0aW1pemF0aW9uIChpbml0aWFsbHkgdGhpcyB3aWxsIGJlIGEgbW9yZQogKiAgICAgdHJhZGl0aW9uYWwgZm9ybSkuCiAqCiAqIEBwYXJhbSB7RnVuY3Rpb259IHN1cGVyQ2xhc3MgVGhlIHN1cGVyY2xhc3MsIE9iamVjdCBvciBudWxsLgogKiBAcGFyYW0ge2dvb2cuZGVmaW5lQ2xhc3MuQ2xhc3NEZXNjcmlwdG9yfSBkZWYKICogICAgIEFuIG9iamVjdCBsaXRlcmFsIGRlc2NyaWJpbmcKICogICAgIHRoZSBjbGFzcy4gIEl0IG1heSBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKICogICAgICJjb25zdHJ1Y3RvciI6IHRoZSBjb25zdHJ1Y3RvciBmdW5jdGlvbgogKiAgICAgInN0YXRpY3MiOiBhbiBvYmplY3QgbGl0ZXJhbCBjb250YWluaW5nIG1ldGhvZHMgdG8gYWRkIHRvIHRoZSBjb25zdHJ1Y3RvcgogKiAgICAgICAgYXMgInN0YXRpYyIgbWV0aG9kcyBvciBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZWNlaXZlIHRoZSBjb25zdHJ1Y3RvcgogKiAgICAgICAgZnVuY3Rpb24gYXMgaXRzIG9ubHkgcGFyYW1ldGVyIHRvIHdoaWNoIHN0YXRpYyBwcm9wZXJ0aWVzIGNhbgogKiAgICAgICAgYmUgYWRkZWQuCiAqICAgICBhbGwgb3RoZXIgcHJvcGVydGllcyBhcmUgYWRkZWQgdG8gdGhlIHByb3RvdHlwZS4KICogQHJldHVybiB7IUZ1bmN0aW9ufSBUaGUgY2xhc3MgY29uc3RydWN0b3IuCiAqIEBkZXByZWNhdGVkIFVzZSBFUzYgY2xhc3Mgc3ludGF4IGluc3RlYWQuCiAqLwpnb29nLmRlZmluZUNsYXNzID0gZnVuY3Rpb24oc3VwZXJDbGFzcywgZGVmKSB7CiAgLy8gVE9ETyhqb2hubGVueik6IGNvbnNpZGVyIG1ha2luZyB0aGUgc3VwZXJDbGFzcyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIuCiAgdmFyIGNvbnN0cnVjdG9yID0gZGVmLmNvbnN0cnVjdG9yOwogIHZhciBzdGF0aWNzID0gZGVmLnN0YXRpY3M7CiAgLy8gV3JhcCB0aGUgY29uc3RydWN0b3IgcHJpb3IgdG8gc2V0dGluZyB1cCB0aGUgcHJvdG90eXBlIGFuZCBzdGF0aWMgbWV0aG9kcy4KICBpZiAoIWNvbnN0cnVjdG9yIHx8IGNvbnN0cnVjdG9yID09IE9iamVjdC5wcm90b3R5cGUuY29uc3RydWN0b3IpIHsKICAgIGNvbnN0cnVjdG9yID0gZnVuY3Rpb24oKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigKICAgICAgICAgICdjYW5ub3QgaW5zdGFudGlhdGUgYW4gaW50ZXJmYWNlIChubyBjb25zdHJ1Y3RvciBkZWZpbmVkKS4nKTsKICAgIH07CiAgfQoKICB2YXIgY2xzID0gZ29vZy5kZWZpbmVDbGFzcy5jcmVhdGVTZWFsaW5nQ29uc3RydWN0b3JfKGNvbnN0cnVjdG9yLCBzdXBlckNsYXNzKTsKICBpZiAoc3VwZXJDbGFzcykgewogICAgZ29vZy5pbmhlcml0cyhjbHMsIHN1cGVyQ2xhc3MpOwogIH0KCiAgLy8gUmVtb3ZlIGFsbCB0aGUgcHJvcGVydGllcyB0aGF0IHNob3VsZCBub3QgYmUgY29waWVkIHRvIHRoZSBwcm90b3R5cGUuCiAgZGVsZXRlIGRlZi5jb25zdHJ1Y3RvcjsKICBkZWxldGUgZGVmLnN0YXRpY3M7CgogIGdvb2cuZGVmaW5lQ2xhc3MuYXBwbHlQcm9wZXJ0aWVzXyhjbHMucHJvdG90eXBlLCBkZWYpOwogIGlmIChzdGF0aWNzICE9IG51bGwpIHsKICAgIGlmIChzdGF0aWNzIGluc3RhbmNlb2YgRnVuY3Rpb24pIHsKICAgICAgc3RhdGljcyhjbHMpOwogICAgfSBlbHNlIHsKICAgICAgZ29vZy5kZWZpbmVDbGFzcy5hcHBseVByb3BlcnRpZXNfKGNscywgc3RhdGljcyk7CiAgICB9CiAgfQoKICByZXR1cm4gY2xzOwp9OwoKCi8qKgogKiBAdHlwZWRlZiB7ewogKiAgIGNvbnN0cnVjdG9yOiAoIUZ1bmN0aW9ufHVuZGVmaW5lZCksCiAqICAgc3RhdGljczogKE9iamVjdHx1bmRlZmluZWR8ZnVuY3Rpb24oRnVuY3Rpb24pOnZvaWQpCiAqIH19CiAqLwpnb29nLmRlZmluZUNsYXNzLkNsYXNzRGVzY3JpcHRvcjsKCgovKioKICogQGRlZmluZSB7Ym9vbGVhbn0gV2hldGhlciB0aGUgaW5zdGFuY2VzIHJldHVybmVkIGJ5IGdvb2cuZGVmaW5lQ2xhc3Mgc2hvdWxkCiAqICAgICBiZSBzZWFsZWQgd2hlbiBwb3NzaWJsZS4KICoKICogV2hlbiBzZWFsaW5nIGlzIGRpc2FibGVkIHRoZSBjb25zdHJ1Y3RvciBmdW5jdGlvbiB3aWxsIG5vdCBiZSB3cmFwcGVkIGJ5CiAqIGdvb2cuZGVmaW5lQ2xhc3MsIG1ha2luZyBpdCBpbmNvbXBhdGlibGUgd2l0aCBFUzYgY2xhc3MgbWV0aG9kcy4KICovCmdvb2cuZGVmaW5lQ2xhc3MuU0VBTF9DTEFTU19JTlNUQU5DRVMgPQogICAgZ29vZy5kZWZpbmUoJ2dvb2cuZGVmaW5lQ2xhc3MuU0VBTF9DTEFTU19JTlNUQU5DRVMnLCBnb29nLkRFQlVHKTsKCgovKioKICogSWYgZ29vZy5kZWZpbmVDbGFzcy5TRUFMX0NMQVNTX0lOU1RBTkNFUyBpcyBlbmFibGVkIGFuZCBPYmplY3Quc2VhbCBpcwogKiBkZWZpbmVkLCB0aGlzIGZ1bmN0aW9uIHdpbGwgd3JhcCB0aGUgY29uc3RydWN0b3IgaW4gYSBmdW5jdGlvbiB0aGF0IHNlYWxzIHRoZQogKiByZXN1bHRzIG9mIHRoZSBwcm92aWRlZCBjb25zdHJ1Y3RvciBmdW5jdGlvbi4KICoKICogQHBhcmFtIHshRnVuY3Rpb259IGN0ciBUaGUgY29uc3RydWN0b3Igd2hvc2UgcmVzdWx0cyBtYXliZSBiZSBzZWFsZWQuCiAqIEBwYXJhbSB7RnVuY3Rpb259IHN1cGVyQ2xhc3MgVGhlIHN1cGVyY2xhc3MgY29uc3RydWN0b3IuCiAqIEByZXR1cm4geyFGdW5jdGlvbn0gVGhlIHJlcGxhY2VtZW50IGNvbnN0cnVjdG9yLgogKiBAcHJpdmF0ZQogKi8KZ29vZy5kZWZpbmVDbGFzcy5jcmVhdGVTZWFsaW5nQ29uc3RydWN0b3JfID0gZnVuY3Rpb24oY3RyLCBzdXBlckNsYXNzKSB7CiAgaWYgKCFnb29nLmRlZmluZUNsYXNzLlNFQUxfQ0xBU1NfSU5TVEFOQ0VTKSB7CiAgICAvLyBEbyBub3cgd3JhcCB0aGUgY29uc3RydWN0b3Igd2hlbiBzZWFsaW5nIGlzIGRpc2FibGVkLiBBbmd1bGFyIGNvZGUKICAgIC8vIGRlcGVuZHMgb24gdGhpcyBmb3IgaW5qZWN0aW9uIHRvIHdvcmsgcHJvcGVybHkuCiAgICByZXR1cm4gY3RyOwogIH0KCiAgLy8gQ29tcHV0ZSB3aGV0aGVyIHRoZSBjb25zdHJ1Y3RvciBpcyBzZWFsYWJsZSBhdCBkZWZpbml0aW9uIHRpbWUsIHJhdGhlcgogIC8vIHRoYW4gd2hlbiB0aGUgaW5zdGFuY2UgaXMgYmVpbmcgY29uc3RydWN0ZWQuCiAgdmFyIHN1cGVyY2xhc3NTZWFsYWJsZSA9ICFnb29nLmRlZmluZUNsYXNzLmlzVW5zZWFsYWJsZV8oc3VwZXJDbGFzcyk7CgogIC8qKgogICAqIEB0aGlzIHtPYmplY3R9CiAgICogQHJldHVybiB7P30KICAgKi8KICB2YXIgd3JhcHBlZEN0ciA9IGZ1bmN0aW9uKCkgewogICAgLy8gRG9uJ3Qgc2VhbCBhbiBpbnN0YW5jZSBvZiBhIHN1YmNsYXNzIHdoZW4gaXQgY2FsbHMgdGhlIGNvbnN0cnVjdG9yIG9mCiAgICAvLyBpdHMgc3VwZXIgY2xhc3MgYXMgdGhlcmUgaXMgbW9zdCBsaWtlbHkgc3RpbGwgc2V0dXAgdG8gZG8uCiAgICB2YXIgaW5zdGFuY2UgPSBjdHIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzOwogICAgaW5zdGFuY2VbZ29vZy5VSURfUFJPUEVSVFlfXSA9IGluc3RhbmNlW2dvb2cuVUlEX1BST1BFUlRZX107CgogICAgaWYgKHRoaXMuY29uc3RydWN0b3IgPT09IHdyYXBwZWRDdHIgJiYgc3VwZXJjbGFzc1NlYWxhYmxlICYmCiAgICAgICAgT2JqZWN0LnNlYWwgaW5zdGFuY2VvZiBGdW5jdGlvbikgewogICAgICBPYmplY3Quc2VhbChpbnN0YW5jZSk7CiAgICB9CiAgICByZXR1cm4gaW5zdGFuY2U7CiAgfTsKCiAgcmV0dXJuIHdyYXBwZWRDdHI7Cn07CgoKLyoqCiAqIEBwYXJhbSB7RnVuY3Rpb259IGN0ciBUaGUgY29uc3RydWN0b3IgdG8gdGVzdC4KICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciB0aGUgY29uc3RydWN0b3IgaGFzIGJlZW4gdGFnZ2VkIGFzIHVuc2VhbGFibGUKICogICAgIHVzaW5nIGdvb2cudGFnVW5zZWFsYWJsZUNsYXNzLgogKiBAcHJpdmF0ZQogKi8KZ29vZy5kZWZpbmVDbGFzcy5pc1Vuc2VhbGFibGVfID0gZnVuY3Rpb24oY3RyKSB7CiAgcmV0dXJuIGN0ciAmJiBjdHIucHJvdG90eXBlICYmCiAgICAgIGN0ci5wcm90b3R5cGVbZ29vZy5VTlNFQUxBQkxFX0NPTlNUUlVDVE9SX1BST1BFUlRZX107Cn07CgoKLy8gVE9ETyhqb2hubGVueik6IHNoYXJlIHRoZXNlIHZhbHVlcyB3aXRoIHRoZSBnb29nLm9iamVjdAovKioKICogVGhlIG5hbWVzIG9mIHRoZSBmaWVsZHMgdGhhdCBhcmUgZGVmaW5lZCBvbiBPYmplY3QucHJvdG90eXBlLgogKiBAdHlwZSB7IUFycmF5PHN0cmluZz59CiAqIEBwcml2YXRlCiAqIEBjb25zdAogKi8KZ29vZy5kZWZpbmVDbGFzcy5PQkpFQ1RfUFJPVE9UWVBFX0ZJRUxEU18gPSBbCiAgJ2NvbnN0cnVjdG9yJywgJ2hhc093blByb3BlcnR5JywgJ2lzUHJvdG90eXBlT2YnLCAncHJvcGVydHlJc0VudW1lcmFibGUnLAogICd0b0xvY2FsZVN0cmluZycsICd0b1N0cmluZycsICd2YWx1ZU9mJwpdOwoKCi8vIFRPRE8oam9obmxlbnopOiBzaGFyZSB0aGlzIGZ1bmN0aW9uIHdpdGggdGhlIGdvb2cub2JqZWN0Ci8qKgogKiBAcGFyYW0geyFPYmplY3R9IHRhcmdldCBUaGUgb2JqZWN0IHRvIGFkZCBwcm9wZXJ0aWVzIHRvLgogKiBAcGFyYW0geyFPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tLgogKiBAcHJpdmF0ZQogKi8KZ29vZy5kZWZpbmVDbGFzcy5hcHBseVByb3BlcnRpZXNfID0gZnVuY3Rpb24odGFyZ2V0LCBzb3VyY2UpIHsKICAvLyBUT0RPKGpvaG5sZW56KTogdXBkYXRlIHRoaXMgdG8gc3VwcG9ydCBFUzUgZ2V0dGVycy9zZXR0ZXJzCgogIHZhciBrZXk7CiAgZm9yIChrZXkgaW4gc291cmNlKSB7CiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgewogICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOwogICAgfQogIH0KCiAgLy8gRm9yIElFIHRoZSBmb3ItaW4tbG9vcCBkb2VzIG5vdCBjb250YWluIGFueSBwcm9wZXJ0aWVzIHRoYXQgYXJlIG5vdAogIC8vIGVudW1lcmFibGUgb24gdGhlIHByb3RvdHlwZSBvYmplY3QgKGZvciBleGFtcGxlIGlzUHJvdG90eXBlT2YgZnJvbQogIC8vIE9iamVjdC5wcm90b3R5cGUpIGFuZCBpdCB3aWxsIGFsc28gbm90IGluY2x1ZGUgJ3JlcGxhY2UnIG9uIG9iamVjdHMgdGhhdAogIC8vIGV4dGVuZCBTdHJpbmcgYW5kIGNoYW5nZSAncmVwbGFjZScgKG5vdCB0aGF0IGl0IGlzIGNvbW1vbiBmb3IgYW55b25lIHRvCiAgLy8gZXh0ZW5kIGFueXRoaW5nIGV4Y2VwdCBPYmplY3QpLgogIGZvciAodmFyIGkgPSAwOyBpIDwgZ29vZy5kZWZpbmVDbGFzcy5PQkpFQ1RfUFJPVE9UWVBFX0ZJRUxEU18ubGVuZ3RoOyBpKyspIHsKICAgIGtleSA9IGdvb2cuZGVmaW5lQ2xhc3MuT0JKRUNUX1BST1RPVFlQRV9GSUVMRFNfW2ldOwogICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsKICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsKICAgIH0KICB9Cn07CgoKLyoqCiAqIFNlYWxpbmcgY2xhc3NlcyBicmVha3MgdGhlIG9sZGVyIGlkaW9tIG9mIGFzc2lnbmluZyBwcm9wZXJ0aWVzIG9uIHRoZQogKiBwcm90b3R5cGUgcmF0aGVyIHRoYW4gaW4gdGhlIGNvbnN0cnVjdG9yLiBBcyBzdWNoLCBnb29nLmRlZmluZUNsYXNzCiAqIG11c3Qgbm90IHNlYWwgc3ViY2xhc3NlcyBvZiB0aGVzZSBvbGQtc3R5bGUgY2xhc3NlcyB1bnRpbCB0aGV5IGFyZSBmaXhlZC4KICogVW50aWwgdGhlbiwgdGhpcyBtYXJrcyBhIGNsYXNzIGFzICJicm9rZW4iLCBpbnN0cnVjdGluZyBkZWZpbmVDbGFzcwogKiBub3QgdG8gc2VhbCBzdWJjbGFzc2VzLgogKiBAcGFyYW0geyFGdW5jdGlvbn0gY3RyIFRoZSBsZWdhY3kgY29uc3RydWN0b3IgdG8gdGFnIGFzIHVuc2VhbGFibGUuCiAqLwpnb29nLnRhZ1Vuc2VhbGFibGVDbGFzcyA9IGZ1bmN0aW9uKGN0cikgewogIGlmICghQ09NUElMRUQgJiYgZ29vZy5kZWZpbmVDbGFzcy5TRUFMX0NMQVNTX0lOU1RBTkNFUykgewogICAgY3RyLnByb3RvdHlwZVtnb29nLlVOU0VBTEFCTEVfQ09OU1RSVUNUT1JfUFJPUEVSVFlfXSA9IHRydWU7CiAgfQp9OwoKCi8qKgogKiBOYW1lIGZvciB1bnNlYWxhYmxlIHRhZyBwcm9wZXJ0eS4KICogQGNvbnN0IEBwcml2YXRlIHtzdHJpbmd9CiAqLwpnb29nLlVOU0VBTEFCTEVfQ09OU1RSVUNUT1JfUFJPUEVSVFlfID0gJ2dvb2dfZGVmaW5lQ2xhc3NfbGVnYWN5X3Vuc2VhbGFibGUnOwoKCi8vIFRoZXJlJ3MgYSBidWcgaW4gdGhlIGNvbXBpbGVyIHdoZXJlIHdpdGhvdXQgY29sbGFwc2UgcHJvcGVydGllcyB0aGUKLy8gQ2xvc3VyZSBuYW1lc3BhY2UgZGVmaW5lcyBkbyBub3QgZ3VhcmQgY29kZSBjb3JyZWN0bHkuIFRvIGhlbHAgcmVkdWNlIGNvZGUKLy8gc2l6ZSBhbHNvIGNoZWNrIGZvciAhQ09NUElMRUQgZXZlbiB0aG91Z2ggaXQgcmVkdW5kYW50IHVudGlsIHRoaXMgaXMgZml4ZWQuCmlmICghQ09NUElMRUQgJiYgZ29vZy5ERVBFTkRFTkNJRVNfRU5BQkxFRCkgewoKICAvKioKICAgKiBUcmllcyB0byBkZXRlY3Qgd2hldGhlciBpcyBpbiB0aGUgY29udGV4dCBvZiBhbiBIVE1MIGRvY3VtZW50LgogICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgaXQgbG9va3MgbGlrZSBIVE1MIGRvY3VtZW50LgogICAqIEBwcml2YXRlCiAgICovCiAgZ29vZy5pbkh0bWxEb2N1bWVudF8gPSBmdW5jdGlvbigpIHsKICAgIC8qKiBAdHlwZSB7IURvY3VtZW50fSAqLwogICAgdmFyIGRvYyA9IGdvb2cuZ2xvYmFsLmRvY3VtZW50OwogICAgcmV0dXJuIGRvYyAhPSBudWxsICYmICd3cml0ZScgaW4gZG9jOyAgLy8gWFVMRG9jdW1lbnQgbWlzc2VzIHdyaXRlLgogIH07CgoKICAvKioKICAgKiBXZSdkIGxpa2UgdG8gY2hlY2sgZm9yIGlmIHRoZSBkb2N1bWVudCByZWFkeVN0YXRlIGlzICdsb2FkaW5nJzsgaG93ZXZlcgogICAqIHRoZXJlIGFyZSBidWdzIG9uIElFIDEwIGFuZCBiZWxvdyB3aGVyZSB0aGUgcmVhZHlTdGF0ZSBiZWluZyBhbnl0aGluZyBvdGhlcgogICAqIHRoYW4gJ2NvbXBsZXRlJyBpcyBub3QgcmVsaWFibGUuCiAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgKiBAcHJpdmF0ZQogICAqLwogIGdvb2cuaXNEb2N1bWVudExvYWRpbmdfID0gZnVuY3Rpb24oKSB7CiAgICAvLyBhdHRhY2hFdmVudCBpcyBhdmFpbGFibGUgb24gSUUgNiB0aHJ1IDEwIG9ubHksIGFuZCB0aHVzIGNhbiBiZSB1c2VkIHRvCiAgICAvLyBkZXRlY3QgdGhvc2UgYnJvd3NlcnMuCiAgICAvKiogQHR5cGUgeyFIVE1MRG9jdW1lbnR9ICovCiAgICB2YXIgZG9jID0gZ29vZy5nbG9iYWwuZG9jdW1lbnQ7CiAgICByZXR1cm4gZG9jLmF0dGFjaEV2ZW50ID8gZG9jLnJlYWR5U3RhdGUgIT0gJ2NvbXBsZXRlJyA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jLnJlYWR5U3RhdGUgPT0gJ2xvYWRpbmcnOwogIH07CgoKICAvKioKICAgKiBUcmllcyB0byBkZXRlY3QgdGhlIGJhc2UgcGF0aCBvZiBiYXNlLmpzIHNjcmlwdCB0aGF0IGJvb3RzdHJhcHMgQ2xvc3VyZS4KICAgKiBAcHJpdmF0ZQogICAqLwogIGdvb2cuZmluZEJhc2VQYXRoXyA9IGZ1bmN0aW9uKCkgewogICAgaWYgKGdvb2cuZ2xvYmFsLkNMT1NVUkVfQkFTRV9QQVRIICE9IHVuZGVmaW5lZCAmJgogICAgICAgIC8vIEFudGkgRE9NLWNsb2JiZXJpbmcgcnVudGltZSBjaGVjayAoYi8zNzczNjU3NikuCiAgICAgICAgdHlwZW9mIGdvb2cuZ2xvYmFsLkNMT1NVUkVfQkFTRV9QQVRIID09PSAnc3RyaW5nJykgewogICAgICBnb29nLmJhc2VQYXRoID0gZ29vZy5nbG9iYWwuQ0xPU1VSRV9CQVNFX1BBVEg7CiAgICAgIHJldHVybjsKICAgIH0gZWxzZSBpZiAoIWdvb2cuaW5IdG1sRG9jdW1lbnRfKCkpIHsKICAgICAgcmV0dXJuOwogICAgfQogICAgLyoqIEB0eXBlIHshRG9jdW1lbnR9ICovCiAgICB2YXIgZG9jID0gZ29vZy5nbG9iYWwuZG9jdW1lbnQ7CiAgICAvLyBJZiB3ZSBoYXZlIGEgY3VycmVudFNjcmlwdCBhdmFpbGFibGUsIHVzZSBpdCBleGNsdXNpdmVseS4KICAgIHZhciBjdXJyZW50U2NyaXB0ID0gZG9jLmN1cnJlbnRTY3JpcHQ7CiAgICBpZiAoY3VycmVudFNjcmlwdCkgewogICAgICB2YXIgc2NyaXB0cyA9IFtjdXJyZW50U2NyaXB0XTsKICAgIH0gZWxzZSB7CiAgICAgIHZhciBzY3JpcHRzID0gZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdTQ1JJUFQnKTsKICAgIH0KICAgIC8vIFNlYXJjaCBiYWNrd2FyZHMgc2luY2UgdGhlIGN1cnJlbnQgc2NyaXB0IGlzIGluIGFsbW9zdCBhbGwgY2FzZXMgdGhlIG9uZQogICAgLy8gdGhhdCBoYXMgYmFzZS5qcy4KICAgIGZvciAodmFyIGkgPSBzY3JpcHRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7CiAgICAgIHZhciBzY3JpcHQgPSAvKiogQHR5cGUgeyFIVE1MU2NyaXB0RWxlbWVudH0gKi8gKHNjcmlwdHNbaV0pOwogICAgICB2YXIgc3JjID0gc2NyaXB0LnNyYzsKICAgICAgdmFyIHFtYXJrID0gc3JjLmxhc3RJbmRleE9mKCc/Jyk7CiAgICAgIHZhciBsID0gcW1hcmsgPT0gLTEgPyBzcmMubGVuZ3RoIDogcW1hcms7CiAgICAgIGlmIChzcmMuc3Vic3RyKGwgLSA3LCA3KSA9PSAnYmFzZS5qcycpIHsKICAgICAgICBnb29nLmJhc2VQYXRoID0gc3JjLnN1YnN0cigwLCBsIC0gNyk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICB9CiAgfTsKCiAgZ29vZy5maW5kQmFzZVBhdGhfKCk7CgogIC8qKiBAc3RydWN0IEBjb25zdHJ1Y3RvciBAZmluYWwgKi8KICBnb29nLlRyYW5zcGlsZXIgPSBmdW5jdGlvbigpIHsKICAgIC8qKiBAcHJpdmF0ZSB7P09iamVjdDxzdHJpbmcsIGJvb2xlYW4+fSAqLwogICAgdGhpcy5yZXF1aXJlc1RyYW5zcGlsYXRpb25fID0gbnVsbDsKICAgIC8qKiBAcHJpdmF0ZSB7c3RyaW5nfSAqLwogICAgdGhpcy50cmFuc3BpbGF0aW9uVGFyZ2V0XyA9IGdvb2cuVFJBTlNQSUxFX1RPX0xBTkdVQUdFOwogIH07CgoKICAvKioKICAgKiBSZXR1cm5zIGEgbmV3bHkgY3JlYXRlZCBtYXAgZnJvbSBsYW5ndWFnZSBtb2RlIHN0cmluZyB0byBhIGJvb2xlYW4KICAgKiBpbmRpY2F0aW5nIHdoZXRoZXIgdHJhbnNwaWxhdGlvbiBzaG91bGQgYmUgZG9uZSBmb3IgdGhhdCBtb2RlIGFzIHdlbGwgYXMKICAgKiB0aGUgaGlnaGVzdCBsZXZlbCBsYW5ndWFnZSB0aGF0IHRoaXMgZW52aXJvbm1lbnQgc3VwcG9ydHMuCiAgICoKICAgKiBHdWFyYW50ZWVkIGludmFyaWFudDoKICAgKiBGb3IgYW55IHR3byBtb2RlcywgbDEgYW5kIGwyIHdoZXJlIGwyIGlzIGEgbmV3ZXIgbW9kZSB0aGFuIGwxLAogICAqIGBtYXBbbDFdID09IHRydWVgIGltcGxpZXMgdGhhdCBgbWFwW2wyXSA9PSB0cnVlYC4KICAgKgogICAqIE5vdGUgdGhpcyBtZXRob2QgaXMgZXh0cmFjdGVkIGFuZCB1c2VkIGVsc2V3aGVyZSwgc28gaXQgY2Fubm90IHJlbHkgb24KICAgKiBhbnl0aGluZyBleHRlcm5hbCAoaXQgc2hvdWxkIGVhc2lseSBiZSBhYmxlIHRvIGJlIHRyYW5zZm9ybWVkIGludG8gYQogICAqIHN0YW5kYWxvbmUsIHRvcCBsZXZlbCBmdW5jdGlvbikuCiAgICoKICAgKiBAcHJpdmF0ZQogICAqIEByZXR1cm4ge3sKICAgKiAgIHRhcmdldDogc3RyaW5nLAogICAqICAgbWFwOiAhT2JqZWN0PHN0cmluZywgYm9vbGVhbj4KICAgKiB9fQogICAqLwogIGdvb2cuVHJhbnNwaWxlci5wcm90b3R5cGUuY3JlYXRlUmVxdWlyZXNUcmFuc3BpbGF0aW9uXyA9IGZ1bmN0aW9uKCkgewogICAgdmFyIHRyYW5zcGlsYXRpb25UYXJnZXQgPSAnZXMzJzsKICAgIHZhciAvKiogIU9iamVjdDxzdHJpbmcsIGJvb2xlYW4+ICovIHJlcXVpcmVzVHJhbnNwaWxhdGlvbiA9IHsnZXMzJzogZmFsc2V9OwogICAgdmFyIHRyYW5zcGlsYXRpb25SZXF1aXJlZEZvckFsbExhdGVyTW9kZXMgPSBmYWxzZTsKCiAgICAvKioKICAgICAqIEFkZHMgYW4gZW50cnkgdG8gcmVxdWlyZXNUcmFuc3BsaWF0aW9uIGZvciB0aGUgZ2l2ZW4gbGFuZ3VhZ2UgbW9kZS4KICAgICAqCiAgICAgKiBJTVBPUlRBTlQ6IENhbGxzIG11c3QgYmUgbWFkZSBpbiBvcmRlciBmcm9tIG9sZGVzdCB0byBuZXdlc3QgbGFuZ3VhZ2UKICAgICAqIG1vZGUuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kZU5hbWUKICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oKTogYm9vbGVhbn0gaXNTdXBwb3J0ZWQgUmV0dXJucyB0cnVlIGlmIHRoZSBKUyBlbmdpbmUKICAgICAqICAgICBzdXBwb3J0cyB0aGUgZ2l2ZW4gbW9kZS4KICAgICAqLwogICAgZnVuY3Rpb24gYWRkTmV3ZXJMYW5ndWFnZVRyYW5zcGlsYXRpb25DaGVjayhtb2RlTmFtZSwgaXNTdXBwb3J0ZWQpIHsKICAgICAgaWYgKHRyYW5zcGlsYXRpb25SZXF1aXJlZEZvckFsbExhdGVyTW9kZXMpIHsKICAgICAgICByZXF1aXJlc1RyYW5zcGlsYXRpb25bbW9kZU5hbWVdID0gdHJ1ZTsKICAgICAgfSBlbHNlIGlmIChpc1N1cHBvcnRlZCgpKSB7CiAgICAgICAgdHJhbnNwaWxhdGlvblRhcmdldCA9IG1vZGVOYW1lOwogICAgICAgIHJlcXVpcmVzVHJhbnNwaWxhdGlvblttb2RlTmFtZV0gPSBmYWxzZTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXF1aXJlc1RyYW5zcGlsYXRpb25bbW9kZU5hbWVdID0gdHJ1ZTsKICAgICAgICB0cmFuc3BpbGF0aW9uUmVxdWlyZWRGb3JBbGxMYXRlck1vZGVzID0gdHJ1ZTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogRG9lcyB0aGUgZ2l2ZW4gY29kZSBldmFsdWF0ZSB3aXRob3V0IHN5bnRheCBlcnJvcnMgYW5kIHJldHVybiBhIHRydXRoeQogICAgICogcmVzdWx0PwogICAgICovCiAgICBmdW5jdGlvbiAvKiogYm9vbGVhbiAqLyBldmFsQ2hlY2soLyoqIHN0cmluZyAqLyBjb2RlKSB7CiAgICAgIHRyeSB7CiAgICAgICAgcmV0dXJuICEhZXZhbChjb2RlKTsKICAgICAgfSBjYXRjaCAoaWdub3JlZCkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgfQoKICAgIHZhciB1c2VyQWdlbnQgPSBnb29nLmdsb2JhbC5uYXZpZ2F0b3IgJiYgZ29vZy5nbG9iYWwubmF2aWdhdG9yLnVzZXJBZ2VudCA/CiAgICAgICAgZ29vZy5nbG9iYWwubmF2aWdhdG9yLnVzZXJBZ2VudCA6CiAgICAgICAgJyc7CgogICAgLy8gSWRlbnRpZnkgRVMzLW9ubHkgYnJvd3NlcnMgYnkgdGhlaXIgaW5jb3JyZWN0IHRyZWF0bWVudCBvZiBjb21tYXMuCiAgICBhZGROZXdlckxhbmd1YWdlVHJhbnNwaWxhdGlvbkNoZWNrKCdlczUnLCBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIGV2YWxDaGVjaygnWzEsXS5sZW5ndGg9PTEnKTsKICAgIH0pOwogICAgYWRkTmV3ZXJMYW5ndWFnZVRyYW5zcGlsYXRpb25DaGVjaygnZXM2JywgZnVuY3Rpb24oKSB7CiAgICAgIC8vIEVkZ2UgaGFzIGEgbm9uLWRldGVybWluaXN0aWMgKGkuZS4sIG5vdCByZXByb2R1Y2libGUpIGJ1ZyB3aXRoIEVTNjoKICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9DaGFrcmFDb3JlL2lzc3Vlcy8xNDk2LgogICAgICB2YXIgcmUgPSAvRWRnZVwvKFxkKykoXC5cZCkqL2k7CiAgICAgIHZhciBlZGdlVXNlckFnZW50ID0gdXNlckFnZW50Lm1hdGNoKHJlKTsKICAgICAgaWYgKGVkZ2VVc2VyQWdlbnQpIHsKICAgICAgICAvLyBUaGUgUmVmbGVjdC5jb25zdHJ1Y3QgdGVzdCBiZWxvdyBpcyBmbGFreSBvbiBFZGdlLiBJdCBjYW4gc29tZXRpbWVzCiAgICAgICAgLy8gcGFzcyBvciBmYWlsIG9uIDQwIDE1LjE1MDYzLCBzbyBqdXN0IGV4aXQgZWFybHkgZm9yIEVkZ2UgYW5kIHRyZWF0CiAgICAgICAgLy8gaXQgYXMgRVM1LiBVbnRpbCB3ZSdyZSBvbiBhIG1vcmUgdXAgdG8gZGF0ZSB2ZXJzaW9uIGp1c3QgYWx3YXlzIHVzZQogICAgICAgIC8vIEVTNS4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvQ2hha3JhQ29yZS9pc3N1ZXMvMzIxNy4KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgICAgLy8gVGVzdCBlczY6IFtGRjUwICg/KSwgRWRnZSAxNCAoPyksIENocm9tZSA1MF0KICAgICAgLy8gICAoYSkgZGVmYXVsdCBwYXJhbXMgKHNwZWNpZmljYWxseSBzaGFkb3dpbmcgbG9jYWxzKSwKICAgICAgLy8gICAoYikgZGVzdHJ1Y3R1cmluZywgKGMpIGJsb2NrLXNjb3BlZCBmdW5jdGlvbnMsCiAgICAgIC8vICAgKGQpIGZvci1vZiAoY29uc3QpLCAoZSkgbmV3LnRhcmdldC9SZWZsZWN0LmNvbnN0cnVjdAogICAgICB2YXIgZXM2ZnVsbFRlc3QgPQogICAgICAgICAgJ2NsYXNzIFh7Y29uc3RydWN0b3IoKXtpZihuZXcudGFyZ2V0IT1TdHJpbmcpdGhyb3cgMTt0aGlzLng9NDJ9fScgKwogICAgICAgICAgJ2xldCBxPVJlZmxlY3QuY29uc3RydWN0KFgsW10sU3RyaW5nKTtpZihxLnghPTQyfHwhKHEgaW5zdGFuY2VvZiAnICsKICAgICAgICAgICdTdHJpbmcpKXRocm93IDE7Zm9yKGNvbnN0IGEgb2ZbMiwzXSl7aWYoYT09Miljb250aW51ZTtmdW5jdGlvbiAnICsKICAgICAgICAgICdmKHo9e2F9KXtsZXQgYT0wO3JldHVybiB6LmF9e2Z1bmN0aW9uIGYoKXtyZXR1cm4gMDt9fXJldHVybiBmKCknICsKICAgICAgICAgICc9PTN9JzsKCiAgICAgIHJldHVybiBldmFsQ2hlY2soJygoKT0+eyJ1c2Ugc3RyaWN0IjsnICsgZXM2ZnVsbFRlc3QgKyAnfSkoKScpOwogICAgfSk7CiAgICAvLyAqKiBhbmQgKio9IGFyZSB0aGUgb25seSBuZXcgZmVhdHVyZXMgaW4gJ2VzNycKICAgIGFkZE5ld2VyTGFuZ3VhZ2VUcmFuc3BpbGF0aW9uQ2hlY2soJ2VzNycsIGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gZXZhbENoZWNrKCcyICoqIDIgPT0gNCcpOwogICAgfSk7CiAgICAvLyBhc3luYyBmdW5jdGlvbnMgYXJlIHRoZSBvbmx5IG5ldyBmZWF0dXJlcyBpbiAnZXM4JwogICAgYWRkTmV3ZXJMYW5ndWFnZVRyYW5zcGlsYXRpb25DaGVjaygnZXM4JywgZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiBldmFsQ2hlY2soJ2FzeW5jICgpID0+IDEsIHRydWUnKTsKICAgIH0pOwogICAgYWRkTmV3ZXJMYW5ndWFnZVRyYW5zcGlsYXRpb25DaGVjaygnZXM5JywgZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiBldmFsQ2hlY2soJyh7Li4ucmVzdH0gPSB7fSksIHRydWUnKTsKICAgIH0pOwogICAgYWRkTmV3ZXJMYW5ndWFnZVRyYW5zcGlsYXRpb25DaGVjaygnZXNfbmV4dCcsIGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gZmFsc2U7ICAvLyBhc3N1bWUgaXQgYWx3YXlzIG5lZWQgdG8gdHJhbnNwaWxlCiAgICB9KTsKICAgIHJldHVybiB7dGFyZ2V0OiB0cmFuc3BpbGF0aW9uVGFyZ2V0LCBtYXA6IHJlcXVpcmVzVHJhbnNwaWxhdGlvbn07CiAgfTsKCgogIC8qKgogICAqIERldGVybWluZXMgd2hldGhlciB0aGUgZ2l2ZW4gbGFuZ3VhZ2UgbmVlZHMgdG8gYmUgdHJhbnNwaWxlZC4KICAgKiBAcGFyYW0ge3N0cmluZ30gbGFuZwogICAqIEBwYXJhbSB7c3RyaW5nfHVuZGVmaW5lZH0gbW9kdWxlCiAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgKi8KICBnb29nLlRyYW5zcGlsZXIucHJvdG90eXBlLm5lZWRzVHJhbnNwaWxlID0gZnVuY3Rpb24obGFuZywgbW9kdWxlKSB7CiAgICBpZiAoZ29vZy5UUkFOU1BJTEUgPT0gJ2Fsd2F5cycpIHsKICAgICAgcmV0dXJuIHRydWU7CiAgICB9IGVsc2UgaWYgKGdvb2cuVFJBTlNQSUxFID09ICduZXZlcicpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSBlbHNlIGlmICghdGhpcy5yZXF1aXJlc1RyYW5zcGlsYXRpb25fKSB7CiAgICAgIHZhciBvYmogPSB0aGlzLmNyZWF0ZVJlcXVpcmVzVHJhbnNwaWxhdGlvbl8oKTsKICAgICAgdGhpcy5yZXF1aXJlc1RyYW5zcGlsYXRpb25fID0gb2JqLm1hcDsKICAgICAgdGhpcy50cmFuc3BpbGF0aW9uVGFyZ2V0XyA9IHRoaXMudHJhbnNwaWxhdGlvblRhcmdldF8gfHwgb2JqLnRhcmdldDsKICAgIH0KICAgIGlmIChsYW5nIGluIHRoaXMucmVxdWlyZXNUcmFuc3BpbGF0aW9uXykgewogICAgICBpZiAodGhpcy5yZXF1aXJlc1RyYW5zcGlsYXRpb25fW2xhbmddKSB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0gZWxzZSBpZiAoCiAgICAgICAgICBnb29nLmluSHRtbERvY3VtZW50XygpICYmIG1vZHVsZSA9PSAnZXM2JyAmJgogICAgICAgICAgISgnbm9Nb2R1bGUnIGluIGdvb2cuZ2xvYmFsLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpKSkgewogICAgICAgIHJldHVybiB0cnVlOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGxhbmd1YWdlIG1vZGU6ICcgKyBsYW5nKTsKICAgIH0KICB9OwoKCiAgLyoqCiAgICogTGF6aWx5IHJldHJpZXZlcyB0aGUgdHJhbnNwaWxlciBhbmQgYXBwbGllcyBpdCB0byB0aGUgc291cmNlLgogICAqIEBwYXJhbSB7c3RyaW5nfSBjb2RlIEpTIGNvZGUuCiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggUGF0aCB0byB0aGUgY29kZS4KICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSB0cmFuc3BpbGVkIGNvZGUuCiAgICovCiAgZ29vZy5UcmFuc3BpbGVyLnByb3RvdHlwZS50cmFuc3BpbGUgPSBmdW5jdGlvbihjb2RlLCBwYXRoKSB7CiAgICAvLyBUT0RPKGpvaG5wbGFpc3RlZCk6IFdlIHNob3VsZCBkZWxldGUgZ29vZy50cmFuc3BpbGVfIGFuZCBqdXN0IGhhdmUgdGhpcwogICAgLy8gZnVuY3Rpb24uIEJ1dCB0aGVyZSdzIHNvbWUgY29tcGlsZSBlcnJvciBhdG0gd2hlcmUgZ29vZy5nbG9iYWwgaXMgYmVpbmcKICAgIC8vIHN0cmlwcGVkIGluY29ycmVjdGx5IHdpdGhvdXQgdGhpcy4KICAgIHJldHVybiBnb29nLnRyYW5zcGlsZV8oY29kZSwgcGF0aCwgdGhpcy50cmFuc3BpbGF0aW9uVGFyZ2V0Xyk7CiAgfTsKCgogIC8qKiBAcHJpdmF0ZSBAZmluYWwgeyFnb29nLlRyYW5zcGlsZXJ9ICovCiAgZ29vZy50cmFuc3BpbGVyXyA9IG5ldyBnb29nLlRyYW5zcGlsZXIoKTsKCiAgLyoqCiAgICogUmV3cml0ZXMgY2xvc2luZyBzY3JpcHQgdGFncyBpbiBpbnB1dCB0byBhdm9pZCBlbmRpbmcgYW4gZW5jbG9zaW5nIHNjcmlwdAogICAqIHRhZy4KICAgKgogICAqIEBwYXJhbSB7c3RyaW5nfSBzdHIKICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICogQHByaXZhdGUKICAgKi8KICBnb29nLnByb3RlY3RTY3JpcHRUYWdfID0gZnVuY3Rpb24oc3RyKSB7CiAgICByZXR1cm4gc3RyLnJlcGxhY2UoLzxcLyhTQ1JJUFQpL2lnLCAnXFx4M2MvJDEnKTsKICB9OwoKCiAgLyoqCiAgICogQSBkZWJ1ZyBsb2FkZXIgaXMgcmVzcG9uc2libGUgZm9yIGRvd25sb2FkaW5nIGFuZCBleGVjdXRpbmcgamF2YXNjcmlwdAogICAqIGZpbGVzIGluIGFuIHVuYnVuZGxlZCwgdW5jb21waWxlZCBlbnZpcm9ubWVudC4KICAgKgogICAqIFRoaXMgY2FuIGJlIGN1c3RpbWl6ZWQgdmlhIHRoZSBzZXREZXBlbmRlbmN5RmFjdG9yeSBtZXRob2QsIG9yIGJ5CiAgICogQ0xPU1VSRV9JTVBPUlRfU0NSSVBUL0NMT1NVUkVfTE9BRF9GSUxFX1NZTkMuCiAgICoKICAgKiBAc3RydWN0IEBjb25zdHJ1Y3RvciBAZmluYWwgQHByaXZhdGUKICAgKi8KICBnb29nLkRlYnVnTG9hZGVyXyA9IGZ1bmN0aW9uKCkgewogICAgLyoqIEBwcml2YXRlIEBjb25zdCB7IU9iamVjdDxzdHJpbmcsICFnb29nLkRlcGVuZGVuY3k+fSAqLwogICAgdGhpcy5kZXBlbmRlbmNpZXNfID0ge307CiAgICAvKiogQHByaXZhdGUgQGNvbnN0IHshT2JqZWN0PHN0cmluZywgc3RyaW5nPn0gKi8KICAgIHRoaXMuaWRUb1BhdGhfID0ge307CiAgICAvKiogQHByaXZhdGUgQGNvbnN0IHshT2JqZWN0PHN0cmluZywgYm9vbGVhbj59ICovCiAgICB0aGlzLndyaXR0ZW5fID0ge307CiAgICAvKiogQHByaXZhdGUgQGNvbnN0IHshQXJyYXk8IWdvb2cuRGVwZW5kZW5jeT59ICovCiAgICB0aGlzLmxvYWRpbmdEZXBzXyA9IFtdOwogICAgLyoqIEBwcml2YXRlIHshQXJyYXk8IWdvb2cuRGVwZW5kZW5jeT59ICovCiAgICB0aGlzLmRlcHNUb0xvYWRfID0gW107CiAgICAvKiogQHByaXZhdGUge2Jvb2xlYW59ICovCiAgICB0aGlzLnBhdXNlZF8gPSBmYWxzZTsKICAgIC8qKiBAcHJpdmF0ZSB7IWdvb2cuRGVwZW5kZW5jeUZhY3Rvcnl9ICovCiAgICB0aGlzLmZhY3RvcnlfID0gbmV3IGdvb2cuRGVwZW5kZW5jeUZhY3RvcnkoZ29vZy50cmFuc3BpbGVyXyk7CiAgICAvKiogQHByaXZhdGUgQGNvbnN0IHshT2JqZWN0PHN0cmluZywgIUZ1bmN0aW9uPn0gKi8KICAgIHRoaXMuZGVmZXJyZWRDYWxsYmFja3NfID0ge307CiAgICAvKiogQHByaXZhdGUgQGNvbnN0IHshQXJyYXk8c3RyaW5nPn0gKi8KICAgIHRoaXMuZGVmZXJyZWRRdWV1ZV8gPSBbXTsKICB9OwoKICAvKioKICAgKiBAcGFyYW0geyFBcnJheTxzdHJpbmc+fSBuYW1lc3BhY2VzCiAgICogQHBhcmFtIHtmdW5jdGlvbigpOiB1bmRlZmluZWR9IGNhbGxiYWNrIEZ1bmN0aW9uIHRvIGNhbGwgb25jZSBhbGwgdGhlCiAgICogICAgIG5hbWVzcGFjZXMgaGF2ZSBsb2FkZWQuCiAgICovCiAgZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmJvb3RzdHJhcCA9IGZ1bmN0aW9uKG5hbWVzcGFjZXMsIGNhbGxiYWNrKSB7CiAgICB2YXIgY2IgPSBjYWxsYmFjazsKICAgIGZ1bmN0aW9uIHJlc29sdmUoKSB7CiAgICAgIGlmIChjYikgewogICAgICAgIGdvb2cuZ2xvYmFsLnNldFRpbWVvdXQoY2IsIDApOwogICAgICAgIGNiID0gbnVsbDsKICAgICAgfQogICAgfQoKICAgIGlmICghbmFtZXNwYWNlcy5sZW5ndGgpIHsKICAgICAgcmVzb2x2ZSgpOwogICAgICByZXR1cm47CiAgICB9CgogICAgdmFyIGRlcHMgPSBbXTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZXNwYWNlcy5sZW5ndGg7IGkrKykgewogICAgICB2YXIgcGF0aCA9IHRoaXMuZ2V0UGF0aEZyb21EZXBzXyhuYW1lc3BhY2VzW2ldKTsKICAgICAgaWYgKCFwYXRoKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnJlZ29uaXplZCBuYW1lc3BhY2U6ICcgKyBuYW1lc3BhY2VzW2ldKTsKICAgICAgfQogICAgICBkZXBzLnB1c2godGhpcy5kZXBlbmRlbmNpZXNfW3BhdGhdKTsKICAgIH0KCiAgICB2YXIgcmVxdWlyZSA9IGdvb2cucmVxdWlyZTsKICAgIHZhciBsb2FkZWQgPSAwOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lc3BhY2VzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHJlcXVpcmUobmFtZXNwYWNlc1tpXSk7CiAgICAgIGRlcHNbaV0ub25Mb2FkKGZ1bmN0aW9uKCkgewogICAgICAgIGlmICgrK2xvYWRlZCA9PSBuYW1lc3BhY2VzLmxlbmd0aCkgewogICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9CiAgfTsKCgogIC8qKgogICAqIExvYWRzIHRoZSBDbG9zdXJlIERlcGVuZGVuY3kgZmlsZS4KICAgKgogICAqIEV4cG9zZWQgYSBwdWJsaWMgZnVuY3Rpb24gc28gQ0xPU1VSRV9OT19ERVBTIGNhbiBiZSBzZXQgdG8gZmFsc2UsIGJhc2UKICAgKiBsb2FkZWQsIHNldERlcGVuZGVuY3lGYWN0b3J5IGNhbGxlZCwgYW5kIHRoZW4gdGhpcyBjYWxsZWQuIGkuZS4gYWxsb3dzCiAgICogY3VzdG9tIGxvYWRpbmcgb2YgdGhlIGRlcHMgZmlsZS4KICAgKi8KICBnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUubG9hZENsb3N1cmVEZXBzID0gZnVuY3Rpb24oKSB7CiAgICAvLyBDaXJjdW12ZW50IGFkZERlcGVuZGVuY3ksIHdoaWNoIHdvdWxkIHRyeSB0byB0cmFuc3BpbGUgZGVwcy5qcyBpZgogICAgLy8gdHJhbnNwaWxlIGlzIHNldCB0byBhbHdheXMuCiAgICB2YXIgcmVsUGF0aCA9ICdkZXBzLmpzJzsKICAgIHRoaXMuZGVwc1RvTG9hZF8ucHVzaCh0aGlzLmZhY3RvcnlfLmNyZWF0ZURlcGVuZGVuY3koCiAgICAgICAgZ29vZy5ub3JtYWxpemVQYXRoXyhnb29nLmJhc2VQYXRoICsgcmVsUGF0aCksIHJlbFBhdGgsIFtdLCBbXSwge30sCiAgICAgICAgZmFsc2UpKTsKICAgIHRoaXMubG9hZERlcHNfKCk7CiAgfTsKCgogIC8qKgogICAqIE5vdGlmaWVzIHRoZSBkZWJ1ZyBsb2FkZXIgd2hlbiBhIGRlcGVuZGVuY3kgaGFzIGJlZW4gcmVxdWVzdGVkLgogICAqCiAgICogQHBhcmFtIHtzdHJpbmd9IGFic1BhdGhPcklkIFBhdGggb2YgdGhlIGRlcGVuZGVuY3kgb3IgZ29vZyBpZC4KICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBvcHRfZm9yY2UKICAgKi8KICBnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUucmVxdWVzdGVkID0gZnVuY3Rpb24oYWJzUGF0aE9ySWQsIG9wdF9mb3JjZSkgewogICAgdmFyIHBhdGggPSB0aGlzLmdldFBhdGhGcm9tRGVwc18oYWJzUGF0aE9ySWQpOwogICAgaWYgKHBhdGggJiYKICAgICAgICAob3B0X2ZvcmNlIHx8IHRoaXMuYXJlRGVwc0xvYWRlZF8odGhpcy5kZXBlbmRlbmNpZXNfW3BhdGhdLnJlcXVpcmVzKSkpIHsKICAgICAgdmFyIGNhbGxiYWNrID0gdGhpcy5kZWZlcnJlZENhbGxiYWNrc19bcGF0aF07CiAgICAgIGlmIChjYWxsYmFjaykgewogICAgICAgIGRlbGV0ZSB0aGlzLmRlZmVycmVkQ2FsbGJhY2tzX1twYXRoXTsKICAgICAgICBjYWxsYmFjaygpOwogICAgICB9CiAgICB9CiAgfTsKCgogIC8qKgogICAqIFNldHMgdGhlIGRlcGVuZGVuY3kgZmFjdG9yeSwgd2hpY2ggY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGN1c3RvbQogICAqIGdvb2cuRGVwZW5kZW5jeSBpbXBsZW1lbnRhdGlvbnMgdG8gY29udHJvbCBob3cgZGVwZW5kZW5jaWVzIGFyZSBsb2FkZWQuCiAgICoKICAgKiBAcGFyYW0geyFnb29nLkRlcGVuZGVuY3lGYWN0b3J5fSBmYWN0b3J5CiAgICovCiAgZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLnNldERlcGVuZGVuY3lGYWN0b3J5ID0gZnVuY3Rpb24oZmFjdG9yeSkgewogICAgdGhpcy5mYWN0b3J5XyA9IGZhY3Rvcnk7CiAgfTsKCgogIC8qKgogICAqIFRyYXZzZXJzZXMgdGhlIGRlcGVuZGVuY3kgZ3JhcGggYW5kIHF1ZXVlcyB0aGUgZ2l2ZW4gZGVwZW5kZW5jeSwgYW5kIGFsbCBvZgogICAqIGl0cyB0cmFuc2l0aXZlIGRlcGVuZGVuY2llcywgZm9yIGxvYWRpbmcgYW5kIHRoZW4gc3RhcnRzIGxvYWRpbmcgaWYgbm90CiAgICogcGF1c2VkLgogICAqCiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVzcGFjZQogICAqIEBwcml2YXRlCiAgICovCiAgZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmxvYWRfID0gZnVuY3Rpb24obmFtZXNwYWNlKSB7CiAgICBpZiAoIXRoaXMuZ2V0UGF0aEZyb21EZXBzXyhuYW1lc3BhY2UpKSB7CiAgICAgIHZhciBlcnJvck1lc3NhZ2UgPSAnZ29vZy5yZXF1aXJlIGNvdWxkIG5vdCBmaW5kOiAnICsgbmFtZXNwYWNlOwoKICAgICAgZ29vZy5sb2dUb0NvbnNvbGVfKGVycm9yTWVzc2FnZSk7CiAgICAgIHRocm93IEVycm9yKGVycm9yTWVzc2FnZSk7CiAgICB9IGVsc2UgewogICAgICB2YXIgbG9hZGVyID0gdGhpczsKCiAgICAgIHZhciBkZXBzID0gW107CgogICAgICAvKiogQHBhcmFtIHtzdHJpbmd9IG5hbWVzcGFjZSAqLwogICAgICB2YXIgdmlzaXQgPSBmdW5jdGlvbihuYW1lc3BhY2UpIHsKICAgICAgICB2YXIgcGF0aCA9IGxvYWRlci5nZXRQYXRoRnJvbURlcHNfKG5hbWVzcGFjZSk7CgogICAgICAgIGlmICghcGF0aCkgewogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdCYWQgZGVwZW5kZW5jeSBwYXRoIG9yIHN5bWJvbDogJyArIG5hbWVzcGFjZSk7CiAgICAgICAgfQoKICAgICAgICBpZiAobG9hZGVyLndyaXR0ZW5fW3BhdGhdKSB7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBsb2FkZXIud3JpdHRlbl9bcGF0aF0gPSB0cnVlOwoKICAgICAgICB2YXIgZGVwID0gbG9hZGVyLmRlcGVuZGVuY2llc19bcGF0aF07CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZXAucmVxdWlyZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIGlmICghZ29vZy5pc1Byb3ZpZGVkXyhkZXAucmVxdWlyZXNbaV0pKSB7CiAgICAgICAgICAgIHZpc2l0KGRlcC5yZXF1aXJlc1tpXSk7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBkZXBzLnB1c2goZGVwKTsKICAgICAgfTsKCiAgICAgIHZpc2l0KG5hbWVzcGFjZSk7CgogICAgICB2YXIgd2FzTG9hZGluZyA9ICEhdGhpcy5kZXBzVG9Mb2FkXy5sZW5ndGg7CiAgICAgIHRoaXMuZGVwc1RvTG9hZF8gPSB0aGlzLmRlcHNUb0xvYWRfLmNvbmNhdChkZXBzKTsKCiAgICAgIGlmICghdGhpcy5wYXVzZWRfICYmICF3YXNMb2FkaW5nKSB7CiAgICAgICAgdGhpcy5sb2FkRGVwc18oKTsKICAgICAgfQogICAgfQogIH07CgoKICAvKioKICAgKiBMb2FkcyBhbnkgcXVldWVkIGRlcGVuZGVuY2llcyB1bnRpbCB0aGV5IGFyZSBhbGwgbG9hZGVkIG9yIHBhdXNlZC4KICAgKgogICAqIEBwcml2YXRlCiAgICovCiAgZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmxvYWREZXBzXyA9IGZ1bmN0aW9uKCkgewogICAgdmFyIGxvYWRlciA9IHRoaXM7CiAgICB2YXIgcGF1c2VkID0gdGhpcy5wYXVzZWRfOwoKICAgIHdoaWxlICh0aGlzLmRlcHNUb0xvYWRfLmxlbmd0aCAmJiAhcGF1c2VkKSB7CiAgICAgIChmdW5jdGlvbigpIHsKICAgICAgICB2YXIgbG9hZENhbGxEb25lID0gZmFsc2U7CiAgICAgICAgdmFyIGRlcCA9IGxvYWRlci5kZXBzVG9Mb2FkXy5zaGlmdCgpOwoKICAgICAgICB2YXIgbG9hZGVkID0gZmFsc2U7CiAgICAgICAgbG9hZGVyLmxvYWRpbmdfKGRlcCk7CgogICAgICAgIHZhciBjb250cm9sbGVyID0gewogICAgICAgICAgcGF1c2U6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAobG9hZENhbGxEb25lKSB7CiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgY2FsbCBwYXVzZSBhZnRlciB0aGUgY2FsbCB0byBsb2FkLicpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHBhdXNlZCA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICByZXN1bWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAobG9hZENhbGxEb25lKSB7CiAgICAgICAgICAgICAgbG9hZGVyLnJlc3VtZV8oKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAvLyBTb21lIGRlcCBjYWxsZWQgcGF1c2UgYW5kIHRoZW4gcmVzdW1lIGluIHRoZSBzYW1lIGxvYWQgY2FsbC4KICAgICAgICAgICAgICAvLyBKdXN0IGtlZXAgcnVubmluZyB0aGlzIHNhbWUgbG9vcC4KICAgICAgICAgICAgICBwYXVzZWQgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIGxvYWRlZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmIChsb2FkZWQpIHsKICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RvdWJsZSBjYWxsIHRvIGxvYWRlZC4nKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbG9hZGVkID0gdHJ1ZTsKICAgICAgICAgICAgbG9hZGVyLmxvYWRlZF8oZGVwKTsKICAgICAgICAgIH0sCiAgICAgICAgICBwZW5kaW5nOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgLy8gRGVmZW5zaXZlIGNvcHkuCiAgICAgICAgICAgIHZhciBwZW5kaW5nID0gW107CiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbG9hZGVyLmxvYWRpbmdEZXBzXy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgIHBlbmRpbmcucHVzaChsb2FkZXIubG9hZGluZ0RlcHNfW2ldKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcGVuZGluZzsKICAgICAgICAgIH0sCiAgICAgICAgICAvKioKICAgICAgICAgICAqIEBwYXJhbSB7Z29vZy5Nb2R1bGVUeXBlfSB0eXBlCiAgICAgICAgICAgKi8KICAgICAgICAgIHNldE1vZHVsZVN0YXRlOiBmdW5jdGlvbih0eXBlKSB7CiAgICAgICAgICAgIGdvb2cubW9kdWxlTG9hZGVyU3RhdGVfID0gewogICAgICAgICAgICAgIHR5cGU6IHR5cGUsCiAgICAgICAgICAgICAgbW9kdWxlTmFtZTogJycsCiAgICAgICAgICAgICAgZGVjbGFyZUxlZ2FjeU5hbWVzcGFjZTogZmFsc2UKICAgICAgICAgICAgfTsKICAgICAgICAgIH0sCiAgICAgICAgICAvKiogQHR5cGUge2Z1bmN0aW9uKHN0cmluZywgc3RyaW5nLCBzdHJpbmc9KX0gKi8KICAgICAgICAgIHJlZ2lzdGVyRXM2TW9kdWxlRXhwb3J0czogZnVuY3Rpb24oCiAgICAgICAgICAgICAgcGF0aCwgZXhwb3J0cywgb3B0X2Nsb3N1cmVOYW1lc3BhY2UpIHsKICAgICAgICAgICAgaWYgKG9wdF9jbG9zdXJlTmFtZXNwYWNlKSB7CiAgICAgICAgICAgICAgZ29vZy5sb2FkZWRNb2R1bGVzX1tvcHRfY2xvc3VyZU5hbWVzcGFjZV0gPSB7CiAgICAgICAgICAgICAgICBleHBvcnRzOiBleHBvcnRzLAogICAgICAgICAgICAgICAgdHlwZTogZ29vZy5Nb2R1bGVUeXBlLkVTNiwKICAgICAgICAgICAgICAgIG1vZHVsZUlkOiBvcHRfY2xvc3VyZU5hbWVzcGFjZSB8fCAnJwogICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAvKiogQHR5cGUge2Z1bmN0aW9uKHN0cmluZywgPyl9ICovCiAgICAgICAgICByZWdpc3Rlckdvb2dNb2R1bGVFeHBvcnRzOiBmdW5jdGlvbihtb2R1bGVJZCwgZXhwb3J0cykgewogICAgICAgICAgICBnb29nLmxvYWRlZE1vZHVsZXNfW21vZHVsZUlkXSA9IHsKICAgICAgICAgICAgICBleHBvcnRzOiBleHBvcnRzLAogICAgICAgICAgICAgIHR5cGU6IGdvb2cuTW9kdWxlVHlwZS5HT09HLAogICAgICAgICAgICAgIG1vZHVsZUlkOiBtb2R1bGVJZAogICAgICAgICAgICB9OwogICAgICAgICAgfSwKICAgICAgICAgIGNsZWFyTW9kdWxlU3RhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBnb29nLm1vZHVsZUxvYWRlclN0YXRlXyA9IG51bGw7CiAgICAgICAgICB9LAogICAgICAgICAgZGVmZXI6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICAgICAgICAgIGlmIChsb2FkQ2FsbERvbmUpIHsKICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoCiAgICAgICAgICAgICAgICAgICdDYW5ub3QgcmVnaXN0ZXIgd2l0aCBkZWZlciBhZnRlciB0aGUgY2FsbCB0byBsb2FkLicpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxvYWRlci5kZWZlcl8oZGVwLCBjYWxsYmFjayk7CiAgICAgICAgICB9LAogICAgICAgICAgYXJlRGVwc0xvYWRlZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBsb2FkZXIuYXJlRGVwc0xvYWRlZF8oZGVwLnJlcXVpcmVzKTsKICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICB0cnkgewogICAgICAgICAgZGVwLmxvYWQoY29udHJvbGxlcik7CiAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgIGxvYWRDYWxsRG9uZSA9IHRydWU7CiAgICAgICAgfQogICAgICB9KSgpOwogICAgfQoKICAgIGlmIChwYXVzZWQpIHsKICAgICAgdGhpcy5wYXVzZV8oKTsKICAgIH0KICB9OwoKCiAgLyoqIEBwcml2YXRlICovCiAgZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLnBhdXNlXyA9IGZ1bmN0aW9uKCkgewogICAgdGhpcy5wYXVzZWRfID0gdHJ1ZTsKICB9OwoKCiAgLyoqIEBwcml2YXRlICovCiAgZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLnJlc3VtZV8gPSBmdW5jdGlvbigpIHsKICAgIGlmICh0aGlzLnBhdXNlZF8pIHsKICAgICAgdGhpcy5wYXVzZWRfID0gZmFsc2U7CiAgICAgIHRoaXMubG9hZERlcHNfKCk7CiAgICB9CiAgfTsKCgogIC8qKgogICAqIE1hcmtzIHRoZSBnaXZlbiBkZXBlbmRlbmN5IGFzIGxvYWRpbmcgKGxvYWQgaGFzIGJlZW4gY2FsbGVkIGJ1dCBpdCBoYXMgbm90CiAgICogeWV0IG1hcmtlZCBpdHNlbGYgYXMgZmluaXNoZWQpLiBVc2VmdWwgZm9yIGRlcGVuZGVuY2llcyB0aGF0IHdhbnQgdG8ga25vdwogICAqIHdoYXQgZWxzZSBpcyBsb2FkaW5nLiBFeGFtcGxlOiBnb29nLm1vZHVsZXMgY2Fubm90IGV2YWwgaWYgdGhlcmUgYXJlCiAgICogbG9hZGluZyBkZXBlbmRlbmNpZXMuCiAgICoKICAgKiBAcGFyYW0geyFnb29nLkRlcGVuZGVuY3l9IGRlcAogICAqIEBwcml2YXRlCiAgICovCiAgZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmxvYWRpbmdfID0gZnVuY3Rpb24oZGVwKSB7CiAgICB0aGlzLmxvYWRpbmdEZXBzXy5wdXNoKGRlcCk7CiAgfTsKCgogIC8qKgogICAqIE1hcmtzIHRoZSBnaXZlbiBkZXBlbmRlbmN5IGFzIGhhdmluZyBmaW5pc2hlZCBsb2FkaW5nIGFuZCBiZWluZyBhdmFpbGFibGUKICAgKiBmb3IgcmVxdWlyZS4KICAgKgogICAqIEBwYXJhbSB7IWdvb2cuRGVwZW5kZW5jeX0gZGVwCiAgICogQHByaXZhdGUKICAgKi8KICBnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUubG9hZGVkXyA9IGZ1bmN0aW9uKGRlcCkgewogICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxvYWRpbmdEZXBzXy5sZW5ndGg7IGkrKykgewogICAgICBpZiAodGhpcy5sb2FkaW5nRGVwc19baV0gPT0gZGVwKSB7CiAgICAgICAgdGhpcy5sb2FkaW5nRGVwc18uc3BsaWNlKGksIDEpOwogICAgICAgIGJyZWFrOwogICAgICB9CiAgICB9CgogICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRlZmVycmVkUXVldWVfLmxlbmd0aDsgaSsrKSB7CiAgICAgIGlmICh0aGlzLmRlZmVycmVkUXVldWVfW2ldID09IGRlcC5wYXRoKSB7CiAgICAgICAgdGhpcy5kZWZlcnJlZFF1ZXVlXy5zcGxpY2UoaSwgMSk7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0KCiAgICBpZiAodGhpcy5sb2FkaW5nRGVwc18ubGVuZ3RoID09IHRoaXMuZGVmZXJyZWRRdWV1ZV8ubGVuZ3RoICYmCiAgICAgICAgIXRoaXMuZGVwc1RvTG9hZF8ubGVuZ3RoKSB7CiAgICAgIC8vIFNvbWV0aGluZyBoYXMgYXNrZWQgdG8gbG9hZCB0aGVzZSwgYnV0IHRoZXkgbWF5IG5vdCBiZSBkaXJlY3RseQogICAgICAvLyByZXF1aXJlZCBhZ2FpbiBsYXRlciwgc28gbG9hZCB0aGVtIG5vdyB0aGF0IHdlIGtub3cgd2UncmUgZG9uZSBsb2FkaW5nCiAgICAgIC8vIGV2ZXJ5dGhpbmcgZWxzZS4gZS5nLiBhIGdvb2cgbW9kdWxlIGVudHJ5IHBvaW50LgogICAgICB3aGlsZSAodGhpcy5kZWZlcnJlZFF1ZXVlXy5sZW5ndGgpIHsKICAgICAgICB0aGlzLnJlcXVlc3RlZCh0aGlzLmRlZmVycmVkUXVldWVfLnNoaWZ0KCksIHRydWUpOwogICAgICB9CiAgICB9CgogICAgZGVwLmxvYWRlZCgpOwogIH07CgoKICAvKioKICAgKiBAcGFyYW0geyFBcnJheTxzdHJpbmc+fSBwYXRoc09ySWRzCiAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgKiBAcHJpdmF0ZQogICAqLwogIGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5hcmVEZXBzTG9hZGVkXyA9IGZ1bmN0aW9uKHBhdGhzT3JJZHMpIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGF0aHNPcklkcy5sZW5ndGg7IGkrKykgewogICAgICB2YXIgcGF0aCA9IHRoaXMuZ2V0UGF0aEZyb21EZXBzXyhwYXRoc09ySWRzW2ldKTsKICAgICAgaWYgKCFwYXRoIHx8CiAgICAgICAgICAoIShwYXRoIGluIHRoaXMuZGVmZXJyZWRDYWxsYmFja3NfKSAmJgogICAgICAgICAgICFnb29nLmlzUHJvdmlkZWRfKHBhdGhzT3JJZHNbaV0pKSkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgfQoKICAgIHJldHVybiB0cnVlOwogIH07CgoKICAvKioKICAgKiBAcGFyYW0ge3N0cmluZ30gYWJzUGF0aE9ySWQKICAgKiBAcmV0dXJuIHs/c3RyaW5nfQogICAqIEBwcml2YXRlCiAgICovCiAgZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmdldFBhdGhGcm9tRGVwc18gPSBmdW5jdGlvbihhYnNQYXRoT3JJZCkgewogICAgaWYgKGFic1BhdGhPcklkIGluIHRoaXMuaWRUb1BhdGhfKSB7CiAgICAgIHJldHVybiB0aGlzLmlkVG9QYXRoX1thYnNQYXRoT3JJZF07CiAgICB9IGVsc2UgaWYgKGFic1BhdGhPcklkIGluIHRoaXMuZGVwZW5kZW5jaWVzXykgewogICAgICByZXR1cm4gYWJzUGF0aE9ySWQ7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KICB9OwoKCiAgLyoqCiAgICogQHBhcmFtIHshZ29vZy5EZXBlbmRlbmN5fSBkZXBlbmRlbmN5CiAgICogQHBhcmFtIHshRnVuY3Rpb259IGNhbGxiYWNrCiAgICogQHByaXZhdGUKICAgKi8KICBnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUuZGVmZXJfID0gZnVuY3Rpb24oZGVwZW5kZW5jeSwgY2FsbGJhY2spIHsKICAgIHRoaXMuZGVmZXJyZWRDYWxsYmFja3NfW2RlcGVuZGVuY3kucGF0aF0gPSBjYWxsYmFjazsKICAgIHRoaXMuZGVmZXJyZWRRdWV1ZV8ucHVzaChkZXBlbmRlbmN5LnBhdGgpOwogIH07CgoKICAvKioKICAgKiBJbnRlcmZhY2UgZm9yIGdvb2cuRGVwZW5kZW5jeSBpbXBsZW1lbnRhdGlvbnMgdG8gaGF2ZSBzb21lIGNvbnRyb2wgb3ZlcgogICAqIGxvYWRpbmcgb2YgZGVwZW5kZW5jaWVzLgogICAqCiAgICogQHJlY29yZAogICAqLwogIGdvb2cuTG9hZENvbnRyb2xsZXIgPSBmdW5jdGlvbigpIHt9OwoKCiAgLyoqCiAgICogVGVsbHMgdGhlIGNvbnRyb2xsZXIgdG8gaGFsdCBsb2FkaW5nIG9mIG1vcmUgZGVwZW5kZW5jaWVzLgogICAqLwogIGdvb2cuTG9hZENvbnRyb2xsZXIucHJvdG90eXBlLnBhdXNlID0gZnVuY3Rpb24oKSB7fTsKCgogIC8qKgogICAqIFRlbGxzIHRoZSBjb250cm9sbGVyIHRvIHJlc3VtZSBsb2FkaW5nIG9mIG1vcmUgZGVwZW5kZW5jaWVzIGlmIHBhdXNlZC4KICAgKi8KICBnb29nLkxvYWRDb250cm9sbGVyLnByb3RvdHlwZS5yZXN1bWUgPSBmdW5jdGlvbigpIHt9OwoKCiAgLyoqCiAgICogVGVsbHMgdGhlIGNvbnRyb2xsZXIgdGhhdCB0aGlzIGRlcGVuZGVuY3kgaGFzIGZpbmlzaGVkIGxvYWRpbmcuCiAgICoKICAgKiBUaGlzIGNhdXNlcyB0aGlzIHRvIGJlIHJlbW92ZWQgZnJvbSBwZW5kaW5nKCkgYW5kIGFueSBsb2FkIGNhbGxiYWNrcyB0bwogICAqIGZpcmUuCiAgICovCiAgZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUubG9hZGVkID0gZnVuY3Rpb24oKSB7fTsKCgogIC8qKgogICAqIExpc3Qgb2YgZGVwZW5kZW5jaWVzIG9uIHdoaWNoIGxvYWQgaGFzIGJlZW4gY2FsbGVkIGJ1dCB3aGljaCBoYXZlIG5vdAogICAqIGNhbGxlZCBsb2FkZWQgb24gdGhlaXIgY29udHJvbGxlci4gVGhpcyBpbmNsdWRlcyB0aGUgY3VycmVudCBkZXBlbmRlbmN5LgogICAqCiAgICogQHJldHVybiB7IUFycmF5PCFnb29nLkRlcGVuZGVuY3k+fQogICAqLwogIGdvb2cuTG9hZENvbnRyb2xsZXIucHJvdG90eXBlLnBlbmRpbmcgPSBmdW5jdGlvbigpIHt9OwoKCiAgLyoqCiAgICogUmVnaXN0ZXJzIGFuIG9iamVjdCBhcyBhbiBFUzYgbW9kdWxlJ3MgZXhwb3J0cyBzbyB0aGF0IGdvb2cubW9kdWxlcyBtYXkKICAgKiByZXF1aXJlIGl0IGJ5IHBhdGguCiAgICoKICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCBGdWxsIHBhdGggb2YgdGhlIG1vZHVsZS4KICAgKiBAcGFyYW0gez99IGV4cG9ydHMKICAgKiBAcGFyYW0ge3N0cmluZz19IG9wdF9jbG9zdXJlTmFtZXNwYWNlIENsb3N1cmUgbmFtZXNwYWNlIHRvIGFzc29jaWF0ZSB3aXRoCiAgICogICAgIHRoaXMgbW9kdWxlLgogICAqLwogIGdvb2cuTG9hZENvbnRyb2xsZXIucHJvdG90eXBlLnJlZ2lzdGVyRXM2TW9kdWxlRXhwb3J0cyA9IGZ1bmN0aW9uKAogICAgICBwYXRoLCBleHBvcnRzLCBvcHRfY2xvc3VyZU5hbWVzcGFjZSkge307CgoKICAvKioKICAgKiBTZXRzIHRoZSBjdXJyZW50IG1vZHVsZSBzdGF0ZS4KICAgKgogICAqIEBwYXJhbSB7Z29vZy5Nb2R1bGVUeXBlfSB0eXBlIFR5cGUgb2YgbW9kdWxlLgogICAqLwogIGdvb2cuTG9hZENvbnRyb2xsZXIucHJvdG90eXBlLnNldE1vZHVsZVN0YXRlID0gZnVuY3Rpb24odHlwZSkge307CgoKICAvKioKICAgKiBDbGVhcnMgdGhlIGN1cnJlbnQgbW9kdWxlIHN0YXRlLgogICAqLwogIGdvb2cuTG9hZENvbnRyb2xsZXIucHJvdG90eXBlLmNsZWFyTW9kdWxlU3RhdGUgPSBmdW5jdGlvbigpIHt9OwoKCiAgLyoqCiAgICogUmVnaXN0ZXJzIGEgY2FsbGJhY2sgdG8gY2FsbCBvbmNlIHRoZSBkZXBlbmRlbmN5IGlzIGFjdHVhbGx5IHJlcXVlc3RlZAogICAqIHZpYSBnb29nLnJlcXVpcmUgKyBhbGwgb2YgdGhlIGltbWVkaWF0ZSBkZXBlbmRlbmNpZXMgaGF2ZSBiZWVuIGxvYWRlZCBvcgogICAqIGFsbCBvdGhlciBmaWxlcyBoYXZlIGJlZW4gbG9hZGVkLiBBbGxvd3MgZm9yIGxhenkgbG9hZGluZyB1bnRpbAogICAqIHJlcXVpcmUnZCB3aXRob3V0IHBhdXNpbmcgZGVwZW5kZW5jeSBsb2FkaW5nLCB3aGljaCBpcyBuZWVkZWQgb24gb2xkIElFLgogICAqCiAgICogQHBhcmFtIHshRnVuY3Rpb259IGNhbGxiYWNrCiAgICovCiAgZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUuZGVmZXIgPSBmdW5jdGlvbihjYWxsYmFjaykge307CgoKICAvKioKICAgKiBAcmV0dXJuIHtib29sZWFufQogICAqLwogIGdvb2cuTG9hZENvbnRyb2xsZXIucHJvdG90eXBlLmFyZURlcHNMb2FkZWQgPSBmdW5jdGlvbigpIHt9OwoKCiAgLyoqCiAgICogQmFzaWMgc3VwZXIgY2xhc3MgZm9yIGFsbCBkZXBlbmRlbmNpZXMgQ2xvc3VyZSBMaWJyYXJ5IGNhbiBsb2FkLgogICAqCiAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzIGRlc2lnbmVkIHRvIGxvYWQgdW50cmFuc3BpbGVkLCBub24tbW9kdWxlCiAgICogc2NyaXB0cyBpbiBhIHdlYiBicm9zd2VyLgogICAqCiAgICogRm9yIHRyYW5zcGlsZWQgbm9uLWdvb2cubW9kdWxlIGZpbGVzIHtAc2VlIGdvb2cuVHJhbnNwaWxlZERlcGVuZGVuY3l9LgogICAqIEZvciBnb29nLm1vZHVsZXMgc2VlIHtAc2VlIGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3l9LgogICAqIEZvciB1bnRyYW5zcGlsZWQgRVM2IG1vZHVsZXMge0BzZWUgZ29vZy5FczZNb2R1bGVEZXBlbmRlbmN5fS4KICAgKgogICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIEFic29sdXRlIHBhdGggb2YgdGhpcyBzY3JpcHQuCiAgICogQHBhcmFtIHtzdHJpbmd9IHJlbGF0aXZlUGF0aCBQYXRoIG9mIHRoaXMgc2NyaXB0IHJlbGF0aXZlIHRvIGdvb2cuYmFzZVBhdGguCiAgICogQHBhcmFtIHshQXJyYXk8c3RyaW5nPn0gcHJvdmlkZXMgZ29vZy5wcm92aWRlZCBvciBnb29nLm1vZHVsZSBzeW1ib2xzCiAgICogICAgIGluIHRoaXMgZmlsZS4KICAgKiBAcGFyYW0geyFBcnJheTxzdHJpbmc+fSByZXF1aXJlcyBnb29nIHN5bWJvbHMgb3IgcmVsYXRpdmUgcGF0aHMgdG8gQ2xvc3VyZQogICAqICAgICB0aGlzIGRlcGVuZHMgb24uCiAgICogQHBhcmFtIHshT2JqZWN0PHN0cmluZywgc3RyaW5nPn0gbG9hZEZsYWdzCiAgICogQHN0cnVjdCBAY29uc3RydWN0b3IKICAgKi8KICBnb29nLkRlcGVuZGVuY3kgPSBmdW5jdGlvbigKICAgICAgcGF0aCwgcmVsYXRpdmVQYXRoLCBwcm92aWRlcywgcmVxdWlyZXMsIGxvYWRGbGFncykgewogICAgLyoqIEBjb25zdCAqLwogICAgdGhpcy5wYXRoID0gcGF0aDsKICAgIC8qKiBAY29uc3QgKi8KICAgIHRoaXMucmVsYXRpdmVQYXRoID0gcmVsYXRpdmVQYXRoOwogICAgLyoqIEBjb25zdCAqLwogICAgdGhpcy5wcm92aWRlcyA9IHByb3ZpZGVzOwogICAgLyoqIEBjb25zdCAqLwogICAgdGhpcy5yZXF1aXJlcyA9IHJlcXVpcmVzOwogICAgLyoqIEBjb25zdCAqLwogICAgdGhpcy5sb2FkRmxhZ3MgPSBsb2FkRmxhZ3M7CiAgICAvKiogQHByaXZhdGUge2Jvb2xlYW59ICovCiAgICB0aGlzLmxvYWRlZF8gPSBmYWxzZTsKICAgIC8qKiBAcHJpdmF0ZSB7IUFycmF5PGZ1bmN0aW9uKCk+fSAqLwogICAgdGhpcy5sb2FkQ2FsbGJhY2tzXyA9IFtdOwogIH07CgoKICAvKioKICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBwYXRobmFtZSBwYXJ0IG9mIHRoaXMgZGVwZW5kZW5jeSdzIHBhdGggaWYgaXQgaXMgYQogICAqICAgICBVUkkuCiAgICovCiAgZ29vZy5EZXBlbmRlbmN5LnByb3RvdHlwZS5nZXRQYXRoTmFtZSA9IGZ1bmN0aW9uKCkgewogICAgdmFyIHBhdGhOYW1lID0gdGhpcy5wYXRoOwogICAgdmFyIHByb3RvY29sSW5kZXggPSBwYXRoTmFtZS5pbmRleE9mKCc6Ly8nKTsKICAgIGlmIChwcm90b2NvbEluZGV4ID49IDApIHsKICAgICAgcGF0aE5hbWUgPSBwYXRoTmFtZS5zdWJzdHJpbmcocHJvdG9jb2xJbmRleCArIDMpOwogICAgICB2YXIgc2xhc2hJbmRleCA9IHBhdGhOYW1lLmluZGV4T2YoJy8nKTsKICAgICAgaWYgKHNsYXNoSW5kZXggPj0gMCkgewogICAgICAgIHBhdGhOYW1lID0gcGF0aE5hbWUuc3Vic3RyaW5nKHNsYXNoSW5kZXggKyAxKTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIHBhdGhOYW1lOwogIH07CgoKICAvKioKICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCl9IGNhbGxiYWNrIENhbGxiYWNrIHRvIGZpcmUgYXMgc29vbiBhcyB0aGlzIGhhcyBsb2FkZWQuCiAgICogQGZpbmFsCiAgICovCiAgZ29vZy5EZXBlbmRlbmN5LnByb3RvdHlwZS5vbkxvYWQgPSBmdW5jdGlvbihjYWxsYmFjaykgewogICAgaWYgKHRoaXMubG9hZGVkXykgewogICAgICBjYWxsYmFjaygpOwogICAgfSBlbHNlIHsKICAgICAgdGhpcy5sb2FkQ2FsbGJhY2tzXy5wdXNoKGNhbGxiYWNrKTsKICAgIH0KICB9OwoKCiAgLyoqCiAgICogTWFya3MgdGhpcyBkZXBlbmRlbmN5IGFzIGxvYWRlZCBhbmQgZmlyZXMgYW55IGNhbGxiYWNrcyByZWdpc3RlcmVkIHdpdGgKICAgKiBvbkxvYWQuCiAgICogQGZpbmFsCiAgICovCiAgZ29vZy5EZXBlbmRlbmN5LnByb3RvdHlwZS5sb2FkZWQgPSBmdW5jdGlvbigpIHsKICAgIHRoaXMubG9hZGVkXyA9IHRydWU7CiAgICB2YXIgY2FsbGJhY2tzID0gdGhpcy5sb2FkQ2FsbGJhY2tzXzsKICAgIHRoaXMubG9hZENhbGxiYWNrc18gPSBbXTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2FsbGJhY2tzLmxlbmd0aDsgaSsrKSB7CiAgICAgIGNhbGxiYWNrc1tpXSgpOwogICAgfQogIH07CgoKICAvKioKICAgKiBXaGV0aGVyIG9yIG5vdCBkb2N1bWVudC53cml0dGVuIC8gYXBwZW5kZWQgc2NyaXB0IHRhZ3Mgc2hvdWxkIGJlIGRlZmVycmVkLgogICAqCiAgICogQHByaXZhdGUge2Jvb2xlYW59CiAgICovCiAgZ29vZy5EZXBlbmRlbmN5LmRlZmVyXyA9IGZhbHNlOwoKCiAgLyoqCiAgICogTWFwIG9mIHNjcmlwdCByZWFkeSAvIHN0YXRlIGNoYW5nZSBjYWxsYmFja3MuIE9sZCBJRSBjYW5ub3QgaGFuZGxlIHB1dHRpbmcKICAgKiB0aGVzZSBwcm9wZXJ0aWVzIG9uIGdvb2cuZ2xvYmFsLgogICAqCiAgICogQHByaXZhdGUgQGNvbnN0IHshT2JqZWN0PHN0cmluZywgZnVuY3Rpb24oPyk6dW5kZWZpbmVkPn0KICAgKi8KICBnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tNYXBfID0ge307CgoKICAvKioKICAgKiBAcGFyYW0ge2Z1bmN0aW9uKC4uLj8pOj99IGNhbGxiYWNrCiAgICogQHJldHVybiB7c3RyaW5nfQogICAqIEBwcml2YXRlCiAgICovCiAgZ29vZy5EZXBlbmRlbmN5LnJlZ2lzdGVyQ2FsbGJhY2tfID0gZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgIHZhciBrZXkgPSBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDMyKTsKICAgIGdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja01hcF9ba2V5XSA9IGNhbGxiYWNrOwogICAgcmV0dXJuIGtleTsKICB9OwoKCiAgLyoqCiAgICogQHBhcmFtIHtzdHJpbmd9IGtleQogICAqIEBwcml2YXRlCiAgICovCiAgZ29vZy5EZXBlbmRlbmN5LnVucmVnaXN0ZXJDYWxsYmFja18gPSBmdW5jdGlvbihrZXkpIHsKICAgIGRlbGV0ZSBnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tNYXBfW2tleV07CiAgfTsKCgogIC8qKgogICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkKICAgKiBAcGFyYW0gey4uLj99IHZhcl9hcmdzCiAgICogQHByaXZhdGUKICAgKiBAc3VwcHJlc3Mge3VudXNlZFByaXZhdGVNZW1iZXJzfQogICAqLwogIGdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18gPSBmdW5jdGlvbihrZXksIHZhcl9hcmdzKSB7CiAgICBpZiAoa2V5IGluIGdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja01hcF8pIHsKICAgICAgdmFyIGNhbGxiYWNrID0gZ29vZy5EZXBlbmRlbmN5LmNhbGxiYWNrTWFwX1trZXldOwogICAgICB2YXIgYXJncyA9IFtdOwogICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgewogICAgICAgIGFyZ3MucHVzaChhcmd1bWVudHNbaV0pOwogICAgICB9CiAgICAgIGNhbGxiYWNrLmFwcGx5KHVuZGVmaW5lZCwgYXJncyk7CiAgICB9IGVsc2UgewogICAgICB2YXIgZXJyb3JNZXNzYWdlID0gJ0NhbGxiYWNrIGtleSAnICsga2V5ICsKICAgICAgICAgICcgZG9lcyBub3QgZXhpc3QgKHdhcyBiYXNlLmpzIGxvYWRlZCBtb3JlIHRoYW4gb25jZT8pLic7CiAgICAgIHRocm93IEVycm9yKGVycm9yTWVzc2FnZSk7CiAgICB9CiAgfTsKCgogIC8qKgogICAqIFN0YXJ0cyBsb2FkaW5nIHRoaXMgZGVwZW5kZW5jeS4gVGhpcyBkZXBlbmRlbmN5IGNhbiBwYXVzZSBsb2FkaW5nIGlmIGl0CiAgICogbmVlZHMgdG8gYW5kIHJlc3VtZSBpdCBsYXRlciB2aWEgdGhlIGNvbnRyb2xsZXIgaW50ZXJmYWNlLgogICAqCiAgICogV2hlbiB0aGlzIGlzIGxvYWRlZCBpdCBzaG91bGQgY2FsbCBjb250cm9sbGVyLmxvYWRlZCgpLiBOb3RlIHRoYXQgdGhpcyB3aWxsCiAgICogZW5kIHVwIGNhbGxpbmcgdGhlIGxvYWRlZCBtZXRob2Qgb2YgdGhpcyBkZXBlbmRlbmN5OyB0aGVyZSBpcyBubyBuZWVkIHRvCiAgICogY2FsbCBpdCBleHBsaWNpdGx5LgogICAqCiAgICogQHBhcmFtIHshZ29vZy5Mb2FkQ29udHJvbGxlcn0gY29udHJvbGxlcgogICAqLwogIGdvb2cuRGVwZW5kZW5jeS5wcm90b3R5cGUubG9hZCA9IGZ1bmN0aW9uKGNvbnRyb2xsZXIpIHsKICAgIGlmIChnb29nLmdsb2JhbC5DTE9TVVJFX0lNUE9SVF9TQ1JJUFQpIHsKICAgICAgaWYgKGdvb2cuZ2xvYmFsLkNMT1NVUkVfSU1QT1JUX1NDUklQVCh0aGlzLnBhdGgpKSB7CiAgICAgICAgY29udHJvbGxlci5sb2FkZWQoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBjb250cm9sbGVyLnBhdXNlKCk7CiAgICAgIH0KICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICghZ29vZy5pbkh0bWxEb2N1bWVudF8oKSkgewogICAgICBnb29nLmxvZ1RvQ29uc29sZV8oCiAgICAgICAgICAnQ2Fubm90IHVzZSBkZWZhdWx0IGRlYnVnIGxvYWRlciBvdXRzaWRlIG9mIEhUTUwgZG9jdW1lbnRzLicpOwogICAgICBpZiAodGhpcy5yZWxhdGl2ZVBhdGggPT0gJ2RlcHMuanMnKSB7CiAgICAgICAgLy8gU29tZSBvbGQgY29kZSBpcyByZWx5aW5nIG9uIGJhc2UuanMgYXV0byBsb2FkaW5nIGRlcHMuanMgZmFpbGluZyB3aXRoCiAgICAgICAgLy8gbm8gZXJyb3IgYmVmb3JlIGxhdGVyIHNldHRpbmcgQ0xPU1VSRV9JTVBPUlRfU0NSSVBULgogICAgICAgIC8vIENMT1NVUkVfSU1QT1JUX1NDUklQVCBzaG91bGQgYmUgc2V0ICpiZWZvcmUqIGJhc2UuanMgaXMgbG9hZGVkLCBvcgogICAgICAgIC8vIENMT1NVUkVfTk9fREVQUyBzZXQgdG8gdHJ1ZS4KICAgICAgICBnb29nLmxvZ1RvQ29uc29sZV8oCiAgICAgICAgICAgICdDb25zaWRlciBzZXR0aW5nIENMT1NVUkVfSU1QT1JUX1NDUklQVCBiZWZvcmUgbG9hZGluZyBiYXNlLmpzLCAnICsKICAgICAgICAgICAgJ29yIHNldHRpbmcgQ0xPU1VSRV9OT19ERVBTIHRvIHRydWUuJyk7CiAgICAgICAgY29udHJvbGxlci5sb2FkZWQoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBjb250cm9sbGVyLnBhdXNlKCk7CiAgICAgIH0KICAgICAgcmV0dXJuOwogICAgfQoKICAgIC8qKiBAdHlwZSB7IUhUTUxEb2N1bWVudH0gKi8KICAgIHZhciBkb2MgPSBnb29nLmdsb2JhbC5kb2N1bWVudDsKCiAgICAvLyBJZiB0aGUgdXNlciB0cmllcyB0byByZXF1aXJlIGEgbmV3IHN5bWJvbCBhZnRlciBkb2N1bWVudCBsb2FkLAogICAgLy8gc29tZXRoaW5nIGhhcyBnb25lIHRlcnJpYmx5IHdyb25nLiBEb2luZyBhIGRvY3VtZW50LndyaXRlIHdvdWxkCiAgICAvLyB3aXBlIG91dCB0aGUgcGFnZS4gVGhpcyBkb2VzIG5vdCBhcHBseSB0byB0aGUgQ1NQLWNvbXBsaWFudCBtZXRob2QKICAgIC8vIG9mIHdyaXRpbmcgc2NyaXB0IHRhZ3MuCiAgICBpZiAoZG9jLnJlYWR5U3RhdGUgPT0gJ2NvbXBsZXRlJyAmJgogICAgICAgICFnb29nLkVOQUJMRV9DSFJPTUVfQVBQX1NBRkVfU0NSSVBUX0xPQURJTkcpIHsKICAgICAgLy8gQ2VydGFpbiB0ZXN0IGZyYW1ld29ya3MgbG9hZCBiYXNlLmpzIG11bHRpcGxlIHRpbWVzLCB3aGljaCB0cmllcwogICAgICAvLyB0byB3cml0ZSBkZXBzLmpzIGVhY2ggdGltZS4gSWYgdGhhdCBoYXBwZW5zLCBqdXN0IGZhaWwgc2lsZW50bHkuCiAgICAgIC8vIFRoZXNlIGZyYW1ld29ya3Mgd2lwZSB0aGUgcGFnZSBiZXR3ZWVuIGVhY2ggbG9hZCBvZiBiYXNlLmpzLCBzbyB0aGlzCiAgICAgIC8vIGlzIE9LLgogICAgICB2YXIgaXNEZXBzID0gL1xiZGVwcy5qcyQvLnRlc3QodGhpcy5wYXRoKTsKICAgICAgaWYgKGlzRGVwcykgewogICAgICAgIGNvbnRyb2xsZXIubG9hZGVkKCk7CiAgICAgICAgcmV0dXJuOwogICAgICB9IGVsc2UgewogICAgICAgIHRocm93IEVycm9yKCdDYW5ub3Qgd3JpdGUgIicgKyB0aGlzLnBhdGggKyAnIiBhZnRlciBkb2N1bWVudCBsb2FkJyk7CiAgICAgIH0KICAgIH0KCiAgICBpZiAoIWdvb2cuRU5BQkxFX0NIUk9NRV9BUFBfU0FGRV9TQ1JJUFRfTE9BRElORyAmJgogICAgICAgIGdvb2cuaXNEb2N1bWVudExvYWRpbmdfKCkpIHsKICAgICAgdmFyIGtleSA9IGdvb2cuRGVwZW5kZW5jeS5yZWdpc3RlckNhbGxiYWNrXyhmdW5jdGlvbihzY3JpcHQpIHsKICAgICAgICBpZiAoIWdvb2cuRGVidWdMb2FkZXJfLklTX09MRF9JRV8gfHwgc2NyaXB0LnJlYWR5U3RhdGUgPT0gJ2NvbXBsZXRlJykgewogICAgICAgICAgZ29vZy5EZXBlbmRlbmN5LnVucmVnaXN0ZXJDYWxsYmFja18oa2V5KTsKICAgICAgICAgIGNvbnRyb2xsZXIubG9hZGVkKCk7CiAgICAgICAgfQogICAgICB9KTsKICAgICAgdmFyIG5vbmNlQXR0ciA9ICFnb29nLkRlYnVnTG9hZGVyXy5JU19PTERfSUVfICYmIGdvb2cuZ2V0U2NyaXB0Tm9uY2UoKSA/CiAgICAgICAgICAnIG5vbmNlPSInICsgZ29vZy5nZXRTY3JpcHROb25jZSgpICsgJyInIDoKICAgICAgICAgICcnOwogICAgICB2YXIgZXZlbnQgPQogICAgICAgICAgZ29vZy5EZWJ1Z0xvYWRlcl8uSVNfT0xEX0lFXyA/ICdvbnJlYWR5c3RhdGVjaGFuZ2UnIDogJ29ubG9hZCc7CiAgICAgIHZhciBkZWZlciA9IGdvb2cuRGVwZW5kZW5jeS5kZWZlcl8gPyAnZGVmZXInIDogJyc7CiAgICAgIHZhciBzY3JpcHQgPSAnPHNjcmlwdCBzcmM9IicgKyB0aGlzLnBhdGggKyAnIiAnICsgZXZlbnQgKwogICAgICAgICAgJz0iZ29vZy5EZXBlbmRlbmN5LmNhbGxiYWNrXyhcJycgKyBrZXkgKwogICAgICAgICAgJ1wnLCB0aGlzKSIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiAnICsgZGVmZXIgKyBub25jZUF0dHIgKyAnPjwnICsKICAgICAgICAgICcvc2NyaXB0Pic7CiAgICAgIGRvYy53cml0ZSgKICAgICAgICAgIGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfID8KICAgICAgICAgICAgICBnb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXy5jcmVhdGVIVE1MKHNjcmlwdCkgOgogICAgICAgICAgICAgIHNjcmlwdCk7CiAgICB9IGVsc2UgewogICAgICB2YXIgc2NyaXB0RWwgPQogICAgICAgICAgLyoqIEB0eXBlIHshSFRNTFNjcmlwdEVsZW1lbnR9ICovIChkb2MuY3JlYXRlRWxlbWVudCgnc2NyaXB0JykpOwogICAgICBzY3JpcHRFbC5kZWZlciA9IGdvb2cuRGVwZW5kZW5jeS5kZWZlcl87CiAgICAgIHNjcmlwdEVsLmFzeW5jID0gZmFsc2U7CiAgICAgIHNjcmlwdEVsLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsKCiAgICAgIC8vIElmIENTUCBub25jZXMgYXJlIHVzZWQsIHByb3BhZ2F0ZSB0aGVtIHRvIGR5bmFtaWNhbGx5IGNyZWF0ZWQgc2NyaXB0cy4KICAgICAgLy8gVGhpcyBpcyBuZWNlc3NhcnkgdG8gYWxsb3cgbm9uY2UtYmFzZWQgQ1NQcyB3aXRob3V0ICdzdHJpY3QtZHluYW1pYycuCiAgICAgIHZhciBub25jZSA9IGdvb2cuZ2V0U2NyaXB0Tm9uY2UoKTsKICAgICAgaWYgKG5vbmNlKSB7CiAgICAgICAgc2NyaXB0RWwuc2V0QXR0cmlidXRlKCdub25jZScsIG5vbmNlKTsKICAgICAgfQoKICAgICAgaWYgKGdvb2cuRGVidWdMb2FkZXJfLklTX09MRF9JRV8pIHsKICAgICAgICAvLyBFeGVjdXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQgb24gb2xkIElFLCBoYWx0IGxvYWRpbmcgYW5kIHdyaXRlCiAgICAgICAgLy8gdGhlc2Ugc2NyaXB0cyBvbmUgYXQgYSB0aW1lLCBhZnRlciBlYWNoIGxvYWRzLgogICAgICAgIGNvbnRyb2xsZXIucGF1c2UoKTsKICAgICAgICBzY3JpcHRFbC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIGlmIChzY3JpcHRFbC5yZWFkeVN0YXRlID09ICdsb2FkZWQnIHx8CiAgICAgICAgICAgICAgc2NyaXB0RWwucmVhZHlTdGF0ZSA9PSAnY29tcGxldGUnKSB7CiAgICAgICAgICAgIGNvbnRyb2xsZXIubG9hZGVkKCk7CiAgICAgICAgICAgIGNvbnRyb2xsZXIucmVzdW1lKCk7CiAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgfSBlbHNlIHsKICAgICAgICBzY3JpcHRFbC5vbmxvYWQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHNjcmlwdEVsLm9ubG9hZCA9IG51bGw7CiAgICAgICAgICBjb250cm9sbGVyLmxvYWRlZCgpOwogICAgICAgIH07CiAgICAgIH0KCiAgICAgIHNjcmlwdEVsLnNyYyA9IGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfID8KICAgICAgICAgIGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfLmNyZWF0ZVNjcmlwdFVSTCh0aGlzLnBhdGgpIDoKICAgICAgICAgIHRoaXMucGF0aDsKICAgICAgZG9jLmhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0RWwpOwogICAgfQogIH07CgoKICAvKioKICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCBBYnNvbHV0ZSBwYXRoIG9mIHRoaXMgc2NyaXB0LgogICAqIEBwYXJhbSB7c3RyaW5nfSByZWxhdGl2ZVBhdGggUGF0aCBvZiB0aGlzIHNjcmlwdCByZWxhdGl2ZSB0byBnb29nLmJhc2VQYXRoLgogICAqIEBwYXJhbSB7IUFycmF5PHN0cmluZz59IHByb3ZpZGVzIFNob3VsZCBiZSBhbiBlbXB0eSBhcnJheS4KICAgKiAgICAgVE9ETyhqb2hucGxhaXN0ZWQpIGFkZCBzdXBwb3J0IGZvciBhZGRpbmcgY2xvc3VyZSBuYW1lc3BhY2VzIHRvIEVTNgogICAqICAgICBtb2R1bGVzIGZvciBpbnRlcm9wIHB1cnBvc2VzLgogICAqIEBwYXJhbSB7IUFycmF5PHN0cmluZz59IHJlcXVpcmVzIGdvb2cgc3ltYm9scyBvciByZWxhdGl2ZSBwYXRocyB0byBDbG9zdXJlCiAgICogICAgIHRoaXMgZGVwZW5kcyBvbi4KICAgKiBAcGFyYW0geyFPYmplY3Q8c3RyaW5nLCBzdHJpbmc+fSBsb2FkRmxhZ3MKICAgKiBAc3RydWN0IEBjb25zdHJ1Y3RvcgogICAqIEBleHRlbmRzIHtnb29nLkRlcGVuZGVuY3l9CiAgICovCiAgZ29vZy5FczZNb2R1bGVEZXBlbmRlbmN5ID0gZnVuY3Rpb24oCiAgICAgIHBhdGgsIHJlbGF0aXZlUGF0aCwgcHJvdmlkZXMsIHJlcXVpcmVzLCBsb2FkRmxhZ3MpIHsKICAgIGdvb2cuRXM2TW9kdWxlRGVwZW5kZW5jeS5iYXNlKAogICAgICAgIHRoaXMsICdjb25zdHJ1Y3RvcicsIHBhdGgsIHJlbGF0aXZlUGF0aCwgcHJvdmlkZXMsIHJlcXVpcmVzLCBsb2FkRmxhZ3MpOwogIH07CiAgZ29vZy5pbmhlcml0cyhnb29nLkVzNk1vZHVsZURlcGVuZGVuY3ksIGdvb2cuRGVwZW5kZW5jeSk7CgoKICAvKiogQG92ZXJyaWRlICovCiAgZ29vZy5FczZNb2R1bGVEZXBlbmRlbmN5LnByb3RvdHlwZS5sb2FkID0gZnVuY3Rpb24oY29udHJvbGxlcikgewogICAgaWYgKGdvb2cuZ2xvYmFsLkNMT1NVUkVfSU1QT1JUX1NDUklQVCkgewogICAgICBpZiAoZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKHRoaXMucGF0aCkpIHsKICAgICAgICBjb250cm9sbGVyLmxvYWRlZCgpOwogICAgICB9IGVsc2UgewogICAgICAgIGNvbnRyb2xsZXIucGF1c2UoKTsKICAgICAgfQogICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKCFnb29nLmluSHRtbERvY3VtZW50XygpKSB7CiAgICAgIGdvb2cubG9nVG9Db25zb2xlXygKICAgICAgICAgICdDYW5ub3QgdXNlIGRlZmF1bHQgZGVidWcgbG9hZGVyIG91dHNpZGUgb2YgSFRNTCBkb2N1bWVudHMuJyk7CiAgICAgIGNvbnRyb2xsZXIucGF1c2UoKTsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIC8qKiBAdHlwZSB7IUhUTUxEb2N1bWVudH0gKi8KICAgIHZhciBkb2MgPSBnb29nLmdsb2JhbC5kb2N1bWVudDsKCiAgICB2YXIgZGVwID0gdGhpczsKCiAgICAvLyBUT0RPKGpvaG5wbGFpc3RlZCk6IERvZXMgZG9jdW1lbnQud3JpdGluZyByZWFsbHkgc3BlZWQgdXAgYW55dGhpbmc/IEFueQogICAgLy8gZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgYW5kIGp1c3Qgd2FpdGluZyBmb3IgaW50ZXJhY3RpdmUgbW9kZSBhbmQgdGhlbgogICAgLy8gYXBwZW5kaW5nPwogICAgZnVuY3Rpb24gd3JpdGUoc3JjLCBjb250ZW50cykgewogICAgICBpZiAoY29udGVudHMpIHsKICAgICAgICB2YXIgc2NyaXB0ID0gJzxzY3JpcHQgdHlwZT0ibW9kdWxlIiBjcm9zc29yaWdpbj4nICsgY29udGVudHMgKyAnPC8nICsKICAgICAgICAgICAgJ3NjcmlwdD4nOwogICAgICAgIGRvYy53cml0ZSgKICAgICAgICAgICAgZ29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8gPwogICAgICAgICAgICAgICAgZ29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8uY3JlYXRlSFRNTChzY3JpcHQpIDoKICAgICAgICAgICAgICAgIHNjcmlwdCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIHNjcmlwdCA9ICc8c2NyaXB0IHR5cGU9Im1vZHVsZSIgY3Jvc3NvcmlnaW4gc3JjPSInICsgc3JjICsgJyI+PC8nICsKICAgICAgICAgICAgJ3NjcmlwdD4nOwogICAgICAgIGRvYy53cml0ZSgKICAgICAgICAgICAgZ29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8gPwogICAgICAgICAgICAgICAgZ29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8uY3JlYXRlSFRNTChzY3JpcHQpIDoKICAgICAgICAgICAgICAgIHNjcmlwdCk7CiAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBhcHBlbmQoc3JjLCBjb250ZW50cykgewogICAgICB2YXIgc2NyaXB0RWwgPQogICAgICAgICAgLyoqIEB0eXBlIHshSFRNTFNjcmlwdEVsZW1lbnR9ICovIChkb2MuY3JlYXRlRWxlbWVudCgnc2NyaXB0JykpOwogICAgICBzY3JpcHRFbC5kZWZlciA9IHRydWU7CiAgICAgIHNjcmlwdEVsLmFzeW5jID0gZmFsc2U7CiAgICAgIHNjcmlwdEVsLnR5cGUgPSAnbW9kdWxlJzsKICAgICAgc2NyaXB0RWwuc2V0QXR0cmlidXRlKCdjcm9zc29yaWdpbicsIHRydWUpOwoKICAgICAgLy8gSWYgQ1NQIG5vbmNlcyBhcmUgdXNlZCwgcHJvcGFnYXRlIHRoZW0gdG8gZHluYW1pY2FsbHkgY3JlYXRlZCBzY3JpcHRzLgogICAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSB0byBhbGxvdyBub25jZS1iYXNlZCBDU1BzIHdpdGhvdXQgJ3N0cmljdC1keW5hbWljJy4KICAgICAgdmFyIG5vbmNlID0gZ29vZy5nZXRTY3JpcHROb25jZSgpOwogICAgICBpZiAobm9uY2UpIHsKICAgICAgICBzY3JpcHRFbC5zZXRBdHRyaWJ1dGUoJ25vbmNlJywgbm9uY2UpOwogICAgICB9CgogICAgICBpZiAoY29udGVudHMpIHsKICAgICAgICBzY3JpcHRFbC50ZXh0Q29udGVudCA9IGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfID8KICAgICAgICAgICAgZ29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8uY3JlYXRlU2NyaXB0KGNvbnRlbnRzKSA6CiAgICAgICAgICAgIGNvbnRlbnRzOwogICAgICB9IGVsc2UgewogICAgICAgIHNjcmlwdEVsLnNyYyA9IGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfID8KICAgICAgICAgICAgZ29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8uY3JlYXRlU2NyaXB0VVJMKHNyYykgOgogICAgICAgICAgICBzcmM7CiAgICAgIH0KCiAgICAgIGRvYy5oZWFkLmFwcGVuZENoaWxkKHNjcmlwdEVsKTsKICAgIH0KCiAgICB2YXIgY3JlYXRlOwoKICAgIGlmIChnb29nLmlzRG9jdW1lbnRMb2FkaW5nXygpKSB7CiAgICAgIGNyZWF0ZSA9IHdyaXRlOwogICAgICAvLyBXZSBjYW4gT05MWSBjYWxsIGRvY3VtZW50LndyaXRlIGlmIHdlIGFyZSBndWFyYW50ZWVkIHRoYXQgYW55CiAgICAgIC8vIG5vbi1tb2R1bGUgc2NyaXB0IHRhZ3MgZG9jdW1lbnQud3JpdHRlbiBhZnRlciB0aGlzIGFyZSBkZWZlcnJlZC4KICAgICAgLy8gU21hbGwgb3B0aW1pemF0aW9uLCBpbiB0aGVvcnkgZG9jdW1lbnQud3JpdGluZyBpcyBmYXN0ZXIuCiAgICAgIGdvb2cuRGVwZW5kZW5jeS5kZWZlcl8gPSB0cnVlOwogICAgfSBlbHNlIHsKICAgICAgY3JlYXRlID0gYXBwZW5kOwogICAgfQoKICAgIC8vIFdyaXRlIDQgc2VwYXJhdGUgdGFncyBoZXJlOgogICAgLy8gMSkgU2V0cyB0aGUgbW9kdWxlIHN0YXRlIGF0IHRoZSBjb3JyZWN0IHRpbWUgKGp1c3QgYmVmb3JlIGV4ZWN1dGlvbikuCiAgICAvLyAyKSBBIHNyYyBub2RlIGZvciB0aGlzLCB3aGljaCBqdXN0IGhvcGVmdWxseSBsZXRzIHRoZSBicm93c2VyIGxvYWQgaXQgYQogICAgLy8gICAgbGl0dGxlIGVhcmx5IChubyBuZWVkIHRvIHBhcnNlICMzKS4KICAgIC8vIDMpIEltcG9ydCB0aGUgbW9kdWxlIGFuZCByZWdpc3RlciBpdC4KICAgIC8vIDQpIENsZWFyIHRoZSBtb2R1bGUgc3RhdGUgYXQgdGhlIGNvcnJlY3QgdGltZS4gR3VhcmFudGVlZCB0byBydW4gZXZlbgogICAgLy8gICAgaWYgdGhlcmUgaXMgYW4gZXJyb3IgaW4gdGhlIG1vZHVsZSAoIzMgd2lsbCBub3QgcnVuIGlmIHRoZXJlIGlzIGFuCiAgICAvLyAgICBlcnJvciBpbiB0aGUgbW9kdWxlKS4KICAgIHZhciBiZWZvcmVLZXkgPSBnb29nLkRlcGVuZGVuY3kucmVnaXN0ZXJDYWxsYmFja18oZnVuY3Rpb24oKSB7CiAgICAgIGdvb2cuRGVwZW5kZW5jeS51bnJlZ2lzdGVyQ2FsbGJhY2tfKGJlZm9yZUtleSk7CiAgICAgIGNvbnRyb2xsZXIuc2V0TW9kdWxlU3RhdGUoZ29vZy5Nb2R1bGVUeXBlLkVTNik7CiAgICB9KTsKICAgIGNyZWF0ZSh1bmRlZmluZWQsICdnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tfKCInICsgYmVmb3JlS2V5ICsgJyIpJyk7CgogICAgLy8gVE9ETyhqb2hucGxhaXN0ZWQpOiBEb2VzIHRoaXMgcmVhbGx5IHNwZWVkIHVwIGFueXRoaW5nPwogICAgY3JlYXRlKHRoaXMucGF0aCwgdW5kZWZpbmVkKTsKCiAgICB2YXIgcmVnaXN0ZXJLZXkgPSBnb29nLkRlcGVuZGVuY3kucmVnaXN0ZXJDYWxsYmFja18oZnVuY3Rpb24oZXhwb3J0cykgewogICAgICBnb29nLkRlcGVuZGVuY3kudW5yZWdpc3RlckNhbGxiYWNrXyhyZWdpc3RlcktleSk7CiAgICAgIGNvbnRyb2xsZXIucmVnaXN0ZXJFczZNb2R1bGVFeHBvcnRzKAogICAgICAgICAgZGVwLnBhdGgsIGV4cG9ydHMsIGdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLm1vZHVsZU5hbWUpOwogICAgfSk7CiAgICBjcmVhdGUoCiAgICAgICAgdW5kZWZpbmVkLAogICAgICAgICdpbXBvcnQgKiBhcyBtIGZyb20gIicgKyB0aGlzLnBhdGggKyAnIjsgZ29vZy5EZXBlbmRlbmN5LmNhbGxiYWNrXygiJyArCiAgICAgICAgICAgIHJlZ2lzdGVyS2V5ICsgJyIsIG0pJyk7CgogICAgdmFyIGFmdGVyS2V5ID0gZ29vZy5EZXBlbmRlbmN5LnJlZ2lzdGVyQ2FsbGJhY2tfKGZ1bmN0aW9uKCkgewogICAgICBnb29nLkRlcGVuZGVuY3kudW5yZWdpc3RlckNhbGxiYWNrXyhhZnRlcktleSk7CiAgICAgIGNvbnRyb2xsZXIuY2xlYXJNb2R1bGVTdGF0ZSgpOwogICAgICBjb250cm9sbGVyLmxvYWRlZCgpOwogICAgfSk7CiAgICBjcmVhdGUodW5kZWZpbmVkLCAnZ29vZy5EZXBlbmRlbmN5LmNhbGxiYWNrXygiJyArIGFmdGVyS2V5ICsgJyIpJyk7CiAgfTsKCgogIC8qKgogICAqIFN1cGVyY2xhc3Mgb2YgYW55IGRlcGVuZGVuY3kgdGhhdCBuZWVkcyB0byBiZSBsb2FkZWQgaW50byBtZW1vcnksCiAgICogdHJhbnNmb3JtZWQsIGFuZCB0aGVuIGV2YWwnZCAoZ29vZy5tb2R1bGVzIGFuZCB0cmFuc3BpbGVkIGZpbGVzKS4KICAgKgogICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIEFic29sdXRlIHBhdGggb2YgdGhpcyBzY3JpcHQuCiAgICogQHBhcmFtIHtzdHJpbmd9IHJlbGF0aXZlUGF0aCBQYXRoIG9mIHRoaXMgc2NyaXB0IHJlbGF0aXZlIHRvIGdvb2cuYmFzZVBhdGguCiAgICogQHBhcmFtIHshQXJyYXk8c3RyaW5nPn0gcHJvdmlkZXMgZ29vZy5wcm92aWRlZCBvciBnb29nLm1vZHVsZSBzeW1ib2xzCiAgICogICAgIGluIHRoaXMgZmlsZS4KICAgKiBAcGFyYW0geyFBcnJheTxzdHJpbmc+fSByZXF1aXJlcyBnb29nIHN5bWJvbHMgb3IgcmVsYXRpdmUgcGF0aHMgdG8gQ2xvc3VyZQogICAqICAgICB0aGlzIGRlcGVuZHMgb24uCiAgICogQHBhcmFtIHshT2JqZWN0PHN0cmluZywgc3RyaW5nPn0gbG9hZEZsYWdzCiAgICogQHN0cnVjdCBAY29uc3RydWN0b3IgQGFic3RyYWN0CiAgICogQGV4dGVuZHMge2dvb2cuRGVwZW5kZW5jeX0KICAgKi8KICBnb29nLlRyYW5zZm9ybWVkRGVwZW5kZW5jeSA9IGZ1bmN0aW9uKAogICAgICBwYXRoLCByZWxhdGl2ZVBhdGgsIHByb3ZpZGVzLCByZXF1aXJlcywgbG9hZEZsYWdzKSB7CiAgICBnb29nLlRyYW5zZm9ybWVkRGVwZW5kZW5jeS5iYXNlKAogICAgICAgIHRoaXMsICdjb25zdHJ1Y3RvcicsIHBhdGgsIHJlbGF0aXZlUGF0aCwgcHJvdmlkZXMsIHJlcXVpcmVzLCBsb2FkRmxhZ3MpOwogICAgLyoqIEBwcml2YXRlIHs/c3RyaW5nfSAqLwogICAgdGhpcy5jb250ZW50c18gPSBudWxsOwoKICAgIC8qKgogICAgICogV2hldGhlciB0byBsYXppbHkgbWFrZSB0aGUgc3luY2hyb25vdXMgWEhSICh3aGVuIGdvb2cucmVxdWlyZSdkKSBvciBtYWtlCiAgICAgKiB0aGUgc3luY2hyb25vdXMgWEhSIHdoZW4gaW5pdGlhbGx5IGxvYWRpbmcuIE9uIEZpcmVGb3ggNjEgdGhlcmUgaXMgYSBidWcKICAgICAqIHdoZXJlIGFuIEVTNiBtb2R1bGUgY2Fubm90IG1ha2UgYSBzeW5jaHJvbm91cyBYSFIgKHJhdGhlciwgaXQgY2FuLCBidXQgaWYKICAgICAqIGl0IGRvZXMgdGhlbiBubyBvdGhlciBFUzYgbW9kdWxlcyB3aWxsIGxvYWQgYWZ0ZXIpLgogICAgICoKICAgICAqIHRsO2RyIHdlIGxhenkgbG9hZCBkdWUgdG8gYnVncyBvbiBvbGRlciBicm93c2VycyBhbmQgZWFnZXIgbG9hZCBkdWUgdG8KICAgICAqIGJ1Z3Mgb24gbmV3ZXIgb25lcy4KICAgICAqCiAgICAgKiBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc3MDkwCiAgICAgKgogICAgICogQHByaXZhdGUgQGNvbnN0IHtib29sZWFufQogICAgICovCiAgICB0aGlzLmxhenlGZXRjaF8gPSAhZ29vZy5pbkh0bWxEb2N1bWVudF8oKSB8fAogICAgICAgICEoJ25vTW9kdWxlJyBpbiBnb29nLmdsb2JhbC5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKSk7CiAgfTsKICBnb29nLmluaGVyaXRzKGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LCBnb29nLkRlcGVuZGVuY3kpOwoKCiAgLyoqIEBvdmVycmlkZSAqLwogIGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LnByb3RvdHlwZS5sb2FkID0gZnVuY3Rpb24oY29udHJvbGxlcikgewogICAgdmFyIGRlcCA9IHRoaXM7CgogICAgZnVuY3Rpb24gZmV0Y2goKSB7CiAgICAgIGRlcC5jb250ZW50c18gPSBnb29nLmxvYWRGaWxlU3luY18oZGVwLnBhdGgpOwoKICAgICAgaWYgKGRlcC5jb250ZW50c18pIHsKICAgICAgICBkZXAuY29udGVudHNfID0gZGVwLnRyYW5zZm9ybShkZXAuY29udGVudHNfKTsKICAgICAgICBpZiAoZGVwLmNvbnRlbnRzXykgewogICAgICAgICAgZGVwLmNvbnRlbnRzXyArPSAnXG4vLyMgc291cmNlVVJMPScgKyBkZXAucGF0aDsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICBpZiAoZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKSB7CiAgICAgIGZldGNoKCk7CiAgICAgIGlmICh0aGlzLmNvbnRlbnRzXyAmJgogICAgICAgICAgZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKCcnLCB0aGlzLmNvbnRlbnRzXykpIHsKICAgICAgICB0aGlzLmNvbnRlbnRzXyA9IG51bGw7CiAgICAgICAgY29udHJvbGxlci5sb2FkZWQoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBjb250cm9sbGVyLnBhdXNlKCk7CiAgICAgIH0KICAgICAgcmV0dXJuOwogICAgfQoKCiAgICB2YXIgaXNFczYgPSB0aGlzLmxvYWRGbGFnc1snbW9kdWxlJ10gPT0gZ29vZy5Nb2R1bGVUeXBlLkVTNjsKCiAgICBpZiAoIXRoaXMubGF6eUZldGNoXykgewogICAgICBmZXRjaCgpOwogICAgfQoKICAgIGZ1bmN0aW9uIGxvYWQoKSB7CiAgICAgIGlmIChkZXAubGF6eUZldGNoXykgewogICAgICAgIGZldGNoKCk7CiAgICAgIH0KCiAgICAgIGlmICghZGVwLmNvbnRlbnRzXykgewogICAgICAgIC8vIGxvYWRGaWxlU3luY18gb3IgdHJhbnNmb3JtIGFyZSByZXNwb25zaWJsZS4gQXNzdW1lIHRoZXkgbG9nZ2VkIGFuCiAgICAgICAgLy8gZXJyb3IuCiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICBpZiAoaXNFczYpIHsKICAgICAgICBjb250cm9sbGVyLnNldE1vZHVsZVN0YXRlKGdvb2cuTW9kdWxlVHlwZS5FUzYpOwogICAgICB9CgogICAgICB2YXIgbmFtZXNwYWNlOwoKICAgICAgdHJ5IHsKICAgICAgICB2YXIgY29udGVudHMgPSBkZXAuY29udGVudHNfOwogICAgICAgIGRlcC5jb250ZW50c18gPSBudWxsOwogICAgICAgIGdvb2cuZ2xvYmFsRXZhbChjb250ZW50cyk7CiAgICAgICAgaWYgKGlzRXM2KSB7CiAgICAgICAgICBuYW1lc3BhY2UgPSBnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lOwogICAgICAgIH0KICAgICAgfSBmaW5hbGx5IHsKICAgICAgICBpZiAoaXNFczYpIHsKICAgICAgICAgIGNvbnRyb2xsZXIuY2xlYXJNb2R1bGVTdGF0ZSgpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgaWYgKGlzRXM2KSB7CiAgICAgICAgLy8gRHVlIHRvIGNpcmN1bGFyIGRlcGVuZGVuY2llcyB0aGlzIG1heSBub3QgYmUgYXZhaWxhYmxlIGZvciByZXF1aXJlCiAgICAgICAgLy8gcmlnaHQgbm93LgogICAgICAgIGdvb2cuZ2xvYmFsWyckanNjb21wJ11bJ3JlcXVpcmUnXVsnZW5zdXJlJ10oCiAgICAgICAgICAgIFtkZXAuZ2V0UGF0aE5hbWUoKV0sIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgIGNvbnRyb2xsZXIucmVnaXN0ZXJFczZNb2R1bGVFeHBvcnRzKAogICAgICAgICAgICAgICAgICBkZXAucGF0aCwKICAgICAgICAgICAgICAgICAgZ29vZy5nbG9iYWxbJyRqc2NvbXAnXVsncmVxdWlyZSddKGRlcC5nZXRQYXRoTmFtZSgpKSwKICAgICAgICAgICAgICAgICAgbmFtZXNwYWNlKTsKICAgICAgICAgICAgfSk7CiAgICAgIH0KCiAgICAgIGNvbnRyb2xsZXIubG9hZGVkKCk7CiAgICB9CgogICAgLy8gRG8gbm90IGZldGNoIG5vdzsgaW4gRmlyZUZveCA0NyB0aGUgc3luY2hyb25vdXMgWEhSIGRvZXNuJ3QgYmxvY2sgYWxsCiAgICAvLyBldmVudHMuIElmIHdlIGZldGNoZWQgbm93IGFuZCB0aGVuIGRvY3VtZW50LndyaXRlJ2QgdGhlIGNvbnRlbnRzIHRoZQogICAgLy8gZG9jdW1lbnQud3JpdGUgd291bGQgYmUgYW4gZXZhbCBhbmQgd291bGQgZXhlY3V0ZSB0b28gc29vbiEgSW5zdGVhZCB3cml0ZQogICAgLy8gYSBzY3JpcHQgdGFnIHRvIGZldGNoIGFuZCBldmFsIHN5bmNocm9ub3VzbHkgYXQgdGhlIGNvcnJlY3QgdGltZS4KICAgIGZ1bmN0aW9uIGZldGNoSW5Pd25TY3JpcHRUaGVuTG9hZCgpIHsKICAgICAgLyoqIEB0eXBlIHshSFRNTERvY3VtZW50fSAqLwogICAgICB2YXIgZG9jID0gZ29vZy5nbG9iYWwuZG9jdW1lbnQ7CgogICAgICB2YXIga2V5ID0gZ29vZy5EZXBlbmRlbmN5LnJlZ2lzdGVyQ2FsbGJhY2tfKGZ1bmN0aW9uKCkgewogICAgICAgIGdvb2cuRGVwZW5kZW5jeS51bnJlZ2lzdGVyQ2FsbGJhY2tfKGtleSk7CiAgICAgICAgbG9hZCgpOwogICAgICB9KTsKCiAgICAgIHZhciBzY3JpcHQgPSAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPicgKwogICAgICAgICAgZ29vZy5wcm90ZWN0U2NyaXB0VGFnXygnZ29vZy5EZXBlbmRlbmN5LmNhbGxiYWNrXygiJyArIGtleSArICciKTsnKSArCiAgICAgICAgICAnPC8nICsKICAgICAgICAgICdzY3JpcHQ+JzsKICAgICAgZG9jLndyaXRlKAogICAgICAgICAgZ29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8gPwogICAgICAgICAgICAgIGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfLmNyZWF0ZUhUTUwoc2NyaXB0KSA6CiAgICAgICAgICAgICAgc2NyaXB0KTsKICAgIH0KCiAgICAvLyBJZiBvbmUgdGhpbmcgaXMgcGVuZGluZyBpdCBpcyB0aGlzLgogICAgdmFyIGFueXRoaW5nRWxzZVBlbmRpbmcgPSBjb250cm9sbGVyLnBlbmRpbmcoKS5sZW5ndGggPiAxOwoKICAgIC8vIElmIGFueXRoaW5nIGVsc2UgaXMgbG9hZGluZyB3ZSBuZWVkIHRvIGxhenkgbG9hZCBkdWUgdG8gYnVncyBpbiBvbGQgSUUuCiAgICAvLyBTcGVjaWZpY2FsbHkgc2NyaXB0IHRhZ3Mgd2l0aCBzcmMgYW5kIHNjcmlwdCB0YWdzIHdpdGggY29udGVudHMgY291bGQKICAgIC8vIGV4ZWN1dGUgb3V0IG9mIG9yZGVyIGlmIGRvY3VtZW50LndyaXRlIGlzIHVzZWQsIHNvIHdlIGNhbm5vdCB1c2UKICAgIC8vIGRvY3VtZW50LndyaXRlLiBEbyBub3QgcGF1c2UgaGVyZTsgaXQgYnJlYWtzIG9sZCBJRSBhcyB3ZWxsLgogICAgdmFyIHVzZU9sZEllV29ya0Fyb3VuZCA9CiAgICAgICAgYW55dGhpbmdFbHNlUGVuZGluZyAmJiBnb29nLkRlYnVnTG9hZGVyXy5JU19PTERfSUVfOwoKICAgIC8vIEFkZGl0aW9uYWxseSBpZiB3ZSBhcmUgbWVhbnQgdG8gZGVmZXIgc2NyaXB0cyBidXQgdGhlIHBhZ2UgaXMgc3RpbGwKICAgIC8vIGxvYWRpbmcgKGUuZy4gYW4gRVM2IG1vZHVsZSBpcyBsb2FkaW5nKSB0aGVuIGFsc28gZGVmZXIuIE9yIGlmIHdlIGFyZQogICAgLy8gbWVhbnQgdG8gZGVmZXIgYW5kIGFueXRoaW5nIGVsc2UgaXMgcGVuZGluZyB0aGVuIGRlZmVyICh0aG9zZSBtYXkgYmUKICAgIC8vIHNjcmlwdHMgdGhhdCBkaWQgbm90IG5lZWQgdHJhbnNmb3JtYXRpb24gYW5kIGFyZSBqdXN0IHNjcmlwdCB0YWdzIHdpdGgKICAgIC8vIGRlZmVyIHNldCB0byB0cnVlLCBhbmQgd2UgbmVlZCB0byBldmFsdWF0ZSBhZnRlciB0aGF0IGRlZmVycmVkIHNjcmlwdCkuCiAgICB2YXIgbmVlZHNBc3luY0xvYWRpbmcgPSBnb29nLkRlcGVuZGVuY3kuZGVmZXJfICYmCiAgICAgICAgKGFueXRoaW5nRWxzZVBlbmRpbmcgfHwgZ29vZy5pc0RvY3VtZW50TG9hZGluZ18oKSk7CgogICAgaWYgKHVzZU9sZEllV29ya0Fyb3VuZCB8fCBuZWVkc0FzeW5jTG9hZGluZykgewogICAgICAvLyBOb3RlIHRoYXQgd2Ugb25seSBkZWZlciB3aGVuIHdlIGhhdmUgdG8gcmF0aGVyIHRoYW4gMTAwJSBvZiB0aGUgdGltZS4KICAgICAgLy8gQWx3YXlzIGRlZmVyaW5nIHdvdWxkIHdvcmssIGJ1dCB0aGVuIGluIHRoZW9yeSB0aGUgb3JkZXIgb2YKICAgICAgLy8gZ29vZy5yZXF1aXJlIGNhbGxzIHdvdWxkIHRoZW4gbWF0dGVyLiBXZSB3YW50IHRvIGVuZm9yY2UgdGhhdCBtb3N0IG9mCiAgICAgIC8vIHRoZSB0aW1lIHRoZSBvcmRlciBvZiB0aGUgcmVxdWlyZSBjYWxscyBkb2VzIG5vdCBtYXR0ZXIuCiAgICAgIGNvbnRyb2xsZXIuZGVmZXIoZnVuY3Rpb24oKSB7CiAgICAgICAgbG9hZCgpOwogICAgICB9KTsKICAgICAgcmV0dXJuOwogICAgfQogICAgLy8gVE9ETyhqb2hucGxhaXN0ZWQpOiBFeHRlcm5zIGFyZSBtaXNzaW5nIG9ucmVhZHlzdGF0ZWNoYW5nZSBmb3IKICAgIC8vIEhUTUxEb2N1bWVudC4KICAgIC8qKiBAdHlwZSB7P30gKi8KICAgIHZhciBkb2MgPSBnb29nLmdsb2JhbC5kb2N1bWVudDsKCiAgICB2YXIgaXNJbnRlcm5ldEV4cGxvcmVyID0KICAgICAgICBnb29nLmluSHRtbERvY3VtZW50XygpICYmICdBY3RpdmVYT2JqZWN0JyBpbiBnb29nLmdsb2JhbDsKCiAgICAvLyBEb24ndCBkZWxheSBpbiBhbnkgdmVyc2lvbiBvZiBJRS4gVGhlcmUncyBidWcgYXJvdW5kIHRoaXMgdGhhdCB3aWxsCiAgICAvLyBjYXVzZSBvdXQgb2Ygb3JkZXIgc2NyaXB0IGV4ZWN1dGlvbi4gVGhpcyBtZWFucyB0aGF0IG9uIG9sZGVyIElFIEVTNgogICAgLy8gbW9kdWxlcyB3aWxsIGxvYWQgdG9vIGVhcmx5ICh3aGlsZSB0aGUgZG9jdW1lbnQgaXMgc3RpbGwgbG9hZGluZyArIHRoZQogICAgLy8gZG9tIGlzIG5vdCBhdmFpbGFibGUpLiBUaGUgb3RoZXIgb3B0aW9uIGlzIHRvIGxvYWQgdG9vIGxhdGUgKHdoZW4gdGhlCiAgICAvLyBkb2N1bWVudCBpcyBjb21wbGV0ZSBhbmQgdGhlIG9ubG9hZCBldmVuIHdpbGwgbmV2ZXIgZmlyZSkuIFRoaXMgc2VlbXMKICAgIC8vIHRvIGJlIHRoZSBsZXNzZXIgb2YgdHdvIGV2aWxzIGFzIHNjcmlwdHMgYWxyZWFkeSBhY3QgbGlrZSB0aGUgZm9ybWVyLgogICAgaWYgKGlzRXM2ICYmIGdvb2cuaW5IdG1sRG9jdW1lbnRfKCkgJiYgZ29vZy5pc0RvY3VtZW50TG9hZGluZ18oKSAmJgogICAgICAgICFpc0ludGVybmV0RXhwbG9yZXIpIHsKICAgICAgZ29vZy5EZXBlbmRlbmN5LmRlZmVyXyA9IHRydWU7CiAgICAgIC8vIFRyYW5zcGlsZWQgRVM2IG1vZHVsZXMgc3RpbGwgbmVlZCB0byBsb2FkIGxpa2UgcmVndWxhciBFUzYgbW9kdWxlcywKICAgICAgLy8gYWthIG9ubHkgYWZ0ZXIgdGhlIGRvY3VtZW50IGlzIGludGVyYWN0aXZlLgogICAgICBjb250cm9sbGVyLnBhdXNlKCk7CiAgICAgIHZhciBvbGRDYWxsYmFjayA9IGRvYy5vbnJlYWR5c3RhdGVjaGFuZ2U7CiAgICAgIGRvYy5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKICAgICAgICBpZiAoZG9jLnJlYWR5U3RhdGUgPT0gJ2ludGVyYWN0aXZlJykgewogICAgICAgICAgZG9jLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG9sZENhbGxiYWNrOwogICAgICAgICAgbG9hZCgpOwogICAgICAgICAgY29udHJvbGxlci5yZXN1bWUoKTsKICAgICAgICB9CiAgICAgICAgaWYgKGdvb2cuaXNGdW5jdGlvbihvbGRDYWxsYmFjaykpIHsKICAgICAgICAgIG9sZENhbGxiYWNrLmFwcGx5KHVuZGVmaW5lZCwgYXJndW1lbnRzKTsKICAgICAgICB9CiAgICAgIH07CiAgICB9IGVsc2UgewogICAgICAvLyBBbHdheXMgZXZhbCBvbiBvbGQgSUUuCiAgICAgIGlmIChnb29nLkRlYnVnTG9hZGVyXy5JU19PTERfSUVfIHx8ICFnb29nLmluSHRtbERvY3VtZW50XygpIHx8CiAgICAgICAgICAhZ29vZy5pc0RvY3VtZW50TG9hZGluZ18oKSkgewogICAgICAgIGxvYWQoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBmZXRjaEluT3duU2NyaXB0VGhlbkxvYWQoKTsKICAgICAgfQogICAgfQogIH07CgoKICAvKioKICAgKiBAcGFyYW0ge3N0cmluZ30gY29udGVudHMKICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICogQGFic3RyYWN0CiAgICovCiAgZ29vZy5UcmFuc2Zvcm1lZERlcGVuZGVuY3kucHJvdG90eXBlLnRyYW5zZm9ybSA9IGZ1bmN0aW9uKGNvbnRlbnRzKSB7fTsKCgogIC8qKgogICAqIEFueSBub24tZ29vZy5tb2R1bGUgZGVwZW5kZW5jeSB3aGljaCBuZWVkcyB0byBiZSB0cmFuc3BpbGVkIGJlZm9yZSBldmFsLgogICAqCiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggQWJzb2x1dGUgcGF0aCBvZiB0aGlzIHNjcmlwdC4KICAgKiBAcGFyYW0ge3N0cmluZ30gcmVsYXRpdmVQYXRoIFBhdGggb2YgdGhpcyBzY3JpcHQgcmVsYXRpdmUgdG8gZ29vZy5iYXNlUGF0aC4KICAgKiBAcGFyYW0geyFBcnJheTxzdHJpbmc+fSBwcm92aWRlcyBnb29nLnByb3ZpZGVkIG9yIGdvb2cubW9kdWxlIHN5bWJvbHMKICAgKiAgICAgaW4gdGhpcyBmaWxlLgogICAqIEBwYXJhbSB7IUFycmF5PHN0cmluZz59IHJlcXVpcmVzIGdvb2cgc3ltYm9scyBvciByZWxhdGl2ZSBwYXRocyB0byBDbG9zdXJlCiAgICogICAgIHRoaXMgZGVwZW5kcyBvbi4KICAgKiBAcGFyYW0geyFPYmplY3Q8c3RyaW5nLCBzdHJpbmc+fSBsb2FkRmxhZ3MKICAgKiBAcGFyYW0geyFnb29nLlRyYW5zcGlsZXJ9IHRyYW5zcGlsZXIKICAgKiBAc3RydWN0IEBjb25zdHJ1Y3RvcgogICAqIEBleHRlbmRzIHtnb29nLlRyYW5zZm9ybWVkRGVwZW5kZW5jeX0KICAgKi8KICBnb29nLlRyYW5zcGlsZWREZXBlbmRlbmN5ID0gZnVuY3Rpb24oCiAgICAgIHBhdGgsIHJlbGF0aXZlUGF0aCwgcHJvdmlkZXMsIHJlcXVpcmVzLCBsb2FkRmxhZ3MsIHRyYW5zcGlsZXIpIHsKICAgIGdvb2cuVHJhbnNwaWxlZERlcGVuZGVuY3kuYmFzZSgKICAgICAgICB0aGlzLCAnY29uc3RydWN0b3InLCBwYXRoLCByZWxhdGl2ZVBhdGgsIHByb3ZpZGVzLCByZXF1aXJlcywgbG9hZEZsYWdzKTsKICAgIC8qKiBAcHJvdGVjdGVkIEBjb25zdCovCiAgICB0aGlzLnRyYW5zcGlsZXIgPSB0cmFuc3BpbGVyOwogIH07CiAgZ29vZy5pbmhlcml0cyhnb29nLlRyYW5zcGlsZWREZXBlbmRlbmN5LCBnb29nLlRyYW5zZm9ybWVkRGVwZW5kZW5jeSk7CgoKICAvKiogQG92ZXJyaWRlICovCiAgZ29vZy5UcmFuc3BpbGVkRGVwZW5kZW5jeS5wcm90b3R5cGUudHJhbnNmb3JtID0gZnVuY3Rpb24oY29udGVudHMpIHsKICAgIC8vIFRyYW5zcGlsZSB3aXRoIHRoZSBwYXRobmFtZSBzbyB0aGF0IEVTNiBtb2R1bGVzIGFyZSBkb21haW4gYWdub3N0aWMuCiAgICByZXR1cm4gdGhpcy50cmFuc3BpbGVyLnRyYW5zcGlsZShjb250ZW50cywgdGhpcy5nZXRQYXRoTmFtZSgpKTsKICB9OwoKCiAgLyoqCiAgICogQW4gRVM2IG1vZHVsZSBkZXBlbmRlbmN5IHRoYXQgd2FzIHRyYW5zcGlsZWQgdG8gYSBqc2NvbXAgbW9kdWxlIG91dHNpZGUKICAgKiBvZiB0aGUgZGVidWcgbG9hZGVyLCBlLmcuIHNlcnZlciBzaWRlLgogICAqCiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggQWJzb2x1dGUgcGF0aCBvZiB0aGlzIHNjcmlwdC4KICAgKiBAcGFyYW0ge3N0cmluZ30gcmVsYXRpdmVQYXRoIFBhdGggb2YgdGhpcyBzY3JpcHQgcmVsYXRpdmUgdG8gZ29vZy5iYXNlUGF0aC4KICAgKiBAcGFyYW0geyFBcnJheTxzdHJpbmc+fSBwcm92aWRlcyBnb29nLnByb3ZpZGVkIG9yIGdvb2cubW9kdWxlIHN5bWJvbHMKICAgKiAgICAgaW4gdGhpcyBmaWxlLgogICAqIEBwYXJhbSB7IUFycmF5PHN0cmluZz59IHJlcXVpcmVzIGdvb2cgc3ltYm9scyBvciByZWxhdGl2ZSBwYXRocyB0byBDbG9zdXJlCiAgICogICAgIHRoaXMgZGVwZW5kcyBvbi4KICAgKiBAcGFyYW0geyFPYmplY3Q8c3RyaW5nLCBzdHJpbmc+fSBsb2FkRmxhZ3MKICAgKiBAc3RydWN0IEBjb25zdHJ1Y3RvcgogICAqIEBleHRlbmRzIHtnb29nLlRyYW5zZm9ybWVkRGVwZW5kZW5jeX0KICAgKi8KICBnb29nLlByZVRyYW5zcGlsZWRFczZNb2R1bGVEZXBlbmRlbmN5ID0gZnVuY3Rpb24oCiAgICAgIHBhdGgsIHJlbGF0aXZlUGF0aCwgcHJvdmlkZXMsIHJlcXVpcmVzLCBsb2FkRmxhZ3MpIHsKICAgIGdvb2cuUHJlVHJhbnNwaWxlZEVzNk1vZHVsZURlcGVuZGVuY3kuYmFzZSgKICAgICAgICB0aGlzLCAnY29uc3RydWN0b3InLCBwYXRoLCByZWxhdGl2ZVBhdGgsIHByb3ZpZGVzLCByZXF1aXJlcywgbG9hZEZsYWdzKTsKICB9OwogIGdvb2cuaW5oZXJpdHMoCiAgICAgIGdvb2cuUHJlVHJhbnNwaWxlZEVzNk1vZHVsZURlcGVuZGVuY3ksIGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5KTsKCgogIC8qKiBAb3ZlcnJpZGUgKi8KICBnb29nLlByZVRyYW5zcGlsZWRFczZNb2R1bGVEZXBlbmRlbmN5LnByb3RvdHlwZS50cmFuc2Zvcm0gPSBmdW5jdGlvbigKICAgICAgY29udGVudHMpIHsKICAgIHJldHVybiBjb250ZW50czsKICB9OwoKCiAgLyoqCiAgICogQSBnb29nLm1vZHVsZSwgdHJhbnNwaWxlZCBvciBub3QuIFdpbGwgYWx3YXlzIHBlcmZvcm0gc29tZSBtaW5pbWFsCiAgICogdHJhbnNmb3JtYXRpb24gZXZlbiB3aGVuIG5vdCB0cmFuc3BpbGVkIHRvIHdyYXAgaW4gYSBnb29nLmxvYWRNb2R1bGUKICAgKiBzdGF0ZW1lbnQuCiAgICoKICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCBBYnNvbHV0ZSBwYXRoIG9mIHRoaXMgc2NyaXB0LgogICAqIEBwYXJhbSB7c3RyaW5nfSByZWxhdGl2ZVBhdGggUGF0aCBvZiB0aGlzIHNjcmlwdCByZWxhdGl2ZSB0byBnb29nLmJhc2VQYXRoLgogICAqIEBwYXJhbSB7IUFycmF5PHN0cmluZz59IHByb3ZpZGVzIGdvb2cucHJvdmlkZWQgb3IgZ29vZy5tb2R1bGUgc3ltYm9scwogICAqICAgICBpbiB0aGlzIGZpbGUuCiAgICogQHBhcmFtIHshQXJyYXk8c3RyaW5nPn0gcmVxdWlyZXMgZ29vZyBzeW1ib2xzIG9yIHJlbGF0aXZlIHBhdGhzIHRvIENsb3N1cmUKICAgKiAgICAgdGhpcyBkZXBlbmRzIG9uLgogICAqIEBwYXJhbSB7IU9iamVjdDxzdHJpbmcsIHN0cmluZz59IGxvYWRGbGFncwogICAqIEBwYXJhbSB7Ym9vbGVhbn0gbmVlZHNUcmFuc3BpbGUKICAgKiBAcGFyYW0geyFnb29nLlRyYW5zcGlsZXJ9IHRyYW5zcGlsZXIKICAgKiBAc3RydWN0IEBjb25zdHJ1Y3RvcgogICAqIEBleHRlbmRzIHtnb29nLlRyYW5zZm9ybWVkRGVwZW5kZW5jeX0KICAgKi8KICBnb29nLkdvb2dNb2R1bGVEZXBlbmRlbmN5ID0gZnVuY3Rpb24oCiAgICAgIHBhdGgsIHJlbGF0aXZlUGF0aCwgcHJvdmlkZXMsIHJlcXVpcmVzLCBsb2FkRmxhZ3MsIG5lZWRzVHJhbnNwaWxlLAogICAgICB0cmFuc3BpbGVyKSB7CiAgICBnb29nLkdvb2dNb2R1bGVEZXBlbmRlbmN5LmJhc2UoCiAgICAgICAgdGhpcywgJ2NvbnN0cnVjdG9yJywgcGF0aCwgcmVsYXRpdmVQYXRoLCBwcm92aWRlcywgcmVxdWlyZXMsIGxvYWRGbGFncyk7CiAgICAvKiogQHByaXZhdGUgQGNvbnN0ICovCiAgICB0aGlzLm5lZWRzVHJhbnNwaWxlXyA9IG5lZWRzVHJhbnNwaWxlOwogICAgLyoqIEBwcml2YXRlIEBjb25zdCAqLwogICAgdGhpcy50cmFuc3BpbGVyXyA9IHRyYW5zcGlsZXI7CiAgfTsKICBnb29nLmluaGVyaXRzKGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3ksIGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5KTsKCgogIC8qKiBAb3ZlcnJpZGUgKi8KICBnb29nLkdvb2dNb2R1bGVEZXBlbmRlbmN5LnByb3RvdHlwZS50cmFuc2Zvcm0gPSBmdW5jdGlvbihjb250ZW50cykgewogICAgaWYgKHRoaXMubmVlZHNUcmFuc3BpbGVfKSB7CiAgICAgIGNvbnRlbnRzID0gdGhpcy50cmFuc3BpbGVyXy50cmFuc3BpbGUoY29udGVudHMsIHRoaXMuZ2V0UGF0aE5hbWUoKSk7CiAgICB9CgogICAgaWYgKCFnb29nLkxPQURfTU9EVUxFX1VTSU5HX0VWQUwgfHwgZ29vZy5nbG9iYWwuSlNPTiA9PT0gdW5kZWZpbmVkKSB7CiAgICAgIHJldHVybiAnJyArCiAgICAgICAgICAnZ29vZy5sb2FkTW9kdWxlKGZ1bmN0aW9uKGV4cG9ydHMpIHsnICsKICAgICAgICAgICcidXNlIHN0cmljdCI7JyArIGNvbnRlbnRzICsKICAgICAgICAgICdcbicgKyAgLy8gdGVybWluYXRlIGFueSB0cmFpbGluZyBzaW5nbGUgbGluZSBjb21tZW50LgogICAgICAgICAgJztyZXR1cm4gZXhwb3J0cycgKwogICAgICAgICAgJ30pOycgKwogICAgICAgICAgJ1xuLy8jIHNvdXJjZVVSTD0nICsgdGhpcy5wYXRoICsgJ1xuJzsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiAnJyArCiAgICAgICAgICAnZ29vZy5sb2FkTW9kdWxlKCcgKwogICAgICAgICAgZ29vZy5nbG9iYWwuSlNPTi5zdHJpbmdpZnkoCiAgICAgICAgICAgICAgY29udGVudHMgKyAnXG4vLyMgc291cmNlVVJMPScgKyB0aGlzLnBhdGggKyAnXG4nKSArCiAgICAgICAgICAnKTsnOwogICAgfQogIH07CgoKICAvKioKICAgKiBXaGV0aGVyIHRoZSBicm93c2VyIGlzIElFOSBvciBlYXJsaWVyLCB3aGljaCBuZWVkcyBzcGVjaWFsIGhhbmRsaW5nCiAgICogZm9yIGRlZmVycmVkIG1vZHVsZXMuCiAgICogQGNvbnN0IEBwcml2YXRlIHtib29sZWFufQogICAqLwogIGdvb2cuRGVidWdMb2FkZXJfLklTX09MRF9JRV8gPSAhISgKICAgICAgIWdvb2cuZ2xvYmFsLmF0b2IgJiYgZ29vZy5nbG9iYWwuZG9jdW1lbnQgJiYgZ29vZy5nbG9iYWwuZG9jdW1lbnRbJ2FsbCddKTsKCgogIC8qKgogICAqIEBwYXJhbSB7c3RyaW5nfSByZWxQYXRoCiAgICogQHBhcmFtIHshQXJyYXk8c3RyaW5nPnx1bmRlZmluZWR9IHByb3ZpZGVzCiAgICogQHBhcmFtIHshQXJyYXk8c3RyaW5nPn0gcmVxdWlyZXMKICAgKiBAcGFyYW0ge2Jvb2xlYW58IU9iamVjdDxzdHJpbmc+PX0gb3B0X2xvYWRGbGFncwogICAqIEBzZWUgZ29vZy5hZGREZXBlbmRlbmN5CiAgICovCiAgZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmFkZERlcGVuZGVuY3kgPSBmdW5jdGlvbigKICAgICAgcmVsUGF0aCwgcHJvdmlkZXMsIHJlcXVpcmVzLCBvcHRfbG9hZEZsYWdzKSB7CiAgICBwcm92aWRlcyA9IHByb3ZpZGVzIHx8IFtdOwogICAgcmVsUGF0aCA9IHJlbFBhdGgucmVwbGFjZSgvXFwvZywgJy8nKTsKICAgIHZhciBwYXRoID0gZ29vZy5ub3JtYWxpemVQYXRoXyhnb29nLmJhc2VQYXRoICsgcmVsUGF0aCk7CiAgICBpZiAoIW9wdF9sb2FkRmxhZ3MgfHwgdHlwZW9mIG9wdF9sb2FkRmxhZ3MgPT09ICdib29sZWFuJykgewogICAgICBvcHRfbG9hZEZsYWdzID0gb3B0X2xvYWRGbGFncyA/IHsnbW9kdWxlJzogZ29vZy5Nb2R1bGVUeXBlLkdPT0d9IDoge307CiAgICB9CiAgICB2YXIgZGVwID0gdGhpcy5mYWN0b3J5Xy5jcmVhdGVEZXBlbmRlbmN5KAogICAgICAgIHBhdGgsIHJlbFBhdGgsIHByb3ZpZGVzLCByZXF1aXJlcywgb3B0X2xvYWRGbGFncywKICAgICAgICBnb29nLnRyYW5zcGlsZXJfLm5lZWRzVHJhbnNwaWxlKAogICAgICAgICAgICBvcHRfbG9hZEZsYWdzWydsYW5nJ10gfHwgJ2VzMycsIG9wdF9sb2FkRmxhZ3NbJ21vZHVsZSddKSk7CiAgICB0aGlzLmRlcGVuZGVuY2llc19bcGF0aF0gPSBkZXA7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3ZpZGVzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHRoaXMuaWRUb1BhdGhfW3Byb3ZpZGVzW2ldXSA9IHBhdGg7CiAgICB9CiAgICB0aGlzLmlkVG9QYXRoX1tyZWxQYXRoXSA9IHBhdGg7CiAgfTsKCgogIC8qKgogICAqIENyZWF0ZXMgZ29vZy5EZXBlbmRlbmN5IGluc3RhbmNlcyBmb3IgdGhlIGRlYnVnIGxvYWRlciB0byBsb2FkLgogICAqCiAgICogU2hvdWxkIGJlIG92ZXJyaWRkZW4gdG8gaGF2ZSB0aGUgZGVidWcgbG9hZGVyIHVzZSBjdXN0b20gc3ViY2xhc3NlcyBvZgogICAqIGdvb2cuRGVwZW5kZW5jeS4KICAgKgogICAqIEBwYXJhbSB7IWdvb2cuVHJhbnNwaWxlcn0gdHJhbnNwaWxlcgogICAqIEBzdHJ1Y3QgQGNvbnN0cnVjdG9yCiAgICovCiAgZ29vZy5EZXBlbmRlbmN5RmFjdG9yeSA9IGZ1bmN0aW9uKHRyYW5zcGlsZXIpIHsKICAgIC8qKiBAcHJvdGVjdGVkIEBjb25zdCAqLwogICAgdGhpcy50cmFuc3BpbGVyID0gdHJhbnNwaWxlcjsKICB9OwoKCiAgLyoqCiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggQWJzb2x1dGUgcGF0aCBvZiB0aGUgZmlsZS4KICAgKiBAcGFyYW0ge3N0cmluZ30gcmVsYXRpdmVQYXRoIFBhdGggcmVsYXRpdmUgdG8gY2xvc3VyZeKAmXMgYmFzZS5qcy4KICAgKiBAcGFyYW0geyFBcnJheTxzdHJpbmc+fSBwcm92aWRlcyBBcnJheSBvZiBwcm92aWRlZCBnb29nLnByb3ZpZGUvbW9kdWxlIGlkcy4KICAgKiBAcGFyYW0geyFBcnJheTxzdHJpbmc+fSByZXF1aXJlcyBBcnJheSBvZiByZXF1aXJlZCBnb29nLnByb3ZpZGUvbW9kdWxlIC8KICAgKiAgICAgcmVsYXRpdmUgRVM2IG1vZHVsZSBwYXRocy4KICAgKiBAcGFyYW0geyFPYmplY3Q8c3RyaW5nLCBzdHJpbmc+fSBsb2FkRmxhZ3MKICAgKiBAcGFyYW0ge2Jvb2xlYW59IG5lZWRzVHJhbnNwaWxlIFRydWUgaWYgdGhlIGZpbGUgbmVlZHMgdG8gYmUgdHJhbnNwaWxlZAogICAqICAgICBwZXIgdGhlIGdvb2cuVHJhbnNwaWxlci4KICAgKiBAcmV0dXJuIHshZ29vZy5EZXBlbmRlbmN5fQogICAqLwogIGdvb2cuRGVwZW5kZW5jeUZhY3RvcnkucHJvdG90eXBlLmNyZWF0ZURlcGVuZGVuY3kgPSBmdW5jdGlvbigKICAgICAgcGF0aCwgcmVsYXRpdmVQYXRoLCBwcm92aWRlcywgcmVxdWlyZXMsIGxvYWRGbGFncywgbmVlZHNUcmFuc3BpbGUpIHsKCiAgICBpZiAobG9hZEZsYWdzWydtb2R1bGUnXSA9PSBnb29nLk1vZHVsZVR5cGUuR09PRykgewogICAgICByZXR1cm4gbmV3IGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3koCiAgICAgICAgICBwYXRoLCByZWxhdGl2ZVBhdGgsIHByb3ZpZGVzLCByZXF1aXJlcywgbG9hZEZsYWdzLCBuZWVkc1RyYW5zcGlsZSwKICAgICAgICAgIHRoaXMudHJhbnNwaWxlcik7CiAgICB9IGVsc2UgaWYgKG5lZWRzVHJhbnNwaWxlKSB7CiAgICAgIHJldHVybiBuZXcgZ29vZy5UcmFuc3BpbGVkRGVwZW5kZW5jeSgKICAgICAgICAgIHBhdGgsIHJlbGF0aXZlUGF0aCwgcHJvdmlkZXMsIHJlcXVpcmVzLCBsb2FkRmxhZ3MsIHRoaXMudHJhbnNwaWxlcik7CiAgICB9IGVsc2UgewogICAgICBpZiAobG9hZEZsYWdzWydtb2R1bGUnXSA9PSBnb29nLk1vZHVsZVR5cGUuRVM2KSB7CiAgICAgICAgaWYgKGdvb2cuVFJBTlNQSUxFID09ICduZXZlcicgJiYgZ29vZy5BU1NVTUVfRVNfTU9EVUxFU19UUkFOU1BJTEVEKSB7CiAgICAgICAgICByZXR1cm4gbmV3IGdvb2cuUHJlVHJhbnNwaWxlZEVzNk1vZHVsZURlcGVuZGVuY3koCiAgICAgICAgICAgICAgcGF0aCwgcmVsYXRpdmVQYXRoLCBwcm92aWRlcywgcmVxdWlyZXMsIGxvYWRGbGFncyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHJldHVybiBuZXcgZ29vZy5FczZNb2R1bGVEZXBlbmRlbmN5KAogICAgICAgICAgICAgIHBhdGgsIHJlbGF0aXZlUGF0aCwgcHJvdmlkZXMsIHJlcXVpcmVzLCBsb2FkRmxhZ3MpOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gbmV3IGdvb2cuRGVwZW5kZW5jeSgKICAgICAgICAgICAgcGF0aCwgcmVsYXRpdmVQYXRoLCBwcm92aWRlcywgcmVxdWlyZXMsIGxvYWRGbGFncyk7CiAgICAgIH0KICAgIH0KICB9OwoKCiAgLyoqIEBwcml2YXRlIEBjb25zdCAqLwogIGdvb2cuZGVidWdMb2FkZXJfID0gbmV3IGdvb2cuRGVidWdMb2FkZXJfKCk7CgoKICAvKioKICAgKiBMb2FkcyB0aGUgQ2xvc3VyZSBEZXBlbmRlbmN5IGZpbGUuCiAgICoKICAgKiBFeHBvc2VkIGEgcHVibGljIGZ1bmN0aW9uIHNvIENMT1NVUkVfTk9fREVQUyBjYW4gYmUgc2V0IHRvIGZhbHNlLCBiYXNlCiAgICogbG9hZGVkLCBzZXREZXBlbmRlbmN5RmFjdG9yeSBjYWxsZWQsIGFuZCB0aGVuIHRoaXMgY2FsbGVkLiBpLmUuIGFsbG93cwogICAqIGN1c3RvbSBsb2FkaW5nIG9mIHRoZSBkZXBzIGZpbGUuCiAgICovCiAgZ29vZy5sb2FkQ2xvc3VyZURlcHMgPSBmdW5jdGlvbigpIHsKICAgIGdvb2cuZGVidWdMb2FkZXJfLmxvYWRDbG9zdXJlRGVwcygpOwogIH07CgoKICAvKioKICAgKiBTZXRzIHRoZSBkZXBlbmRlbmN5IGZhY3RvcnksIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBjdXN0b20KICAgKiBnb29nLkRlcGVuZGVuY3kgaW1wbGVtZW50YXRpb25zIHRvIGNvbnRyb2wgaG93IGRlcGVuZGVuY2llcyBhcmUgbG9hZGVkLgogICAqCiAgICogTm90ZTogaWYgeW91IHdpc2ggdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGFuZCBwcm92aWRlIHlvdXIgb3duIGltcGxlbW5ldGF0aW9uCiAgICogaXQgaXMgYSB3aXNlIGlkZWEgdG8gc2V0IENMT1NVUkVfTk9fREVQUyB0byB0cnVlLCBvdGhlcndpc2UgdGhlIGRlcGVuZGVuY3kKICAgKiBmaWxlIGFuZCBhbGwgb2YgaXRzIGdvb2cuYWRkRGVwZW5kZW5jeSBjYWxscyB3aWxsIHVzZSB0aGUgZGVmYXVsdCBmYWN0b3J5LgogICAqIFlvdSBjYW4gY2FsbCBnb29nLmxvYWRDbG9zdXJlRGVwcyB0byBsb2FkIHRoZSBDbG9zdXJlIGRlcGVuZGVuY3kgZmlsZQogICAqIGxhdGVyLCBhZnRlciB5b3VyIGZhY3RvcnkgaXMgaW5qZWN0ZWQuCiAgICoKICAgKiBAcGFyYW0geyFnb29nLkRlcGVuZGVuY3lGYWN0b3J5fSBmYWN0b3J5CiAgICovCiAgZ29vZy5zZXREZXBlbmRlbmN5RmFjdG9yeSA9IGZ1bmN0aW9uKGZhY3RvcnkpIHsKICAgIGdvb2cuZGVidWdMb2FkZXJfLnNldERlcGVuZGVuY3lGYWN0b3J5KGZhY3RvcnkpOwogIH07CgoKICBpZiAoIWdvb2cuZ2xvYmFsLkNMT1NVUkVfTk9fREVQUykgewogICAgZ29vZy5kZWJ1Z0xvYWRlcl8ubG9hZENsb3N1cmVEZXBzKCk7CiAgfQoKCiAgLyoqCiAgICogQm9vdHN0cmFwcyB0aGUgZ2l2ZW4gbmFtZXNwYWNlcyBhbmQgY2FsbHMgdGhlIGNhbGxiYWNrIG9uY2UgdGhleSBhcmUKICAgKiBhdmFpbGFibGUgZWl0aGVyIHZpYSBnb29nLnJlcXVpcmUuIFRoaXMgaXMgYSByZXBsYWNlbWVudCBmb3IgdXNpbmcKICAgKiBgZ29vZy5yZXF1aXJlYCB0byBib290c3RyYXAgQ2xvc3VyZSBKYXZhU2NyaXB0LiBQcmV2aW91c2x5IGEgYGdvb2cucmVxdWlyZWAKICAgKiBpbiBhbiBIVE1MIGZpbGUgd291bGQgZ3VhcmFudGVlIHRoYXQgdGhlIHJlcXVpcmUnZCBuYW1lc3BhY2Ugd2FzIGF2YWlsYWJsZQogICAqIGluIHRoZSBuZXh0IGltbWVkaWF0ZSBzY3JpcHQgdGFnLiBXaXRoIEVTNiBtb2R1bGVzIHRoaXMgbm8gbG9uZ2VyIGEKICAgKiBndWFyYW50ZWUuCiAgICoKICAgKiBAcGFyYW0geyFBcnJheTxzdHJpbmc+fSBuYW1lc3BhY2VzCiAgICogQHBhcmFtIHtmdW5jdGlvbigpOiA/fSBjYWxsYmFjayBGdW5jdGlvbiB0byBjYWxsIG9uY2UgYWxsIHRoZSBuYW1lc3BhY2VzCiAgICogICAgIGhhdmUgbG9hZGVkLiBBbHdheXMgY2FsbGVkIGFzeW5jaHJvbm91c2x5LgogICAqLwogIGdvb2cuYm9vdHN0cmFwID0gZnVuY3Rpb24obmFtZXNwYWNlcywgY2FsbGJhY2spIHsKICAgIGdvb2cuZGVidWdMb2FkZXJfLmJvb3RzdHJhcChuYW1lc3BhY2VzLCBjYWxsYmFjayk7CiAgfTsKfQoKCi8qKgogKiBAZGVmaW5lIHtzdHJpbmd9IFRydXN0ZWQgVHlwZXMgcG9saWN5IG5hbWUuIElmIG5vbi1lbXB0eSB0aGVuIENsb3N1cmUgd2lsbAogKiB1c2UgVHJ1c3RlZCBUeXBlcy4KICovCmdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfTkFNRSA9CiAgICBnb29nLmRlZmluZSgnZ29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV9OQU1FJywgJycpOwoKCi8qKgogKiBSZXR1cm5zIHRoZSBwYXJhbWV0ZXIuCiAqIEBwYXJhbSB7c3RyaW5nfSBzCiAqIEByZXR1cm4ge3N0cmluZ30KICogQHByaXZhdGUKICovCmdvb2cuaWRlbnRpdHlfID0gZnVuY3Rpb24ocykgewogIHJldHVybiBzOwp9OwoKCi8qKgogKiBDcmVhdGVzIFRydXN0ZWQgVHlwZXMgcG9saWN5IGlmIFRydXN0ZWQgVHlwZXMgYXJlIHN1cHBvcnRlZCBieSB0aGUgYnJvd3Nlci4KICogVGhlIHBvbGljeSBqdXN0IGJsZXNzZXMgYW55IHN0cmluZyBhcyBhIFRydXN0ZWQgVHlwZS4gSXQgaXMgbm90IHZpc2liaWxpdHkKICogcmVzdHJpY3RlZCBiZWNhdXNlIGFueW9uZSBjYW4gYWxzbyBjYWxsIFRydXN0ZWRUeXBlcy5jcmVhdGVQb2xpY3kgZGlyZWN0bHkuCiAqIEhvd2V2ZXIsIHRoZSBhbGxvd2VkIG5hbWVzIHNob3VsZCBiZSByZXN0cmljdGVkIGJ5IGEgSFRUUCBoZWFkZXIgYW5kIHRoZQogKiByZWZlcmVuY2UgdG8gdGhlIGNyZWF0ZWQgcG9saWN5IHNob3VsZCBiZSB2aXNpYmlsaXR5IHJlc3RyaWN0ZWQuCiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCiAqIEByZXR1cm4gez9UcnVzdGVkVHlwZVBvbGljeX0KICovCmdvb2cuY3JlYXRlVHJ1c3RlZFR5cGVzUG9saWN5ID0gZnVuY3Rpb24obmFtZSkgewogIHZhciBwb2xpY3kgPSBudWxsOwogIC8vIFRPRE8oa290byk6IFJlbW92ZSB3aW5kb3cuVHJ1c3RlZFR5cGVzIHZhcmlhbnQgd2hlbiB0aGUgbmV3ZXIgQVBJIHNoaXBzLgogIHZhciBwb2xpY3lGYWN0b3J5ID0gZ29vZy5nbG9iYWwudHJ1c3RlZFR5cGVzIHx8IGdvb2cuZ2xvYmFsLlRydXN0ZWRUeXBlczsKICBpZiAoIXBvbGljeUZhY3RvcnkgfHwgIXBvbGljeUZhY3RvcnkuY3JlYXRlUG9saWN5KSB7CiAgICByZXR1cm4gcG9saWN5OwogIH0KICAvLyBUcnVzdGVkVHlwZXMuY3JlYXRlUG9saWN5IHRocm93cyBpZiBjYWxsZWQgd2l0aCBhIG5hbWUgdGhhdCBpcyBhbHJlYWR5CiAgLy8gcmVnaXN0ZXJlZCwgZXZlbiBpbiByZXBvcnQtb25seSBtb2RlLiBVbnRpbCB0aGUgQVBJIGNoYW5nZXMsIGNhdGNoIHRoZQogIC8vIGVycm9yIG5vdCB0byBicmVhayB0aGUgYXBwbGljYXRpb25zIGZ1bmN0aW9uYWxseS4gSW4gc3VjaCBjYXNlLCB0aGUgY29kZQogIC8vIHdpbGwgZmFsbCBiYWNrIHRvIHVzaW5nIHJlZ3VsYXIgU2FmZSBUeXBlcy4KICAvLyBUT0RPKGtvdG8pOiBSZW1vdmUgY2F0Y2hpbmcgb25jZSBjcmVhdGVQb2xpY3kgQVBJIHN0b3BzIHRocm93aW5nLgogIHRyeSB7CiAgICBwb2xpY3kgPSBwb2xpY3lGYWN0b3J5LmNyZWF0ZVBvbGljeShuYW1lLCB7CiAgICAgIGNyZWF0ZUhUTUw6IGdvb2cuaWRlbnRpdHlfLAogICAgICBjcmVhdGVTY3JpcHQ6IGdvb2cuaWRlbnRpdHlfLAogICAgICBjcmVhdGVTY3JpcHRVUkw6IGdvb2cuaWRlbnRpdHlfLAogICAgICBjcmVhdGVVUkw6IGdvb2cuaWRlbnRpdHlfCiAgICB9KTsKICB9IGNhdGNoIChlKSB7CiAgICBnb29nLmxvZ1RvQ29uc29sZV8oZS5tZXNzYWdlKTsKICB9CiAgcmV0dXJuIHBvbGljeTsKfTsKCgovKiogQHByaXZhdGUgQGNvbnN0IHs/VHJ1c3RlZFR5cGVQb2xpY3l9ICovCmdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfID0gZ29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV9OQU1FID8KICAgIGdvb2cuY3JlYXRlVHJ1c3RlZFR5cGVzUG9saWN5KGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfTkFNRSArICcjYmFzZScpIDoKICAgIG51bGw7CgovLyBDb3B5cmlnaHQgMjAxOSBUaGUgQ2xvc3VyZSBMaWJyYXJ5IEF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi8vCi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwovLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAovLwovLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAovLwovLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUy1JUyIgQkFTSVMsCi8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgovLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgovLwovLyBUaGlzIGZpbGUgaGFzIGJlZW4gYXV0by1nZW5lcmF0ZWQgYnkgR2VuSnNEZXBzLCBwbGVhc2UgZG8gbm90IGVkaXQuCgovLyBEaXNhYmxlIENsYW5nIGZvcm1hdHRlciBmb3IgdGhpcyBmaWxlLgovLyBTZWUgaHR0cDovL2dvby5nbC9TZGl3WkgKLy8gY2xhbmctZm9ybWF0IG9mZgoKZ29vZy5hZGREZXBlbmRlbmN5KCdjb2xsZWN0aW9ucy9zZXRzLmpzJywgWydnb29nLmNvbGxlY3Rpb25zLnNldHMnXSwgWydnb29nLmxhYnMuY29sbGVjdGlvbnMuaXRlcmFibGVzJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnY29sbGVjdGlvbnMvc2V0c190ZXN0LmpzJywgWydnb29nLmNvbGxlY3Rpb25zLnNldHNUZXN0J10sIFsnZ29vZy5jb2xsZWN0aW9ucy5zZXRzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi90aGlyZF9wYXJ0eS9jbG9zdXJlL2dvb2cvbW9jaGlraXQvYXN5bmMvZGVmZXJyZWQuanMnLCBbJ2dvb2cuYXN5bmMuRGVmZXJyZWQnLCAnZ29vZy5hc3luYy5EZWZlcnJlZC5BbHJlYWR5Q2FsbGVkRXJyb3InLCAnZ29vZy5hc3luYy5EZWZlcnJlZC5DYW5jZWxlZEVycm9yJ10sIFsnZ29vZy5Qcm9taXNlJywgJ2dvb2cuVGhlbmFibGUnLCAnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5kZWJ1Zy5FcnJvciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnLi4vLi4vdGhpcmRfcGFydHkvY2xvc3VyZS9nb29nL21vY2hpa2l0L2FzeW5jL2RlZmVycmVkX2FzeW5jX3Rlc3QuanMnLCBbJ2dvb2cuYXN5bmMuZGVmZXJyZWRBc3luY1Rlc3QnXSwgWydnb29nLmFzeW5jLkRlZmVycmVkJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi90aGlyZF9wYXJ0eS9jbG9zdXJlL2dvb2cvbW9jaGlraXQvYXN5bmMvZGVmZXJyZWRfdGVzdC5qcycsIFsnZ29vZy5hc3luYy5kZWZlcnJlZFRlc3QnXSwgWydnb29nLlByb21pc2UnLCAnZ29vZy5UaGVuYWJsZScsICdnb29nLmFzeW5jLkRlZmVycmVkJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi90aGlyZF9wYXJ0eS9jbG9zdXJlL2dvb2cvbW9jaGlraXQvYXN5bmMvZGVmZXJyZWRsaXN0LmpzJywgWydnb29nLmFzeW5jLkRlZmVycmVkTGlzdCddLCBbJ2dvb2cuYXN5bmMuRGVmZXJyZWQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJy4uLy4uL3RoaXJkX3BhcnR5L2Nsb3N1cmUvZ29vZy9tb2NoaWtpdC9hc3luYy9kZWZlcnJlZGxpc3RfdGVzdC5qcycsIFsnZ29vZy5hc3luYy5kZWZlcnJlZExpc3RUZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzeW5jLkRlZmVycmVkJywgJ2dvb2cuYXN5bmMuRGVmZXJyZWRMaXN0JywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdwcm90by9wcm90by5qcycsIFsnZ29vZy5wcm90byddLCBbJ2dvb2cucHJvdG8uU2VyaWFsaXplciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgncHJvdG8vc2VyaWFsaXplci5qcycsIFsnZ29vZy5wcm90by5TZXJpYWxpemVyJ10sIFsnZ29vZy5qc29uLlNlcmlhbGl6ZXInLCAnZ29vZy5zdHJpbmcnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Byb3RvL3NlcmlhbGl6ZXJfdGVzdC5qcycsIFsnZ29vZy5wcm90b1Rlc3QnXSwgWydnb29nLnByb3RvJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdhMTF5L2FyaWEvYW5ub3VuY2VyLmpzJywgWydnb29nLmExMXkuYXJpYS5Bbm5vdW5jZXInXSwgWydnb29nLkRpc3Bvc2FibGUnLCAnZ29vZy5UaW1lcicsICdnb29nLmExMXkuYXJpYScsICdnb29nLmExMXkuYXJpYS5MaXZlUHJpb3JpdHknLCAnZ29vZy5hMTF5LmFyaWEuU3RhdGUnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLm9iamVjdCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnYTExeS9hcmlhL2Fubm91bmNlcl90ZXN0LmpzJywgWydnb29nLmExMXkuYXJpYS5Bbm5vdW5jZXJUZXN0J10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hMTF5LmFyaWEuQW5ub3VuY2VyJywgJ2dvb2cuYTExeS5hcmlhLkxpdmVQcmlvcml0eScsICdnb29nLmExMXkuYXJpYS5TdGF0ZScsICdnb29nLmFycmF5JywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uaWZyYW1lJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2ExMXkvYXJpYS9hcmlhLmpzJywgWydnb29nLmExMXkuYXJpYSddLCBbJ2dvb2cuYTExeS5hcmlhLlJvbGUnLCAnZ29vZy5hMTF5LmFyaWEuU3RhdGUnLCAnZ29vZy5hMTF5LmFyaWEuZGF0YXRhYmxlcycsICdnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RyaW5nJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdhMTF5L2FyaWEvYXJpYV90ZXN0LmpzJywgWydnb29nLmExMXkuYXJpYVRlc3QnXSwgWydnb29nLmExMXkuYXJpYScsICdnb29nLmExMXkuYXJpYS5Sb2xlJywgJ2dvb2cuYTExeS5hcmlhLlN0YXRlJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2ExMXkvYXJpYS9hdHRyaWJ1dGVzLmpzJywgWydnb29nLmExMXkuYXJpYS5BdXRvQ29tcGxldGVWYWx1ZXMnLCAnZ29vZy5hMTF5LmFyaWEuQ2hlY2tlZFZhbHVlcycsICdnb29nLmExMXkuYXJpYS5Ecm9wRWZmZWN0VmFsdWVzJywgJ2dvb2cuYTExeS5hcmlhLkV4cGFuZGVkVmFsdWVzJywgJ2dvb2cuYTExeS5hcmlhLkdyYWJiZWRWYWx1ZXMnLCAnZ29vZy5hMTF5LmFyaWEuSW52YWxpZFZhbHVlcycsICdnb29nLmExMXkuYXJpYS5MaXZlUHJpb3JpdHknLCAnZ29vZy5hMTF5LmFyaWEuT3JpZW50YXRpb25WYWx1ZXMnLCAnZ29vZy5hMTF5LmFyaWEuUHJlc3NlZFZhbHVlcycsICdnb29nLmExMXkuYXJpYS5SZWxldmFudFZhbHVlcycsICdnb29nLmExMXkuYXJpYS5TZWxlY3RlZFZhbHVlcycsICdnb29nLmExMXkuYXJpYS5Tb3J0VmFsdWVzJywgJ2dvb2cuYTExeS5hcmlhLlN0YXRlJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnYTExeS9hcmlhL2RhdGF0YWJsZXMuanMnLCBbJ2dvb2cuYTExeS5hcmlhLmRhdGF0YWJsZXMnXSwgWydnb29nLmExMXkuYXJpYS5TdGF0ZScsICdnb29nLm9iamVjdCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnYTExeS9hcmlhL3JvbGVzLmpzJywgWydnb29nLmExMXkuYXJpYS5Sb2xlJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnYXJyYXkvYXJyYXkuanMnLCBbJ2dvb2cuYXJyYXknXSwgWydnb29nLmFzc2VydHMnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2FycmF5L2FycmF5X3Rlc3QuanMnLCBbJ2dvb2cuYXJyYXlUZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczcnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnYXNzZXJ0cy9hc3NlcnRzLmpzJywgWydnb29nLmFzc2VydHMnLCAnZ29vZy5hc3NlcnRzLkFzc2VydGlvbkVycm9yJ10sIFsnZ29vZy5kZWJ1Zy5FcnJvcicsICdnb29nLmRvbS5Ob2RlVHlwZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnYXNzZXJ0cy9hc3NlcnRzX3Rlc3QuanMnLCBbJ2dvb2cuYXNzZXJ0c1Rlc3QnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5hc3NlcnRzLkFzc2VydGlvbkVycm9yJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5yZWZsZWN0JywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdhc3luYy9hbmltYXRpb25kZWxheS5qcycsIFsnZ29vZy5hc3luYy5BbmltYXRpb25EZWxheSddLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29nLmV2ZW50cycsICdnb29nLmZ1bmN0aW9ucyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnYXN5bmMvYW5pbWF0aW9uZGVsYXlfdGVzdC5qcycsIFsnZ29vZy5hc3luYy5BbmltYXRpb25EZWxheVRlc3QnXSwgWydnb29nLlByb21pc2UnLCAnZ29vZy5UaW1lcicsICdnb29nLmFzeW5jLkFuaW1hdGlvbkRlbGF5JywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdhc3luYy9jb25kaXRpb25hbGRlbGF5LmpzJywgWydnb29nLmFzeW5jLkNvbmRpdGlvbmFsRGVsYXknXSwgWydnb29nLkRpc3Bvc2FibGUnLCAnZ29vZy5hc3luYy5EZWxheSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnYXN5bmMvY29uZGl0aW9uYWxkZWxheV90ZXN0LmpzJywgWydnb29nLmFzeW5jLkNvbmRpdGlvbmFsRGVsYXlUZXN0J10sIFsnZ29vZy5hc3luYy5Db25kaXRpb25hbERlbGF5JywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2FzeW5jL2RlYm91bmNlci5qcycsIFsnZ29vZy5hc3luYy5EZWJvdW5jZXInXSwgWydnb29nLkRpc3Bvc2FibGUnLCAnZ29vZy5UaW1lciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnYXN5bmMvZGVib3VuY2VyX3Rlc3QuanMnLCBbJ2dvb2cuYXN5bmMuRGVib3VuY2VyVGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3luYy5EZWJvdW5jZXInLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2FzeW5jL2RlbGF5LmpzJywgWydnb29nLkRlbGF5JywgJ2dvb2cuYXN5bmMuRGVsYXknXSwgWydnb29nLkRpc3Bvc2FibGUnLCAnZ29vZy5UaW1lciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnYXN5bmMvZGVsYXlfdGVzdC5qcycsIFsnZ29vZy5hc3luYy5EZWxheVRlc3QnXSwgWydnb29nLmFzeW5jLkRlbGF5JywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2FzeW5jL2ZyZWVsaXN0LmpzJywgWydnb29nLmFzeW5jLkZyZWVMaXN0J10sIFtdLCB7J2xhbmcnOiAnZXM2J30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2FzeW5jL2ZyZWVsaXN0X3Rlc3QuanMnLCBbJ2dvb2cuYXN5bmMuRnJlZUxpc3RUZXN0J10sIFsnZ29vZy5hc3luYy5GcmVlTGlzdCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnYXN5bmMvbmV4dHRpY2suanMnLCBbJ2dvb2cuYXN5bmMubmV4dFRpY2snLCAnZ29vZy5hc3luYy50aHJvd0V4Y2VwdGlvbiddLCBbJ2dvb2cuZGVidWcuZW50cnlQb2ludFJlZ2lzdHJ5JywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uc2FmZScsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCcsICdnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXInLCAnZ29vZy5sYWJzLnVzZXJBZ2VudC5lbmdpbmUnLCAnZ29vZy5zdHJpbmcuQ29uc3QnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2FzeW5jL25leHR0aWNrX3Rlc3QuanMnLCBbJ2dvb2cuYXN5bmMubmV4dFRpY2tUZXN0J10sIFsnZ29vZy5Qcm9taXNlJywgJ2dvb2cuYXN5bmMubmV4dFRpY2snLCAnZ29vZy5kZWJ1Zy5FcnJvckhhbmRsZXInLCAnZ29vZy5kZWJ1Zy5lbnRyeVBvaW50UmVnaXN0cnknLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXInLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnYXN5bmMvcnVuLmpzJywgWydnb29nLmFzeW5jLnJ1biddLCBbJ2dvb2cuYXN5bmMuV29ya1F1ZXVlJywgJ2dvb2cuYXN5bmMubmV4dFRpY2snLCAnZ29vZy5hc3luYy50aHJvd0V4Y2VwdGlvbiddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnYXN5bmMvcnVuX25leHRfdGlja190ZXN0LmpzJywgWydnb29nLmFzeW5jLnJ1bk5leHRUaWNrVGVzdCddLCBbJ2dvb2cuYXN5bmMucnVuJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdhc3luYy9ydW5fdGVzdC5qcycsIFsnZ29vZy5hc3luYy5ydW5UZXN0J10sIFsnZ29vZy5hc3luYy5ydW4nLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdhc3luYy90aHJvdHRsZS5qcycsIFsnZ29vZy5UaHJvdHRsZScsICdnb29nLmFzeW5jLlRocm90dGxlJ10sIFsnZ29vZy5EaXNwb3NhYmxlJywgJ2dvb2cuVGltZXInXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2FzeW5jL3Rocm90dGxlX3Rlc3QuanMnLCBbJ2dvb2cuYXN5bmMuVGhyb3R0bGVUZXN0J10sIFsnZ29vZy5hc3luYy5UaHJvdHRsZScsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdhc3luYy93b3JrcXVldWUuanMnLCBbJ2dvb2cuYXN5bmMuV29ya0l0ZW0nLCAnZ29vZy5hc3luYy5Xb3JrUXVldWUnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5hc3luYy5GcmVlTGlzdCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnYXN5bmMvd29ya3F1ZXVlX3Rlc3QuanMnLCBbJ2dvb2cuYXN5bmMuV29ya1F1ZXVlVGVzdCddLCBbJ2dvb2cuYXN5bmMuV29ya1F1ZXVlJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdiYXNlLmpzJywgWydnb29nJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnYmFzZV9tb2R1bGVfdGVzdC5qcycsIFsnZ29vZy5iYXNlTW9kdWxlVGVzdCddLCBbJ2dvb2cuVGltZXInLCAnZ29vZy50ZXN0X21vZHVsZScsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdiYXNlX3Rlc3QuanMnLCBbJ2dvb2cuYmFzZVRlc3QnXSwgWydnb29nLlByb21pc2UnLCAnZ29vZy5UaW1lcicsICdnb29nLlVyaScsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cudGVzdF9tb2R1bGUnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNid9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdjb2xvci9hbHBoYS5qcycsIFsnZ29vZy5jb2xvci5hbHBoYSddLCBbJ2dvb2cuY29sb3InXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NvbG9yL2FscGhhX3Rlc3QuanMnLCBbJ2dvb2cuY29sb3IuYWxwaGFUZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmNvbG9yLmFscGhhJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdjb2xvci9jb2xvci5qcycsIFsnZ29vZy5jb2xvcicsICdnb29nLmNvbG9yLkhzbCcsICdnb29nLmNvbG9yLkhzdicsICdnb29nLmNvbG9yLlJnYiddLCBbJ2dvb2cuY29sb3IubmFtZXMnLCAnZ29vZy5tYXRoJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdjb2xvci9jb2xvcl90ZXN0LmpzJywgWydnb29nLmNvbG9yVGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5jb2xvcicsICdnb29nLmNvbG9yLm5hbWVzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdjb2xvci9uYW1lcy5qcycsIFsnZ29vZy5jb2xvci5uYW1lcyddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L2Flcy5qcycsIFsnZ29vZy5jcnlwdC5BZXMnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5jcnlwdC5CbG9ja0NpcGhlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnY3J5cHQvYWVzX3Rlc3QuanMnLCBbJ2dvb2cuY3J5cHQuQWVzVGVzdCddLCBbJ2dvb2cuY3J5cHQnLCAnZ29vZy5jcnlwdC5BZXMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L2FyYzQuanMnLCBbJ2dvb2cuY3J5cHQuQXJjNCddLCBbJ2dvb2cuYXNzZXJ0cyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnY3J5cHQvYXJjNF90ZXN0LmpzJywgWydnb29nLmNyeXB0LkFyYzRUZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmNyeXB0LkFyYzQnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L2Jhc2U2NC5qcycsIFsnZ29vZy5jcnlwdC5iYXNlNjQnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5jcnlwdCcsICdnb29nLnN0cmluZycsICdnb29nLnVzZXJBZ2VudCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0J10sIHsnbGFuZyc6ICdlczUnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnY3J5cHQvYmFzZTY0X3Rlc3QuanMnLCBbJ2dvb2cuY3J5cHQuYmFzZTY0VGVzdCddLCBbJ2dvb2cuY3J5cHQnLCAnZ29vZy5jcnlwdC5iYXNlNjQnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L2Jhc2VuLmpzJywgWydnb29nLmNyeXB0LmJhc2VOJ10sIFtdLCB7J2xhbmcnOiAnZXM2J30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L2Jhc2VuX3Rlc3QuanMnLCBbJ2dvb2cuY3J5cHQuYmFzZU5UZXN0J10sIFsnZ29vZy5jcnlwdC5iYXNlTicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnY3J5cHQvYmxvYmhhc2hlci5qcycsIFsnZ29vZy5jcnlwdC5CbG9iSGFzaGVyJywgJ2dvb2cuY3J5cHQuQmxvYkhhc2hlci5FdmVudFR5cGUnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5mcycsICdnb29nLmxvZyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnY3J5cHQvYmxvYmhhc2hlcl90ZXN0LmpzJywgWydnb29nLmNyeXB0LkJsb2JIYXNoZXJUZXN0J10sIFsnZ29vZy5jcnlwdCcsICdnb29nLmNyeXB0LkJsb2JIYXNoZXInLCAnZ29vZy5jcnlwdC5NZDUnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L2Jsb2NrY2lwaGVyLmpzJywgWydnb29nLmNyeXB0LkJsb2NrQ2lwaGVyJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnY3J5cHQvYnl0ZXN0cmluZ19wZXJmLmpzJywgWydnb29nLmNyeXB0LmJ5dGVBcnJheVRvU3RyaW5nUGVyZiddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29vZy50ZXN0aW5nLlBlcmZvcm1hbmNlVGFibGUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L2NiYy5qcycsIFsnZ29vZy5jcnlwdC5DYmMnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmNyeXB0JywgJ2dvb2cuY3J5cHQuQmxvY2tDaXBoZXInXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L2NiY190ZXN0LmpzJywgWydnb29nLmNyeXB0LkNiY1Rlc3QnXSwgWydnb29nLmNyeXB0JywgJ2dvb2cuY3J5cHQuQWVzJywgJ2dvb2cuY3J5cHQuQ2JjJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdjcnlwdC9jcnlwdC5qcycsIFsnZ29vZy5jcnlwdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdjcnlwdC9jcnlwdF90ZXN0LmpzJywgWydnb29nLmNyeXB0VGVzdCddLCBbJ2dvb2cuY3J5cHQnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L2N0ci5qcycsIFsnZ29vZy5jcnlwdC5DdHInXSwgWydnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmNyeXB0J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdjcnlwdC9jdHJfdGVzdC5qcycsIFsnZ29vZy5jcnlwdC5DdHJUZXN0J10sIFsnZ29vZy5jcnlwdCcsICdnb29nLmNyeXB0LkFlcycsICdnb29nLmNyeXB0LkN0cicsICdnb29nLnRlc3RpbmcuanN1bml0J10sIHsnbGFuZyc6ICdlczYnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnY3J5cHQvaGFzaC5qcycsIFsnZ29vZy5jcnlwdC5IYXNoJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnY3J5cHQvaGFzaDMyLmpzJywgWydnb29nLmNyeXB0Lmhhc2gzMiddLCBbJ2dvb2cuY3J5cHQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L2hhc2gzMl90ZXN0LmpzJywgWydnb29nLmNyeXB0Lmhhc2gzMlRlc3QnXSwgWydnb29nLmNyeXB0Lmhhc2gzMicsICdnb29nLnRlc3RpbmcuVGVzdENhc2UnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L2hhc2h0ZXN0ZXIuanMnLCBbJ2dvb2cuY3J5cHQuaGFzaFRlc3RlciddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5jcnlwdCcsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cucmVmbGVjdCcsICdnb29nLnRlc3RpbmcuUGVyZm9ybWFuY2VUYWJsZScsICdnb29nLnRlc3RpbmcuUHNldWRvUmFuZG9tJywgJ2dvb2cudGVzdGluZy5hc3NlcnRzJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdjcnlwdC9obWFjLmpzJywgWydnb29nLmNyeXB0LkhtYWMnXSwgWydnb29nLmNyeXB0Lkhhc2gnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L2htYWNfdGVzdC5qcycsIFsnZ29vZy5jcnlwdC5IbWFjVGVzdCddLCBbJ2dvb2cuY3J5cHQuSG1hYycsICdnb29nLmNyeXB0LlNoYTEnLCAnZ29vZy5jcnlwdC5oYXNoVGVzdGVyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdjcnlwdC9tZDUuanMnLCBbJ2dvb2cuY3J5cHQuTWQ1J10sIFsnZ29vZy5jcnlwdC5IYXNoJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdjcnlwdC9tZDVfdGVzdC5qcycsIFsnZ29vZy5jcnlwdC5NZDVUZXN0J10sIFsnZ29vZy5jcnlwdCcsICdnb29nLmNyeXB0Lk1kNScsICdnb29nLmNyeXB0Lmhhc2hUZXN0ZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L3Bia2RmMi5qcycsIFsnZ29vZy5jcnlwdC5wYmtkZjInXSwgWydnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmNyeXB0JywgJ2dvb2cuY3J5cHQuSG1hYycsICdnb29nLmNyeXB0LlNoYTEnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L3Bia2RmMl90ZXN0LmpzJywgWydnb29nLmNyeXB0LnBia2RmMlRlc3QnXSwgWydnb29nLmNyeXB0JywgJ2dvb2cuY3J5cHQucGJrZGYyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdjcnlwdC9zaGExLmpzJywgWydnb29nLmNyeXB0LlNoYTEnXSwgWydnb29nLmNyeXB0Lkhhc2gnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L3NoYTFfdGVzdC5qcycsIFsnZ29vZy5jcnlwdC5TaGExVGVzdCddLCBbJ2dvb2cuY3J5cHQnLCAnZ29vZy5jcnlwdC5TaGExJywgJ2dvb2cuY3J5cHQuaGFzaFRlc3RlcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnY3J5cHQvc2hhMi5qcycsIFsnZ29vZy5jcnlwdC5TaGEyJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5jcnlwdC5IYXNoJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdjcnlwdC9zaGEyMjQuanMnLCBbJ2dvb2cuY3J5cHQuU2hhMjI0J10sIFsnZ29vZy5jcnlwdC5TaGEyJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdjcnlwdC9zaGEyMjRfdGVzdC5qcycsIFsnZ29vZy5jcnlwdC5TaGEyMjRUZXN0J10sIFsnZ29vZy5jcnlwdCcsICdnb29nLmNyeXB0LlNoYTIyNCcsICdnb29nLmNyeXB0Lmhhc2hUZXN0ZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L3NoYTI1Ni5qcycsIFsnZ29vZy5jcnlwdC5TaGEyNTYnXSwgWydnb29nLmNyeXB0LlNoYTInXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L3NoYTI1Nl90ZXN0LmpzJywgWydnb29nLmNyeXB0LlNoYTI1NlRlc3QnXSwgWydnb29nLmNyeXB0JywgJ2dvb2cuY3J5cHQuU2hhMjU2JywgJ2dvb2cuY3J5cHQuaGFzaFRlc3RlcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnY3J5cHQvc2hhMl82NGJpdC5qcycsIFsnZ29vZy5jcnlwdC5TaGEyXzY0Yml0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5jcnlwdC5IYXNoJywgJ2dvb2cubWF0aC5Mb25nJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdjcnlwdC9zaGEyXzY0Yml0X3Rlc3QuanMnLCBbJ2dvb2cuY3J5cHQuU2hhMl82NGJpdF90ZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmNyeXB0JywgJ2dvb2cuY3J5cHQuU2hhMzg0JywgJ2dvb2cuY3J5cHQuU2hhNTEyJywgJ2dvb2cuY3J5cHQuU2hhNTEyXzI1NicsICdnb29nLmNyeXB0Lmhhc2hUZXN0ZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L3NoYTM4NC5qcycsIFsnZ29vZy5jcnlwdC5TaGEzODQnXSwgWydnb29nLmNyeXB0LlNoYTJfNjRiaXQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L3NoYTUxMi5qcycsIFsnZ29vZy5jcnlwdC5TaGE1MTInXSwgWydnb29nLmNyeXB0LlNoYTJfNjRiaXQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L3NoYTUxMl8yNTYuanMnLCBbJ2dvb2cuY3J5cHQuU2hhNTEyXzI1NiddLCBbJ2dvb2cuY3J5cHQuU2hhMl82NGJpdCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnY3Nzb20vY3Nzb20uanMnLCBbJ2dvb2cuY3Nzb20nLCAnZ29vZy5jc3NvbS5Dc3NSdWxlVHlwZSddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnY3Nzb20vY3Nzb21fdGVzdC5qcycsIFsnZ29vZy5jc3NvbVRlc3QnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuY3Nzb20nLCAnZ29vZy5jc3NvbS5Dc3NSdWxlVHlwZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnY3Nzb20vaWZyYW1lL3N0eWxlLmpzJywgWydnb29nLmNzc29tLmlmcmFtZS5zdHlsZSddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmNzc29tJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2Nzc29tL2lmcmFtZS9zdHlsZV90ZXN0LmpzJywgWydnb29nLmNzc29tLmlmcmFtZS5zdHlsZVRlc3QnXSwgWydnb29nLmNzc29tJywgJ2dvb2cuY3Nzb20uaWZyYW1lLnN0eWxlJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLkRvbUhlbHBlcicsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkYXRhc291cmNlL2RhdGFtYW5hZ2VyLmpzJywgWydnb29nLmRzLkRhdGFNYW5hZ2VyJ10sIFsnZ29vZy5kcy5CYXNpY05vZGVMaXN0JywgJ2dvb2cuZHMuRGF0YU5vZGUnLCAnZ29vZy5kcy5FeHByJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3RydWN0cycsICdnb29nLnN0cnVjdHMuTWFwJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkYXRhc291cmNlL2RhdGFzb3VyY2UuanMnLCBbJ2dvb2cuZHMuQmFzZURhdGFOb2RlJywgJ2dvb2cuZHMuQmFzaWNOb2RlTGlzdCcsICdnb29nLmRzLkRhdGFOb2RlJywgJ2dvb2cuZHMuRGF0YU5vZGVMaXN0JywgJ2dvb2cuZHMuRW1wdHlOb2RlTGlzdCcsICdnb29nLmRzLkxvYWRTdGF0ZScsICdnb29nLmRzLlNvcnRlZE5vZGVMaXN0JywgJ2dvb2cuZHMuVXRpbCcsICdnb29nLmRzLmxvZ2dlciddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5sb2cnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RhdGFzb3VyY2UvZGF0YXNvdXJjZV90ZXN0LmpzJywgWydnb29nLmRzLkpzRGF0YVNvdXJjZVRlc3QnXSwgWydnb29nLmRvbS54bWwnLCAnZ29vZy5kcy5EYXRhTWFuYWdlcicsICdnb29nLmRzLkpzRGF0YVNvdXJjZScsICdnb29nLmRzLlNvcnRlZE5vZGVMaXN0JywgJ2dvb2cuZHMuWG1sRGF0YVNvdXJjZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGF0YXNvdXJjZS9leHByLmpzJywgWydnb29nLmRzLkV4cHInXSwgWydnb29nLmRzLkJhc2ljTm9kZUxpc3QnLCAnZ29vZy5kcy5FbXB0eU5vZGVMaXN0JywgJ2dvb2cuc3RyaW5nJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkYXRhc291cmNlL2V4cHJfdGVzdC5qcycsIFsnZ29vZy5kcy5FeHByVGVzdCddLCBbJ2dvb2cuZHMuRGF0YU1hbmFnZXInLCAnZ29vZy5kcy5FeHByJywgJ2dvb2cuZHMuSnNEYXRhU291cmNlJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkYXRhc291cmNlL2Zhc3RkYXRhbm9kZS5qcycsIFsnZ29vZy5kcy5BYnN0cmFjdEZhc3REYXRhTm9kZScsICdnb29nLmRzLkZhc3REYXRhTm9kZScsICdnb29nLmRzLkZhc3RMaXN0Tm9kZScsICdnb29nLmRzLlByaW1pdGl2ZUZhc3REYXRhTm9kZSddLCBbJ2dvb2cuZHMuRGF0YU1hbmFnZXInLCAnZ29vZy5kcy5EYXRhTm9kZUxpc3QnLCAnZ29vZy5kcy5FbXB0eU5vZGVMaXN0JywgJ2dvb2cuc3RyaW5nJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkYXRhc291cmNlL2Zhc3RkYXRhbm9kZV90ZXN0LmpzJywgWydnb29nLmRzLkZhc3REYXRhTm9kZVRlc3QnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZHMuRGF0YU1hbmFnZXInLCAnZ29vZy5kcy5FeHByJywgJ2dvb2cuZHMuRmFzdERhdGFOb2RlJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkYXRhc291cmNlL2pzZGF0YXNvdXJjZS5qcycsIFsnZ29vZy5kcy5Kc0RhdGFTb3VyY2UnLCAnZ29vZy5kcy5Kc1Byb3BlcnR5RGF0YVNvdXJjZSddLCBbJ2dvb2cuZHMuQmFzZURhdGFOb2RlJywgJ2dvb2cuZHMuQmFzaWNOb2RlTGlzdCcsICdnb29nLmRzLkRhdGFNYW5hZ2VyJywgJ2dvb2cuZHMuRGF0YU5vZGUnLCAnZ29vZy5kcy5FbXB0eU5vZGVMaXN0JywgJ2dvb2cuZHMuTG9hZFN0YXRlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkYXRhc291cmNlL2pzb25kYXRhc291cmNlLmpzJywgWydnb29nLmRzLkpzb25EYXRhU291cmNlJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5zYWZlJywgJ2dvb2cuZHMuRGF0YU1hbmFnZXInLCAnZ29vZy5kcy5Kc0RhdGFTb3VyY2UnLCAnZ29vZy5kcy5Mb2FkU3RhdGUnLCAnZ29vZy5kcy5sb2dnZXInLCAnZ29vZy5sb2cnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RhdGFzb3VyY2UvanN4bWxodHRwZGF0YXNvdXJjZS5qcycsIFsnZ29vZy5kcy5Kc1htbEh0dHBEYXRhU291cmNlJ10sIFsnZ29vZy5VcmknLCAnZ29vZy5kcy5EYXRhTWFuYWdlcicsICdnb29nLmRzLkZhc3REYXRhTm9kZScsICdnb29nLmRzLkxvYWRTdGF0ZScsICdnb29nLmRzLmxvZ2dlcicsICdnb29nLmV2ZW50cycsICdnb29nLmxvZycsICdnb29nLm5ldC5FdmVudFR5cGUnLCAnZ29vZy5uZXQuWGhySW8nXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RhdGFzb3VyY2UvanN4bWxodHRwZGF0YXNvdXJjZV90ZXN0LmpzJywgWydnb29nLmRzLkpzWG1sSHR0cERhdGFTb3VyY2VUZXN0J10sIFsnZ29vZy5kcy5Kc1htbEh0dHBEYXRhU291cmNlJywgJ2dvb2cudGVzdGluZy5UZXN0UXVldWUnLCAnZ29vZy50ZXN0aW5nLm5ldC5YaHJJbycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGF0YXNvdXJjZS94bWxkYXRhc291cmNlLmpzJywgWydnb29nLmRzLlhtbERhdGFTb3VyY2UnLCAnZ29vZy5kcy5YbWxIdHRwRGF0YVNvdXJjZSddLCBbJ2dvb2cuVXJpJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLnhtbCcsICdnb29nLmRzLkJhc2ljTm9kZUxpc3QnLCAnZ29vZy5kcy5EYXRhTWFuYWdlcicsICdnb29nLmRzLkRhdGFOb2RlJywgJ2dvb2cuZHMuTG9hZFN0YXRlJywgJ2dvb2cuZHMubG9nZ2VyJywgJ2dvb2cubG9nJywgJ2dvb2cubmV0LlhocklvJywgJ2dvb2cuc3RyaW5nJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkYXRlL2RhdGUuanMnLCBbJ2dvb2cuZGF0ZScsICdnb29nLmRhdGUuRGF0ZScsICdnb29nLmRhdGUuRGF0ZVRpbWUnLCAnZ29vZy5kYXRlLkludGVydmFsJywgJ2dvb2cuZGF0ZS5tb250aCcsICdnb29nLmRhdGUud2Vla0RheSddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRhdGUuRGF0ZUxpa2UnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9scycsICdnb29nLnN0cmluZyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGF0ZS9kYXRlX3Rlc3QuanMnLCBbJ2dvb2cuZGF0ZVRlc3QnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZGF0ZScsICdnb29nLmRhdGUuRGF0ZScsICdnb29nLmRhdGUuRGF0ZVRpbWUnLCAnZ29vZy5kYXRlLkludGVydmFsJywgJ2dvb2cuZGF0ZS5tb250aCcsICdnb29nLmRhdGUud2Vla0RheScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzJywgJ2dvb2cudGVzdGluZy5FeHBlY3RlZEZhaWx1cmVzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnLCAnZ29vZy51c2VyQWdlbnQucGxhdGZvcm0nLCAnZ29vZy51c2VyQWdlbnQucHJvZHVjdCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0LmlzVmVyc2lvbiddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RhdGUvZGF0ZWxpa2UuanMnLCBbJ2dvb2cuZGF0ZS5EYXRlTGlrZSddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RhdGUvZGF0ZXJhbmdlLmpzJywgWydnb29nLmRhdGUuRGF0ZVJhbmdlJywgJ2dvb2cuZGF0ZS5EYXRlUmFuZ2UuSXRlcmF0b3InLCAnZ29vZy5kYXRlLkRhdGVSYW5nZS5TdGFuZGFyZERhdGVSYW5nZUtleXMnXSwgWydnb29nLmRhdGUuRGF0ZScsICdnb29nLmRhdGUuSW50ZXJ2YWwnLCAnZ29vZy5pdGVyLkl0ZXJhdG9yJywgJ2dvb2cuaXRlci5TdG9wSXRlcmF0aW9uJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkYXRlL2RhdGVyYW5nZV90ZXN0LmpzJywgWydnb29nLmRhdGUuRGF0ZVJhbmdlVGVzdCddLCBbJ2dvb2cuZGF0ZS5EYXRlJywgJ2dvb2cuZGF0ZS5EYXRlUmFuZ2UnLCAnZ29vZy5kYXRlLkludGVydmFsJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RhdGUvZHVyYXRpb24uanMnLCBbJ2dvb2cuZGF0ZS5kdXJhdGlvbiddLCBbJ2dvb2cuaTE4bi5EYXRlVGltZUZvcm1hdCcsICdnb29nLmkxOG4uTWVzc2FnZUZvcm1hdCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGF0ZS9kdXJhdGlvbl90ZXN0LmpzJywgWydnb29nLmRhdGUuZHVyYXRpb25UZXN0J10sIFsnZ29vZy5kYXRlLmR1cmF0aW9uJywgJ2dvb2cuaTE4bi5EYXRlVGltZUZvcm1hdCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYm4nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZhJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkYXRlL3JlbGF0aXZlLmpzJywgWydnb29nLmRhdGUucmVsYXRpdmUnLCAnZ29vZy5kYXRlLnJlbGF0aXZlLlRpbWVEZWx0YUZvcm1hdHRlcicsICdnb29nLmRhdGUucmVsYXRpdmUuVW5pdCddLCBbJ2dvb2cuaTE4bi5EYXRlVGltZUZvcm1hdCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJucycsICdnb29nLmkxOG4uUmVsYXRpdmVEYXRlVGltZUZvcm1hdCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGF0ZS9yZWxhdGl2ZV90ZXN0LmpzJywgWydnb29nLmRhdGUucmVsYXRpdmVUZXN0J10sIFsnZ29vZy5kYXRlLnJlbGF0aXZlQ29tbW9uVGVzdHMnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkYXRlL3JlbGF0aXZlY29tbW9udGVzdHMuanMnLCBbJ2dvb2cuZGF0ZS5yZWxhdGl2ZUNvbW1vblRlc3RzJ10sIFsnZ29vZy5kYXRlLkRhdGVUaW1lJywgJ2dvb2cuZGF0ZS5yZWxhdGl2ZScsICdnb29nLmkxOG4uRGF0ZVRpbWVGb3JtYXQnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYXInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYm4nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZXMnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZmEnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbm8nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19hcicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2JuJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZXMnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mYScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZyJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbm8nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYm4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZmEnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbm8nLCAnZ29vZy5pMThuLnJlbGF0aXZlRGF0ZVRpbWVTeW1ib2xzJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgeydsYW5nJzogJ2VzNid9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkYXRlL3V0Y2RhdGV0aW1lLmpzJywgWydnb29nLmRhdGUuVXRjRGF0ZVRpbWUnXSwgWydnb29nLmRhdGUnLCAnZ29vZy5kYXRlLkRhdGUnLCAnZ29vZy5kYXRlLkRhdGVUaW1lJywgJ2dvb2cuZGF0ZS5JbnRlcnZhbCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGF0ZS91dGNkYXRldGltZV90ZXN0LmpzJywgWydnb29nLmRhdGUuVXRjRGF0ZVRpbWVUZXN0J10sIFsnZ29vZy5kYXRlLkludGVydmFsJywgJ2dvb2cuZGF0ZS5VdGNEYXRlVGltZScsICdnb29nLmRhdGUubW9udGgnLCAnZ29vZy5kYXRlLndlZWtEYXknLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RiL2N1cnNvci5qcycsIFsnZ29vZy5kYi5DdXJzb3InXSwgWydnb29nLmFzeW5jLkRlZmVycmVkJywgJ2dvb2cuZGIuRXJyb3InLCAnZ29vZy5kYi5LZXlSYW5nZScsICdnb29nLmRlYnVnJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkYi9kYi5qcycsIFsnZ29vZy5kYicsICdnb29nLmRiLkJsb2NrZWRDYWxsYmFjaycsICdnb29nLmRiLlVwZ3JhZGVOZWVkZWRDYWxsYmFjayddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmFzeW5jLkRlZmVycmVkJywgJ2dvb2cuZGIuRXJyb3InLCAnZ29vZy5kYi5JbmRleGVkRGInLCAnZ29vZy5kYi5UcmFuc2FjdGlvbiddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGIvZGJfdGVzdC5qcycsIFsnZ29vZy5kYlRlc3QnXSwgWydnb29nLlByb21pc2UnLCAnZ29vZy5hcnJheScsICdnb29nLmRiJywgJ2dvb2cuZGIuQ3Vyc29yJywgJ2dvb2cuZGIuRXJyb3InLCAnZ29vZy5kYi5JbmRleGVkRGInLCAnZ29vZy5kYi5LZXlSYW5nZScsICdnb29nLmRiLlRyYW5zYWN0aW9uJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5UZXN0Q2FzZScsICdnb29nLnRlc3RpbmcuYXNzZXJ0cycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkYi9lcnJvci5qcycsIFsnZ29vZy5kYi5Eb21FcnJvckxpa2UnLCAnZ29vZy5kYi5FcnJvcicsICdnb29nLmRiLkVycm9yLkVycm9yQ29kZScsICdnb29nLmRiLkVycm9yLkVycm9yTmFtZScsICdnb29nLmRiLkVycm9yLlZlcnNpb25DaGFuZ2VCbG9ja2VkRXJyb3InXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5kZWJ1Zy5FcnJvciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGIvaW5kZXguanMnLCBbJ2dvb2cuZGIuSW5kZXgnXSwgWydnb29nLmFzeW5jLkRlZmVycmVkJywgJ2dvb2cuZGIuQ3Vyc29yJywgJ2dvb2cuZGIuRXJyb3InLCAnZ29vZy5kYi5LZXlSYW5nZScsICdnb29nLmRlYnVnJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkYi9pbmRleGVkZGIuanMnLCBbJ2dvb2cuZGIuSW5kZXhlZERiJ10sIFsnZ29vZy5kYi5FcnJvcicsICdnb29nLmRiLk9iamVjdFN0b3JlJywgJ2dvb2cuZGIuVHJhbnNhY3Rpb24nLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0J10sIHsnbGFuZyc6ICdlczYnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGIva2V5cmFuZ2UuanMnLCBbJ2dvb2cuZGIuS2V5UmFuZ2UnXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkYi9vYmplY3RzdG9yZS5qcycsIFsnZ29vZy5kYi5PYmplY3RTdG9yZSddLCBbJ2dvb2cuYXN5bmMuRGVmZXJyZWQnLCAnZ29vZy5kYi5DdXJzb3InLCAnZ29vZy5kYi5FcnJvcicsICdnb29nLmRiLkluZGV4JywgJ2dvb2cuZGIuS2V5UmFuZ2UnLCAnZ29vZy5kZWJ1ZyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGIvdHJhbnNhY3Rpb24uanMnLCBbJ2dvb2cuZGIuVHJhbnNhY3Rpb24nLCAnZ29vZy5kYi5UcmFuc2FjdGlvbi5UcmFuc2FjdGlvbk1vZGUnXSwgWydnb29nLmFzeW5jLkRlZmVycmVkJywgJ2dvb2cuZGIuRXJyb3InLCAnZ29vZy5kYi5PYmplY3RTdG9yZScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RlYnVnL2NvbnNvbGUuanMnLCBbJ2dvb2cuZGVidWcuQ29uc29sZSddLCBbJ2dvb2cuZGVidWcuTG9nTWFuYWdlcicsICdnb29nLmRlYnVnLkxvZ2dlcicsICdnb29nLmRlYnVnLlRleHRGb3JtYXR0ZXInXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RlYnVnL2NvbnNvbGVfdGVzdC5qcycsIFsnZ29vZy5kZWJ1Zy5Db25zb2xlVGVzdCddLCBbJ2dvb2cuZGVidWcuQ29uc29sZScsICdnb29nLmRlYnVnLkxvZ1JlY29yZCcsICdnb29nLmRlYnVnLkxvZ2dlcicsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RlYnVnL2RlYnVnLmpzJywgWydnb29nLmRlYnVnJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmRlYnVnLmVycm9yY29udGV4dCcsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGVidWcvZGVidWdfdGVzdC5qcycsIFsnZ29vZy5kZWJ1Z1Rlc3QnXSwgWydnb29nLmRlYnVnJywgJ2dvb2cuZGVidWcuZXJyb3Jjb250ZXh0JywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy9kZWJ1Z3dpbmRvdy5qcycsIFsnZ29vZy5kZWJ1Zy5EZWJ1Z1dpbmRvdyddLCBbJ2dvb2cuZGVidWcuSHRtbEZvcm1hdHRlcicsICdnb29nLmRlYnVnLkxvZ01hbmFnZXInLCAnZ29vZy5kZWJ1Zy5Mb2dnZXInLCAnZ29vZy5kb20uc2FmZScsICdnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0JywgJ2dvb2cuc3RyaW5nLkNvbnN0JywgJ2dvb2cuc3RydWN0cy5DaXJjdWxhckJ1ZmZlcicsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGVidWcvZGVidWd3aW5kb3dfdGVzdC5qcycsIFsnZ29vZy5kZWJ1Zy5EZWJ1Z1dpbmRvd1Rlc3QnXSwgWydnb29nLmRlYnVnLkRlYnVnV2luZG93JywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy9kZXZjc3MvZGV2Y3NzLmpzJywgWydnb29nLmRlYnVnLkRldkNzcycsICdnb29nLmRlYnVnLkRldkNzcy5Vc2VyQWdlbnQnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5jc3NvbScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy9kZXZjc3MvZGV2Y3NzX3Rlc3QuanMnLCBbJ2dvb2cuZGVidWcuRGV2Q3NzVGVzdCddLCBbJ2dvb2cuZGVidWcuRGV2Q3NzJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RlYnVnL2RldmNzcy9kZXZjc3NydW5uZXIuanMnLCBbJ2dvb2cuZGVidWcuZGV2Q3NzUnVubmVyJ10sIFsnZ29vZy5kZWJ1Zy5EZXZDc3MnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RlYnVnL2RpdmNvbnNvbGUuanMnLCBbJ2dvb2cuZGVidWcuRGl2Q29uc29sZSddLCBbJ2dvb2cuZGVidWcuSHRtbEZvcm1hdHRlcicsICdnb29nLmRlYnVnLkxvZ01hbmFnZXInLCAnZ29vZy5kb20uRG9tSGVscGVyJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uc2FmZScsICdnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0JywgJ2dvb2cuc3RyaW5nLkNvbnN0JywgJ2dvb2cuc3R5bGUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RlYnVnL2VuaGFuY2VlcnJvcl90ZXN0LmpzJywgWydnb29nLmRlYnVnRW5oYW5jZUVycm9yVGVzdCddLCBbJ2dvb2cuZGVidWcnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RlYnVnL2VudHJ5cG9pbnRyZWdpc3RyeS5qcycsIFsnZ29vZy5kZWJ1Zy5FbnRyeVBvaW50TW9uaXRvcicsICdnb29nLmRlYnVnLmVudHJ5UG9pbnRSZWdpc3RyeSddLCBbJ2dvb2cuYXNzZXJ0cyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGVidWcvZW50cnlwb2ludHJlZ2lzdHJ5X3Rlc3QuanMnLCBbJ2dvb2cuZGVidWcuZW50cnlQb2ludFJlZ2lzdHJ5VGVzdCddLCBbJ2dvb2cuZGVidWcuRXJyb3JIYW5kbGVyJywgJ2dvb2cuZGVidWcuZW50cnlQb2ludFJlZ2lzdHJ5JywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy9lcnJvci5qcycsIFsnZ29vZy5kZWJ1Zy5FcnJvciddLCBbXSwgeydsYW5nJzogJ2VzNid9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy9lcnJvcl90ZXN0LmpzJywgWydnb29nLmRlYnVnLkVycm9yVGVzdCddLCBbJ2dvb2cuZGVidWcuRXJyb3InLCAnZ29vZy50ZXN0aW5nLkV4cGVjdGVkRmFpbHVyZXMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGVidWcvZXJyb3Jjb250ZXh0LmpzJywgWydnb29nLmRlYnVnLmVycm9yY29udGV4dCddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RlYnVnL2Vycm9yY29udGV4dF90ZXN0LmpzJywgWydnb29nLmRlYnVnLmVycm9yY29udGV4dFRlc3QnXSwgWydnb29nLmRlYnVnLmVycm9yY29udGV4dCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGVidWcvZXJyb3JoYW5kbGVyLmpzJywgWydnb29nLmRlYnVnLkVycm9ySGFuZGxlcicsICdnb29nLmRlYnVnLkVycm9ySGFuZGxlci5Qcm90ZWN0ZWRGdW5jdGlvbkVycm9yJ10sIFsnZ29vZy5EaXNwb3NhYmxlJywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRlYnVnJywgJ2dvb2cuZGVidWcuRW50cnlQb2ludE1vbml0b3InLCAnZ29vZy5kZWJ1Zy5FcnJvcicsICdnb29nLmRlYnVnLlRyYWNlJ10sIHsnbGFuZyc6ICdlczYnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGVidWcvZXJyb3JoYW5kbGVyX2FzeW5jX3Rlc3QuanMnLCBbJ2dvb2cuZGVidWcuRXJyb3JIYW5kbGVyQXN5bmNUZXN0J10sIFsnZ29vZy5Qcm9taXNlJywgJ2dvb2cuZGVidWcuRXJyb3JIYW5kbGVyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzOCcsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy9lcnJvcmhhbmRsZXJfdGVzdC5qcycsIFsnZ29vZy5kZWJ1Zy5FcnJvckhhbmRsZXJUZXN0J10sIFsnZ29vZy5kZWJ1Zy5FcnJvckhhbmRsZXInLCAnZ29vZy50ZXN0aW5nLk1vY2tDb250cm9sJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy9lcnJvcmhhbmRsZXJ3ZWFrZGVwLmpzJywgWydnb29nLmRlYnVnLmVycm9ySGFuZGxlcldlYWtEZXAnXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy9lcnJvcnJlcG9ydGVyLmpzJywgWydnb29nLmRlYnVnLkVycm9yUmVwb3J0ZXInLCAnZ29vZy5kZWJ1Zy5FcnJvclJlcG9ydGVyLkV4Y2VwdGlvbkV2ZW50J10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZGVidWcnLCAnZ29vZy5kZWJ1Zy5FcnJvcicsICdnb29nLmRlYnVnLkVycm9ySGFuZGxlcicsICdnb29nLmRlYnVnLmVudHJ5UG9pbnRSZWdpc3RyeScsICdnb29nLmRlYnVnLmVycm9yY29udGV4dCcsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmxvZycsICdnb29nLm5ldC5YaHJJbycsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmluZycsICdnb29nLnVyaS51dGlscycsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGVidWcvZXJyb3JyZXBvcnRlcl90ZXN0LmpzJywgWydnb29nLmRlYnVnLkVycm9yUmVwb3J0ZXJUZXN0J10sIFsnZ29vZy5kZWJ1Zy5FcnJvcicsICdnb29nLmRlYnVnLkVycm9yUmVwb3J0ZXInLCAnZ29vZy5kZWJ1Zy5lcnJvcmNvbnRleHQnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGVidWcvZmFuY3l3aW5kb3cuanMnLCBbJ2dvb2cuZGVidWcuRmFuY3lXaW5kb3cnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRlYnVnLkRlYnVnV2luZG93JywgJ2dvb2cuZGVidWcuTG9nTWFuYWdlcicsICdnb29nLmRlYnVnLkxvZ2dlcicsICdnb29nLmRvbS5Eb21IZWxwZXInLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5zYWZlJywgJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLmh0bWwuU2FmZVN0eWxlU2hlZXQnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RlYnVnL2Zvcm1hdHRlci5qcycsIFsnZ29vZy5kZWJ1Zy5Gb3JtYXR0ZXInLCAnZ29vZy5kZWJ1Zy5IdG1sRm9ybWF0dGVyJywgJ2dvb2cuZGVidWcuVGV4dEZvcm1hdHRlciddLCBbJ2dvb2cuZGVidWcnLCAnZ29vZy5kZWJ1Zy5Mb2dnZXInLCAnZ29vZy5kZWJ1Zy5SZWxhdGl2ZVRpbWVQcm92aWRlcicsICdnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5odG1sLlNhZmVVcmwnLCAnZ29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zJywgJ2dvb2cuc3RyaW5nLkNvbnN0J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy9mb3JtYXR0ZXJfdGVzdC5qcycsIFsnZ29vZy5kZWJ1Zy5Gb3JtYXR0ZXJUZXN0J10sIFsnZ29vZy5kZWJ1Zy5IdG1sRm9ybWF0dGVyJywgJ2dvb2cuZGVidWcuTG9nUmVjb3JkJywgJ2dvb2cuZGVidWcuTG9nZ2VyJywgJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGVidWcvZnBzZGlzcGxheS5qcycsIFsnZ29vZy5kZWJ1Zy5GcHNEaXNwbGF5J10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuYXN5bmMuQW5pbWF0aW9uRGVsYXknLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLnVpLkNvbXBvbmVudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGVidWcvZnBzZGlzcGxheV90ZXN0LmpzJywgWydnb29nLmRlYnVnLkZwc0Rpc3BsYXlUZXN0J10sIFsnZ29vZy5UaW1lcicsICdnb29nLmRlYnVnLkZwc0Rpc3BsYXknLCAnZ29vZy50ZXN0aW5nLlRlc3RDYXNlJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy9sb2didWZmZXIuanMnLCBbJ2dvb2cuZGVidWcuTG9nQnVmZmVyJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZGVidWcuTG9nUmVjb3JkJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy9sb2didWZmZXJfdGVzdC5qcycsIFsnZ29vZy5kZWJ1Zy5Mb2dCdWZmZXJUZXN0J10sIFsnZ29vZy5kZWJ1Zy5Mb2dCdWZmZXInLCAnZ29vZy5kZWJ1Zy5Mb2dnZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RlYnVnL2xvZ2dlci5qcycsIFsnZ29vZy5kZWJ1Zy5Mb2dNYW5hZ2VyJywgJ2dvb2cuZGVidWcuTG9nZ2FibGUnLCAnZ29vZy5kZWJ1Zy5Mb2dnZXInLCAnZ29vZy5kZWJ1Zy5Mb2dnZXIuTGV2ZWwnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRlYnVnJywgJ2dvb2cuZGVidWcuTG9nQnVmZmVyJywgJ2dvb2cuZGVidWcuTG9nUmVjb3JkJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy9sb2dnZXJfdGVzdC5qcycsIFsnZ29vZy5kZWJ1Zy5Mb2dnZXJUZXN0J10sIFsnZ29vZy5kZWJ1Zy5Mb2dNYW5hZ2VyJywgJ2dvb2cuZGVidWcuTG9nZ2VyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy9sb2dyZWNvcmQuanMnLCBbJ2dvb2cuZGVidWcuTG9nUmVjb3JkJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGVidWcvbG9ncmVjb3Jkc2VyaWFsaXplci5qcycsIFsnZ29vZy5kZWJ1Zy5sb2dSZWNvcmRTZXJpYWxpemVyJ10sIFsnZ29vZy5kZWJ1Zy5Mb2dSZWNvcmQnLCAnZ29vZy5kZWJ1Zy5Mb2dnZXInLCAnZ29vZy5qc29uJywgJ2dvb2cub2JqZWN0J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy9sb2dyZWNvcmRzZXJpYWxpemVyX3Rlc3QuanMnLCBbJ2dvb2cuZGVidWcubG9nUmVjb3JkU2VyaWFsaXplclRlc3QnXSwgWydnb29nLmRlYnVnLkxvZ1JlY29yZCcsICdnb29nLmRlYnVnLkxvZ2dlcicsICdnb29nLmRlYnVnLmxvZ1JlY29yZFNlcmlhbGl6ZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RlYnVnL3JlbGF0aXZldGltZXByb3ZpZGVyLmpzJywgWydnb29nLmRlYnVnLlJlbGF0aXZlVGltZVByb3ZpZGVyJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGVidWcvdHJhY2VyLmpzJywgWydnb29nLmRlYnVnLlN0b3BUcmFjZURldGFpbCcsICdnb29nLmRlYnVnLlRyYWNlJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5kZWJ1Zy5Mb2dnZXInLCAnZ29vZy5pdGVyJywgJ2dvb2cubG9nJywgJ2dvb2cuc3RydWN0cy5NYXAnLCAnZ29vZy5zdHJ1Y3RzLlNpbXBsZVBvb2wnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RlYnVnL3RyYWNlcl90ZXN0LmpzJywgWydnb29nLmRlYnVnLlRyYWNlVGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kZWJ1Zy5UcmFjZScsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RlZmluZWNsYXNzX3Rlc3QuanMnLCBbJ2dvb2cuZGVmaW5lQ2xhc3NUZXN0J10sIFsnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RlbGVnYXRlL2RlbGVnYXRlcmVnaXN0cnkuanMnLCBbJ2dvb2cuZGVsZWdhdGUuRGVsZWdhdGVSZWdpc3RyeSddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZGVidWcnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkZWxlZ2F0ZS9kZWxlZ2F0ZXJlZ2lzdHJ5X3Rlc3QuanMnLCBbJ2dvb2cuZGVsZWdhdGUuRGVsZWdhdGVSZWdpc3RyeVRlc3QnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZGVsZWdhdGUuRGVsZWdhdGVSZWdpc3RyeScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGVsZWdhdGUvZGVsZWdhdGVzLmpzJywgWydnb29nLmRlbGVnYXRlLmRlbGVnYXRlcyddLCBbXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkZWxlZ2F0ZS9kZWxlZ2F0ZXNfdGVzdC5qcycsIFsnZ29vZy5kZWxlZ2F0ZS5kZWxlZ2F0ZXNUZXN0J10sIFsnZ29vZy5kZWxlZ2F0ZS5kZWxlZ2F0ZXMnLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkaXNwb3NhYmxlL2Rpc3Bvc2FibGUuanMnLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29nLmRpc3Bvc2UnLCAnZ29vZy5kaXNwb3NlQWxsJ10sIFsnZ29vZy5kaXNwb3NhYmxlLklEaXNwb3NhYmxlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkaXNwb3NhYmxlL2Rpc3Bvc2FibGVfdGVzdC5qcycsIFsnZ29vZy5EaXNwb3NhYmxlVGVzdCddLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2Rpc3Bvc2FibGUvaWRpc3Bvc2FibGUuanMnLCBbJ2dvb2cuZGlzcG9zYWJsZS5JRGlzcG9zYWJsZSddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9hYnN0cmFjdG11bHRpcmFuZ2UuanMnLCBbJ2dvb2cuZG9tLkFic3RyYWN0TXVsdGlSYW5nZSddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uQWJzdHJhY3RSYW5nZScsICdnb29nLmRvbS5UZXh0UmFuZ2UnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9hYnN0cmFjdHJhbmdlLmpzJywgWydnb29nLmRvbS5BYnN0cmFjdFJhbmdlJywgJ2dvb2cuZG9tLlJhbmdlSXRlcmF0b3InLCAnZ29vZy5kb20uUmFuZ2VUeXBlJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20uU2F2ZWRDYXJldFJhbmdlJywgJ2dvb2cuZG9tLlRhZ0l0ZXJhdG9yJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vYWJzdHJhY3RyYW5nZV90ZXN0LmpzJywgWydnb29nLmRvbS5BYnN0cmFjdFJhbmdlVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLkFic3RyYWN0UmFuZ2UnLCAnZ29vZy5kb20uUmFuZ2UnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL2FuaW1hdGlvbmZyYW1lL2FuaW1hdGlvbmZyYW1lLmpzJywgWydnb29nLmRvbS5hbmltYXRpb25GcmFtZScsICdnb29nLmRvbS5hbmltYXRpb25GcmFtZS5TcGVjJywgJ2dvb2cuZG9tLmFuaW1hdGlvbkZyYW1lLlN0YXRlJ10sIFsnZ29vZy5kb20uYW5pbWF0aW9uRnJhbWUucG9seWZpbGwnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9hbmltYXRpb25mcmFtZS9hbmltYXRpb25mcmFtZV90ZXN0LmpzJywgWydnb29nLmRvbS5BbmltYXRpb25GcmFtZVRlc3QnXSwgWydnb29nLmRvbS5hbmltYXRpb25GcmFtZScsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vYW5pbWF0aW9uZnJhbWUvcG9seWZpbGwuanMnLCBbJ2dvb2cuZG9tLmFuaW1hdGlvbkZyYW1lLnBvbHlmaWxsJ10sIFtdLCB7J2xhbmcnOiAnZXM2J30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9hbm5vdGF0ZS5qcycsIFsnZ29vZy5kb20uYW5ub3RhdGUnLCAnZ29vZy5kb20uYW5ub3RhdGUuQW5ub3RhdGVGbiddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uc2FmZScsICdnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5vYmplY3QnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9hbm5vdGF0ZV90ZXN0LmpzJywgWydnb29nLmRvbS5hbm5vdGF0ZVRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmFubm90YXRlJywgJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL2Fzc2VydHMuanMnLCBbJ2dvb2cuZG9tLmFzc2VydHMnXSwgWydnb29nLmFzc2VydHMnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9hc3NlcnRzX3Rlc3QuanMnLCBbJ2dvb2cuZG9tLmFzc2VydHNUZXN0J10sIFsnZ29vZy5kb20uYXNzZXJ0cycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcuU3RyaWN0TW9jaycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL2F0dHIuanMnLCBbJ2dvb2cuZG9tLkF0dHInXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vYnJvd3NlcmZlYXR1cmUuanMnLCBbJ2dvb2cuZG9tLkJyb3dzZXJGZWF0dXJlJ10sIFsnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9icm93c2VyZmVhdHVyZV90ZXN0LmpzJywgWydnb29nLmRvbS5Ccm93c2VyRmVhdHVyZVRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5Ccm93c2VyRmVhdHVyZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL2Jyb3dzZXJyYW5nZS9hYnN0cmFjdHJhbmdlLmpzJywgWydnb29nLmRvbS5icm93c2VycmFuZ2UuQWJzdHJhY3RSYW5nZSddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlJhbmdlRW5kcG9pbnQnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5UZXh0UmFuZ2VJdGVyYXRvcicsICdnb29nLml0ZXInLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5zdHJpbmcuU3RyaW5nQnVmZmVyJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vYnJvd3NlcnJhbmdlL2Jyb3dzZXJyYW5nZS5qcycsIFsnZ29vZy5kb20uYnJvd3NlcnJhbmdlJywgJ2dvb2cuZG9tLmJyb3dzZXJyYW5nZS5FcnJvciddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLkJyb3dzZXJGZWF0dXJlJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLmJyb3dzZXJyYW5nZS5HZWNrb1JhbmdlJywgJ2dvb2cuZG9tLmJyb3dzZXJyYW5nZS5JZVJhbmdlJywgJ2dvb2cuZG9tLmJyb3dzZXJyYW5nZS5PcGVyYVJhbmdlJywgJ2dvb2cuZG9tLmJyb3dzZXJyYW5nZS5XM2NSYW5nZScsICdnb29nLmRvbS5icm93c2VycmFuZ2UuV2ViS2l0UmFuZ2UnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9icm93c2VycmFuZ2UvYnJvd3NlcnJhbmdlX3Rlc3QuanMnLCBbJ2dvb2cuZG9tLmJyb3dzZXJyYW5nZVRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5SYW5nZScsICdnb29nLmRvbS5SYW5nZUVuZHBvaW50JywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uYnJvd3NlcnJhbmdlJywgJ2dvb2cuaHRtbC50ZXN0aW5nJywgJ2dvb2cudGVzdGluZy5kb20nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9icm93c2VycmFuZ2UvZ2Vja29yYW5nZS5qcycsIFsnZ29vZy5kb20uYnJvd3NlcnJhbmdlLkdlY2tvUmFuZ2UnXSwgWydnb29nLmRvbS5icm93c2VycmFuZ2UuVzNjUmFuZ2UnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9icm93c2VycmFuZ2UvaWVyYW5nZS5qcycsIFsnZ29vZy5kb20uYnJvd3NlcnJhbmdlLkllUmFuZ2UnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlJhbmdlRW5kcG9pbnQnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5icm93c2VycmFuZ2UuQWJzdHJhY3RSYW5nZScsICdnb29nLmRvbS5zYWZlJywgJ2dvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucycsICdnb29nLmxvZycsICdnb29nLnN0cmluZyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL2Jyb3dzZXJyYW5nZS9vcGVyYXJhbmdlLmpzJywgWydnb29nLmRvbS5icm93c2VycmFuZ2UuT3BlcmFSYW5nZSddLCBbJ2dvb2cuZG9tLmJyb3dzZXJyYW5nZS5XM2NSYW5nZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL2Jyb3dzZXJyYW5nZS93M2NyYW5nZS5qcycsIFsnZ29vZy5kb20uYnJvd3NlcnJhbmdlLlczY1JhbmdlJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5SYW5nZUVuZHBvaW50JywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uYnJvd3NlcnJhbmdlLkFic3RyYWN0UmFuZ2UnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9icm93c2VycmFuZ2Uvd2Via2l0cmFuZ2UuanMnLCBbJ2dvb2cuZG9tLmJyb3dzZXJyYW5nZS5XZWJLaXRSYW5nZSddLCBbJ2dvb2cuZG9tLlJhbmdlRW5kcG9pbnQnLCAnZ29vZy5kb20uYnJvd3NlcnJhbmdlLlczY1JhbmdlJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vYnVmZmVyZWR2aWV3cG9ydHNpemVtb25pdG9yLmpzJywgWydnb29nLmRvbS5CdWZmZXJlZFZpZXdwb3J0U2l6ZU1vbml0b3InXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5hc3luYy5EZWxheScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9idWZmZXJlZHZpZXdwb3J0c2l6ZW1vbml0b3JfdGVzdC5qcycsIFsnZ29vZy5kb20uQnVmZmVyZWRWaWV3cG9ydFNpemVNb25pdG9yVGVzdCddLCBbJ2dvb2cuZG9tLkJ1ZmZlcmVkVmlld3BvcnRTaXplTW9uaXRvcicsICdnb29nLmRvbS5WaWV3cG9ydFNpemVNb25pdG9yJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLm1hdGguU2l6ZScsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLmV2ZW50cy5FdmVudCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL2NsYXNzZXMuanMnLCBbJ2dvb2cuZG9tLmNsYXNzZXMnXSwgWydnb29nLmFycmF5J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vY2xhc3Nlc190ZXN0LmpzJywgWydnb29nLmRvbS5jbGFzc2VzX3Rlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzZXMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9jbGFzc2xpc3QuanMnLCBbJ2dvb2cuZG9tLmNsYXNzbGlzdCddLCBbJ2dvb2cuYXJyYXknXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9jbGFzc2xpc3RfdGVzdC5qcycsIFsnZ29vZy5kb20uY2xhc3NsaXN0X3Rlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLnRlc3RpbmcuRXhwZWN0ZWRGYWlsdXJlcycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL2NvbnRyb2xyYW5nZS5qcycsIFsnZ29vZy5kb20uQ29udHJvbFJhbmdlJywgJ2dvb2cuZG9tLkNvbnRyb2xSYW5nZUl0ZXJhdG9yJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5BYnN0cmFjdE11bHRpUmFuZ2UnLCAnZ29vZy5kb20uQWJzdHJhY3RSYW5nZScsICdnb29nLmRvbS5SYW5nZUl0ZXJhdG9yJywgJ2dvb2cuZG9tLlJhbmdlVHlwZScsICdnb29nLmRvbS5TYXZlZFJhbmdlJywgJ2dvb2cuZG9tLlRhZ1dhbGtUeXBlJywgJ2dvb2cuZG9tLlRleHRSYW5nZScsICdnb29nLml0ZXIuU3RvcEl0ZXJhdGlvbicsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL2NvbnRyb2xyYW5nZV90ZXN0LmpzJywgWydnb29nLmRvbS5Db250cm9sUmFuZ2VUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uQ29udHJvbFJhbmdlJywgJ2dvb2cuZG9tLlJhbmdlVHlwZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLlRleHRSYW5nZScsICdnb29nLnRlc3RpbmcuZG9tJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vZGF0YXNldC5qcycsIFsnZ29vZy5kb20uZGF0YXNldCddLCBbJ2dvb2cubGFicy51c2VyQWdlbnQuYnJvd3NlcicsICdnb29nLnN0cmluZycsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vZGF0YXNldF90ZXN0LmpzJywgWydnb29nLmRvbS5kYXRhc2V0VGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLmRhdGFzZXQnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9kb20uanMnLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLkFwcGVuZGFibGUnLCAnZ29vZy5kb20uRG9tSGVscGVyJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5kb20uQnJvd3NlckZlYXR1cmUnLCAnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5zYWZlJywgJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLmh0bWwudW5jaGVja2VkY29udmVyc2lvbnMnLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUnLCAnZ29vZy5tYXRoLlNpemUnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5zdHJpbmcuVW5pY29kZScsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL2RvbV9jb21waWxlX3Rlc3QuanMnLCBbJ2dvb2cuZG9tLkRvbUNvbXBpbGVUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL2RvbV90ZXN0LmpzJywgWydnb29nLmRvbS5kb21fdGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLkJyb3dzZXJGZWF0dXJlJywgJ2dvb2cuZG9tLkRvbUhlbHBlcicsICdnb29nLmRvbS5JbnB1dFR5cGUnLCAnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLmh0bWwuU2FmZVVybCcsICdnb29nLmh0bWwudGVzdGluZycsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmluZy5Db25zdCcsICdnb29nLnN0cmluZy5Vbmljb2RlJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5hc3NlcnRzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnLCAnZ29vZy51c2VyQWdlbnQucHJvZHVjdC5pc1ZlcnNpb24nXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vZm9udHNpemVtb25pdG9yLmpzJywgWydnb29nLmRvbS5Gb250U2l6ZU1vbml0b3InLCAnZ29vZy5kb20uRm9udFNpemVNb25pdG9yLkV2ZW50VHlwZSddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vZm9udHNpemVtb25pdG9yX3Rlc3QuanMnLCBbJ2dvb2cuZG9tLkZvbnRTaXplTW9uaXRvclRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5Gb250U2l6ZU1vbml0b3InLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vZm9ybXMuanMnLCBbJ2dvb2cuZG9tLmZvcm1zJ10sIFsnZ29vZy5kb20uSW5wdXRUeXBlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uc2FmZScsICdnb29nLnN0cnVjdHMuTWFwJywgJ2dvb2cud2luZG93J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vZm9ybXNfdGVzdC5qcycsIFsnZ29vZy5kb20uZm9ybXNUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uZm9ybXMnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9mdWxsc2NyZWVuLmpzJywgWydnb29nLmRvbS5mdWxsc2NyZWVuJywgJ2dvb2cuZG9tLmZ1bGxzY3JlZW4uRXZlbnRUeXBlJ10sIFsnZ29vZy5kb20nXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9mdWxsc2NyZWVuX3Rlc3QuanMnLCBbJ2dvb2cuZG9tLmZ1bGxzY3JlZW5fdGVzdCddLCBbJ2dvb2cuZG9tLkRvbUhlbHBlcicsICdnb29nLmRvbS5mdWxsc2NyZWVuJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5hc3NlcnRzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vaHRtbGVsZW1lbnQuanMnLCBbJ2dvb2cuZG9tLkh0bWxFbGVtZW50J10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL2lmcmFtZS5qcycsIFsnZ29vZy5kb20uaWZyYW1lJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5zYWZlJywgJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLmh0bWwuU2FmZVN0eWxlJywgJ2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwnLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9pZnJhbWVfdGVzdC5qcycsIFsnZ29vZy5kb20uaWZyYW1lVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLmlmcmFtZScsICdnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5odG1sLlNhZmVTdHlsZScsICdnb29nLnN0cmluZy5Db25zdCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL2lucHV0dHlwZS5qcycsIFsnZ29vZy5kb20uSW5wdXRUeXBlJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL2lucHV0dHlwZV90ZXN0LmpzJywgWydnb29nLmRvbS5JbnB1dFR5cGVUZXN0J10sIFsnZ29vZy5kb20uSW5wdXRUeXBlJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vaXRlci5qcycsIFsnZ29vZy5kb20uaXRlci5BbmNlc3Rvckl0ZXJhdG9yJywgJ2dvb2cuZG9tLml0ZXIuQ2hpbGRJdGVyYXRvcicsICdnb29nLmRvbS5pdGVyLlNpYmxpbmdJdGVyYXRvciddLCBbJ2dvb2cuaXRlci5JdGVyYXRvcicsICdnb29nLml0ZXIuU3RvcEl0ZXJhdGlvbiddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL2l0ZXJfdGVzdC5qcycsIFsnZ29vZy5kb20uaXRlclRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5pdGVyLkFuY2VzdG9ySXRlcmF0b3InLCAnZ29vZy5kb20uaXRlci5DaGlsZEl0ZXJhdG9yJywgJ2dvb2cuZG9tLml0ZXIuU2libGluZ0l0ZXJhdG9yJywgJ2dvb2cudGVzdGluZy5kb20nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9tdWx0aXJhbmdlLmpzJywgWydnb29nLmRvbS5NdWx0aVJhbmdlJywgJ2dvb2cuZG9tLk11bHRpUmFuZ2VJdGVyYXRvciddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uQWJzdHJhY3RNdWx0aVJhbmdlJywgJ2dvb2cuZG9tLkFic3RyYWN0UmFuZ2UnLCAnZ29vZy5kb20uUmFuZ2VJdGVyYXRvcicsICdnb29nLmRvbS5SYW5nZVR5cGUnLCAnZ29vZy5kb20uU2F2ZWRSYW5nZScsICdnb29nLmRvbS5UZXh0UmFuZ2UnLCAnZ29vZy5pdGVyJywgJ2dvb2cuaXRlci5TdG9wSXRlcmF0aW9uJywgJ2dvb2cubG9nJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vbXVsdGlyYW5nZV90ZXN0LmpzJywgWydnb29nLmRvbS5NdWx0aVJhbmdlVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk11bHRpUmFuZ2UnLCAnZ29vZy5kb20uUmFuZ2UnLCAnZ29vZy5pdGVyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vbm9kZWl0ZXJhdG9yLmpzJywgWydnb29nLmRvbS5Ob2RlSXRlcmF0b3InXSwgWydnb29nLmRvbS5UYWdJdGVyYXRvciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL25vZGVpdGVyYXRvcl90ZXN0LmpzJywgWydnb29nLmRvbS5Ob2RlSXRlcmF0b3JUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uTm9kZUl0ZXJhdG9yJywgJ2dvb2cudGVzdGluZy5kb20nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9ub2Rlb2Zmc2V0LmpzJywgWydnb29nLmRvbS5Ob2RlT2Zmc2V0J10sIFsnZ29vZy5EaXNwb3NhYmxlJywgJ2dvb2cuZG9tLlRhZ05hbWUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9ub2Rlb2Zmc2V0X3Rlc3QuanMnLCBbJ2dvb2cuZG9tLk5vZGVPZmZzZXRUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uTm9kZU9mZnNldCcsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vbm9kZXR5cGUuanMnLCBbJ2dvb2cuZG9tLk5vZGVUeXBlJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3BhdHRlcm4vYWJzdHJhY3RwYXR0ZXJuLmpzJywgWydnb29nLmRvbS5wYXR0ZXJuLkFic3RyYWN0UGF0dGVybiddLCBbJ2dvb2cuZG9tLlRhZ1dhbGtUeXBlJywgJ2dvb2cuZG9tLnBhdHRlcm4uTWF0Y2hUeXBlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vcGF0dGVybi9hbGxjaGlsZHJlbi5qcycsIFsnZ29vZy5kb20ucGF0dGVybi5BbGxDaGlsZHJlbiddLCBbJ2dvb2cuZG9tLnBhdHRlcm4uQWJzdHJhY3RQYXR0ZXJuJywgJ2dvb2cuZG9tLnBhdHRlcm4uTWF0Y2hUeXBlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vcGF0dGVybi9jYWxsYmFjay9jYWxsYmFjay5qcycsIFsnZ29vZy5kb20ucGF0dGVybi5jYWxsYmFjayddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ1dhbGtUeXBlJywgJ2dvb2cuaXRlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3BhdHRlcm4vY2FsbGJhY2svY291bnRlci5qcycsIFsnZ29vZy5kb20ucGF0dGVybi5jYWxsYmFjay5Db3VudGVyJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3BhdHRlcm4vY2FsbGJhY2svdGVzdC5qcycsIFsnZ29vZy5kb20ucGF0dGVybi5jYWxsYmFjay5UZXN0J10sIFsnZ29vZy5pdGVyLlN0b3BJdGVyYXRpb24nXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9wYXR0ZXJuL2NoaWxkbWF0Y2hlcy5qcycsIFsnZ29vZy5kb20ucGF0dGVybi5DaGlsZE1hdGNoZXMnXSwgWydnb29nLmRvbS5wYXR0ZXJuLkFsbENoaWxkcmVuJywgJ2dvb2cuZG9tLnBhdHRlcm4uTWF0Y2hUeXBlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vcGF0dGVybi9lbmR0YWcuanMnLCBbJ2dvb2cuZG9tLnBhdHRlcm4uRW5kVGFnJ10sIFsnZ29vZy5kb20uVGFnV2Fsa1R5cGUnLCAnZ29vZy5kb20ucGF0dGVybi5UYWcnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9wYXR0ZXJuL2Z1bGx0YWcuanMnLCBbJ2dvb2cuZG9tLnBhdHRlcm4uRnVsbFRhZyddLCBbJ2dvb2cuZG9tLnBhdHRlcm4uTWF0Y2hUeXBlJywgJ2dvb2cuZG9tLnBhdHRlcm4uU3RhcnRUYWcnLCAnZ29vZy5kb20ucGF0dGVybi5UYWcnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9wYXR0ZXJuL21hdGNoZXIuanMnLCBbJ2dvb2cuZG9tLnBhdHRlcm4uTWF0Y2hlciddLCBbJ2dvb2cuZG9tLlRhZ0l0ZXJhdG9yJywgJ2dvb2cuZG9tLnBhdHRlcm4uTWF0Y2hUeXBlJywgJ2dvb2cuaXRlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3BhdHRlcm4vbWF0Y2hlcl90ZXN0LmpzJywgWydnb29nLmRvbS5wYXR0ZXJuLm1hdGNoZXJUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5wYXR0ZXJuLkVuZFRhZycsICdnb29nLmRvbS5wYXR0ZXJuLkZ1bGxUYWcnLCAnZ29vZy5kb20ucGF0dGVybi5NYXRjaGVyJywgJ2dvb2cuZG9tLnBhdHRlcm4uUmVwZWF0JywgJ2dvb2cuZG9tLnBhdHRlcm4uU2VxdWVuY2UnLCAnZ29vZy5kb20ucGF0dGVybi5TdGFydFRhZycsICdnb29nLmRvbS5wYXR0ZXJuLmNhbGxiYWNrLkNvdW50ZXInLCAnZ29vZy5kb20ucGF0dGVybi5jYWxsYmFjay5UZXN0JywgJ2dvb2cuaXRlci5TdG9wSXRlcmF0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vcGF0dGVybi9ub2RldHlwZS5qcycsIFsnZ29vZy5kb20ucGF0dGVybi5Ob2RlVHlwZSddLCBbJ2dvb2cuZG9tLnBhdHRlcm4uQWJzdHJhY3RQYXR0ZXJuJywgJ2dvb2cuZG9tLnBhdHRlcm4uTWF0Y2hUeXBlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vcGF0dGVybi9wYXR0ZXJuLmpzJywgWydnb29nLmRvbS5wYXR0ZXJuJywgJ2dvb2cuZG9tLnBhdHRlcm4uTWF0Y2hUeXBlJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3BhdHRlcm4vcGF0dGVybl90ZXN0LmpzJywgWydnb29nLmRvbS5wYXR0ZXJuVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlRhZ1dhbGtUeXBlJywgJ2dvb2cuZG9tLnBhdHRlcm4uQWxsQ2hpbGRyZW4nLCAnZ29vZy5kb20ucGF0dGVybi5DaGlsZE1hdGNoZXMnLCAnZ29vZy5kb20ucGF0dGVybi5FbmRUYWcnLCAnZ29vZy5kb20ucGF0dGVybi5GdWxsVGFnJywgJ2dvb2cuZG9tLnBhdHRlcm4uTWF0Y2hUeXBlJywgJ2dvb2cuZG9tLnBhdHRlcm4uTm9kZVR5cGUnLCAnZ29vZy5kb20ucGF0dGVybi5SZXBlYXQnLCAnZ29vZy5kb20ucGF0dGVybi5TZXF1ZW5jZScsICdnb29nLmRvbS5wYXR0ZXJuLlN0YXJ0VGFnJywgJ2dvb2cuZG9tLnBhdHRlcm4uVGV4dCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3BhdHRlcm4vcmVwZWF0LmpzJywgWydnb29nLmRvbS5wYXR0ZXJuLlJlcGVhdCddLCBbJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLnBhdHRlcm4uQWJzdHJhY3RQYXR0ZXJuJywgJ2dvb2cuZG9tLnBhdHRlcm4uTWF0Y2hUeXBlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vcGF0dGVybi9zZXF1ZW5jZS5qcycsIFsnZ29vZy5kb20ucGF0dGVybi5TZXF1ZW5jZSddLCBbJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLnBhdHRlcm4nLCAnZ29vZy5kb20ucGF0dGVybi5BYnN0cmFjdFBhdHRlcm4nLCAnZ29vZy5kb20ucGF0dGVybi5NYXRjaFR5cGUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9wYXR0ZXJuL3N0YXJ0dGFnLmpzJywgWydnb29nLmRvbS5wYXR0ZXJuLlN0YXJ0VGFnJ10sIFsnZ29vZy5kb20uVGFnV2Fsa1R5cGUnLCAnZ29vZy5kb20ucGF0dGVybi5UYWcnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9wYXR0ZXJuL3RhZy5qcycsIFsnZ29vZy5kb20ucGF0dGVybi5UYWcnXSwgWydnb29nLmRvbS5wYXR0ZXJuJywgJ2dvb2cuZG9tLnBhdHRlcm4uQWJzdHJhY3RQYXR0ZXJuJywgJ2dvb2cuZG9tLnBhdHRlcm4uTWF0Y2hUeXBlJywgJ2dvb2cub2JqZWN0J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vcGF0dGVybi90ZXh0LmpzJywgWydnb29nLmRvbS5wYXR0ZXJuLlRleHQnXSwgWydnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5wYXR0ZXJuJywgJ2dvb2cuZG9tLnBhdHRlcm4uQWJzdHJhY3RQYXR0ZXJuJywgJ2dvb2cuZG9tLnBhdHRlcm4uTWF0Y2hUeXBlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vcmFuZ2UuanMnLCBbJ2dvb2cuZG9tLlJhbmdlJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uQWJzdHJhY3RSYW5nZScsICdnb29nLmRvbS5Ccm93c2VyRmVhdHVyZScsICdnb29nLmRvbS5Db250cm9sUmFuZ2UnLCAnZ29vZy5kb20uTXVsdGlSYW5nZScsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5UZXh0UmFuZ2UnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9yYW5nZV90ZXN0LmpzJywgWydnb29nLmRvbS5SYW5nZVRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5SYW5nZScsICdnb29nLmRvbS5SYW5nZVR5cGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5UZXh0UmFuZ2UnLCAnZ29vZy5kb20uYnJvd3NlcnJhbmdlJywgJ2dvb2cudGVzdGluZy5kb20nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9yYW5nZWVuZHBvaW50LmpzJywgWydnb29nLmRvbS5SYW5nZUVuZHBvaW50J10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3NhZmUuanMnLCBbJ2dvb2cuZG9tLnNhZmUnLCAnZ29vZy5kb20uc2FmZS5JbnNlcnRBZGphY2VudEh0bWxQb3NpdGlvbiddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbS5hc3NlcnRzJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLmh0bWwuU2FmZVNjcmlwdCcsICdnb29nLmh0bWwuU2FmZVN0eWxlJywgJ2dvb2cuaHRtbC5TYWZlVXJsJywgJ2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwnLCAnZ29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zJywgJ2dvb2cuc3RyaW5nLkNvbnN0JywgJ2dvb2cuc3RyaW5nLmludGVybmFsJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vc2FmZV90ZXN0LmpzJywgWydnb29nLmRvbS5zYWZlVGVzdCddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLnNhZmUnLCAnZ29vZy5kb20uc2FmZS5JbnNlcnRBZGphY2VudEh0bWxQb3NpdGlvbicsICdnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5odG1sLlNhZmVTY3JpcHQnLCAnZ29vZy5odG1sLlNhZmVTdHlsZScsICdnb29nLmh0bWwuU2FmZVVybCcsICdnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsJywgJ2dvb2cuaHRtbC50ZXN0aW5nJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3RyaW5nLkNvbnN0JywgJ2dvb2cudGVzdGluZycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3NhdmVkY2FyZXRyYW5nZS5qcycsIFsnZ29vZy5kb20uU2F2ZWRDYXJldFJhbmdlJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5TYXZlZFJhbmdlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5zdHJpbmcnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9zYXZlZGNhcmV0cmFuZ2VfdGVzdC5qcycsIFsnZ29vZy5kb20uU2F2ZWRDYXJldFJhbmdlVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cuZG9tLlNhdmVkQ2FyZXRSYW5nZScsICdnb29nLnRlc3RpbmcuZG9tJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vc2F2ZWRyYW5nZS5qcycsIFsnZ29vZy5kb20uU2F2ZWRSYW5nZSddLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29nLmxvZyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3NhdmVkcmFuZ2VfdGVzdC5qcycsIFsnZ29vZy5kb20uU2F2ZWRSYW5nZVRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5SYW5nZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3NlbGVjdGlvbi5qcycsIFsnZ29vZy5kb20uc2VsZWN0aW9uJ10sIFsnZ29vZy5kb20uSW5wdXRUeXBlJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vc2VsZWN0aW9uX3Rlc3QuanMnLCBbJ2dvb2cuZG9tLnNlbGVjdGlvblRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5JbnB1dFR5cGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5zZWxlY3Rpb24nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS90YWdpdGVyYXRvci5qcycsIFsnZ29vZy5kb20uVGFnSXRlcmF0b3InLCAnZ29vZy5kb20uVGFnV2Fsa1R5cGUnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLml0ZXIuSXRlcmF0b3InLCAnZ29vZy5pdGVyLlN0b3BJdGVyYXRpb24nXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS90YWdpdGVyYXRvcl90ZXN0LmpzJywgWydnb29nLmRvbS5UYWdJdGVyYXRvclRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdJdGVyYXRvcicsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLlRhZ1dhbGtUeXBlJywgJ2dvb2cuaXRlcicsICdnb29nLml0ZXIuU3RvcEl0ZXJhdGlvbicsICdnb29nLnRlc3RpbmcuZG9tJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vdGFnbmFtZS5qcycsIFsnZ29vZy5kb20uVGFnTmFtZSddLCBbJ2dvb2cuZG9tLkh0bWxFbGVtZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vdGFnbmFtZV90ZXN0LmpzJywgWydnb29nLmRvbS5UYWdOYW1lVGVzdCddLCBbJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS90YWdzLmpzJywgWydnb29nLmRvbS50YWdzJ10sIFsnZ29vZy5vYmplY3QnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS90YWdzX3Rlc3QuanMnLCBbJ2dvb2cuZG9tLnRhZ3NUZXN0J10sIFsnZ29vZy5kb20udGFncycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3RleHRhc3NlcnQuanMnLCBbJ2dvb2cuZG9tLnRleHRBc3NlcnQnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3RleHRhc3NlcnRfdGVzdC5qcycsIFsnZ29vZy5kb20udGV4dGFzc2VydF90ZXN0J10sIFsnZ29vZy5kb20udGV4dEFzc2VydCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3RleHRyYW5nZS5qcycsIFsnZ29vZy5kb20uVGV4dFJhbmdlJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5BYnN0cmFjdFJhbmdlJywgJ2dvb2cuZG9tLlJhbmdlVHlwZScsICdnb29nLmRvbS5TYXZlZFJhbmdlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uVGV4dFJhbmdlSXRlcmF0b3InLCAnZ29vZy5kb20uYnJvd3NlcnJhbmdlJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vdGV4dHJhbmdlX3Rlc3QuanMnLCBbJ2dvb2cuZG9tLlRleHRSYW5nZVRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5Db250cm9sUmFuZ2UnLCAnZ29vZy5kb20uUmFuZ2UnLCAnZ29vZy5kb20uVGV4dFJhbmdlJywgJ2dvb2cubWF0aC5Db29yZGluYXRlJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5nLkV4cGVjdGVkRmFpbHVyZXMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3RleHRyYW5nZWl0ZXJhdG9yLmpzJywgWydnb29nLmRvbS5UZXh0UmFuZ2VJdGVyYXRvciddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20uUmFuZ2VJdGVyYXRvcicsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuaXRlci5TdG9wSXRlcmF0aW9uJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vdGV4dHJhbmdlaXRlcmF0b3JfdGVzdC5qcycsIFsnZ29vZy5kb20uVGV4dFJhbmdlSXRlcmF0b3JUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5UZXh0UmFuZ2VJdGVyYXRvcicsICdnb29nLml0ZXIuU3RvcEl0ZXJhdGlvbicsICdnb29nLnRlc3RpbmcuZG9tJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vdXJpLmpzJywgWydnb29nLmRvbS51cmknXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLnNhZmUnLCAnZ29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zJywgJ2dvb2cuc3RyaW5nLkNvbnN0J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3VyaV90ZXN0LmpzJywgWydnb29nLmRvbS51cmlUZXN0J10sIFsnZ29vZy5kb20udXJpJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQucHJvZHVjdCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS92ZW5kb3IuanMnLCBbJ2dvb2cuZG9tLnZlbmRvciddLCBbJ2dvb2cuc3RyaW5nJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vdmVuZG9yX3Rlc3QuanMnLCBbJ2dvb2cuZG9tLnZlbmRvclRlc3QnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZG9tLnZlbmRvcicsICdnb29nLmxhYnMudXNlckFnZW50LnV0aWwnLCAnZ29vZy50ZXN0aW5nLk1vY2tVc2VyQWdlbnQnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCcsICdnb29nLnVzZXJBZ2VudFRlc3RVdGlsJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3ZpZXdwb3J0c2l6ZW1vbml0b3IuanMnLCBbJ2dvb2cuZG9tLlZpZXdwb3J0U2l6ZU1vbml0b3InXSwgWydnb29nLmRvbScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5tYXRoLlNpemUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS92aWV3cG9ydHNpemVtb25pdG9yX3Rlc3QuanMnLCBbJ2dvb2cuZG9tLlZpZXdwb3J0U2l6ZU1vbml0b3JUZXN0J10sIFsnZ29vZy5kb20uVmlld3BvcnRTaXplTW9uaXRvcicsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5tYXRoLlNpemUnLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3htbC5qcycsIFsnZ29vZy5kb20ueG1sJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20uc2FmZScsICdnb29nLmh0bWwubGVnYWN5Y29udmVyc2lvbnMnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS94bWxfdGVzdC5qcycsIFsnZ29vZy5kb20ueG1sVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20ueG1sJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvYnJvd3NlcmZlYXR1cmUuanMnLCBbJ2dvb2cuZWRpdG9yLkJyb3dzZXJGZWF0dXJlJ10sIFsnZ29vZy5lZGl0b3IuZGVmaW5lcycsICdnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXInLCAnZ29vZy51c2VyQWdlbnQnLCAnZ29vZy51c2VyQWdlbnQucHJvZHVjdCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0LmlzVmVyc2lvbiddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL2Jyb3dzZXJmZWF0dXJlX3Rlc3QuanMnLCBbJ2dvb2cuZWRpdG9yLkJyb3dzZXJGZWF0dXJlVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5lZGl0b3IuQnJvd3NlckZlYXR1cmUnLCAnZ29vZy50ZXN0aW5nLkV4cGVjdGVkRmFpbHVyZXMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9jbGlja3RvZWRpdHdyYXBwZXIuanMnLCBbJ2dvb2cuZWRpdG9yLkNsaWNrVG9FZGl0V3JhcHBlciddLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29nLmRvbScsICdnb29nLmRvbS5SYW5nZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZWRpdG9yLkJyb3dzZXJGZWF0dXJlJywgJ2dvb2cuZWRpdG9yLkNvbW1hbmQnLCAnZ29vZy5lZGl0b3IuRmllbGQnLCAnZ29vZy5lZGl0b3IucmFuZ2UnLCAnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9jbGlja3RvZWRpdHdyYXBwZXJfdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IuQ2xpY2tUb0VkaXRXcmFwcGVyVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5lZGl0b3IuQ2xpY2tUb0VkaXRXcmFwcGVyJywgJ2dvb2cuZWRpdG9yLlNlYW1sZXNzRmllbGQnLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvY29tbWFuZC5qcycsIFsnZ29vZy5lZGl0b3IuQ29tbWFuZCddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9jb250ZW50ZWRpdGFibGVmaWVsZC5qcycsIFsnZ29vZy5lZGl0b3IuQ29udGVudEVkaXRhYmxlRmllbGQnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5lZGl0b3IuRmllbGQnLCAnZ29vZy5sb2cnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9jb250ZW50ZWRpdGFibGVmaWVsZF90ZXN0LmpzJywgWydnb29nLmVkaXRvci5Db250ZW50RWRpdGFibGVGaWVsZFRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmVkaXRvci5Db250ZW50RWRpdGFibGVGaWVsZCcsICdnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9kZWZpbmVzLmpzJywgWydnb29nLmVkaXRvci5kZWZpbmVzJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL2ZpZWxkLmpzJywgWydnb29nLmVkaXRvci5GaWVsZCcsICdnb29nLmVkaXRvci5GaWVsZC5FdmVudFR5cGUnXSwgWydnb29nLmExMXkuYXJpYScsICdnb29nLmExMXkuYXJpYS5Sb2xlJywgJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuYXN5bmMuRGVsYXknLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uUmFuZ2UnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5kb20uc2FmZScsICdnb29nLmVkaXRvci5Ccm93c2VyRmVhdHVyZScsICdnb29nLmVkaXRvci5Db21tYW5kJywgJ2dvb2cuZWRpdG9yLlBsdWdpbkltcGwnLCAnZ29vZy5lZGl0b3IuaWNvbnRlbnQnLCAnZ29vZy5lZGl0b3IuaWNvbnRlbnQuRmllbGRGb3JtYXRJbmZvJywgJ2dvb2cuZWRpdG9yLmljb250ZW50LkZpZWxkU3R5bGVJbmZvJywgJ2dvb2cuZWRpdG9yLm5vZGUnLCAnZ29vZy5lZGl0b3IucmFuZ2UnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0JywgJ2dvb2cubG9nJywgJ2dvb2cubG9nLkxldmVsJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3RyaW5nLlVuaWNvZGUnLCAnZ29vZy5zdHlsZScsICdnb29nLnVzZXJBZ2VudCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvZmllbGRfdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IuZmllbGRfdGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uUmFuZ2UnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5lZGl0b3IuQnJvd3NlckZlYXR1cmUnLCAnZ29vZy5lZGl0b3IuRmllbGQnLCAnZ29vZy5lZGl0b3IuUGx1Z2luJywgJ2dvb2cuZWRpdG9yLnJhbmdlJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkJyb3dzZXJFdmVudCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dvb2cudGVzdGluZy5Mb29zZU1vY2snLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuZG9tJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLmV2ZW50cy5FdmVudCcsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9mb2N1cy5qcycsIFsnZ29vZy5lZGl0b3IuZm9jdXMnXSwgWydnb29nLmRvbS5zZWxlY3Rpb24nXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9mb2N1c190ZXN0LmpzJywgWydnb29nLmVkaXRvci5mb2N1c1Rlc3QnXSwgWydnb29nLmRvbS5zZWxlY3Rpb24nLCAnZ29vZy5lZGl0b3IuQnJvd3NlckZlYXR1cmUnLCAnZ29vZy5lZGl0b3IuZm9jdXMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9pY29udGVudC5qcycsIFsnZ29vZy5lZGl0b3IuaWNvbnRlbnQnLCAnZ29vZy5lZGl0b3IuaWNvbnRlbnQuRmllbGRGb3JtYXRJbmZvJywgJ2dvb2cuZWRpdG9yLmljb250ZW50LkZpZWxkU3R5bGVJbmZvJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5lZGl0b3IuQnJvd3NlckZlYXR1cmUnLCAnZ29vZy5zdHlsZScsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL2ljb250ZW50X3Rlc3QuanMnLCBbJ2dvb2cuZWRpdG9yLmljb250ZW50VGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5lZGl0b3IuQnJvd3NlckZlYXR1cmUnLCAnZ29vZy5lZGl0b3IuaWNvbnRlbnQnLCAnZ29vZy5lZGl0b3IuaWNvbnRlbnQuRmllbGRGb3JtYXRJbmZvJywgJ2dvb2cuZWRpdG9yLmljb250ZW50LkZpZWxkU3R5bGVJbmZvJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvbGluay5qcycsIFsnZ29vZy5lZGl0b3IuTGluayddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20uUmFuZ2UnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmVkaXRvci5Ccm93c2VyRmVhdHVyZScsICdnb29nLmVkaXRvci5Db21tYW5kJywgJ2dvb2cuZWRpdG9yLkZpZWxkJywgJ2dvb2cuZWRpdG9yLm5vZGUnLCAnZ29vZy5lZGl0b3IucmFuZ2UnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5zdHJpbmcuVW5pY29kZScsICdnb29nLnVyaS51dGlscycsICdnb29nLnVyaS51dGlscy5Db21wb25lbnRJbmRleCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL2xpbmtfdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IuTGlua1Rlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5SYW5nZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZWRpdG9yLkxpbmsnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9ub2RlLmpzJywgWydnb29nLmVkaXRvci5ub2RlJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5pdGVyLkNoaWxkSXRlcmF0b3InLCAnZ29vZy5kb20uaXRlci5TaWJsaW5nSXRlcmF0b3InLCAnZ29vZy5pdGVyJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3RyaW5nLlVuaWNvZGUnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9ub2RlX3Rlc3QuanMnLCBbJ2dvb2cuZWRpdG9yLm5vZGVUZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZWRpdG9yLm5vZGUnLCAnZ29vZy5zdHlsZScsICdnb29nLnRlc3RpbmcuRXhwZWN0ZWRGYWlsdXJlcycsICdnb29nLnRlc3RpbmcuZG9tJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2luLmpzJywgWydnb29nLmVkaXRvci5QbHVnaW4nXSwgWydnb29nLmVkaXRvci5GaWVsZCcsICdnb29nLmVkaXRvci5QbHVnaW5JbXBsJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2luX2ltcGwuanMnLCBbJ2dvb2cuZWRpdG9yLlBsdWdpbkltcGwnXSwgWydnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLmxvZycsICdnb29nLm9iamVjdCcsICdnb29nLnJlZmxlY3QnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9wbHVnaW5fdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IuUGx1Z2luVGVzdCddLCBbJ2dvb2cuZWRpdG9yLkZpZWxkJywgJ2dvb2cuZWRpdG9yLlBsdWdpbicsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLnRlc3RpbmcuU3RyaWN0TW9jaycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvYWJzdHJhY3RidWJibGVwbHVnaW4uanMnLCBbJ2dvb2cuZWRpdG9yLnBsdWdpbnMuQWJzdHJhY3RCdWJibGVQbHVnaW4nXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cuZWRpdG9yLlBsdWdpbicsICdnb29nLmVkaXRvci5zdHlsZScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuZXZlbnRzLmFjdGlvbkV2ZW50V3JhcHBlcicsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLnN0cmluZy5Vbmljb2RlJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuZWRpdG9yLkJ1YmJsZScsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvYWJzdHJhY3RidWJibGVwbHVnaW5fdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5BYnN0cmFjdEJ1YmJsZVBsdWdpblRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuQWJzdHJhY3RCdWJibGVQbHVnaW4nLCAnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLnN0eWxlJywgJ2dvb2cudGVzdGluZy5lZGl0b3IuRmllbGRNb2NrJywgJ2dvb2cudGVzdGluZy5lZGl0b3IuVGVzdEhlbHBlcicsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5ldmVudHMuRXZlbnQnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLmVkaXRvci5CdWJibGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lucy9hYnN0cmFjdGRpYWxvZ3BsdWdpbi5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5BYnN0cmFjdERpYWxvZ1BsdWdpbicsICdnb29nLmVkaXRvci5wbHVnaW5zLkFic3RyYWN0RGlhbG9nUGx1Z2luLkV2ZW50VHlwZSddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cuZWRpdG9yLkZpZWxkJywgJ2dvb2cuZWRpdG9yLlBsdWdpbicsICdnb29nLmVkaXRvci5yYW5nZScsICdnb29nLmV2ZW50cycsICdnb29nLnVpLmVkaXRvci5BYnN0cmFjdERpYWxvZyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvYWJzdHJhY3RkaWFsb2dwbHVnaW5fdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5BYnN0cmFjdERpYWxvZ1BsdWdpblRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5TYXZlZFJhbmdlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5lZGl0b3IuRmllbGQnLCAnZ29vZy5lZGl0b3IucGx1Z2lucy5BYnN0cmFjdERpYWxvZ1BsdWdpbicsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLk1vY2tDb250cm9sJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5lZGl0b3IuRmllbGRNb2NrJywgJ2dvb2cudGVzdGluZy5lZGl0b3IuVGVzdEhlbHBlcicsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5tb2NrbWF0Y2hlcnMuQXJndW1lbnRNYXRjaGVyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5lZGl0b3IuQWJzdHJhY3REaWFsb2cnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lucy9hYnN0cmFjdHRhYmhhbmRsZXIuanMnLCBbJ2dvb2cuZWRpdG9yLnBsdWdpbnMuQWJzdHJhY3RUYWJIYW5kbGVyJ10sIFsnZ29vZy5lZGl0b3IuUGx1Z2luJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lucy9hYnN0cmFjdHRhYmhhbmRsZXJfdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5BYnN0cmFjdFRhYkhhbmRsZXJUZXN0J10sIFsnZ29vZy5lZGl0b3IuRmllbGQnLCAnZ29vZy5lZGl0b3IucGx1Z2lucy5BYnN0cmFjdFRhYkhhbmRsZXInLCAnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cudGVzdGluZy5TdHJpY3RNb2NrJywgJ2dvb2cudGVzdGluZy5lZGl0b3IuRmllbGRNb2NrJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lucy9iYXNpY3RleHRmb3JtYXR0ZXIuanMnLCBbJ2dvb2cuZWRpdG9yLnBsdWdpbnMuQmFzaWNUZXh0Rm9ybWF0dGVyJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuQmFzaWNUZXh0Rm9ybWF0dGVyLkNPTU1BTkQnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5lZGl0b3IuQnJvd3NlckZlYXR1cmUnLCAnZ29vZy5lZGl0b3IuQ29tbWFuZCcsICdnb29nLmVkaXRvci5MaW5rJywgJ2dvb2cuZWRpdG9yLlBsdWdpbicsICdnb29nLmVkaXRvci5ub2RlJywgJ2dvb2cuZWRpdG9yLnJhbmdlJywgJ2dvb2cuZWRpdG9yLnN0eWxlJywgJ2dvb2cuaXRlcicsICdnb29nLml0ZXIuU3RvcEl0ZXJhdGlvbicsICdnb29nLmxvZycsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmluZycsICdnb29nLnN0cmluZy5Vbmljb2RlJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51aS5lZGl0b3IubWVzc2FnZXMnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9wbHVnaW5zL2Jhc2ljdGV4dGZvcm1hdHRlcl90ZXN0LmpzJywgWydnb29nLmVkaXRvci5wbHVnaW5zLkJhc2ljVGV4dEZvcm1hdHRlclRlc3QnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5lZGl0b3IuQnJvd3NlckZlYXR1cmUnLCAnZ29vZy5lZGl0b3IuQ29tbWFuZCcsICdnb29nLmVkaXRvci5GaWVsZCcsICdnb29nLmVkaXRvci5QbHVnaW4nLCAnZ29vZy5lZGl0b3IucGx1Z2lucy5CYXNpY1RleHRGb3JtYXR0ZXInLCAnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5nLkV4cGVjdGVkRmFpbHVyZXMnLCAnZ29vZy50ZXN0aW5nLkxvb3NlTW9jaycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcuZWRpdG9yLkZpZWxkTW9jaycsICdnb29nLnRlc3RpbmcuZWRpdG9yLlRlc3RIZWxwZXInLCAnZ29vZy50ZXN0aW5nLm1vY2ttYXRjaGVycycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50JywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lucy9ibG9ja3F1b3RlLmpzJywgWydnb29nLmVkaXRvci5wbHVnaW5zLkJsb2NrcXVvdGUnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLmVkaXRvci5Ccm93c2VyRmVhdHVyZScsICdnb29nLmVkaXRvci5Db21tYW5kJywgJ2dvb2cuZWRpdG9yLlBsdWdpbicsICdnb29nLmVkaXRvci5ub2RlJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cubG9nJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lucy9ibG9ja3F1b3RlX3Rlc3QuanMnLCBbJ2dvb2cuZWRpdG9yLnBsdWdpbnMuQmxvY2txdW90ZVRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5SYW5nZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZWRpdG9yLkJyb3dzZXJGZWF0dXJlJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuQmxvY2txdW90ZScsICdnb29nLnRlc3RpbmcuZWRpdG9yLkZpZWxkTW9jaycsICdnb29nLnRlc3RpbmcuZWRpdG9yLlRlc3RIZWxwZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9wbHVnaW5zL2Vtb3RpY29ucy5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5FbW90aWNvbnMnXSwgWydnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZWRpdG9yLlBsdWdpbicsICdnb29nLmVkaXRvci5yYW5nZScsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLnVpLmVtb2ppLkVtb2ppJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lucy9lbW90aWNvbnNfdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5FbW90aWNvbnNUZXN0J10sIFsnZ29vZy5VcmknLCAnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZWRpdG9yLkZpZWxkJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuRW1vdGljb25zJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5lbW9qaS5FbW9qaScsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9wbHVnaW5zL2VudGVyaGFuZGxlci5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5FbnRlckhhbmRsZXInXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5Ob2RlT2Zmc2V0JywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5lZGl0b3IuQnJvd3NlckZlYXR1cmUnLCAnZ29vZy5lZGl0b3IuUGx1Z2luJywgJ2dvb2cuZWRpdG9yLm5vZGUnLCAnZ29vZy5lZGl0b3IucGx1Z2lucy5CbG9ja3F1b3RlJywgJ2dvb2cuZWRpdG9yLnJhbmdlJywgJ2dvb2cuZWRpdG9yLnN0eWxlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lucy9lbnRlcmhhbmRsZXJfdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5FbnRlckhhbmRsZXJUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20uUmFuZ2UnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmVkaXRvci5Ccm93c2VyRmVhdHVyZScsICdnb29nLmVkaXRvci5GaWVsZCcsICdnb29nLmVkaXRvci5QbHVnaW4nLCAnZ29vZy5lZGl0b3IucGx1Z2lucy5CbG9ja3F1b3RlJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuRW50ZXJIYW5kbGVyJywgJ2dvb2cuZWRpdG9yLnJhbmdlJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuaHRtbC50ZXN0aW5nJywgJ2dvb2cudGVzdGluZy5FeHBlY3RlZEZhaWx1cmVzJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLmRvbScsICdnb29nLnRlc3RpbmcuZWRpdG9yLlRlc3RIZWxwZXInLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvZmlyc3RzdHJvbmcuanMnLCBbJ2dvb2cuZWRpdG9yLnBsdWdpbnMuRmlyc3RTdHJvbmcnXSwgWydnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5UYWdJdGVyYXRvcicsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZWRpdG9yLkNvbW1hbmQnLCAnZ29vZy5lZGl0b3IuRmllbGQnLCAnZ29vZy5lZGl0b3IuUGx1Z2luJywgJ2dvb2cuZWRpdG9yLm5vZGUnLCAnZ29vZy5lZGl0b3IucmFuZ2UnLCAnZ29vZy5pMThuLmJpZGknLCAnZ29vZy5pMThuLnVDaGFyJywgJ2dvb2cuaXRlcicsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvZmlyc3RzdHJvbmdfdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5GaXJzdFN0cm9uZ1Rlc3QnXSwgWydnb29nLmRvbS5SYW5nZScsICdnb29nLmVkaXRvci5Db21tYW5kJywgJ2dvb2cuZWRpdG9yLkZpZWxkJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuRmlyc3RTdHJvbmcnLCAnZ29vZy5lZGl0b3IucmFuZ2UnLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy5odG1sLnRlc3RpbmcnLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuZWRpdG9yLlRlc3RIZWxwZXInLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvaGVhZGVyZm9ybWF0dGVyLmpzJywgWydnb29nLmVkaXRvci5wbHVnaW5zLkhlYWRlckZvcm1hdHRlciddLCBbJ2dvb2cuZWRpdG9yLkNvbW1hbmQnLCAnZ29vZy5lZGl0b3IuUGx1Z2luJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lucy9oZWFkZXJmb3JtYXR0ZXJfdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5IZWFkZXJGb3JtYXR0ZXJUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5lZGl0b3IuQ29tbWFuZCcsICdnb29nLmVkaXRvci5wbHVnaW5zLkJhc2ljVGV4dEZvcm1hdHRlcicsICdnb29nLmVkaXRvci5wbHVnaW5zLkhlYWRlckZvcm1hdHRlcicsICdnb29nLmV2ZW50cy5Ccm93c2VyRXZlbnQnLCAnZ29vZy50ZXN0aW5nLkxvb3NlTW9jaycsICdnb29nLnRlc3RpbmcuZWRpdG9yLkZpZWxkTW9jaycsICdnb29nLnRlc3RpbmcuZWRpdG9yLlRlc3RIZWxwZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9wbHVnaW5zL2xpbmtidWJibGUuanMnLCBbJ2dvb2cuZWRpdG9yLnBsdWdpbnMuTGlua0J1YmJsZScsICdnb29nLmVkaXRvci5wbHVnaW5zLkxpbmtCdWJibGUuQWN0aW9uJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5SYW5nZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZWRpdG9yLkNvbW1hbmQnLCAnZ29vZy5lZGl0b3IuTGluaycsICdnb29nLmVkaXRvci5wbHVnaW5zLkFic3RyYWN0QnViYmxlUGx1Z2luJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51aS5lZGl0b3IubWVzc2FnZXMnLCAnZ29vZy51cmkudXRpbHMnLCAnZ29vZy53aW5kb3cnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9wbHVnaW5zL2xpbmtidWJibGVfdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5MaW5rQnViYmxlVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5lZGl0b3IuQ29tbWFuZCcsICdnb29nLmVkaXRvci5MaW5rJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuTGlua0J1YmJsZScsICdnb29nLmV2ZW50cy5Ccm93c2VyRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5nLkZ1bmN0aW9uTW9jaycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcuZWRpdG9yLkZpZWxkTW9jaycsICdnb29nLnRlc3RpbmcuZWRpdG9yLlRlc3RIZWxwZXInLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvbGlua2RpYWxvZ3BsdWdpbi5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5MaW5rRGlhbG9nUGx1Z2luJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmVkaXRvci5Db21tYW5kJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuQWJzdHJhY3REaWFsb2dQbHVnaW4nLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cudWkuZWRpdG9yLkFic3RyYWN0RGlhbG9nJywgJ2dvb2cudWkuZWRpdG9yLkxpbmtEaWFsb2cnLCAnZ29vZy51cmkudXRpbHMnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9wbHVnaW5zL2xpbmtkaWFsb2dwbHVnaW5fdGVzdC5qcycsIFsnZ29vZy51aS5lZGl0b3IucGx1Z2lucy5MaW5rRGlhbG9nVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLkRvbUhlbHBlcicsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZWRpdG9yLkJyb3dzZXJGZWF0dXJlJywgJ2dvb2cuZWRpdG9yLkNvbW1hbmQnLCAnZ29vZy5lZGl0b3IuRmllbGQnLCAnZ29vZy5lZGl0b3IuTGluaycsICdnb29nLmVkaXRvci5wbHVnaW5zLkxpbmtEaWFsb2dQbHVnaW4nLCAnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3RyaW5nLlVuaWNvZGUnLCAnZ29vZy50ZXN0aW5nLk1vY2tDb250cm9sJywgJ2dvb2cudGVzdGluZy5lZGl0b3IuRmllbGRNb2NrJywgJ2dvb2cudGVzdGluZy5lZGl0b3IuVGVzdEhlbHBlcicsICdnb29nLnRlc3RpbmcuZWRpdG9yLmRvbScsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5tb2NrbWF0Y2hlcnMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLmVkaXRvci5BYnN0cmFjdERpYWxvZycsICdnb29nLnVpLmVkaXRvci5MaW5rRGlhbG9nJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvbGlua3Nob3J0Y3V0cGx1Z2luLmpzJywgWydnb29nLmVkaXRvci5wbHVnaW5zLkxpbmtTaG9ydGN1dFBsdWdpbiddLCBbJ2dvb2cuZWRpdG9yLkNvbW1hbmQnLCAnZ29vZy5lZGl0b3IuUGx1Z2luJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lucy9saW5rc2hvcnRjdXRwbHVnaW5fdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5MaW5rU2hvcnRjdXRQbHVnaW5UZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmVkaXRvci5GaWVsZCcsICdnb29nLmVkaXRvci5wbHVnaW5zLkJhc2ljVGV4dEZvcm1hdHRlcicsICdnb29nLmVkaXRvci5wbHVnaW5zLkxpbmtCdWJibGUnLCAnZ29vZy5lZGl0b3IucGx1Z2lucy5MaW5rU2hvcnRjdXRQbHVnaW4nLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLmRvbScsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQucHJvZHVjdCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9wbHVnaW5zL2xpc3R0YWJoYW5kbGVyLmpzJywgWydnb29nLmVkaXRvci5wbHVnaW5zLkxpc3RUYWJIYW5kbGVyJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmVkaXRvci5Db21tYW5kJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuQWJzdHJhY3RUYWJIYW5kbGVyJywgJ2dvb2cuaXRlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvbGlzdHRhYmhhbmRsZXJfdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5MaXN0VGFiSGFuZGxlclRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmVkaXRvci5Db21tYW5kJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuTGlzdFRhYkhhbmRsZXInLCAnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cudGVzdGluZy5TdHJpY3RNb2NrJywgJ2dvb2cudGVzdGluZy5lZGl0b3IuRmllbGRNb2NrJywgJ2dvb2cudGVzdGluZy5lZGl0b3IuVGVzdEhlbHBlcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvbG9yZW1pcHN1bS5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5Mb3JlbUlwc3VtJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZWRpdG9yLkNvbW1hbmQnLCAnZ29vZy5lZGl0b3IuRmllbGQnLCAnZ29vZy5lZGl0b3IuUGx1Z2luJywgJ2dvb2cuZWRpdG9yLm5vZGUnLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lucy9sb3JlbWlwc3VtX3Rlc3QuanMnLCBbJ2dvb2cuZWRpdG9yLnBsdWdpbnMuTG9yZW1JcHN1bVRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmVkaXRvci5Db21tYW5kJywgJ2dvb2cuZWRpdG9yLkZpZWxkJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuTG9yZW1JcHN1bScsICdnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5zdHJpbmcuVW5pY29kZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvcmVtb3ZlZm9ybWF0dGluZy5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5SZW1vdmVGb3JtYXR0aW5nJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20uUmFuZ2UnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmVkaXRvci5Ccm93c2VyRmVhdHVyZScsICdnb29nLmVkaXRvci5QbHVnaW4nLCAnZ29vZy5lZGl0b3Iubm9kZScsICdnb29nLmVkaXRvci5yYW5nZScsICdnb29nLnN0cmluZycsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvcmVtb3ZlZm9ybWF0dGluZ190ZXN0LmpzJywgWydnb29nLmVkaXRvci5wbHVnaW5zLlJlbW92ZUZvcm1hdHRpbmdUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uUmFuZ2UnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmVkaXRvci5Ccm93c2VyRmVhdHVyZScsICdnb29nLmVkaXRvci5wbHVnaW5zLlJlbW92ZUZvcm1hdHRpbmcnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy50ZXN0aW5nLkV4cGVjdGVkRmFpbHVyZXMnLCAnZ29vZy50ZXN0aW5nLmRvbScsICdnb29nLnRlc3RpbmcuZWRpdG9yLkZpZWxkTW9jaycsICdnb29nLnRlc3RpbmcuZWRpdG9yLlRlc3RIZWxwZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvc3BhY2VzdGFiaGFuZGxlci5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5TcGFjZXNUYWJIYW5kbGVyJ10sIFsnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmVkaXRvci5wbHVnaW5zLkFic3RyYWN0VGFiSGFuZGxlcicsICdnb29nLmVkaXRvci5yYW5nZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvc3BhY2VzdGFiaGFuZGxlcl90ZXN0LmpzJywgWydnb29nLmVkaXRvci5wbHVnaW5zLlNwYWNlc1RhYkhhbmRsZXJUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uUmFuZ2UnLCAnZ29vZy5lZGl0b3IucGx1Z2lucy5TcGFjZXNUYWJIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkJyb3dzZXJFdmVudCcsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLnRlc3RpbmcuU3RyaWN0TW9jaycsICdnb29nLnRlc3RpbmcuZWRpdG9yLkZpZWxkTW9jaycsICdnb29nLnRlc3RpbmcuZWRpdG9yLlRlc3RIZWxwZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9wbHVnaW5zL3RhYmxlZWRpdG9yLmpzJywgWydnb29nLmVkaXRvci5wbHVnaW5zLlRhYmxlRWRpdG9yJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5SYW5nZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZWRpdG9yLlBsdWdpbicsICdnb29nLmVkaXRvci5UYWJsZScsICdnb29nLmVkaXRvci5ub2RlJywgJ2dvb2cuZWRpdG9yLnJhbmdlJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lucy90YWJsZWVkaXRvcl90ZXN0LmpzJywgWydnb29nLmVkaXRvci5wbHVnaW5zLlRhYmxlRWRpdG9yVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5lZGl0b3IucGx1Z2lucy5UYWJsZUVkaXRvcicsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmluZycsICdnb29nLnRlc3RpbmcuRXhwZWN0ZWRGYWlsdXJlcycsICdnb29nLnRlc3RpbmcuVGVzdENhc2UnLCAnZ29vZy50ZXN0aW5nLmVkaXRvci5GaWVsZE1vY2snLCAnZ29vZy50ZXN0aW5nLmVkaXRvci5UZXN0SGVscGVyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lucy90YWdvbmVudGVyaGFuZGxlci5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5UYWdPbkVudGVySGFuZGxlciddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5lZGl0b3IuQ29tbWFuZCcsICdnb29nLmVkaXRvci5ub2RlJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuRW50ZXJIYW5kbGVyJywgJ2dvb2cuZWRpdG9yLnJhbmdlJywgJ2dvb2cuZWRpdG9yLnN0eWxlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cuc3RyaW5nLlVuaWNvZGUnLCAnZ29vZy5zdHlsZScsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvdGFnb25lbnRlcmhhbmRsZXJfdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5UYWdPbkVudGVySGFuZGxlclRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5SYW5nZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZWRpdG9yLkJyb3dzZXJGZWF0dXJlJywgJ2dvb2cuZWRpdG9yLkZpZWxkJywgJ2dvb2cuZWRpdG9yLlBsdWdpbicsICdnb29nLmVkaXRvci5wbHVnaW5zLlRhZ09uRW50ZXJIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLnN0cmluZy5Vbmljb2RlJywgJ2dvb2cudGVzdGluZy5kb20nLCAnZ29vZy50ZXN0aW5nLmVkaXRvci5UZXN0SGVscGVyJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9wbHVnaW5zL3VuZG9yZWRvLmpzJywgWydnb29nLmVkaXRvci5wbHVnaW5zLlVuZG9SZWRvJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uTm9kZU9mZnNldCcsICdnb29nLmRvbS5SYW5nZScsICdnb29nLmVkaXRvci5Ccm93c2VyRmVhdHVyZScsICdnb29nLmVkaXRvci5Db21tYW5kJywgJ2dvb2cuZWRpdG9yLkZpZWxkJywgJ2dvb2cuZWRpdG9yLlBsdWdpbicsICdnb29nLmVkaXRvci5ub2RlJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuVW5kb1JlZG9NYW5hZ2VyJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuVW5kb1JlZG9TdGF0ZScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5sb2cnLCAnZ29vZy5vYmplY3QnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9wbHVnaW5zL3VuZG9yZWRvX3Rlc3QuanMnLCBbJ2dvb2cuZWRpdG9yLnBsdWdpbnMuVW5kb1JlZG9UZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5icm93c2VycmFuZ2UnLCAnZ29vZy5lZGl0b3IuRmllbGQnLCAnZ29vZy5lZGl0b3IucGx1Z2lucy5Mb3JlbUlwc3VtJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuVW5kb1JlZG8nLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLlN0cmljdE1vY2snLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9wbHVnaW5zL3VuZG9yZWRvbWFuYWdlci5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5VbmRvUmVkb01hbmFnZXInLCAnZ29vZy5lZGl0b3IucGx1Z2lucy5VbmRvUmVkb01hbmFnZXIuRXZlbnRUeXBlJ10sIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5VbmRvUmVkb1N0YXRlJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lucy91bmRvcmVkb21hbmFnZXJfdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5VbmRvUmVkb01hbmFnZXJUZXN0J10sIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5VbmRvUmVkb01hbmFnZXInLCAnZ29vZy5lZGl0b3IucGx1Z2lucy5VbmRvUmVkb1N0YXRlJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5TdHJpY3RNb2NrJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lucy91bmRvcmVkb3N0YXRlLmpzJywgWydnb29nLmVkaXRvci5wbHVnaW5zLlVuZG9SZWRvU3RhdGUnXSwgWydnb29nLmV2ZW50cy5FdmVudFRhcmdldCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvdW5kb3JlZG9zdGF0ZV90ZXN0LmpzJywgWydnb29nLmVkaXRvci5wbHVnaW5zLlVuZG9SZWRvU3RhdGVUZXN0J10sIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5VbmRvUmVkb1N0YXRlJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcmFuZ2UuanMnLCBbJ2dvb2cuZWRpdG9yLnJhbmdlJywgJ2dvb2cuZWRpdG9yLnJhbmdlLlBvaW50J10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5SYW5nZScsICdnb29nLmRvbS5SYW5nZUVuZHBvaW50JywgJ2dvb2cuZG9tLlNhdmVkQ2FyZXRSYW5nZScsICdnb29nLmVkaXRvci5ub2RlJywgJ2dvb2cuZWRpdG9yLnN0eWxlJywgJ2dvb2cuaXRlcicsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3JhbmdlX3Rlc3QuanMnLCBbJ2dvb2cuZWRpdG9yLnJhbmdlVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5lZGl0b3IucmFuZ2UnLCAnZ29vZy5lZGl0b3IucmFuZ2UuUG9pbnQnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy50ZXN0aW5nLmRvbScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3NlYW1sZXNzZmllbGQuanMnLCBbJ2dvb2cuZWRpdG9yLlNlYW1sZXNzRmllbGQnXSwgWydnb29nLmNzc29tLmlmcmFtZS5zdHlsZScsICdnb29nLmRvbScsICdnb29nLmRvbS5SYW5nZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLnNhZmUnLCAnZ29vZy5lZGl0b3IuQnJvd3NlckZlYXR1cmUnLCAnZ29vZy5lZGl0b3IuRmllbGQnLCAnZ29vZy5lZGl0b3IuaWNvbnRlbnQnLCAnZ29vZy5lZGl0b3IuaWNvbnRlbnQuRmllbGRGb3JtYXRJbmZvJywgJ2dvb2cuZWRpdG9yLmljb250ZW50LkZpZWxkU3R5bGVJbmZvJywgJ2dvb2cuZWRpdG9yLm5vZGUnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLmxvZycsICdnb29nLnN0eWxlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3Ivc2VhbWxlc3NmaWVsZF90ZXN0LmpzJywgWydnb29nLmVkaXRvci5zZWFtbGVzc2ZpZWxkX3Rlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5Eb21IZWxwZXInLCAnZ29vZy5kb20uUmFuZ2UnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmVkaXRvci5Ccm93c2VyRmVhdHVyZScsICdnb29nLmVkaXRvci5GaWVsZCcsICdnb29nLmVkaXRvci5TZWFtbGVzc0ZpZWxkJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLnN0eWxlJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLk1vY2tSYW5nZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3N0eWxlLmpzJywgWydnb29nLmVkaXRvci5zdHlsZSddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5lZGl0b3IuQnJvd3NlckZlYXR1cmUnLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLm9iamVjdCcsICdnb29nLnN0eWxlJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3Ivc3R5bGVfdGVzdC5qcycsIFsnZ29vZy5lZGl0b3Iuc3R5bGVUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmVkaXRvci5Ccm93c2VyRmVhdHVyZScsICdnb29nLmVkaXRvci5zdHlsZScsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5nLkxvb3NlTW9jaycsICdnb29nLnRlc3RpbmcubW9ja21hdGNoZXJzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvdGFibGUuanMnLCBbJ2dvb2cuZWRpdG9yLlRhYmxlJywgJ2dvb2cuZWRpdG9yLlRhYmxlQ2VsbCcsICdnb29nLmVkaXRvci5UYWJsZVJvdyddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbScsICdnb29nLmRvbS5Eb21IZWxwZXInLCAnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmxvZycsICdnb29nLnN0cmluZy5Vbmljb2RlJywgJ2dvb2cuc3R5bGUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci90YWJsZV90ZXN0LmpzJywgWydnb29nLmVkaXRvci5UYWJsZVRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZWRpdG9yLlRhYmxlJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvYWN0aW9uZXZlbnR3cmFwcGVyLmpzJywgWydnb29nLmV2ZW50cy5hY3Rpb25FdmVudFdyYXBwZXInXSwgWydnb29nLmExMXkuYXJpYScsICdnb29nLmExMXkuYXJpYS5Sb2xlJywgJ2dvb2cuZG9tJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuRXZlbnRXcmFwcGVyJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvYWN0aW9uZXZlbnR3cmFwcGVyX3Rlc3QuanMnLCBbJ2dvb2cuZXZlbnRzLmFjdGlvbkV2ZW50V3JhcHBlclRlc3QnXSwgWydnb29nLmExMXkuYXJpYScsICdnb29nLmExMXkuYXJpYS5Sb2xlJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLmV2ZW50cy5hY3Rpb25FdmVudFdyYXBwZXInLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL2FjdGlvbmhhbmRsZXIuanMnLCBbJ2dvb2cuZXZlbnRzLkFjdGlvbkV2ZW50JywgJ2dvb2cuZXZlbnRzLkFjdGlvbkhhbmRsZXInLCAnZ29vZy5ldmVudHMuQWN0aW9uSGFuZGxlci5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuQmVmb3JlQWN0aW9uRXZlbnQnXSwgWydnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5Ccm93c2VyRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvYWN0aW9uaGFuZGxlcl90ZXN0LmpzJywgWydnb29nLmV2ZW50cy5BY3Rpb25IYW5kbGVyVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkFjdGlvbkhhbmRsZXInLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL2Jyb3dzZXJldmVudC5qcycsIFsnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRzLkJyb3dzZXJFdmVudC5Nb3VzZUJ1dHRvbicsICdnb29nLmV2ZW50cy5Ccm93c2VyRXZlbnQuUG9pbnRlclR5cGUnXSwgWydnb29nLmRlYnVnJywgJ2dvb2cuZXZlbnRzLkJyb3dzZXJGZWF0dXJlJywgJ2dvb2cuZXZlbnRzLkV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLnJlZmxlY3QnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2V2ZW50cy9icm93c2VyZXZlbnRfdGVzdC5qcycsIFsnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50VGVzdCddLCBbJ2dvb2cuZXZlbnRzLkJyb3dzZXJFdmVudCcsICdnb29nLmV2ZW50cy5Ccm93c2VyRmVhdHVyZScsICdnb29nLm1hdGguQ29vcmRpbmF0ZScsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL2Jyb3dzZXJmZWF0dXJlLmpzJywgWydnb29nLmV2ZW50cy5Ccm93c2VyRmVhdHVyZSddLCBbJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvZXZlbnQuanMnLCBbJ2dvb2cuZXZlbnRzLkV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50TGlrZSddLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29nLmV2ZW50cy5FdmVudElkJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvZXZlbnRfdGVzdC5qcycsIFsnZ29vZy5ldmVudHMuRXZlbnRUZXN0J10sIFsnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRJZCcsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL2V2ZW50aGFuZGxlci5qcycsIFsnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJ10sIFsnZ29vZy5EaXNwb3NhYmxlJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cub2JqZWN0J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvZXZlbnRoYW5kbGVyX3Rlc3QuanMnLCBbJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlclRlc3QnXSwgWydnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvZXZlbnRpZC5qcycsIFsnZ29vZy5ldmVudHMuRXZlbnRJZCddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2V2ZW50cy9ldmVudHMuanMnLCBbJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkNhcHR1cmVTaW11bGF0aW9uTW9kZScsICdnb29nLmV2ZW50cy5LZXknLCAnZ29vZy5ldmVudHMuTGlzdGVuYWJsZVR5cGUnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5kZWJ1Zy5lbnRyeVBvaW50UmVnaXN0cnknLCAnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRzLkJyb3dzZXJGZWF0dXJlJywgJ2dvb2cuZXZlbnRzLkxpc3RlbmFibGUnLCAnZ29vZy5ldmVudHMuTGlzdGVuZXJNYXAnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2V2ZW50cy9ldmVudHNfdGVzdC5qcycsIFsnZ29vZy5ldmVudHNUZXN0J10sIFsnZ29vZy5hc3NlcnRzLkFzc2VydGlvbkVycm9yJywgJ2dvb2cuZGVidWcuRW50cnlQb2ludE1vbml0b3InLCAnZ29vZy5kZWJ1Zy5FcnJvckhhbmRsZXInLCAnZ29vZy5kZWJ1Zy5lbnRyeVBvaW50UmVnaXN0cnknLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5Ccm93c2VyRmVhdHVyZScsICdnb29nLmV2ZW50cy5DYXB0dXJlU2ltdWxhdGlvbk1vZGUnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLkxpc3RlbmVyJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL2V2ZW50dGFyZ2V0LmpzJywgWydnb29nLmV2ZW50cy5FdmVudFRhcmdldCddLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuTGlzdGVuYWJsZScsICdnb29nLmV2ZW50cy5MaXN0ZW5lck1hcCcsICdnb29nLm9iamVjdCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL2V2ZW50dGFyZ2V0X3Rlc3QuanMnLCBbJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0VGVzdCddLCBbJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cuZXZlbnRzLkxpc3RlbmFibGUnLCAnZ29vZy5ldmVudHMuZXZlbnRUYXJnZXRUZXN0ZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2V2ZW50cy9ldmVudHRhcmdldF92aWFfZ29vZ2V2ZW50c190ZXN0LmpzJywgWydnb29nLmV2ZW50cy5FdmVudFRhcmdldEdvb2dFdmVudHNUZXN0J10sIFsnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuZXZlbnRUYXJnZXRUZXN0ZXInLCAnZ29vZy50ZXN0aW5nJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvZXZlbnR0YXJnZXRfdmlhX3czY2ludGVyZmFjZV90ZXN0LmpzJywgWydnb29nLmV2ZW50cy5FdmVudFRhcmdldFczQ1Rlc3QnXSwgWydnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5ldmVudFRhcmdldFRlc3RlcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL2V2ZW50dGFyZ2V0dGVzdGVyLmpzJywgWydnb29nLmV2ZW50cy5ldmVudFRhcmdldFRlc3RlciddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuTGlzdGVuYWJsZScsICdnb29nLnRlc3RpbmcuYXNzZXJ0cycsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvZXZlbnR0eXBlLmpzJywgWydnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuTW91c2VBc01vdXNlRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLk1vdXNlRXZlbnRzJywgJ2dvb2cuZXZlbnRzLlBvaW50ZXJBc01vdXNlRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLlBvaW50ZXJBc1RvdWNoRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLlBvaW50ZXJGYWxsYmFja0V2ZW50VHlwZScsICdnb29nLmV2ZW50cy5Qb2ludGVyVG91Y2hGYWxsYmFja0V2ZW50VHlwZSddLCBbJ2dvb2cuZXZlbnRzLkJyb3dzZXJGZWF0dXJlJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvZXZlbnR0eXBlX3Rlc3QuanMnLCBbJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZVRlc3QnXSwgWydnb29nLmV2ZW50cy5Ccm93c2VyRmVhdHVyZScsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuUG9pbnRlckZhbGxiYWNrRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLlBvaW50ZXJUb3VjaEZhbGxiYWNrRXZlbnRUeXBlJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvZXZlbnR3cmFwcGVyLmpzJywgWydnb29nLmV2ZW50cy5FdmVudFdyYXBwZXInXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvZmlsZWRyb3BoYW5kbGVyLmpzJywgWydnb29nLmV2ZW50cy5GaWxlRHJvcEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRmlsZURyb3BIYW5kbGVyLkV2ZW50VHlwZSddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5sb2cnLCAnZ29vZy5sb2cuTGV2ZWwnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2V2ZW50cy9maWxlZHJvcGhhbmRsZXJfdGVzdC5qcycsIFsnZ29vZy5ldmVudHMuRmlsZURyb3BIYW5kbGVyVGVzdCddLCBbJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkJyb3dzZXJFdmVudCcsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuRmlsZURyb3BIYW5kbGVyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvZm9jdXNoYW5kbGVyLmpzJywgWydnb29nLmV2ZW50cy5Gb2N1c0hhbmRsZXInLCAnZ29vZy5ldmVudHMuRm9jdXNIYW5kbGVyLkV2ZW50VHlwZSddLCBbJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkJyb3dzZXJFdmVudCcsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL2ltZWhhbmRsZXIuanMnLCBbJ2dvb2cuZXZlbnRzLkltZUhhbmRsZXInLCAnZ29vZy5ldmVudHMuSW1lSGFuZGxlci5FdmVudCcsICdnb29nLmV2ZW50cy5JbWVIYW5kbGVyLkV2ZW50VHlwZSddLCBbJ2dvb2cuZXZlbnRzLkV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2V2ZW50cy9pbWVoYW5kbGVyX3Rlc3QuanMnLCBbJ2dvb2cuZXZlbnRzLkltZUhhbmRsZXJUZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5JbWVIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLmV2ZW50cy5FdmVudCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL2lucHV0aGFuZGxlci5qcycsIFsnZ29vZy5ldmVudHMuSW5wdXRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLklucHV0SGFuZGxlci5FdmVudFR5cGUnXSwgWydnb29nLlRpbWVyJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL2lucHV0aGFuZGxlcl90ZXN0LmpzJywgWydnb29nLmV2ZW50cy5JbnB1dEhhbmRsZXJUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmV2ZW50cy5JbnB1dEhhbmRsZXInLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcuZXZlbnRzLkV2ZW50JywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL2tleWNvZGVzLmpzJywgWydnb29nLmV2ZW50cy5LZXlDb2RlcyddLCBbJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMva2V5Y29kZXNfdGVzdC5qcycsIFsnZ29vZy5ldmVudHMuS2V5Q29kZXNUZXN0J10sIFsnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMva2V5aGFuZGxlci5qcycsIFsnZ29vZy5ldmVudHMuS2V5RXZlbnQnLCAnZ29vZy5ldmVudHMuS2V5SGFuZGxlcicsICdnb29nLmV2ZW50cy5LZXlIYW5kbGVyLkV2ZW50VHlwZSddLCBbJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkJyb3dzZXJFdmVudCcsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2V2ZW50cy9rZXloYW5kbGVyX3Rlc3QuanMnLCBbJ2dvb2cuZXZlbnRzLktleUV2ZW50VGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLmV2ZW50cy5LZXlIYW5kbGVyJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2V2ZW50cy9rZXluYW1lcy5qcycsIFsnZ29vZy5ldmVudHMuS2V5TmFtZXMnXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMva2V5cy5qcycsIFsnZ29vZy5ldmVudHMuS2V5cyddLCBbXSwgeydsYW5nJzogJ2VzNSd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvbGlzdGVuYWJsZS5qcycsIFsnZ29vZy5ldmVudHMuTGlzdGVuYWJsZScsICdnb29nLmV2ZW50cy5MaXN0ZW5hYmxlS2V5J10sIFsnZ29vZy5ldmVudHMuRXZlbnRJZCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL2xpc3RlbmFibGVfdGVzdC5qcycsIFsnZ29vZy5ldmVudHMuTGlzdGVuYWJsZVRlc3QnXSwgWydnb29nLmV2ZW50cy5MaXN0ZW5hYmxlJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvbGlzdGVuZXIuanMnLCBbJ2dvb2cuZXZlbnRzLkxpc3RlbmVyJ10sIFsnZ29vZy5ldmVudHMuTGlzdGVuYWJsZUtleSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL2xpc3RlbmVybWFwLmpzJywgWydnb29nLmV2ZW50cy5MaXN0ZW5lck1hcCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5ldmVudHMuTGlzdGVuZXInLCAnZ29vZy5vYmplY3QnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2V2ZW50cy9saXN0ZW5lcm1hcF90ZXN0LmpzJywgWydnb29nLmV2ZW50cy5MaXN0ZW5lck1hcFRlc3QnXSwgWydnb29nLmRpc3Bvc2UnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRJZCcsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5MaXN0ZW5lck1hcCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL21vdXNld2hlZWxoYW5kbGVyLmpzJywgWydnb29nLmV2ZW50cy5Nb3VzZVdoZWVsRXZlbnQnLCAnZ29vZy5ldmVudHMuTW91c2VXaGVlbEhhbmRsZXInLCAnZ29vZy5ldmVudHMuTW91c2VXaGVlbEhhbmRsZXIuRXZlbnRUeXBlJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cubWF0aCcsICdnb29nLnN0eWxlJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvbW91c2V3aGVlbGhhbmRsZXJfdGVzdC5qcycsIFsnZ29vZy5ldmVudHMuTW91c2VXaGVlbEhhbmRsZXJUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRzLk1vdXNlV2hlZWxFdmVudCcsICdnb29nLmV2ZW50cy5Nb3VzZVdoZWVsSGFuZGxlcicsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLnN0cmluZycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvb25saW5laGFuZGxlci5qcycsIFsnZ29vZy5ldmVudHMuT25saW5lSGFuZGxlcicsICdnb29nLmV2ZW50cy5PbmxpbmVIYW5kbGVyLkV2ZW50VHlwZSddLCBbJ2dvb2cuVGltZXInLCAnZ29vZy5ldmVudHMuQnJvd3NlckZlYXR1cmUnLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLm5ldC5OZXR3b3JrU3RhdHVzTW9uaXRvciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL29ubGluZWxpc3RlbmVyX3Rlc3QuanMnLCBbJ2dvb2cuZXZlbnRzLk9ubGluZUhhbmRsZXJUZXN0J10sIFsnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuQnJvd3NlckZlYXR1cmUnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLk9ubGluZUhhbmRsZXInLCAnZ29vZy5uZXQuTmV0d29ya1N0YXR1c01vbml0b3InLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2V2ZW50cy9wYXN0ZWhhbmRsZXIuanMnLCBbJ2dvb2cuZXZlbnRzLlBhc3RlSGFuZGxlcicsICdnb29nLmV2ZW50cy5QYXN0ZUhhbmRsZXIuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLlBhc3RlSGFuZGxlci5TdGF0ZSddLCBbJ2dvb2cuVGltZXInLCAnZ29vZy5hc3luYy5Db25kaXRpb25hbERlbGF5JywgJ2dvb2cuZXZlbnRzLkJyb3dzZXJFdmVudCcsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cubG9nJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvcGFzdGVoYW5kbGVyX3Rlc3QuanMnLCBbJ2dvb2cuZXZlbnRzLlBhc3RlSGFuZGxlclRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5Ccm93c2VyRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuZXZlbnRzLlBhc3RlSGFuZGxlcicsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvd2hlZWxldmVudC5qcycsIFsnZ29vZy5ldmVudHMuV2hlZWxFdmVudCddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmV2ZW50cy5Ccm93c2VyRXZlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2V2ZW50cy93aGVlbGhhbmRsZXIuanMnLCBbJ2dvb2cuZXZlbnRzLldoZWVsSGFuZGxlciddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cuZXZlbnRzLldoZWVsRXZlbnQnLCAnZ29vZy5zdHlsZScsICdnb29nLnVzZXJBZ2VudCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0JywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QuaXNWZXJzaW9uJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvd2hlZWxoYW5kbGVyX3Rlc3QuanMnLCBbJ2dvb2cuZXZlbnRzLldoZWVsSGFuZGxlclRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5Ccm93c2VyRXZlbnQnLCAnZ29vZy5ldmVudHMuV2hlZWxFdmVudCcsICdnb29nLmV2ZW50cy5XaGVlbEhhbmRsZXInLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZm9ybWF0L2VtYWlsYWRkcmVzcy5qcycsIFsnZ29vZy5mb3JtYXQuRW1haWxBZGRyZXNzJ10sIFsnZ29vZy5zdHJpbmcnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2Zvcm1hdC9lbWFpbGFkZHJlc3NfdGVzdC5qcycsIFsnZ29vZy5mb3JtYXQuRW1haWxBZGRyZXNzVGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5mb3JtYXQuRW1haWxBZGRyZXNzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdmb3JtYXQvZm9ybWF0LmpzJywgWydnb29nLmZvcm1hdCddLCBbJ2dvb2cuaTE4bi5HcmFwaGVtZUJyZWFrJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdmb3JtYXQvZm9ybWF0X3Rlc3QuanMnLCBbJ2dvb2cuZm9ybWF0VGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5mb3JtYXQnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2Zvcm1hdC9odG1scHJldHR5cHJpbnRlci5qcycsIFsnZ29vZy5mb3JtYXQuSHRtbFByZXR0eVByaW50ZXInLCAnZ29vZy5mb3JtYXQuSHRtbFByZXR0eVByaW50ZXIuQnVmZmVyJ10sIFsnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmluZy5TdHJpbmdCdWZmZXInXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2Zvcm1hdC9odG1scHJldHR5cHJpbnRlcl90ZXN0LmpzJywgWydnb29nLmZvcm1hdC5IdG1sUHJldHR5UHJpbnRlclRlc3QnXSwgWydnb29nLmZvcm1hdC5IdG1sUHJldHR5UHJpbnRlcicsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdmb3JtYXQvaW50ZXJuYXRpb25hbGl6ZWRlbWFpbGFkZHJlc3MuanMnLCBbJ2dvb2cuZm9ybWF0LkludGVybmF0aW9uYWxpemVkRW1haWxBZGRyZXNzJ10sIFsnZ29vZy5mb3JtYXQuRW1haWxBZGRyZXNzJywgJ2dvb2cuc3RyaW5nJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdmb3JtYXQvaW50ZXJuYXRpb25hbGl6ZWRlbWFpbGFkZHJlc3NfdGVzdC5qcycsIFsnZ29vZy5mb3JtYXQuSW50ZXJuYXRpb25hbGl6ZWRFbWFpbEFkZHJlc3NUZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmZvcm1hdC5JbnRlcm5hdGlvbmFsaXplZEVtYWlsQWRkcmVzcycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZm9ybWF0L2pzb25wcmV0dHlwcmludGVyLmpzJywgWydnb29nLmZvcm1hdC5Kc29uUHJldHR5UHJpbnRlcicsICdnb29nLmZvcm1hdC5Kc29uUHJldHR5UHJpbnRlci5TYWZlSHRtbERlbGltaXRlcnMnLCAnZ29vZy5mb3JtYXQuSnNvblByZXR0eVByaW50ZXIuVGV4dERlbGltaXRlcnMnXSwgWydnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5qc29uJywgJ2dvb2cuanNvbi5TZXJpYWxpemVyJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3RyaW5nLmZvcm1hdCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZm9ybWF0L2pzb25wcmV0dHlwcmludGVyX3Rlc3QuanMnLCBbJ2dvb2cuZm9ybWF0Lkpzb25QcmV0dHlQcmludGVyVGVzdCddLCBbJ2dvb2cuZm9ybWF0Lkpzb25QcmV0dHlQcmludGVyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdmcy9lbnRyeS5qcycsIFsnZ29vZy5mcy5EaXJlY3RvcnlFbnRyeScsICdnb29nLmZzLkRpcmVjdG9yeUVudHJ5LkJlaGF2aW9yJywgJ2dvb2cuZnMuRW50cnknLCAnZ29vZy5mcy5GaWxlRW50cnknXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdmcy9lbnRyeWltcGwuanMnLCBbJ2dvb2cuZnMuRGlyZWN0b3J5RW50cnlJbXBsJywgJ2dvb2cuZnMuRW50cnlJbXBsJywgJ2dvb2cuZnMuRmlsZUVudHJ5SW1wbCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3luYy5EZWZlcnJlZCcsICdnb29nLmZzLkRpcmVjdG9yeUVudHJ5JywgJ2dvb2cuZnMuRW50cnknLCAnZ29vZy5mcy5FcnJvcicsICdnb29nLmZzLkZpbGVFbnRyeScsICdnb29nLmZzLkZpbGVXcml0ZXInLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5zdHJpbmcnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2ZzL2Vycm9yLmpzJywgWydnb29nLmZzLkRPTUVycm9yTGlrZScsICdnb29nLmZzLkVycm9yJywgJ2dvb2cuZnMuRXJyb3IuRXJyb3JDb2RlJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZGVidWcuRXJyb3InLCAnZ29vZy5vYmplY3QnLCAnZ29vZy5zdHJpbmcnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2ZzL2ZpbGVyZWFkZXIuanMnLCBbJ2dvb2cuZnMuRmlsZVJlYWRlcicsICdnb29nLmZzLkZpbGVSZWFkZXIuRXZlbnRUeXBlJywgJ2dvb2cuZnMuRmlsZVJlYWRlci5SZWFkeVN0YXRlJ10sIFsnZ29vZy5hc3luYy5EZWZlcnJlZCcsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmZzLkVycm9yJywgJ2dvb2cuZnMuUHJvZ3Jlc3NFdmVudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZnMvZmlsZXNhdmVyLmpzJywgWydnb29nLmZzLkZpbGVTYXZlcicsICdnb29nLmZzLkZpbGVTYXZlci5FdmVudFR5cGUnLCAnZ29vZy5mcy5GaWxlU2F2ZXIuUmVhZHlTdGF0ZSddLCBbJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cuZnMuRXJyb3InLCAnZ29vZy5mcy5Qcm9ncmVzc0V2ZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdmcy9maWxlc3lzdGVtLmpzJywgWydnb29nLmZzLkZpbGVTeXN0ZW0nXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdmcy9maWxlc3lzdGVtaW1wbC5qcycsIFsnZ29vZy5mcy5GaWxlU3lzdGVtSW1wbCddLCBbJ2dvb2cuZnMuRGlyZWN0b3J5RW50cnlJbXBsJywgJ2dvb2cuZnMuRmlsZVN5c3RlbSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZnMvZmlsZXdyaXRlci5qcycsIFsnZ29vZy5mcy5GaWxlV3JpdGVyJ10sIFsnZ29vZy5mcy5FcnJvcicsICdnb29nLmZzLkZpbGVTYXZlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZnMvZnMuanMnLCBbJ2dvb2cuZnMnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuYXN5bmMuRGVmZXJyZWQnLCAnZ29vZy5mcy5FcnJvcicsICdnb29nLmZzLkZpbGVSZWFkZXInLCAnZ29vZy5mcy5GaWxlU3lzdGVtSW1wbCcsICdnb29nLmZzLnVybCcsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZnMvZnNfdGVzdC5qcycsIFsnZ29vZy5mc1Rlc3QnXSwgWydnb29nLlByb21pc2UnLCAnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZnMnLCAnZ29vZy5mcy5EaXJlY3RvcnlFbnRyeScsICdnb29nLmZzLkVycm9yJywgJ2dvb2cuZnMuRmlsZVJlYWRlcicsICdnb29nLmZzLkZpbGVTYXZlcicsICdnb29nLnN0cmluZycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZnMvcHJvZ3Jlc3NldmVudC5qcycsIFsnZ29vZy5mcy5Qcm9ncmVzc0V2ZW50J10sIFsnZ29vZy5ldmVudHMuRXZlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2ZzL3VybC5qcycsIFsnZ29vZy5mcy51cmwnXSwgW10sIHsnbGFuZyc6ICdlczYnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZnMvdXJsX3Rlc3QuanMnLCBbJ2dvb2cudXJsVGVzdCddLCBbJ2dvb2cuZnMudXJsJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdmdW5jdGlvbnMvZnVuY3Rpb25zLmpzJywgWydnb29nLmZ1bmN0aW9ucyddLCBbXSwgeydsYW5nJzogJ2VzNid9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdmdW5jdGlvbnMvZnVuY3Rpb25zX3Rlc3QuanMnLCBbJ2dvb2cuZnVuY3Rpb25zVGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2Z4L2Fic3RyYWN0ZHJhZ2Ryb3AuanMnLCBbJ2dvb2cuZnguQWJzdHJhY3REcmFnRHJvcCcsICdnb29nLmZ4LkFic3RyYWN0RHJhZ0Ryb3AuRXZlbnRUeXBlJywgJ2dvb2cuZnguRHJhZ0Ryb3BFdmVudCcsICdnb29nLmZ4LkRyYWdEcm9wSXRlbSddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZnguRHJhZ2dlcicsICdnb29nLm1hdGguQm94JywgJ2dvb2cubWF0aC5Db29yZGluYXRlJywgJ2dvb2cuc3R5bGUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2Z4L2Fic3RyYWN0ZHJhZ2Ryb3BfdGVzdC5qcycsIFsnZ29vZy5meC5BYnN0cmFjdERyYWdEcm9wVGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5meC5BYnN0cmFjdERyYWdEcm9wJywgJ2dvb2cuZnguRHJhZ0Ryb3BJdGVtJywgJ2dvb2cubWF0aC5Cb3gnLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUnLCAnZ29vZy5zdHlsZScsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5ldmVudHMuRXZlbnQnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCB7J2xhbmcnOiAnZXM2J30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2Z4L2FuaW0vYW5pbS5qcycsIFsnZ29vZy5meC5hbmltJywgJ2dvb2cuZnguYW5pbS5BbmltYXRlZCddLCBbJ2dvb2cuYXN5bmMuQW5pbWF0aW9uRGVsYXknLCAnZ29vZy5hc3luYy5EZWxheScsICdnb29nLm9iamVjdCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZngvYW5pbS9hbmltX3Rlc3QuanMnLCBbJ2dvb2cuZnguYW5pbVRlc3QnXSwgWydnb29nLmFzeW5jLkFuaW1hdGlvbkRlbGF5JywgJ2dvb2cuYXN5bmMuRGVsYXknLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5meC5BbmltYXRpb24nLCAnZ29vZy5meC5hbmltJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdmeC9hbmltYXRpb24uanMnLCBbJ2dvb2cuZnguQW5pbWF0aW9uJywgJ2dvb2cuZnguQW5pbWF0aW9uLkV2ZW50VHlwZScsICdnb29nLmZ4LkFuaW1hdGlvbi5TdGF0ZScsICdnb29nLmZ4LkFuaW1hdGlvbkV2ZW50J10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5meC5UcmFuc2l0aW9uJywgJ2dvb2cuZnguVHJhbnNpdGlvbkJhc2UnLCAnZ29vZy5meC5hbmltJywgJ2dvb2cuZnguYW5pbS5BbmltYXRlZCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZngvYW5pbWF0aW9uX3Rlc3QuanMnLCBbJ2dvb2cuZnguQW5pbWF0aW9uVGVzdCddLCBbJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZnguQW5pbWF0aW9uJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2Z4L2FuaW1hdGlvbnF1ZXVlLmpzJywgWydnb29nLmZ4LkFuaW1hdGlvblBhcmFsbGVsUXVldWUnLCAnZ29vZy5meC5BbmltYXRpb25RdWV1ZScsICdnb29nLmZ4LkFuaW1hdGlvblNlcmlhbFF1ZXVlJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5meC5BbmltYXRpb24nLCAnZ29vZy5meC5UcmFuc2l0aW9uJywgJ2dvb2cuZnguVHJhbnNpdGlvbkJhc2UnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2Z4L2FuaW1hdGlvbnF1ZXVlX3Rlc3QuanMnLCBbJ2dvb2cuZnguQW5pbWF0aW9uUXVldWVUZXN0J10sIFsnZ29vZy5ldmVudHMnLCAnZ29vZy5meC5BbmltYXRpb24nLCAnZ29vZy5meC5BbmltYXRpb25QYXJhbGxlbFF1ZXVlJywgJ2dvb2cuZnguQW5pbWF0aW9uU2VyaWFsUXVldWUnLCAnZ29vZy5meC5UcmFuc2l0aW9uJywgJ2dvb2cuZnguYW5pbScsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdmeC9jc3MzL2Z4LmpzJywgWydnb29nLmZ4LmNzczMnXSwgWydnb29nLmZ4LmNzczMuVHJhbnNpdGlvbiddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZngvY3NzMy90cmFuc2l0aW9uLmpzJywgWydnb29nLmZ4LmNzczMuVHJhbnNpdGlvbiddLCBbJ2dvb2cuVGltZXInLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZnguVHJhbnNpdGlvbkJhc2UnLCAnZ29vZy5zdHlsZScsICdnb29nLnN0eWxlLnRyYW5zaXRpb24nXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2Z4L2NzczMvdHJhbnNpdGlvbl90ZXN0LmpzJywgWydnb29nLmZ4LmNzczMuVHJhbnNpdGlvblRlc3QnXSwgWydnb29nLmRpc3Bvc2UnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmV2ZW50cycsICdnb29nLmZ4LlRyYW5zaXRpb24nLCAnZ29vZy5meC5jc3MzLlRyYW5zaXRpb24nLCAnZ29vZy5zdHlsZS50cmFuc2l0aW9uJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdmeC9jc3NzcHJpdGVhbmltYXRpb24uanMnLCBbJ2dvb2cuZnguQ3NzU3ByaXRlQW5pbWF0aW9uJ10sIFsnZ29vZy5meC5BbmltYXRpb24nXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2Z4L2Nzc3Nwcml0ZWFuaW1hdGlvbl90ZXN0LmpzJywgWydnb29nLmZ4LkNzc1Nwcml0ZUFuaW1hdGlvblRlc3QnXSwgWydnb29nLmZ4LkNzc1Nwcml0ZUFuaW1hdGlvbicsICdnb29nLm1hdGguQm94JywgJ2dvb2cubWF0aC5TaXplJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2Z4L2RvbS5qcycsIFsnZ29vZy5meC5kb20nLCAnZ29vZy5meC5kb20uQmdDb2xvclRyYW5zZm9ybScsICdnb29nLmZ4LmRvbS5Db2xvclRyYW5zZm9ybScsICdnb29nLmZ4LmRvbS5GYWRlJywgJ2dvb2cuZnguZG9tLkZhZGVJbicsICdnb29nLmZ4LmRvbS5GYWRlSW5BbmRTaG93JywgJ2dvb2cuZnguZG9tLkZhZGVPdXQnLCAnZ29vZy5meC5kb20uRmFkZU91dEFuZEhpZGUnLCAnZ29vZy5meC5kb20uUHJlZGVmaW5lZEVmZmVjdCcsICdnb29nLmZ4LmRvbS5SZXNpemUnLCAnZ29vZy5meC5kb20uUmVzaXplSGVpZ2h0JywgJ2dvb2cuZnguZG9tLlJlc2l6ZVdpZHRoJywgJ2dvb2cuZnguZG9tLlNjcm9sbCcsICdnb29nLmZ4LmRvbS5TbGlkZScsICdnb29nLmZ4LmRvbS5TbGlkZUZyb20nLCAnZ29vZy5meC5kb20uU3dpcGUnXSwgWydnb29nLmNvbG9yJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZnguQW5pbWF0aW9uJywgJ2dvb2cuZnguVHJhbnNpdGlvbicsICdnb29nLnN0eWxlJywgJ2dvb2cuc3R5bGUuYmlkaSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZngvZHJhZ2Ryb3AuanMnLCBbJ2dvb2cuZnguRHJhZ0Ryb3AnXSwgWydnb29nLmZ4LkFic3RyYWN0RHJhZ0Ryb3AnLCAnZ29vZy5meC5EcmFnRHJvcEl0ZW0nXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2Z4L2RyYWdkcm9wZ3JvdXAuanMnLCBbJ2dvb2cuZnguRHJhZ0Ryb3BHcm91cCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZnguQWJzdHJhY3REcmFnRHJvcCcsICdnb29nLmZ4LkRyYWdEcm9wSXRlbSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZngvZHJhZ2Ryb3Bncm91cF90ZXN0LmpzJywgWydnb29nLmZ4LkRyYWdEcm9wR3JvdXBUZXN0J10sIFsnZ29vZy5ldmVudHMnLCAnZ29vZy5meC5EcmFnRHJvcEdyb3VwJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdmeC9kcmFnZ2VyLmpzJywgWydnb29nLmZ4LkRyYWdFdmVudCcsICdnb29nLmZ4LkRyYWdnZXInLCAnZ29vZy5meC5EcmFnZ2VyLkV2ZW50VHlwZSddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLm1hdGguQ29vcmRpbmF0ZScsICdnb29nLm1hdGguUmVjdCcsICdnb29nLnN0eWxlJywgJ2dvb2cuc3R5bGUuYmlkaScsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZngvZHJhZ2dlcl90ZXN0LmpzJywgWydnb29nLmZ4LkRyYWdnZXJUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5Ccm93c2VyRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZnguRHJhZ2dlcicsICdnb29nLm1hdGguUmVjdCcsICdnb29nLnN0eWxlLmJpZGknLCAnZ29vZy50ZXN0aW5nLlN0cmljdE1vY2snLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZngvZHJhZ2xpc3Rncm91cC5qcycsIFsnZ29vZy5meC5EcmFnTGlzdERpcmVjdGlvbicsICdnb29nLmZ4LkRyYWdMaXN0R3JvdXAnLCAnZ29vZy5meC5EcmFnTGlzdEdyb3VwLkV2ZW50VHlwZScsICdnb29nLmZ4LkRyYWdMaXN0R3JvdXBFdmVudCcsICdnb29nLmZ4LkRyYWdMaXN0UGVybWlzc2lvbiddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZlbnRJZCcsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5meC5EcmFnZ2VyJywgJ2dvb2cubWF0aC5Db29yZGluYXRlJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3R5bGUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2Z4L2RyYWdsaXN0Z3JvdXBfdGVzdC5qcycsIFsnZ29vZy5meC5EcmFnTGlzdEdyb3VwVGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRzLkJyb3dzZXJGZWF0dXJlJywgJ2dvb2cuZXZlbnRzLkV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmZ4LkRyYWdFdmVudCcsICdnb29nLmZ4LkRyYWdMaXN0RGlyZWN0aW9uJywgJ2dvb2cuZnguRHJhZ0xpc3RHcm91cCcsICdnb29nLmZ4LkRyYWdMaXN0UGVybWlzc2lvbicsICdnb29nLmZ4LkRyYWdnZXInLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy5zdHlsZScsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdmeC9kcmFnc2Nyb2xsc3VwcG9ydC5qcycsIFsnZ29vZy5meC5EcmFnU2Nyb2xsU3VwcG9ydCddLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29nLlRpbWVyJywgJ2dvb2cuZG9tJywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUnLCAnZ29vZy5zdHlsZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZngvZHJhZ3Njcm9sbHN1cHBvcnRfdGVzdC5qcycsIFsnZ29vZy5meC5EcmFnU2Nyb2xsU3VwcG9ydFRlc3QnXSwgWydnb29nLmZ4LkRyYWdTY3JvbGxTdXBwb3J0JywgJ2dvb2cubWF0aC5Db29yZGluYXRlJywgJ2dvb2cubWF0aC5SZWN0JywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZngvZWFzaW5nLmpzJywgWydnb29nLmZ4LmVhc2luZyddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2Z4L2Vhc2luZ190ZXN0LmpzJywgWydnb29nLmZ4LmVhc2luZ1Rlc3QnXSwgWydnb29nLmZ4LmVhc2luZycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZngvZnguanMnLCBbJ2dvb2cuZngnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5meC5BbmltYXRpb24nLCAnZ29vZy5meC5BbmltYXRpb24uRXZlbnRUeXBlJywgJ2dvb2cuZnguQW5pbWF0aW9uLlN0YXRlJywgJ2dvb2cuZnguQW5pbWF0aW9uRXZlbnQnLCAnZ29vZy5meC5UcmFuc2l0aW9uLkV2ZW50VHlwZScsICdnb29nLmZ4LmVhc2luZyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZngvZnhfdGVzdC5qcycsIFsnZ29vZy5meFRlc3QnXSwgWydnb29nLmZ4LkFuaW1hdGlvbicsICdnb29nLm9iamVjdCcsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdmeC90cmFuc2l0aW9uLmpzJywgWydnb29nLmZ4LlRyYW5zaXRpb24nLCAnZ29vZy5meC5UcmFuc2l0aW9uLkV2ZW50VHlwZSddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2Z4L3RyYW5zaXRpb25iYXNlLmpzJywgWydnb29nLmZ4LlRyYW5zaXRpb25CYXNlJywgJ2dvb2cuZnguVHJhbnNpdGlvbkJhc2UuU3RhdGUnXSwgWydnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmZ4LlRyYW5zaXRpb24nXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dvb2cuanMnLCBbXSwgW10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2VzNid9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdncmFwaGljcy9hYnN0cmFjdGdyYXBoaWNzLmpzJywgWydnb29nLmdyYXBoaWNzLkFic3RyYWN0R3JhcGhpY3MnXSwgWydnb29nLmRvbScsICdnb29nLmdyYXBoaWNzLkFmZmluZVRyYW5zZm9ybScsICdnb29nLmdyYXBoaWNzLkVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5FbGxpcHNlRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLkZpbGwnLCAnZ29vZy5ncmFwaGljcy5Gb250JywgJ2dvb2cuZ3JhcGhpY3MuR3JvdXBFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuUGF0aCcsICdnb29nLmdyYXBoaWNzLlBhdGhFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuUmVjdEVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5TdHJva2UnLCAnZ29vZy5ncmFwaGljcy5TdHJva2VBbmRGaWxsRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLlRleHRFbGVtZW50JywgJ2dvb2cubWF0aC5Db29yZGluYXRlJywgJ2dvb2cubWF0aC5TaXplJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51aS5Db21wb25lbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL2FmZmluZXRyYW5zZm9ybS5qcycsIFsnZ29vZy5ncmFwaGljcy5BZmZpbmVUcmFuc2Zvcm0nXSwgW10sIHsnbGFuZyc6ICdlczYnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3MvYWZmaW5ldHJhbnNmb3JtX3Rlc3QuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuQWZmaW5lVHJhbnNmb3JtVGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5ncmFwaGljcycsICdnb29nLmdyYXBoaWNzLkFmZmluZVRyYW5zZm9ybScsICdnb29nLm1hdGgnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL2NhbnZhc2VsZW1lbnQuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuQ2FudmFzRWxsaXBzZUVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5DYW52YXNHcm91cEVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5DYW52YXNJbWFnZUVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5DYW52YXNQYXRoRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLkNhbnZhc1JlY3RFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuQ2FudmFzVGV4dEVsZW1lbnQnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uc2FmZScsICdnb29nLmdyYXBoaWNzLkVsbGlwc2VFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuRm9udCcsICdnb29nLmdyYXBoaWNzLkdyb3VwRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLkltYWdlRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLlBhdGgnLCAnZ29vZy5ncmFwaGljcy5QYXRoRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLlJlY3RFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuVGV4dEVsZW1lbnQnLCAnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucycsICdnb29nLm1hdGgnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5zdHJpbmcuQ29uc3QnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL2NhbnZhc2dyYXBoaWNzLmpzJywgWydnb29nLmdyYXBoaWNzLkNhbnZhc0dyYXBoaWNzJ10sIFsnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ncmFwaGljcy5BYnN0cmFjdEdyYXBoaWNzJywgJ2dvb2cuZ3JhcGhpY3MuQ2FudmFzRWxsaXBzZUVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5DYW52YXNHcm91cEVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5DYW52YXNJbWFnZUVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5DYW52YXNQYXRoRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLkNhbnZhc1JlY3RFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuQ2FudmFzVGV4dEVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5Gb250JywgJ2dvb2cuZ3JhcGhpY3MuU29saWRGaWxsJywgJ2dvb2cubWF0aC5TaXplJywgJ2dvb2cuc3R5bGUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL2NhbnZhc2dyYXBoaWNzX3Rlc3QuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuQ2FudmFzR3JhcGhpY3NUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5ncmFwaGljcy5DYW52YXNHcmFwaGljcycsICdnb29nLmdyYXBoaWNzLlNvbGlkRmlsbCcsICdnb29nLmdyYXBoaWNzLlN0cm9rZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3MvZWxlbWVudC5qcycsIFsnZ29vZy5ncmFwaGljcy5FbGVtZW50J10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cuZXZlbnRzLkxpc3RlbmFibGUnLCAnZ29vZy5ncmFwaGljcy5BZmZpbmVUcmFuc2Zvcm0nLCAnZ29vZy5tYXRoJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdncmFwaGljcy9lbGxpcHNlZWxlbWVudC5qcycsIFsnZ29vZy5ncmFwaGljcy5FbGxpcHNlRWxlbWVudCddLCBbJ2dvb2cuZ3JhcGhpY3MuU3Ryb2tlQW5kRmlsbEVsZW1lbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL2V4dC9jb29yZGluYXRlcy5qcycsIFsnZ29vZy5ncmFwaGljcy5leHQuY29vcmRpbmF0ZXMnXSwgWydnb29nLnN0cmluZyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3MvZXh0L2Nvb3JkaW5hdGVzX3Rlc3QuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuZXh0LmNvb3JkaW5hdGVzVGVzdCddLCBbJ2dvb2cuZ3JhcGhpY3MnLCAnZ29vZy5ncmFwaGljcy5leHQuY29vcmRpbmF0ZXMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL2V4dC9lbGVtZW50LmpzJywgWydnb29nLmdyYXBoaWNzLmV4dC5FbGVtZW50J10sIFsnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5ncmFwaGljcy5leHQuY29vcmRpbmF0ZXMnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL2V4dC9lbGVtZW50X3Rlc3QuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuZXh0LkVsZW1lbnRUZXN0J10sIFsnZ29vZy5ncmFwaGljcycsICdnb29nLmdyYXBoaWNzLmV4dCcsICdnb29nLnRlc3RpbmcuU3RyaWN0TW9jaycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3MvZXh0L2VsbGlwc2UuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuZXh0LkVsbGlwc2UnXSwgWydnb29nLmdyYXBoaWNzLmV4dC5TdHJva2VBbmRGaWxsRWxlbWVudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3MvZXh0L2V4dC5qcycsIFsnZ29vZy5ncmFwaGljcy5leHQnXSwgWydnb29nLmdyYXBoaWNzLmV4dC5FbGxpcHNlJywgJ2dvb2cuZ3JhcGhpY3MuZXh0LkdyYXBoaWNzJywgJ2dvb2cuZ3JhcGhpY3MuZXh0Lkdyb3VwJywgJ2dvb2cuZ3JhcGhpY3MuZXh0LkltYWdlJywgJ2dvb2cuZ3JhcGhpY3MuZXh0LlJlY3RhbmdsZScsICdnb29nLmdyYXBoaWNzLmV4dC5TaGFwZScsICdnb29nLmdyYXBoaWNzLmV4dC5jb29yZGluYXRlcyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3MvZXh0L2dyYXBoaWNzLmpzJywgWydnb29nLmdyYXBoaWNzLmV4dC5HcmFwaGljcyddLCBbJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmdyYXBoaWNzJywgJ2dvb2cuZ3JhcGhpY3MuZXh0Lkdyb3VwJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdncmFwaGljcy9leHQvZ3JvdXAuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuZXh0Lkdyb3VwJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmdyYXBoaWNzLmV4dC5FbGVtZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdncmFwaGljcy9leHQvaW1hZ2UuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuZXh0LkltYWdlJ10sIFsnZ29vZy5ncmFwaGljcy5leHQuRWxlbWVudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3MvZXh0L3BhdGguanMnLCBbJ2dvb2cuZ3JhcGhpY3MuZXh0LlBhdGgnXSwgWydnb29nLmdyYXBoaWNzLkFmZmluZVRyYW5zZm9ybScsICdnb29nLmdyYXBoaWNzLlBhdGgnLCAnZ29vZy5tYXRoLlJlY3QnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL2V4dC9wYXRoX3Rlc3QuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuZXh0LlBhdGhUZXN0J10sIFsnZ29vZy5ncmFwaGljcycsICdnb29nLmdyYXBoaWNzLmV4dC5QYXRoJywgJ2dvb2cubWF0aC5SZWN0JywgJ2dvb2cudGVzdGluZy5ncmFwaGljcycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3MvZXh0L3JlY3RhbmdsZS5qcycsIFsnZ29vZy5ncmFwaGljcy5leHQuUmVjdGFuZ2xlJ10sIFsnZ29vZy5ncmFwaGljcy5leHQuU3Ryb2tlQW5kRmlsbEVsZW1lbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL2V4dC9zaGFwZS5qcycsIFsnZ29vZy5ncmFwaGljcy5leHQuU2hhcGUnXSwgWydnb29nLmdyYXBoaWNzLmV4dC5TdHJva2VBbmRGaWxsRWxlbWVudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3MvZXh0L3N0cm9rZWFuZGZpbGxlbGVtZW50LmpzJywgWydnb29nLmdyYXBoaWNzLmV4dC5TdHJva2VBbmRGaWxsRWxlbWVudCddLCBbJ2dvb2cuZ3JhcGhpY3MuZXh0LkVsZW1lbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL2ZpbGwuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuRmlsbCddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL2ZvbnQuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuRm9udCddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL2dyYXBoaWNzLmpzJywgWydnb29nLmdyYXBoaWNzJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5ncmFwaGljcy5DYW52YXNHcmFwaGljcycsICdnb29nLmdyYXBoaWNzLlN2Z0dyYXBoaWNzJywgJ2dvb2cuZ3JhcGhpY3MuVm1sR3JhcGhpY3MnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL2dyb3VwZWxlbWVudC5qcycsIFsnZ29vZy5ncmFwaGljcy5Hcm91cEVsZW1lbnQnXSwgWydnb29nLmdyYXBoaWNzLkVsZW1lbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL2ltYWdlZWxlbWVudC5qcycsIFsnZ29vZy5ncmFwaGljcy5JbWFnZUVsZW1lbnQnXSwgWydnb29nLmdyYXBoaWNzLkVsZW1lbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL2xpbmVhcmdyYWRpZW50LmpzJywgWydnb29nLmdyYXBoaWNzLkxpbmVhckdyYWRpZW50J10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZ3JhcGhpY3MuRmlsbCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3MvcGF0aC5qcycsIFsnZ29vZy5ncmFwaGljcy5QYXRoJywgJ2dvb2cuZ3JhcGhpY3MuUGF0aC5TZWdtZW50J10sIFsnZ29vZy5hcnJheScsICdnb29nLmdyYXBoaWNzLkFmZmluZVRyYW5zZm9ybScsICdnb29nLm1hdGgnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL3BhdGhfdGVzdC5qcycsIFsnZ29vZy5ncmFwaGljcy5QYXRoVGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5ncmFwaGljcy5BZmZpbmVUcmFuc2Zvcm0nLCAnZ29vZy5ncmFwaGljcy5QYXRoJywgJ2dvb2cudGVzdGluZy5ncmFwaGljcycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3MvcGF0aGVsZW1lbnQuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuUGF0aEVsZW1lbnQnXSwgWydnb29nLmdyYXBoaWNzLlN0cm9rZUFuZEZpbGxFbGVtZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdncmFwaGljcy9wYXRocy5qcycsIFsnZ29vZy5ncmFwaGljcy5wYXRocyddLCBbJ2dvb2cuZ3JhcGhpY3MuUGF0aCcsICdnb29nLm1hdGguQ29vcmRpbmF0ZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3MvcGF0aHNfdGVzdC5qcycsIFsnZ29vZy5ncmFwaGljcy5wYXRoc1Rlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmdyYXBoaWNzJywgJ2dvb2cuZ3JhcGhpY3MucGF0aHMnLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL3JlY3RlbGVtZW50LmpzJywgWydnb29nLmdyYXBoaWNzLlJlY3RFbGVtZW50J10sIFsnZ29vZy5ncmFwaGljcy5TdHJva2VBbmRGaWxsRWxlbWVudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3Mvc29saWRmaWxsLmpzJywgWydnb29nLmdyYXBoaWNzLlNvbGlkRmlsbCddLCBbJ2dvb2cuZ3JhcGhpY3MuRmlsbCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3Mvc29saWRmaWxsX3Rlc3QuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuU29saWRGaWxsVGVzdCddLCBbJ2dvb2cuZ3JhcGhpY3MuU29saWRGaWxsJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdncmFwaGljcy9zdHJva2UuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuU3Ryb2tlJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3Mvc3Ryb2tlYW5kZmlsbGVsZW1lbnQuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuU3Ryb2tlQW5kRmlsbEVsZW1lbnQnXSwgWydnb29nLmdyYXBoaWNzLkVsZW1lbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL3N2Z2VsZW1lbnQuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuU3ZnRWxsaXBzZUVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5TdmdHcm91cEVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5TdmdJbWFnZUVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5TdmdQYXRoRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLlN2Z1JlY3RFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuU3ZnVGV4dEVsZW1lbnQnXSwgWydnb29nLmRvbScsICdnb29nLmdyYXBoaWNzLkVsbGlwc2VFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuR3JvdXBFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuSW1hZ2VFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuUGF0aEVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5SZWN0RWxlbWVudCcsICdnb29nLmdyYXBoaWNzLlRleHRFbGVtZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdncmFwaGljcy9zdmdncmFwaGljcy5qcycsIFsnZ29vZy5ncmFwaGljcy5TdmdHcmFwaGljcyddLCBbJ2dvb2cuVGltZXInLCAnZ29vZy5kb20nLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmdyYXBoaWNzLkFic3RyYWN0R3JhcGhpY3MnLCAnZ29vZy5ncmFwaGljcy5Gb250JywgJ2dvb2cuZ3JhcGhpY3MuTGluZWFyR3JhZGllbnQnLCAnZ29vZy5ncmFwaGljcy5QYXRoJywgJ2dvb2cuZ3JhcGhpY3MuU29saWRGaWxsJywgJ2dvb2cuZ3JhcGhpY3MuU3Ryb2tlJywgJ2dvb2cuZ3JhcGhpY3MuU3ZnRWxsaXBzZUVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5TdmdHcm91cEVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5TdmdJbWFnZUVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5TdmdQYXRoRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLlN2Z1JlY3RFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuU3ZnVGV4dEVsZW1lbnQnLCAnZ29vZy5tYXRoJywgJ2dvb2cubWF0aC5TaXplJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL3N2Z2dyYXBoaWNzX3Rlc3QuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuU3ZnR3JhcGhpY3NUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5ncmFwaGljcy5BZmZpbmVUcmFuc2Zvcm0nLCAnZ29vZy5ncmFwaGljcy5Tb2xpZEZpbGwnLCAnZ29vZy5ncmFwaGljcy5TdmdHcmFwaGljcycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3MvdGV4dGVsZW1lbnQuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuVGV4dEVsZW1lbnQnXSwgWydnb29nLmdyYXBoaWNzLlN0cm9rZUFuZEZpbGxFbGVtZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdncmFwaGljcy92bWxlbGVtZW50LmpzJywgWydnb29nLmdyYXBoaWNzLlZtbEVsbGlwc2VFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuVm1sR3JvdXBFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuVm1sSW1hZ2VFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuVm1sUGF0aEVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5WbWxSZWN0RWxlbWVudCcsICdnb29nLmdyYXBoaWNzLlZtbFRleHRFbGVtZW50J10sIFsnZ29vZy5kb20nLCAnZ29vZy5ncmFwaGljcy5FbGxpcHNlRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLkdyb3VwRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLkltYWdlRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLlBhdGhFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuUmVjdEVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5UZXh0RWxlbWVudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3Mvdm1sZ3JhcGhpY3MuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuVm1sR3JhcGhpY3MnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uc2FmZScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZ3JhcGhpY3MuQWJzdHJhY3RHcmFwaGljcycsICdnb29nLmdyYXBoaWNzLkZvbnQnLCAnZ29vZy5ncmFwaGljcy5MaW5lYXJHcmFkaWVudCcsICdnb29nLmdyYXBoaWNzLlBhdGgnLCAnZ29vZy5ncmFwaGljcy5Tb2xpZEZpbGwnLCAnZ29vZy5ncmFwaGljcy5WbWxFbGxpcHNlRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLlZtbEdyb3VwRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLlZtbEltYWdlRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLlZtbFBhdGhFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuVm1sUmVjdEVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5WbWxUZXh0RWxlbWVudCcsICdnb29nLmh0bWwudW5jaGVja2VkY29udmVyc2lvbnMnLCAnZ29vZy5tYXRoJywgJ2dvb2cubWF0aC5TaXplJywgJ2dvb2cucmVmbGVjdCcsICdnb29nLnN0cmluZycsICdnb29nLnN0cmluZy5Db25zdCcsICdnb29nLnN0eWxlJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdoaXN0b3J5L2V2ZW50LmpzJywgWydnb29nLmhpc3RvcnkuRXZlbnQnXSwgWydnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmhpc3RvcnkuRXZlbnRUeXBlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdoaXN0b3J5L2V2ZW50dHlwZS5qcycsIFsnZ29vZy5oaXN0b3J5LkV2ZW50VHlwZSddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2hpc3RvcnkvaGlzdG9yeS5qcycsIFsnZ29vZy5IaXN0b3J5JywgJ2dvb2cuSGlzdG9yeS5FdmVudCcsICdnb29nLkhpc3RvcnkuRXZlbnRUeXBlJ10sIFsnZ29vZy5UaW1lcicsICdnb29nLmFzc2VydHMnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uSW5wdXRUeXBlJywgJ2dvb2cuZG9tLnNhZmUnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmhpc3RvcnkuRXZlbnQnLCAnZ29vZy5oaXN0b3J5LkV2ZW50VHlwZScsICdnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCcsICdnb29nLmh0bWwudW5jaGVja2VkY29udmVyc2lvbnMnLCAnZ29vZy5sYWJzLnVzZXJBZ2VudC5kZXZpY2UnLCAnZ29vZy5tZW1vaXplJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3RyaW5nLkNvbnN0JywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdoaXN0b3J5L2hpc3RvcnlfdGVzdC5qcycsIFsnZ29vZy5IaXN0b3J5VGVzdCddLCBbJ2dvb2cuSGlzdG9yeScsICdnb29nLmRpc3Bvc2UnLCAnZ29vZy5kb20nLCAnZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCcsICdnb29nLnN0cmluZy5Db25zdCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaGlzdG9yeS9odG1sNWhpc3RvcnkuanMnLCBbJ2dvb2cuaGlzdG9yeS5IdG1sNUhpc3RvcnknLCAnZ29vZy5oaXN0b3J5Lkh0bWw1SGlzdG9yeS5Ub2tlblRyYW5zZm9ybWVyJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmhpc3RvcnkuRXZlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2hpc3RvcnkvaHRtbDVoaXN0b3J5X3Rlc3QuanMnLCBbJ2dvb2cuaGlzdG9yeS5IdG1sNUhpc3RvcnlUZXN0J10sIFsnZ29vZy5UaW1lcicsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5oaXN0b3J5LkV2ZW50VHlwZScsICdnb29nLmhpc3RvcnkuSHRtbDVIaXN0b3J5JywgJ2dvb2cudGVzdGluZy5Nb2NrQ29udHJvbCcsICdnb29nLnRlc3RpbmcubW9ja21hdGNoZXJzJywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaHRtbC9jc3NzcGVjaWZpY2l0eS5qcycsIFsnZ29vZy5odG1sLkNzc1NwZWNpZmljaXR5J10sIFsnZ29vZy51c2VyQWdlbnQnLCAnZ29vZy51c2VyQWdlbnQucHJvZHVjdCddLCB7J21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvY3Nzc3BlY2lmaWNpdHlfdGVzdC5qcycsIFsnZ29vZy5odG1sLkNzc1NwZWNpZmljaXR5VGVzdCddLCBbJ2dvb2cuaHRtbC5Dc3NTcGVjaWZpY2l0eScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50JywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL2ZsYXNoLmpzJywgWydnb29nLmh0bWwuZmxhc2gnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5odG1sLlNhZmVIdG1sJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL2ZsYXNoX3Rlc3QuanMnLCBbJ2dvb2cuaHRtbC5mbGFzaFRlc3QnXSwgWydnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCcsICdnb29nLmh0bWwuZmxhc2gnLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvbGVnYWN5Y29udmVyc2lvbnMuanMnLCBbJ2dvb2cuaHRtbC5sZWdhY3ljb252ZXJzaW9ucyddLCBbJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLmh0bWwuU2FmZVNjcmlwdCcsICdnb29nLmh0bWwuU2FmZVN0eWxlJywgJ2dvb2cuaHRtbC5TYWZlU3R5bGVTaGVldCcsICdnb29nLmh0bWwuU2FmZVVybCcsICdnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL2xlZ2FjeWNvbnZlcnNpb25zX3Rlc3QuanMnLCBbJ2dvb2cuaHRtbC5sZWdhY3ljb252ZXJzaW9uc1Rlc3QnXSwgWydnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5odG1sLlNhZmVTY3JpcHQnLCAnZ29vZy5odG1sLlNhZmVTdHlsZScsICdnb29nLmh0bWwuU2FmZVN0eWxlU2hlZXQnLCAnZ29vZy5odG1sLlNhZmVVcmwnLCAnZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCcsICdnb29nLmh0bWwubGVnYWN5Y29udmVyc2lvbnMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvc2FmZWh0bWwuanMnLCBbJ2dvb2cuaHRtbC5TYWZlSHRtbCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20udGFncycsICdnb29nLmh0bWwuU2FmZVNjcmlwdCcsICdnb29nLmh0bWwuU2FmZVN0eWxlJywgJ2dvb2cuaHRtbC5TYWZlU3R5bGVTaGVldCcsICdnb29nLmh0bWwuU2FmZVVybCcsICdnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsJywgJ2dvb2cuaHRtbC50cnVzdGVkdHlwZXMnLCAnZ29vZy5pMThuLmJpZGkuRGlyJywgJ2dvb2cuaTE4bi5iaWRpLkRpcmVjdGlvbmFsU3RyaW5nJywgJ2dvb2cubGFicy51c2VyQWdlbnQuYnJvd3NlcicsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmluZy5Db25zdCcsICdnb29nLnN0cmluZy5UeXBlZFN0cmluZycsICdnb29nLnN0cmluZy5pbnRlcm5hbCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaHRtbC9zYWZlaHRtbF90ZXN0LmpzJywgWydnb29nLmh0bWwuc2FmZUh0bWxUZXN0J10sIFsnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dvb2cuaHRtbC5TYWZlU2NyaXB0JywgJ2dvb2cuaHRtbC5TYWZlU3R5bGUnLCAnZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0JywgJ2dvb2cuaHRtbC5TYWZlVXJsJywgJ2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwnLCAnZ29vZy5odG1sLnRlc3RpbmcnLCAnZ29vZy5odG1sLnRydXN0ZWR0eXBlcycsICdnb29nLmkxOG4uYmlkaS5EaXInLCAnZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RyaW5nLkNvbnN0JywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3NhZmVodG1sZm9ybWF0dGVyLmpzJywgWydnb29nLmh0bWwuU2FmZUh0bWxGb3JtYXR0ZXInXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5kb20udGFncycsICdnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5zdHJpbmcnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvc2FmZWh0bWxmb3JtYXR0ZXJfdGVzdC5qcycsIFsnZ29vZy5odG1sLnNhZmVIdG1sRm9ybWF0dGVyVGVzdCddLCBbJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLmh0bWwuU2FmZUh0bWxGb3JtYXR0ZXInLCAnZ29vZy5odG1sLlNhZmVVcmwnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvc2FmZXNjcmlwdC5qcycsIFsnZ29vZy5odG1sLlNhZmVTY3JpcHQnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5odG1sLnRydXN0ZWR0eXBlcycsICdnb29nLnN0cmluZy5Db25zdCcsICdnb29nLnN0cmluZy5UeXBlZFN0cmluZyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaHRtbC9zYWZlc2NyaXB0X3Rlc3QuanMnLCBbJ2dvb2cuaHRtbC5zYWZlU2NyaXB0VGVzdCddLCBbJ2dvb2cuaHRtbC5TYWZlU2NyaXB0JywgJ2dvb2cuaHRtbC50cnVzdGVkdHlwZXMnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvc2FmZXN0eWxlLmpzJywgWydnb29nLmh0bWwuU2FmZVN0eWxlJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5odG1sLlNhZmVVcmwnLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy5zdHJpbmcuVHlwZWRTdHJpbmcnLCAnZ29vZy5zdHJpbmcuaW50ZXJuYWwnXSwgeydsYW5nJzogJ2VzNSd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3NhZmVzdHlsZV90ZXN0LmpzJywgWydnb29nLmh0bWwuc2FmZVN0eWxlVGVzdCddLCBbJ2dvb2cuaHRtbC5TYWZlU3R5bGUnLCAnZ29vZy5odG1sLlNhZmVVcmwnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvc2FmZXN0eWxlc2hlZXQuanMnLCBbJ2dvb2cuaHRtbC5TYWZlU3R5bGVTaGVldCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuaHRtbC5TYWZlU3R5bGUnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy5zdHJpbmcuVHlwZWRTdHJpbmcnLCAnZ29vZy5zdHJpbmcuaW50ZXJuYWwnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvc2FmZXN0eWxlc2hlZXRfdGVzdC5qcycsIFsnZ29vZy5odG1sLnNhZmVTdHlsZVNoZWV0VGVzdCddLCBbJ2dvb2cuaHRtbC5TYWZlU3R5bGUnLCAnZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0JywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RyaW5nLkNvbnN0JywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3NhZmV1cmwuanMnLCBbJ2dvb2cuaHRtbC5TYWZlVXJsJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZnMudXJsJywgJ2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwnLCAnZ29vZy5pMThuLmJpZGkuRGlyJywgJ2dvb2cuaTE4bi5iaWRpLkRpcmVjdGlvbmFsU3RyaW5nJywgJ2dvb2cuc3RyaW5nLkNvbnN0JywgJ2dvb2cuc3RyaW5nLlR5cGVkU3RyaW5nJywgJ2dvb2cuc3RyaW5nLmludGVybmFsJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3NhZmV1cmxfdGVzdC5qcycsIFsnZ29vZy5odG1sLnNhZmVVcmxUZXN0J10sIFsnZ29vZy5odG1sLlNhZmVVcmwnLCAnZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCcsICdnb29nLmh0bWwuc2FmZVVybFRlc3RWZWN0b3JzJywgJ2dvb2cuaTE4bi5iaWRpLkRpcicsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmluZy5Db25zdCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaHRtbC9zYWZldXJsX3Rlc3RfdmVjdG9ycy5qcycsIFsnZ29vZy5odG1sLnNhZmVVcmxUZXN0VmVjdG9ycyddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvc2FuaXRpemVyL2F0dHJpYnV0ZXdoaXRlbGlzdC5qcycsIFsnZ29vZy5odG1sLnNhbml0aXplci5BdHRyaWJ1dGVTYW5pdGl6ZWRXaGl0ZWxpc3QnLCAnZ29vZy5odG1sLnNhbml0aXplci5BdHRyaWJ1dGVXaGl0ZWxpc3QnXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3Nhbml0aXplci9jc3Nwcm9wZXJ0eXNhbml0aXplci5qcycsIFsnZ29vZy5odG1sLnNhbml0aXplci5Dc3NQcm9wZXJ0eVNhbml0aXplciddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmh0bWwuU2FmZVVybCcsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmluZyddLCB7J21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvc2FuaXRpemVyL2Nzc3Byb3BlcnR5c2FuaXRpemVyX3Rlc3QuanMnLCBbJ2dvb2cuaHRtbC5zYW5pdGl6ZXIuQ3NzUHJvcGVydHlTYW5pdGl6ZXJUZXN0J10sIFsnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5odG1sLlNhZmVVcmwnLCAnZ29vZy5odG1sLnNhbml0aXplci5Dc3NQcm9wZXJ0eVNhbml0aXplcicsICdnb29nLmh0bWwuc2FuaXRpemVyLm5vY2xvYmJlcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3Nhbml0aXplci9jc3NzYW5pdGl6ZXIuanMnLCBbJ2dvb2cuaHRtbC5zYW5pdGl6ZXIuQ3NzU2FuaXRpemVyJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLnNhZmUnLCAnZ29vZy5odG1sLkNzc1NwZWNpZmljaXR5JywgJ2dvb2cuaHRtbC5TYWZlU3R5bGUnLCAnZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0JywgJ2dvb2cuaHRtbC5TYWZlVXJsJywgJ2dvb2cuaHRtbC5zYW5pdGl6ZXIuQ3NzUHJvcGVydHlTYW5pdGl6ZXInLCAnZ29vZy5odG1sLnNhbml0aXplci5ub2Nsb2JiZXInLCAnZ29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3RyaW5nLkNvbnN0JywgJ2dvb2cudXNlckFnZW50JywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvc2FuaXRpemVyL2Nzc3Nhbml0aXplcl90ZXN0LmpzJywgWydnb29nLmh0bWwuQ3NzU2FuaXRpemVyVGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5odG1sLlNhZmVTdHlsZScsICdnb29nLmh0bWwuU2FmZVN0eWxlU2hlZXQnLCAnZ29vZy5odG1sLlNhZmVVcmwnLCAnZ29vZy5odG1sLnNhbml0aXplci5Dc3NTYW5pdGl6ZXInLCAnZ29vZy5odG1sLnRlc3RpbmcnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy50ZXN0aW5nLmRvbScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50JywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QnLCAnZ29vZy51c2VyQWdlbnQucHJvZHVjdC5pc1ZlcnNpb24nXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3Nhbml0aXplci9lbGVtZW50d2Vha21hcC5qcycsIFsnZ29vZy5odG1sLnNhbml0aXplci5FbGVtZW50V2Vha01hcCddLCBbJ2dvb2cuaHRtbC5zYW5pdGl6ZXIubm9jbG9iYmVyJ10sIHsnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaHRtbC9zYW5pdGl6ZXIvZWxlbWVudHdlYWttYXBfdGVzdC5qcycsIFsnZ29vZy5odG1sLnNhbml0aXplci5FbGVtZW50V2Vha01hcFRlc3QnXSwgWydnb29nLmh0bWwuc2FuaXRpemVyLkVsZW1lbnRXZWFrTWFwJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3Nhbml0aXplci9odG1sX3Rlc3RfdmVjdG9ycy5qcycsIFsnZ29vZy5odG1sLmh0bWxUZXN0VmVjdG9ycyddLCBbXSwgeydsYW5nJzogJ2VzNSd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3Nhbml0aXplci9odG1sc2FuaXRpemVyLmpzJywgWydnb29nLmh0bWwuc2FuaXRpemVyLkh0bWxTYW5pdGl6ZXInLCAnZ29vZy5odG1sLnNhbml0aXplci5IdG1sU2FuaXRpemVyLkJ1aWxkZXInLCAnZ29vZy5odG1sLnNhbml0aXplci5IdG1sU2FuaXRpemVyQXR0cmlidXRlUG9saWN5JywgJ2dvb2cuaHRtbC5zYW5pdGl6ZXIuSHRtbFNhbml0aXplclBvbGljeScsICdnb29nLmh0bWwuc2FuaXRpemVyLkh0bWxTYW5pdGl6ZXJQb2xpY3lDb250ZXh0JywgJ2dvb2cuaHRtbC5zYW5pdGl6ZXIuSHRtbFNhbml0aXplclBvbGljeUhpbnRzJywgJ2dvb2cuaHRtbC5zYW5pdGl6ZXIuSHRtbFNhbml0aXplclVybFBvbGljeSddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dvb2cuaHRtbC5TYWZlU3R5bGUnLCAnZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0JywgJ2dvb2cuaHRtbC5TYWZlVXJsJywgJ2dvb2cuaHRtbC5zYW5pdGl6ZXIuQXR0cmlidXRlU2FuaXRpemVkV2hpdGVsaXN0JywgJ2dvb2cuaHRtbC5zYW5pdGl6ZXIuQXR0cmlidXRlV2hpdGVsaXN0JywgJ2dvb2cuaHRtbC5zYW5pdGl6ZXIuQ3NzU2FuaXRpemVyJywgJ2dvb2cuaHRtbC5zYW5pdGl6ZXIuU2FmZURvbVRyZWVQcm9jZXNzb3InLCAnZ29vZy5odG1sLnNhbml0aXplci5UYWdCbGFja2xpc3QnLCAnZ29vZy5odG1sLnNhbml0aXplci5UYWdXaGl0ZWxpc3QnLCAnZ29vZy5odG1sLnNhbml0aXplci5ub2Nsb2JiZXInLCAnZ29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3RyaW5nLkNvbnN0J10sIHsnbGFuZyc6ICdlczUnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaHRtbC9zYW5pdGl6ZXIvaHRtbHNhbml0aXplcl90ZXN0LmpzJywgWydnb29nLmh0bWwuSHRtbFNhbml0aXplclRlc3QnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZG9tJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLmh0bWwuU2FmZVVybCcsICdnb29nLmh0bWwuc2FuaXRpemVyLkh0bWxTYW5pdGl6ZXInLCAnZ29vZy5odG1sLnNhbml0aXplci5IdG1sU2FuaXRpemVyLkJ1aWxkZXInLCAnZ29vZy5odG1sLnNhbml0aXplci5UYWdXaGl0ZWxpc3QnLCAnZ29vZy5odG1sLnRlc3RpbmcnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy50ZXN0aW5nLmRvbScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50JywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3Nhbml0aXplci9odG1sc2FuaXRpemVyX3VuaWZpZWRfdGVzdC5qcycsIFsnZ29vZy5odG1sLkh0bWxTYW5pdGl6ZXJVbmlmaWVkVGVzdCddLCBbJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLmh0bWwuaHRtbFRlc3RWZWN0b3JzJywgJ2dvb2cuaHRtbC5zYW5pdGl6ZXIuSHRtbFNhbml0aXplci5CdWlsZGVyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3Nhbml0aXplci9ub2Nsb2JiZXIuanMnLCBbJ2dvb2cuaHRtbC5zYW5pdGl6ZXIubm9jbG9iYmVyJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QnXSwgeydsYW5nJzogJ2VzNScsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3Nhbml0aXplci9ub2Nsb2JiZXJfdGVzdC5qcycsIFsnZ29vZy5odG1sLnNhbml0aXplci5ub2Nsb2JiZXJUZXN0J10sIFsnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5odG1sLnNhbml0aXplci5ub2Nsb2JiZXInLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLmRvbScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3Nhbml0aXplci9zYWZlZG9tdHJlZXByb2Nlc3Nvci5qcycsIFsnZ29vZy5odG1sLnNhbml0aXplci5TYWZlRG9tVHJlZVByb2Nlc3NvciddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uc2FmZScsICdnb29nLmh0bWwuc2FuaXRpemVyLkVsZW1lbnRXZWFrTWFwJywgJ2dvb2cuaHRtbC5zYW5pdGl6ZXIubm9jbG9iYmVyJywgJ2dvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucycsICdnb29nLmxvZycsICdnb29nLnN0cmluZy5Db25zdCcsICdnb29nLnVzZXJBZ2VudCddLCB7J21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvc2FuaXRpemVyL3NhZmVkb210cmVlcHJvY2Vzc29yX3Rlc3QuanMnLCBbJ2dvb2cuaHRtbC5zYW5pdGl6ZXIuU2FmZURvbVRyZWVQcm9jZXNzb3JUZXN0J10sIFsnZ29vZy5odG1sLnNhbml0aXplci5TYWZlRG9tVHJlZVByb2Nlc3NvcicsICdnb29nLmh0bWwuc2FuaXRpemVyLm5vY2xvYmJlcicsICdnb29nLnRlc3RpbmcuZG9tJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3Nhbml0aXplci90YWdibGFja2xpc3QuanMnLCBbJ2dvb2cuaHRtbC5zYW5pdGl6ZXIuVGFnQmxhY2tsaXN0J10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaHRtbC9zYW5pdGl6ZXIvdGFnd2hpdGVsaXN0LmpzJywgWydnb29nLmh0bWwuc2FuaXRpemVyLlRhZ1doaXRlbGlzdCddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvc2FuaXRpemVyL3Vuc2FmZS5qcycsIFsnZ29vZy5odG1sLnNhbml0aXplci51bnNhZmUnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5odG1sLnNhbml0aXplci5IdG1sU2FuaXRpemVyLkJ1aWxkZXInLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5zdHJpbmcuQ29uc3QnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvc2FuaXRpemVyL3Vuc2FmZV90ZXN0LmpzJywgWydnb29nLmh0bWwuVW5zYWZlVGVzdCddLCBbJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLmh0bWwuc2FuaXRpemVyLkF0dHJpYnV0ZVdoaXRlbGlzdCcsICdnb29nLmh0bWwuc2FuaXRpemVyLkh0bWxTYW5pdGl6ZXInLCAnZ29vZy5odG1sLnNhbml0aXplci5UYWdXaGl0ZWxpc3QnLCAnZ29vZy5odG1sLnNhbml0aXplci51bnNhZmUnLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy50ZXN0aW5nLmRvbScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaHRtbC9zaWx2ZXJsaWdodC5qcycsIFsnZ29vZy5odG1sLnNpbHZlcmxpZ2h0J10sIFsnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwnLCAnZ29vZy5odG1sLmZsYXNoJywgJ2dvb2cuc3RyaW5nLkNvbnN0J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3NpbHZlcmxpZ2h0X3Rlc3QuanMnLCBbJ2dvb2cuaHRtbC5zaWx2ZXJsaWdodFRlc3QnXSwgWydnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCcsICdnb29nLmh0bWwuc2lsdmVybGlnaHQnLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvdGVzdGluZy5qcycsIFsnZ29vZy5odG1sLnRlc3RpbmcnXSwgWydnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5odG1sLlNhZmVTY3JpcHQnLCAnZ29vZy5odG1sLlNhZmVTdHlsZScsICdnb29nLmh0bWwuU2FmZVN0eWxlU2hlZXQnLCAnZ29vZy5odG1sLlNhZmVVcmwnLCAnZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCcsICdnb29nLnRlc3RpbmcubW9ja21hdGNoZXJzLkFyZ3VtZW50TWF0Y2hlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaHRtbC90ZXh0ZXh0cmFjdG9yLmpzJywgWydnb29nLmh0bWwudGV4dEV4dHJhY3RvciddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmh0bWwuc2FuaXRpemVyLkh0bWxTYW5pdGl6ZXInLCAnZ29vZy5vYmplY3QnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvdGV4dGV4dHJhY3Rvcl90ZXN0LmpzJywgWydnb29nLmh0bWwudGV4dEV4dHJhY3RvclRlc3QnXSwgWydnb29nLmh0bWwudGV4dEV4dHJhY3RvcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaHRtbC90cnVzdGVkcmVzb3VyY2V1cmwuanMnLCBbJ2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5odG1sLnRydXN0ZWR0eXBlcycsICdnb29nLmkxOG4uYmlkaS5EaXInLCAnZ29vZy5pMThuLmJpZGkuRGlyZWN0aW9uYWxTdHJpbmcnLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy5zdHJpbmcuVHlwZWRTdHJpbmcnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvdHJ1c3RlZHJlc291cmNldXJsX3Rlc3QuanMnLCBbJ2dvb2cuaHRtbC50cnVzdGVkUmVzb3VyY2VVcmxUZXN0J10sIFsnZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCcsICdnb29nLmh0bWwudHJ1c3RlZHR5cGVzJywgJ2dvb2cuaTE4bi5iaWRpLkRpcicsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmluZy5Db25zdCcsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaHRtbC90cnVzdGVkdHlwZXMuanMnLCBbJ2dvb2cuaHRtbC50cnVzdGVkdHlwZXMnXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3VuY2hlY2tlZGNvbnZlcnNpb25zLmpzJywgWydnb29nLmh0bWwudW5jaGVja2VkY29udmVyc2lvbnMnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dvb2cuaHRtbC5TYWZlU2NyaXB0JywgJ2dvb2cuaHRtbC5TYWZlU3R5bGUnLCAnZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0JywgJ2dvb2cuaHRtbC5TYWZlVXJsJywgJ2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwnLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy5zdHJpbmcuaW50ZXJuYWwnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvdW5jaGVja2VkY29udmVyc2lvbnNfdGVzdC5qcycsIFsnZ29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zVGVzdCddLCBbJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLmh0bWwuU2FmZVNjcmlwdCcsICdnb29nLmh0bWwuU2FmZVN0eWxlJywgJ2dvb2cuaHRtbC5TYWZlU3R5bGVTaGVldCcsICdnb29nLmh0bWwuU2FmZVVybCcsICdnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsJywgJ2dvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucycsICdnb29nLmkxOG4uYmlkaS5EaXInLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvdXRpbHMuanMnLCBbJ2dvb2cuaHRtbC51dGlscyddLCBbJ2dvb2cuc3RyaW5nJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3V0aWxzX3Rlc3QuanMnLCBbJ2dvb2cuaHRtbC5VdGlsc1Rlc3QnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5odG1sLnV0aWxzJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdpMThuL2JpZGkuanMnLCBbJ2dvb2cuaTE4bi5iaWRpJywgJ2dvb2cuaTE4bi5iaWRpLkRpcicsICdnb29nLmkxOG4uYmlkaS5EaXJlY3Rpb25hbFN0cmluZycsICdnb29nLmkxOG4uYmlkaS5Gb3JtYXQnXSwgW10sIHsnbGFuZyc6ICdlczYnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9iaWRpX3Rlc3QuanMnLCBbJ2dvb2cuaTE4bi5iaWRpVGVzdCddLCBbJ2dvb2cuaTE4bi5iaWRpJywgJ2dvb2cuaTE4bi5iaWRpLkRpcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9iaWRpZm9ybWF0dGVyLmpzJywgWydnb29nLmkxOG4uQmlkaUZvcm1hdHRlciddLCBbJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLmkxOG4uYmlkaScsICdnb29nLmkxOG4uYmlkaS5EaXInLCAnZ29vZy5pMThuLmJpZGkuRm9ybWF0J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdpMThuL2JpZGlmb3JtYXR0ZXJfdGVzdC5qcycsIFsnZ29vZy5pMThuLkJpZGlGb3JtYXR0ZXJUZXN0J10sIFsnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dvb2cuaHRtbC50ZXN0aW5nJywgJ2dvb2cuaTE4bi5CaWRpRm9ybWF0dGVyJywgJ2dvb2cuaTE4bi5iaWRpLkRpcicsICdnb29nLmkxOG4uYmlkaS5Gb3JtYXQnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vY2hhcmxpc3RkZWNvbXByZXNzb3IuanMnLCBbJ2dvb2cuaTE4bi5DaGFyTGlzdERlY29tcHJlc3NvciddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5pMThuLnVDaGFyJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdpMThuL2NoYXJsaXN0ZGVjb21wcmVzc29yX3Rlc3QuanMnLCBbJ2dvb2cuaTE4bi5DaGFyTGlzdERlY29tcHJlc3NvclRlc3QnXSwgWydnb29nLmkxOG4uQ2hhckxpc3REZWNvbXByZXNzb3InLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vY2hhcnBpY2tlcmRhdGEuanMnLCBbJ2dvb2cuaTE4bi5DaGFyUGlja2VyRGF0YSddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vY29sbGF0aW9uLmpzJywgWydnb29nLmkxOG4uY29sbGF0aW9uJ10sIFtdLCB7J2xhbmcnOiAnZXM2J30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vY29sbGF0aW9uX3Rlc3QuanMnLCBbJ2dvb2cuaTE4bi5jb2xsYXRpb25UZXN0J10sIFsnZ29vZy5pMThuLmNvbGxhdGlvbicsICdnb29nLnRlc3RpbmcuRXhwZWN0ZWRGYWlsdXJlcycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9jb21wYWN0bnVtYmVyZm9ybWF0c3ltYm9scy5qcycsIFsnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hZicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYW0nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FyJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hcl9EWicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYXJfRUcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2F6JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19iZScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYmcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2JuJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19icicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYnMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2NhJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19jaHInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2NzJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19jeScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZGEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2RlJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19kZV9BVCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZGVfQ0gnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VsJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fQVUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0NBJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9HQicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fSUUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0lOJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9TRycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fVVMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1pBJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lcycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZXNfNDE5JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lc19FUycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZXNfTVgnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VzX1VTJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ldCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZXUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZhJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19maScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZmlsJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfQ0EnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2dhJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19nbCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZ3N3JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ndScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfaGF3JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19oZScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfaGknLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2hyJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19odScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfaHknLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2lkJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19pbicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfaXMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2l0JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19pdycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfamEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2thJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19raycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa20nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2tuJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19rbycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa3knLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2xuJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19sbycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbHQnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2x2JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19taycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbWwnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX21uJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19tbycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbXInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX21zJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19tdCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbXknLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX25iJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19uZScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbmwnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX25vJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ub19OTycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfb3InLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3BhJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19wbCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcHQnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3B0X0JSJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19wdF9QVCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcm8nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3J1JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zaCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc2knLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NrJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zbCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc3EnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NyJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zcl9MYXRuJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zdicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc3cnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3RhJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc190ZScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdGgnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3RsJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc190cicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdWsnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3VyJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc191eicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdmknLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3poJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc196aF9DTicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfemhfSEsnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3poX1RXJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc196dSddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vY29tcGFjdG51bWJlcmZvcm1hdHN5bWJvbHNleHQuanMnLCBbJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc0V4dCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYWZfTkEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FmX1pBJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hZ3EnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FncV9DTScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYWsnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FrX0dIJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hbV9FVCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYXJfMDAxJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hcl9BRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYXJfQkgnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FyX0RKJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hcl9FSCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYXJfRVInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FyX0lMJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hcl9JUScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYXJfSk8nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FyX0tNJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hcl9LVycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYXJfTEInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FyX0xZJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hcl9NQScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYXJfTVInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FyX09NJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hcl9QUycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYXJfUUEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FyX1NBJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hcl9TRCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYXJfU08nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FyX1NTJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hcl9TWScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYXJfVEQnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FyX1ROJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hcl9YQicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYXJfWUUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FzJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hc19JTicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYXNhJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hc2FfVFonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FzdCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYXN0X0VTJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hel9DeXJsJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hel9DeXJsX0FaJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hel9MYXRuJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hel9MYXRuX0FaJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19iYXMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2Jhc19DTScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYmVfQlknLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2JlbScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYmVtX1pNJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19iZXonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2Jlel9UWicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYmdfQkcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2JtJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ibV9NTCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYm5fQkQnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2JuX0lOJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ibycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYm9fQ04nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2JvX0lOJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19icl9GUicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYnJ4JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19icnhfSU4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2JzX0N5cmwnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2JzX0N5cmxfQkEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2JzX0xhdG4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2JzX0xhdG5fQkEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2NhX0FEJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19jYV9FUycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfY2FfRlInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2NhX0lUJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19jY3AnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2NjcF9CRCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfY2NwX0lOJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19jZScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfY2VfUlUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2NlYicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfY2ViX1BIJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19jZ2cnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2NnZ19VRycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfY2hyX1VTJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ja2InLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2NrYl9JUScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfY2tiX0lSJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19jc19DWicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfY3lfR0InLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2RhX0RLJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19kYV9HTCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZGF2JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19kYXZfS0UnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2RlX0JFJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19kZV9ERScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZGVfSVQnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2RlX0xJJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19kZV9MVScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZGplJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19kamVfTkUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2RzYicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZHNiX0RFJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19kdWEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2R1YV9DTScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZHlvJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19keW9fU04nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2R6JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19kel9CVCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZWJ1JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lYnVfS0UnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VlJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lZV9HSCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZWVfVEcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VsX0NZJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbF9HUicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fMDAxJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl8xNTAnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0FFJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9BRycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fQUknLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0FTJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9BVCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fQkInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0JFJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9CSScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fQk0nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0JTJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9CVycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fQlonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0NDJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9DSCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fQ0snLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0NNJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9DWCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fQ1knLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0RFJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9ERycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fREsnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0RNJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9FUicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fRkknLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0ZKJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9GSycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fRk0nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0dEJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9HRycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fR0gnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0dJJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9HTScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fR1UnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0dZJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9ISycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fSUwnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0lNJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9JTycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fSkUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0pNJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9LRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fS0knLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0tOJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9LWScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fTEMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0xSJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9MUycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fTUcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX01IJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9NTycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fTVAnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX01TJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9NVCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fTVUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX01XJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9NWScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fTkEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX05GJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9ORycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fTkwnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX05SJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9OVScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fTlonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1BHJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9QSCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fUEsnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1BOJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9QUicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fUFcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1JXJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9TQicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fU0MnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1NEJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9TRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fU0gnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1NJJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9TTCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fU1MnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1NYJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9TWicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fVEMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1RLJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9UTycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fVFQnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1RWJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9UWicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fVUcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1VNJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9VU19QT1NJWCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fVkMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1ZHJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9WSScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fVlUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1dTJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9YQScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fWk0nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1pXJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW9fMDAxJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lc19BUicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZXNfQk8nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VzX0JSJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lc19CWicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZXNfQ0wnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VzX0NPJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lc19DUicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZXNfQ1UnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VzX0RPJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lc19FQScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZXNfRUMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VzX0dRJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lc19HVCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZXNfSE4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VzX0lDJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lc19OSScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZXNfUEEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VzX1BFJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lc19QSCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZXNfUFInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VzX1BZJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lc19TVicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZXNfVVknLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VzX1ZFJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ldF9FRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZXVfRVMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2V3bycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZXdvX0NNJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mYV9BRicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZmFfSVInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZmJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mZl9MYXRuJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mZl9MYXRuX0JGJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mZl9MYXRuX0NNJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mZl9MYXRuX0dIJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mZl9MYXRuX0dNJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mZl9MYXRuX0dOJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mZl9MYXRuX0dXJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mZl9MYXRuX0xSJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mZl9MYXRuX01SJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mZl9MYXRuX05FJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mZl9MYXRuX05HJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mZl9MYXRuX1NMJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mZl9MYXRuX1NOJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19maV9GSScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZmlsX1BIJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mbycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZm9fREsnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZvX0ZPJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9CRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfQkYnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX0JJJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9CSicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfQkwnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX0NEJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9DRicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfQ0cnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX0NIJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9DSScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfQ00nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX0RKJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9EWicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfRlInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX0dBJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9HRicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfR04nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX0dQJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9HUScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfSFQnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX0tNJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9MVScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfTUEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX01DJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9NRicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfTUcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX01MJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9NUScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfTVInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX01VJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9OQycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfTkUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX1BGJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9QTScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfUkUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX1JXJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9TQycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfU04nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX1NZJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9URCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfVEcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX1ROJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9WVScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfV0YnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX1lUJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mdXInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2Z1cl9JVCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnknLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2Z5X05MJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19nYV9JRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZ2QnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2dkX0dCJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19nbF9FUycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZ3N3X0NIJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19nc3dfRlInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2dzd19MSScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZ3VfSU4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2d1eicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZ3V6X0tFJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ndicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZ3ZfSU0nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2hhJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19oYV9HSCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfaGFfTkUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2hhX05HJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19oYXdfVVMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2hlX0lMJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19oaV9JTicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfaHJfQkEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2hyX0hSJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19oc2InLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2hzYl9ERScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfaHVfSFUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2h5X0FNJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19pYScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfaWFfMDAxJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19pZF9JRCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfaWcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2lnX05HJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19paScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfaWlfQ04nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2lzX0lTJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19pdF9DSCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfaXRfSVQnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2l0X1NNJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19pdF9WQScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfamFfSlAnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2pnbycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfamdvX0NNJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19qbWMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ptY19UWicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfanYnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2p2X0lEJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19rYV9HRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa2FiJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19rYWJfRFonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2thbScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa2FtX0tFJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19rZGUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2tkZV9UWicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa2VhJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19rZWFfQ1YnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2tocScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa2hxX01MJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19raScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa2lfS0UnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2trX0taJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ra2onLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2tral9DTScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa2wnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2tsX0dMJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19rbG4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2tsbl9LRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa21fS0gnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2tuX0lOJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19rb19LUCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa29fS1InLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2tvaycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa29rX0lOJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19rcycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa3NfSU4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2tzYicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa3NiX1RaJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19rc2YnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2tzZl9DTScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa3NoJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19rc2hfREUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2t1JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19rdV9UUicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa3cnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2t3X0dCJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19reV9LRycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbGFnJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19sYWdfVFonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2xiJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19sYl9MVScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbGcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2xnX1VHJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19sa3QnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2xrdF9VUycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbG5fQU8nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2xuX0NEJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19sbl9DRicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbG5fQ0cnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2xvX0xBJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19scmMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2xyY19JUScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbHJjX0lSJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19sdF9MVCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbHUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2x1X0NEJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19sdW8nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2x1b19LRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbHV5JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19sdXlfS0UnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2x2X0xWJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19tYXMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX21hc19LRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbWFzX1RaJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19tZXInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX21lcl9LRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbWZlJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19tZmVfTVUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX21nJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19tZ19NRycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbWdoJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19tZ2hfTVonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX21nbycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbWdvX0NNJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19taScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbWlfTlonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX21rX01LJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19tbF9JTicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbW5fTU4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX21yX0lOJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19tc19CTicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbXNfTVknLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX21zX1NHJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19tdF9NVCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbXVhJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19tdWFfQ00nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX215X01NJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19tem4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX216bl9JUicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbmFxJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19uYXFfTkEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX25iX05PJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19uYl9TSicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbmQnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX25kX1pXJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19uZHMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX25kc19ERScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbmRzX05MJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19uZV9JTicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbmVfTlAnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX25sX0FXJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ubF9CRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbmxfQlEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX25sX0NXJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ubF9OTCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbmxfU1InLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX25sX1NYJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ubWcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX25tZ19DTScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbm4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX25uX05PJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ubmgnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX25uaF9DTScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbnVzJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19udXNfU1MnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX255bicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbnluX1VHJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19vbScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfb21fRVQnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX29tX0tFJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19vcl9JTicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfb3MnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX29zX0dFJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19vc19SVScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcGFfQXJhYicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcGFfQXJhYl9QSycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcGFfR3VydScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcGFfR3VydV9JTicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcGxfUEwnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3BzJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19wc19BRicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcHNfUEsnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3B0X0FPJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19wdF9DSCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcHRfQ1YnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3B0X0dRJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19wdF9HVycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcHRfTFUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3B0X01PJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19wdF9NWicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcHRfU1QnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3B0X1RMJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19xdScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcXVfQk8nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3F1X0VDJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19xdV9QRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcm0nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3JtX0NIJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ybicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcm5fQkknLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3JvX01EJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19yb19STycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcm9mJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19yb2ZfVFonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3J1X0JZJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ydV9LRycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcnVfS1onLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3J1X01EJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ydV9SVScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcnVfVUEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3J3JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19yd19SVycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcndrJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19yd2tfVFonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NhaCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc2FoX1JVJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zYXEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NhcV9LRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc2JwJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zYnBfVFonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NkJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zZF9QSycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc2UnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NlX0ZJJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zZV9OTycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc2VfU0UnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NlaCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc2VoX01aJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zZXMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3Nlc19NTCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc2cnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NnX0NGJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zaGknLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NoaV9MYXRuJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zaGlfTGF0bl9NQScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc2hpX1RmbmcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NoaV9UZm5nX01BJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zaV9MSycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc2tfU0snLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NsX1NJJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zbW4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3Ntbl9GSScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc24nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NuX1pXJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zbycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc29fREonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NvX0VUJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zb19LRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc29fU08nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NxX0FMJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zcV9NSycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc3FfWEsnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NyX0N5cmwnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NyX0N5cmxfQkEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NyX0N5cmxfTUUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NyX0N5cmxfUlMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NyX0N5cmxfWEsnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NyX0xhdG5fQkEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NyX0xhdG5fTUUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NyX0xhdG5fUlMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NyX0xhdG5fWEsnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3N2X0FYJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zdl9GSScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc3ZfU0UnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3N3X0NEJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zd19LRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc3dfVFonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3N3X1VHJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc190YV9JTicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdGFfTEsnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3RhX01ZJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc190YV9TRycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdGVfSU4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3RlbycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdGVvX0tFJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc190ZW9fVUcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3RnJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc190Z19USicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdGhfVEgnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3RpJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc190aV9FUicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdGlfRVQnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3RrJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc190a19UTScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdG8nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3RvX1RPJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc190cl9DWScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdHJfVFInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3R0JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc190dF9SVScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdHdxJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc190d3FfTkUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3R6bScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdHptX01BJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc191ZycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdWdfQ04nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3VrX1VBJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc191cl9JTicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdXJfUEsnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3V6X0FyYWInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3V6X0FyYWJfQUYnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3V6X0N5cmwnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3V6X0N5cmxfVVonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3V6X0xhdG4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3V6X0xhdG5fVVonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3ZhaScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdmFpX0xhdG4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3ZhaV9MYXRuX0xSJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc192YWlfVmFpaScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdmFpX1ZhaWlfTFInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3ZpX1ZOJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc192dW4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3Z1bl9UWicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfd2FlJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc193YWVfQ0gnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3dvJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc193b19TTicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfeGgnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3hoX1pBJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc194b2cnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3hvZ19VRycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfeWF2JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc195YXZfQ00nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3lpJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc195aV8wMDEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3lvJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc195b19CSicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfeW9fTkcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3l1ZScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfeXVlX0hhbnMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3l1ZV9IYW5zX0NOJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc195dWVfSGFudCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfeXVlX0hhbnRfSEsnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3pnaCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfemdoX01BJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc196aF9IYW5zJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc196aF9IYW5zX0NOJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc196aF9IYW5zX0hLJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc196aF9IYW5zX01PJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc196aF9IYW5zX1NHJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc196aF9IYW50JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc196aF9IYW50X0hLJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc196aF9IYW50X01PJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc196aF9IYW50X1RXJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc196dV9aQSddLCBbJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9scyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9jdXJyZW5jeS5qcycsIFsnZ29vZy5pMThuLmN1cnJlbmN5JywgJ2dvb2cuaTE4bi5jdXJyZW5jeS5DdXJyZW5jeUluZm8nLCAnZ29vZy5pMThuLmN1cnJlbmN5LkN1cnJlbmN5SW5mb1RpZXIyJ10sIFtdLCB7J2xhbmcnOiAnZXM2J30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vY3VycmVuY3lfdGVzdC5qcycsIFsnZ29vZy5pMThuLmN1cnJlbmN5VGVzdCddLCBbJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXQnLCAnZ29vZy5pMThuLmN1cnJlbmN5JywgJ2dvb2cuaTE4bi5jdXJyZW5jeS5DdXJyZW5jeUluZm8nLCAnZ29vZy5vYmplY3QnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vY3VycmVuY3ljb2RlbWFwLmpzJywgWydnb29nLmkxOG4uY3VycmVuY3lDb2RlTWFwJywgJ2dvb2cuaTE4bi5jdXJyZW5jeUNvZGVNYXBUaWVyMiddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vZGF0ZWludGVydmFsZm9ybWF0LmpzJywgWydnb29nLmkxOG4uRGF0ZUludGVydmFsRm9ybWF0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5kYXRlLkRhdGVMaWtlJywgJ2dvb2cuZGF0ZS5EYXRlUmFuZ2UnLCAnZ29vZy5kYXRlLkRhdGVUaW1lJywgJ2dvb2cuZGF0ZS5JbnRlcnZhbCcsICdnb29nLmkxOG4uRGF0ZVRpbWVGb3JtYXQnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9scycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzVHlwZScsICdnb29nLmkxOG4uVGltZVpvbmUnLCAnZ29vZy5pMThuLmRhdGVJbnRlcnZhbFN5bWJvbHMnLCAnZ29vZy5vYmplY3QnXSwgeydsYW5nJzogJ2VzNScsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdpMThuL2RhdGVpbnRlcnZhbGZvcm1hdF90ZXN0LmpzJywgWydnb29nLmkxOG4uRGF0ZUludGVydmFsRm9ybWF0VGVzdCddLCBbJ2dvb2cuZGF0ZS5EYXRlJywgJ2dvb2cuZGF0ZS5EYXRlUmFuZ2UnLCAnZ29vZy5kYXRlLkRhdGVUaW1lJywgJ2dvb2cuZGF0ZS5JbnRlcnZhbCcsICdnb29nLmkxOG4uRGF0ZUludGVydmFsRm9ybWF0JywgJ2dvb2cuaTE4bi5EYXRlVGltZUZvcm1hdCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2FyX0VHJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW4nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mcl9DQScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2dsJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfaGknLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc196aCcsICdnb29nLmkxOG4uVGltZVpvbmUnLCAnZ29vZy5pMThuLmRhdGVJbnRlcnZhbFBhdHRlcm5zJywgJ2dvb2cuaTE4bi5kYXRlSW50ZXJ2YWxTeW1ib2xzJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdpMThuL2RhdGVpbnRlcnZhbHBhdHRlcm5zLmpzJywgWydnb29nLmkxOG4uZGF0ZUludGVydmFsUGF0dGVybnMnXSwgWydnb29nLmkxOG4uZGF0ZUludGVydmFsU3ltYm9scyddLCB7J21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vZGF0ZWludGVydmFscGF0dGVybnNleHQuanMnLCBbJ2dvb2cuaTE4bi5kYXRlSW50ZXJ2YWxQYXR0ZXJuc0V4dCddLCBbJ2dvb2cuaTE4bi5kYXRlSW50ZXJ2YWxQYXR0ZXJucyddLCB7J21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vZGF0ZWludGVydmFsc3ltYm9scy5qcycsIFsnZ29vZy5pMThuLmRhdGVJbnRlcnZhbFN5bWJvbHMnXSwgW10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9kYXRlaW50ZXJ2YWxzeW1ib2xzZXh0LmpzJywgWydnb29nLmkxOG4uZGF0ZUludGVydmFsU3ltYm9sc0V4dCddLCBbJ2dvb2cuaTE4bi5kYXRlSW50ZXJ2YWxTeW1ib2xzJ10sIHsnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9kYXRldGltZWZvcm1hdC5qcycsIFsnZ29vZy5pMThuLkRhdGVUaW1lRm9ybWF0JywgJ2dvb2cuaTE4bi5EYXRlVGltZUZvcm1hdC5Gb3JtYXQnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5kYXRlJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHMnLCAnZ29vZy5pMThuLlRpbWVab25lJywgJ2dvb2cuc3RyaW5nJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdpMThuL2RhdGV0aW1lZm9ybWF0X3Rlc3QuanMnLCBbJ2dvb2cuaTE4bi5EYXRlVGltZUZvcm1hdFRlc3QnXSwgWydnb29nLmRhdGUuRGF0ZScsICdnb29nLmRhdGUuRGF0ZVRpbWUnLCAnZ29vZy5pMThuLkRhdGVUaW1lRm9ybWF0JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX0VHJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2JnJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2RlJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VuJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VuX1hBJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2ZhJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2ZyJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2phJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3N2JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3poX0hLJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3poX0hhbnRfVFcnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9scycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2FyX0FFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYXJfRUcnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19hcl9TQScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2JuX0JEJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZGUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX0dCJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fSUUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9JTicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX1VTJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZmEnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mcicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZyX0RKJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfaGVfSUwnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19qYScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3JvX1JPJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfc3YnLCAnZ29vZy5pMThuLlRpbWVab25lJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdpMThuL2RhdGV0aW1lcGFyc2UuanMnLCBbJ2dvb2cuaTE4bi5EYXRlVGltZVBhcnNlJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZGF0ZScsICdnb29nLmkxOG4uRGF0ZVRpbWVGb3JtYXQnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9scyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9kYXRldGltZXBhcnNlX3Rlc3QuanMnLCBbJ2dvb2cuaTE4bi5EYXRlVGltZVBhcnNlVGVzdCddLCBbJ2dvb2cuZGF0ZS5EYXRlJywgJ2dvb2cuaTE4bi5EYXRlVGltZUZvcm1hdCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXJzZScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW4nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mYScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZyJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfcGwnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc196aCcsICdnb29nLnRlc3RpbmcuRXhwZWN0ZWRGYWlsdXJlcycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9kYXRldGltZXBhdHRlcm5zLmpzJywgWydnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJucycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19hZicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19hbScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19hcicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19hcl9EWicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19hcl9FRycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19heicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19iZScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19iZycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ibicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19icicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19icycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19jYScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19jaHInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfY3MnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfY3knLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZGEnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZGUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZGVfQVQnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZGVfQ0gnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZWwnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW4nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQVUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQ0EnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fR0InLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fSUUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fSU4nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fU0cnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fVVMnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fWkEnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZXMnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZXNfNDE5JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX0VTJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX01YJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX1VTJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2V0JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2V1JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2ZhJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2ZpJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2ZpbCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mcicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mcl9DQScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19nYScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19nbCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19nc3cnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZ3UnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfaGF3JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2hlJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2hpJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2hyJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2h1JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2h5JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2lkJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2luJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2lzJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2l0JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2l3JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2phJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2thJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2trJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2ttJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2tuJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2tvJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2t5JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2xuJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2xvJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2x0JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2x2JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX21rJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX21sJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX21uJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX21vJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX21yJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX21zJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX210JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX215JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX25iJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX25lJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX25sJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX25vJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX25vX05PJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX29yJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3BhJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3BsJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3B0JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3B0X0JSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3B0X1BUJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3JvJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3J1JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NoJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NpJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NrJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NsJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NxJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NyJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NyX0xhdG4nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfc3YnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfc3cnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfdGEnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfdGUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfdGgnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfdGwnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfdHInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfdWsnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfdXInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfdXonLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfdmknLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfemgnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfemhfQ04nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfemhfSEsnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfemhfVFcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfenUnXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdpMThuL2RhdGV0aW1lcGF0dGVybnNleHQuanMnLCBbJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zRXh0JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FmX05BJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FmX1pBJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FncScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19hZ3FfQ00nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYWsnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYWtfR0gnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYW1fRVQnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYXJfMDAxJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX0FFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX0JIJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX0RKJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX0VIJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX0VSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX0lMJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX0lRJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX0pPJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX0tNJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX0tXJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX0xCJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX0xZJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX01BJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX01SJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX09NJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX1BTJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX1FBJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX1NBJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX1NEJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX1NPJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX1NTJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX1NZJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX1REJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX1ROJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX1hCJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX1lFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FzJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FzX0lOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FzYScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19hc2FfVFonLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYXN0JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FzdF9FUycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19hel9DeXJsJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2F6X0N5cmxfQVonLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYXpfTGF0bicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19hel9MYXRuX0FaJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2JhcycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19iYXNfQ00nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYmVfQlknLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYmVtJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2JlbV9aTScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19iZXonLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYmV6X1RaJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2JnX0JHJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2JtJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2JtX01MJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2JuX0JEJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2JuX0lOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2JvJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2JvX0NOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2JvX0lOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2JyX0ZSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2JyeCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19icnhfSU4nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYnNfQ3lybCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ic19DeXJsX0JBJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2JzX0xhdG4nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYnNfTGF0bl9CQScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19jYV9BRCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19jYV9FUycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19jYV9GUicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19jYV9JVCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19jY3AnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfY2NwX0JEJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2NjcF9JTicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19jZScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19jZV9SVScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19jZWInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfY2ViX1BIJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2NnZycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19jZ2dfVUcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfY2hyX1VTJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2NrYicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ja2JfSVEnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfY2tiX0lSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2NzX0NaJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2N5X0dCJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2RhX0RLJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2RhX0dMJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2RhdicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19kYXZfS0UnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZGVfQkUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZGVfREUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZGVfSVQnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZGVfTEknLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZGVfTFUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZGplJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2RqZV9ORScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19kc2InLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZHNiX0RFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2R1YScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19kdWFfQ00nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZHlvJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2R5b19TTicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19keicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19kel9CVCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lYnUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZWJ1X0tFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VlJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VlX0dIJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VlX1RHJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VsX0NZJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VsX0dSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VuXzAwMScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl8xNTAnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQUUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQUcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQUknLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQVMnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQVQnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQkInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQkUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQkknLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQk0nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQlMnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQlcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQlonLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQ0MnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQ0gnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQ0snLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQ00nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQ1gnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQ1knLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fREUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fREcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fREsnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fRE0nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fRVInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fRkknLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fRkonLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fRksnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fRk0nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fR0QnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fR0cnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fR0gnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fR0knLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fR00nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fR1UnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fR1knLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fSEsnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fSUwnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fSU0nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fSU8nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fSkUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fSk0nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fS0UnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fS0knLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fS04nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fS1knLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTEMnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTFInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTFMnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTUcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTUgnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTU8nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTVAnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTVMnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTVQnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTVUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTVcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTVknLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTkEnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTkYnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTkcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTkwnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTlInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTlUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTlonLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fUEcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fUEgnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fUEsnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fUE4nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fUFInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fUFcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fUlcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fU0InLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fU0MnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fU0QnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fU0UnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fU0gnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fU0knLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fU0wnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fU1MnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fU1gnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fU1onLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fVEMnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fVEsnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fVE8nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fVFQnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fVFYnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fVFonLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fVUcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fVU0nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fVVNfUE9TSVgnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fVkMnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fVkcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fVkknLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fVlUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fV1MnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fWEEnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fWk0nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fWlcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW8nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW9fMDAxJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX0FSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX0JPJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX0JSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX0JaJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX0NMJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX0NPJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX0NSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX0NVJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX0RPJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX0VBJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX0VDJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX0dRJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX0dUJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX0hOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX0lDJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX05JJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX1BBJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX1BFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX1BIJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX1BSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX1BZJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX1NWJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX1VZJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX1ZFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2V0X0VFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2V1X0VTJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2V3bycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ld29fQ00nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZmFfQUYnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZmFfSVInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZmYnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZmZfTGF0bicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mZl9MYXRuX0JGJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2ZmX0xhdG5fQ00nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZmZfTGF0bl9HSCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mZl9MYXRuX0dNJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2ZmX0xhdG5fR04nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZmZfTGF0bl9HVycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mZl9MYXRuX0xSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2ZmX0xhdG5fTVInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZmZfTGF0bl9ORScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mZl9MYXRuX05HJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2ZmX0xhdG5fU0wnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZmZfTGF0bl9TTicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19maV9GSScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19maWxfUEgnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZm8nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZm9fREsnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZm9fRk8nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfQkUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfQkYnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfQkknLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfQkonLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfQkwnLCAnZ29vZy5pMThuLk
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment