TimeTrex/interface/html5/dist/payroll-recurring_pay_stub_amendment-RecurringPayStubAmendmentViewController.bundle.js

1 line
36 KiB
JavaScript

"use strict";(self.webpackChunktimetrex=self.webpackChunktimetrex||[]).push([["payroll-recurring_pay_stub_amendment-RecurringPayStubAmendmentViewController"],{4744:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"RecurringPayStubAmendmentViewController\": () => (/* binding */ RecurringPayStubAmendmentViewController)\n/* harmony export */ });\n/* provided dependency */ var _ = __webpack_require__(9050);\n/* provided dependency */ var $ = __webpack_require__(9755);\nclass RecurringPayStubAmendmentViewController extends BaseViewController {\n\tconstructor( options = {} ) {\n\t\t_.defaults( options, {\n\t\t\tel: '#recurring_pay_stub_amendment_view_container',\n\t\t\ttype_array: null,\n\t\t\tfiltered_status_array: null,\n\t\t\tfrequency_array: null\n\t\t} );\n\n\t\tsuper( options );\n\t}\n\n\tinit( options ) {\n\t\t//this._super('initialize', options );\n\t\tthis.edit_view_tpl = 'RecurringPayStubAmendmentEditView.html';\n\t\tthis.permission_id = 'pay_stub_amendment';\n\t\tthis.viewId = 'RecurringPayStubAmendment';\n\t\tthis.script_name = 'RecurringPayStubAmendmentView';\n\t\tthis.table_name_key = 'recurring_ps_amendment';\n\t\tthis.context_menu_name = $.i18n._( 'Recurring PS Amendment' );\n\t\tthis.navigation_label = $.i18n._( 'Recurring PS Amendment' );\n\t\tthis.api = TTAPI.APIRecurringPayStubAmendment;\n\n\t\tthis.render();\n\t\tthis.buildContextMenu();\n\n\t\tthis.initData();\n\t}\n\n\tinitOptions() {\n\t\tvar $this = this;\n\t\tthis.initDropDownOption( 'type' );\n\t\tthis.initDropDownOption( 'filtered_status', 'status_id', this.api, function() {\n\t\t\t$this.basic_search_field_ui_dic['status_id'].setSourceData( $this.filtered_status_array );\n\t\t} );\n\t\tthis.initDropDownOption( 'frequency' );\n\t}\n\n\tonFormItemChange( target, doNotValidate ) {\n\t\tthis.setIsChanged( target );\n\t\tthis.setMassEditingFieldsWhenFormChange( target );\n\n\t\tvar key = target.getField();\n\t\tvar c_value = target.getValue();\n\n\t\tthis.current_edit_record[key] = c_value;\n\n\t\tif ( key === 'type_id' ) {\n\t\t\tthis.onTypeChange();\n\t\t}\n\n\t\tif ( key === 'rate' || key === 'units' || key === 'amount' ) {\n\t\t\tif ( this.is_mass_editing ) {\n\t\t\t\tif ( target.isChecked() ) {\n\t\t\t\t\tthis.edit_view_ui_dic['rate'].setCheckBox( true );\n\t\t\t\t\tthis.edit_view_ui_dic['units'].setCheckBox( true );\n\t\t\t\t\tthis.edit_view_ui_dic['amount'].setCheckBox( true );\n\t\t\t\t} else {\n\t\t\t\t\tthis.edit_view_ui_dic['rate'].setCheckBox( false );\n\t\t\t\t\tthis.edit_view_ui_dic['units'].setCheckBox( false );\n\t\t\t\t\tthis.edit_view_ui_dic['amount'].setCheckBox( false );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.current_edit_record['amount'] = this.edit_view_ui_dic['amount'].getValue();\n\t\t}\n\n\t\tif ( !doNotValidate ) {\n\t\t\tthis.validate();\n\t\t}\n\t}\n\n\tuniformVariable( records ) {\n\n\t\tif ( records.type_id == 20 ) {\n\t\t\trecords.amount = records.percent_amount;\n\t\t}\n\n\t\treturn records;\n\t}\n\n\tonTypeChange() {\n\t\tif ( this.current_edit_record.type_id == 10 ) {\n\t\t\tthis.detachElement( 'percent_amount' );\n\t\t\tthis.detachElement( 'percent_amount_entry_name_id' );\n\t\t\tthis.attachElement( 'rate' );\n\t\t\tthis.attachElement( 'units' );\n\t\t\tthis.attachElement( 'amount' );\n\n\t\t} else if ( this.current_edit_record.type_id == 20 ) {\n\t\t\tthis.attachElement( 'percent_amount' );\n\t\t\tthis.attachElement( 'percent_amount_entry_name_id' );\n\t\t\tthis.detachElement( 'rate' );\n\t\t\tthis.detachElement( 'units' );\n\t\t\tthis.detachElement( 'amount' );\n\t\t}\n\n\t\tthis.editFieldResize();\n\t}\n\n\tonFormItemKeyUp( target ) {\n\t\tvar widget_rate = this.edit_view_ui_dic['rate'];\n\t\tvar widget_units = this.edit_view_ui_dic['units'];\n\t\tvar widget_amount = this.edit_view_ui_dic['amount'];\n\n\t\tif ( target.getValue().length === 0 ) {\n\t\t\twidget_amount.setReadOnly( false );\n\t\t}\n\t\tif ( widget_rate.getValue().length > 0 || widget_units.getValue().length > 0 ) {\n\t\t\twidget_amount.setReadOnly( true );\n\t\t}\n\n\t\tif ( widget_rate.getValue().length > 0 && widget_units.getValue().length > 0 ) {\n\t\t\twidget_amount.setValue( ( parseFloat( widget_rate.getValue() ) * parseFloat( widget_units.getValue() ) ).toFixed( 2 ) );\n\t\t} else {\n\t\t\twidget_amount.setValue( '0.00' );\n\t\t}\n\t}\n\n\t/* jshint ignore:start */\n\tonFormItemKeyDown( target ) {\n\t\tvar widget = this.edit_view_ui_dic['amount'];\n\t\tvar widget_rate = this.edit_view_ui_dic['rate'];\n\t\tvar widget_units = this.edit_view_ui_dic['units'];\n\t\tif ( widget_rate.getValue().length > 0 && widget_units.getValue().length > 0 ) {\n\n\t\t} else {\n\t\t\twidget.setValue( '0.00' );\n\t\t}\n\n\t\twidget.setReadOnly( true );\n\t}\n\n\t/* jshint ignore:end */\n\tsetCurrentEditRecordData() {\n\n\t\t// When mass editing, these fields may not be the common data, so their value will be undefined, so this will cause their change event cannot work properly.\n\t\tthis.setDefaultData( {\n\t\t\t'type_id': 10\n\t\t} );\n\n\t\t//Set current edit record data to all widgets\n\t\tvar widget;\n\n\t\tfor ( var key in this.current_edit_record ) {\n\t\t\twidget = this.edit_view_ui_dic[key];\n\t\t\tif ( Global.isSet( widget ) ) {\n\t\t\t\tswitch ( key ) {\n\t\t\t\t\tdefault:\n\t\t\t\t\t\twidget.setValue( this.current_edit_record[key] );\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\n\t\tif ( this.current_edit_record.rate || this.current_edit_record.units ) {\n\t\t\twidget = this.edit_view_ui_dic['amount'];\n\t\t\twidget.setReadOnly( true );\n\t\t}\n\n\t\tthis.collectUIDataToCurrentEditRecord();\n\t\tthis.setEditViewDataDone();\n\t}\n\n\tsetEditViewDataDone() {\n\t\tsuper.setEditViewDataDone();\n\t\tthis.onTypeChange();\n\t}\n\n\tbuildEditViewUI() {\n\t\tsuper.buildEditViewUI();\n\n\t\tvar $this = this;\n\t\tvar allow_multiple_selection = false;\n\n\t\tvar tab_model = {\n\t\t\t'tab_recurring_ps_amendment': { 'label': $.i18n._( 'Recurring PS Amendment' ) },\n\t\t\t'tab_audit': true,\n\t\t};\n\t\tthis.setTabModel( tab_model );\n\n\t\tthis.navigation.AComboBox( {\n\t\t\tapi_class: TTAPI.APIRecurringPayStubAmendment,\n\t\t\tid: this.script_name + '_navigation',\n\t\t\tallow_multiple_selection: false,\n\t\t\tlayout_name: 'global_recurring_amendment',\n\t\t\tnavigation_mode: true,\n\t\t\tshow_search_inputs: true\n\t\t} );\n\n\t\tthis.setNavigation();\n\n\t\t//Tab 0 start\n\n\t\tvar tab_recurring_ps_amendment = this.edit_view_tab.find( '#tab_recurring_ps_amendment' );\n\n\t\tvar tab_recurring_ps_amendment_column1 = tab_recurring_ps_amendment.find( '.first-column' );\n\n\t\tthis.edit_view_tabs[0] = [];\n\n\t\tthis.edit_view_tabs[0].push( tab_recurring_ps_amendment_column1 );\n\n\t\t// Status\n\t\tvar form_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\n\t\tform_item_input.TComboBox( { field: 'status_id', set_empty: false } );\n\t\tform_item_input.setSourceData( $this.filtered_status_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Status' ), form_item_input, tab_recurring_ps_amendment_column1, '' );\n\n\t\t// Name\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\n\t\tform_item_input.TTextInput( { field: 'name', width: '100%' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Name' ), form_item_input, tab_recurring_ps_amendment_column1 );\n\n\t\tform_item_input.parent().width( '45%' );\n\n\t\t// Description\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\n\t\tform_item_input.TTextInput( { field: 'description', width: '100%' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Description' ), form_item_input, tab_recurring_ps_amendment_column1 );\n\n\t\tform_item_input.parent().width( '45%' );\n\n\t\t// Frequency\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\n\t\tform_item_input.TComboBox( { field: 'frequency_id', set_empty: false } );\n\t\tform_item_input.setSourceData( $this.frequency_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Frequency' ), form_item_input, tab_recurring_ps_amendment_column1 );\n\n\t\t// Start Date\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.DATE_PICKER );\n\n\t\tform_item_input.TDatePicker( { field: 'start_date' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Start Date' ), form_item_input, tab_recurring_ps_amendment_column1 );\n\n\t\t// End Date\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.DATE_PICKER );\n\n\t\tform_item_input.TDatePicker( { field: 'end_date' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'End Date' ), form_item_input, tab_recurring_ps_amendment_column1 );\n\n\t\t// Employee(s)\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tapi_class: TTAPI.APIUser,\n\t\t\tallow_multiple_selection: true,\n\t\t\tlayout_name: 'global_user',\n\t\t\tshow_search_inputs: true,\n\t\t\tset_empty: true,\n\t\t\tfield: 'user'\n\t\t} );\n\t\tvar default_args = {};\n\t\tdefault_args.permission_section = 'recurring_ps_amendment';\n\t\tform_item_input.setDefaultArgs( default_args );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Employee(s)' ), form_item_input, tab_recurring_ps_amendment_column1 );\n\n\t\t// Pay Stub Amendment\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.SEPARATED_BOX );\n\t\tform_item_input.SeparatedBox( { label: $.i18n._( 'Pay Stub Amendment' ) } );\n\t\tthis.addEditFieldToColumn( null, form_item_input, tab_recurring_ps_amendment_column1 );\n\n\t\t// Pay Stub Account\n\t\tvar args = {};\n\t\tvar filter_data = {};\n\t\tfilter_data.type_id = [10, 20, 30, 50, 60, 65, 80];\n\t\targs.filter_data = filter_data;\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tapi_class: TTAPI.APIPayStubEntryAccount,\n\t\t\tallow_multiple_selection: false,\n\t\t\tlayout_name: 'global_PayStubAccount',\n\t\t\tshow_search_inputs: true,\n\t\t\tset_empty: true,\n\t\t\tfield: 'pay_stub_entry_name_id'\n\t\t} );\n\t\tform_item_input.setDefaultArgs( args );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Pay Stub Account' ), form_item_input, tab_recurring_ps_amendment_column1 );\n\n\t\t// Amount Type\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\t\tform_item_input.TComboBox( { field: 'type_id', set_empty: false } );\n\t\tform_item_input.setSourceData( $this.type_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Amount Type' ), form_item_input, tab_recurring_ps_amendment_column1 );\n\n\t\t// Fixed\n\n\t\t// Rate\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\n\t\tform_item_input.TTextInput( { field: 'rate', width: 149, hasKeyEvent: true } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Rate' ), form_item_input, tab_recurring_ps_amendment_column1, '', null, true, null, null, true );\n\n\t\t// Units\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\n\t\tform_item_input.TTextInput( { field: 'units', width: 149, hasKeyEvent: true } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Units' ), form_item_input, tab_recurring_ps_amendment_column1, '', null, true, null, null, true );\n\n\t\t// Amount\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\n\t\tform_item_input.TTextInput( { field: 'amount', width: 149 } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Amount' ), form_item_input, tab_recurring_ps_amendment_column1, '', null, true );\n\n\t\t// Percent\n\n\t\t//Percent\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\n\t\tform_item_input.TTextInput( { field: 'percent_amount', width: 79 } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Percent' ), form_item_input, tab_recurring_ps_amendment_column1, '', null, true );\n\n\t\targs = {};\n\t\tfilter_data = {};\n\t\tfilter_data.type_id = [10, 20, 30, 40, 50, 60, 65];\n\t\targs.filter_data = filter_data;\n\n\t\t// Percent of\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tapi_class: TTAPI.APIPayStubEntryAccount,\n\t\t\tallow_multiple_selection: false,\n\t\t\tlayout_name: 'global_PayStubAccount',\n\t\t\tshow_search_inputs: true,\n\t\t\tset_empty: true,\n\t\t\tfield: 'percent_amount_entry_name_id'\n\t\t} );\n\n\t\tform_item_input.setDefaultArgs( args );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Percent of' ), form_item_input, tab_recurring_ps_amendment_column1, '', null, true );\n\n\t\t// Pay Stub Note (Public)\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\n\t\tform_item_input.TTextInput( { field: 'ps_amendment_description', width: 359 } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Pay Stub Note (Public)' ), form_item_input, tab_recurring_ps_amendment_column1, '' );\n\t}\n\n\tbuildSearchFields() {\n\n\t\tsuper.buildSearchFields();\n\t\tthis.search_fields = [\n\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Name' ),\n\t\t\t\tin_column: 1,\n\t\t\t\tfield: 'name',\n\t\t\t\tbasic_search: true,\n\t\t\t\tform_item_type: FormItemType.TEXT_INPUT\n\t\t\t} ),\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Type' ),\n\t\t\t\tin_column: 1,\n\t\t\t\tfield: 'type_id',\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: true,\n\t\t\t\tlayout_name: 'global_option_column',\n\t\t\t\tform_item_type: FormItemType.AWESOME_BOX\n\t\t\t} ),\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Status' ),\n\t\t\t\tin_column: 1,\n\t\t\t\tfield: 'status_id',\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: true,\n\t\t\t\tlayout_name: 'global_option_column',\n\t\t\t\tform_item_type: FormItemType.AWESOME_BOX\n\t\t\t} ),\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Frequency' ),\n\t\t\t\tin_column: 2,\n\t\t\t\tfield: 'frequency_id',\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: true,\n\t\t\t\tlayout_name: 'global_option_column',\n\t\t\t\tform_item_type: FormItemType.AWESOME_BOX\n\t\t\t} ),\n\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Created By' ),\n\t\t\t\tin_column: 2,\n\t\t\t\tfield: 'created_by',\n\t\t\t\tlayout_name: 'global_user',\n\t\t\t\tapi_class: TTAPI.APIUser,\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: true,\n\t\t\t\tform_item_type: FormItemType.AWESOME_BOX\n\t\t\t} ),\n\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Updated By' ),\n\t\t\t\tin_column: 2,\n\t\t\t\tfield: 'updated_by',\n\t\t\t\tlayout_name: 'global_user',\n\t\t\t\tapi_class: TTAPI.APIUser,\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: true,\n\t\t\t\tform_item_type: FormItemType.AWESOME_BOX\n\t\t\t} )\n\t\t];\n\t}\n\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFxQztBQUNyRSw2QkFBNkIsQ0FBQzs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBLDZCQUE2QixDQUFDOztBQUU5QjtBQUNBOztBQUVBLGdDQUFnQyxnREFBZ0Q7QUFDaEYsNkJBQTZCLENBQUM7QUFDOUI7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLFdBQVcsQ0FBQztBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsV0FBVyxDQUFDO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsV0FBVyxDQUFDO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsV0FBVyxDQUFDO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLFdBQVcsQ0FBQztBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLFdBQVcsQ0FBQztBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9pbnRlcmZhY2UvaHRtbDUvdmlld3MvcGF5cm9sbC9yZWN1cnJpbmdfcGF5X3N0dWJfYW1lbmRtZW50L1JlY3VycmluZ1BheVN0dWJBbWVuZG1lbnRWaWV3Q29udHJvbGxlci5qcz83Zjg3Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBSZWN1cnJpbmdQYXlTdHViQW1lbmRtZW50Vmlld0NvbnRyb2xsZXIgZXh0ZW5kcyBCYXNlVmlld0NvbnRyb2xsZXIge1xuXHRjb25zdHJ1Y3Rvciggb3B0aW9ucyA9IHt9ICkge1xuXHRcdF8uZGVmYXVsdHMoIG9wdGlvbnMsIHtcblx0XHRcdGVsOiAnI3JlY3VycmluZ19wYXlfc3R1Yl9hbWVuZG1lbnRfdmlld19jb250YWluZXInLFxuXHRcdFx0dHlwZV9hcnJheTogbnVsbCxcblx0XHRcdGZpbHRlcmVkX3N0YXR1c19hcnJheTogbnVsbCxcblx0XHRcdGZyZXF1ZW5jeV9hcnJheTogbnVsbFxuXHRcdH0gKTtcblxuXHRcdHN1cGVyKCBvcHRpb25zICk7XG5cdH1cblxuXHRpbml0KCBvcHRpb25zICkge1xuXHRcdC8vdGhpcy5fc3VwZXIoJ2luaXRpYWxpemUnLCBvcHRpb25zICk7XG5cdFx0dGhpcy5lZGl0X3ZpZXdfdHBsID0gJ1JlY3VycmluZ1BheVN0dWJBbWVuZG1lbnRFZGl0Vmlldy5odG1sJztcblx0XHR0aGlzLnBlcm1pc3Npb25faWQgPSAncGF5X3N0dWJfYW1lbmRtZW50Jztcblx0XHR0aGlzLnZpZXdJZCA9ICdSZWN1cnJpbmdQYXlTdHViQW1lbmRtZW50Jztcblx0XHR0aGlzLnNjcmlwdF9uYW1lID0gJ1JlY3VycmluZ1BheVN0dWJBbWVuZG1lbnRWaWV3Jztcblx0XHR0aGlzLnRhYmxlX25hbWVfa2V5ID0gJ3JlY3VycmluZ19wc19hbWVuZG1lbnQnO1xuXHRcdHRoaXMuY29udGV4dF9tZW51X25hbWUgPSAkLmkxOG4uXyggJ1JlY3VycmluZyBQUyBBbWVuZG1lbnQnICk7XG5cdFx0dGhpcy5uYXZpZ2F0aW9uX2xhYmVsID0gJC5pMThuLl8oICdSZWN1cnJpbmcgUFMgQW1lbmRtZW50JyApO1xuXHRcdHRoaXMuYXBpID0gVFRBUEkuQVBJUmVjdXJyaW5nUGF5U3R1YkFtZW5kbWVudDtcblxuXHRcdHRoaXMucmVuZGVyKCk7XG5cdFx0dGhpcy5idWlsZENvbnRleHRNZW51KCk7XG5cblx0XHR0aGlzLmluaXREYXRhKCk7XG5cdH1cblxuXHRpbml0T3B0aW9ucygpIHtcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdHRoaXMuaW5pdERyb3BEb3duT3B0aW9uKCAndHlwZScgKTtcblx0XHR0aGlzLmluaXREcm9wRG93bk9wdGlvbiggJ2ZpbHRlcmVkX3N0YXR1cycsICdzdGF0dXNfaWQnLCB0aGlzLmFwaSwgZnVuY3Rpb24oKSB7XG5cdFx0XHQkdGhpcy5iYXNpY19zZWFyY2hfZmllbGRfdWlfZGljWydzdGF0dXNfaWQnXS5zZXRTb3VyY2VEYXRhKCAkdGhpcy5maWx0ZXJlZF9zdGF0dXNfYXJyYXkgKTtcblx0XHR9ICk7XG5cdFx0dGhpcy5pbml0RHJvcERvd25PcHRpb24oICdmcmVxdWVuY3knICk7XG5cdH1cblxuXHRvbkZvcm1JdGVtQ2hhbmdlKCB0YXJnZXQsIGRvTm90VmFsaWRhdGUgKSB7XG5cdFx0dGhpcy5zZXRJc0NoYW5nZWQoIHRhcmdldCApO1xuXHRcdHRoaXMuc2V0TWFzc0VkaXRpbmdGaWVsZHNXaGVuRm9ybUNoYW5nZSggdGFyZ2V0ICk7XG5cblx0XHR2YXIga2V5ID0gdGFyZ2V0LmdldEZpZWxkKCk7XG5cdFx0dmFyIGNfdmFsdWUgPSB0YXJnZXQuZ2V0VmFsdWUoKTtcblxuXHRcdHRoaXMuY3VycmVudF9lZGl0X3JlY29yZFtrZXldID0gY192YWx1ZTtcblxuXHRcdGlmICgga2V5ID09PSAndHlwZV9pZCcgKSB7XG5cdFx0XHR0aGlzLm9uVHlwZUNoYW5nZSgpO1xuXHRcdH1cblxuXHRcdGlmICgga2V5ID09PSAncmF0ZScgfHwga2V5ID09PSAndW5pdHMnIHx8IGtleSA9PT0gJ2Ftb3VudCcgKSB7XG5cdFx0XHRpZiAoIHRoaXMuaXNfbWFzc19lZGl0aW5nICkge1xuXHRcdFx0XHRpZiAoIHRhcmdldC5pc0NoZWNrZWQoKSApIHtcblx0XHRcdFx0XHR0aGlzLmVkaXRfdmlld191aV9kaWNbJ3JhdGUnXS5zZXRDaGVja0JveCggdHJ1ZSApO1xuXHRcdFx0XHRcdHRoaXMuZWRpdF92aWV3X3VpX2RpY1sndW5pdHMnXS5zZXRDaGVja0JveCggdHJ1ZSApO1xuXHRcdFx0XHRcdHRoaXMuZWRpdF92aWV3X3VpX2RpY1snYW1vdW50J10uc2V0Q2hlY2tCb3goIHRydWUgKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0aGlzLmVkaXRfdmlld191aV9kaWNbJ3JhdGUnXS5zZXRDaGVja0JveCggZmFsc2UgKTtcblx0XHRcdFx0XHR0aGlzLmVkaXRfdmlld191aV9kaWNbJ3VuaXRzJ10uc2V0Q2hlY2tCb3goIGZhbHNlICk7XG5cdFx0XHRcdFx0dGhpcy5lZGl0X3ZpZXdfdWlfZGljWydhbW91bnQnXS5zZXRDaGVja0JveCggZmFsc2UgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0dGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkWydhbW91bnQnXSA9IHRoaXMuZWRpdF92aWV3X3VpX2RpY1snYW1vdW50J10uZ2V0VmFsdWUoKTtcblx0XHR9XG5cblx0XHRpZiAoICFkb05vdFZhbGlkYXRlICkge1xuXHRcdFx0dGhpcy52YWxpZGF0ZSgpO1xuXHRcdH1cblx0fVxuXG5cdHVuaWZvcm1WYXJpYWJsZSggcmVjb3JkcyApIHtcblxuXHRcdGlmICggcmVjb3Jkcy50eXBlX2lkID09IDIwICkge1xuXHRcdFx0cmVjb3Jkcy5hbW91bnQgPSByZWNvcmRzLnBlcmNlbnRfYW1vdW50O1xuXHRcdH1cblxuXHRcdHJldHVybiByZWNvcmRzO1xuXHR9XG5cblx0b25UeXBlQ2hhbmdlKCkge1xuXHRcdGlmICggdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLnR5cGVfaWQgPT0gMTAgKSB7XG5cdFx0XHR0aGlzLmRldGFjaEVsZW1lbnQoICdwZXJjZW50X2Ftb3VudCcgKTtcblx0XHRcdHRoaXMuZGV0YWNoRWxlbWVudCggJ3BlcmNlbnRfYW1vdW50X2VudHJ5X25hbWVfaWQnICk7XG5cdFx0XHR0aGlzLmF0dGFjaEVsZW1lbnQoICdyYXRlJyApO1xuXHRcdFx0dGhpcy5hdHRhY2hFbGVtZW50KCAndW5pdHMnICk7XG5cdFx0XHR0aGlzLmF0dGFjaEVsZW1lbnQoICdhbW91bnQnICk7XG5cblx0XHR9IGVsc2UgaWYgKCB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQudHlwZV9pZCA9PSAyMCApIHtcblx0XHRcdHRoaXMuYXR0YWNoRWxlbWVudCggJ3BlcmNlbnRfYW1vdW50JyApO1xuXHRcdFx0dGhpcy5hdHRhY2hFbGVtZW50KCAncGVyY2VudF9hbW91bnRfZW50cnlfbmFtZV9pZCcgKTtcblx0XHRcdHRoaXMuZGV0YWNoRWxlbWVudCggJ3JhdGUnICk7XG5cdFx0XHR0aGlzLmRldGFjaEVsZW1lbnQoICd1bml0cycgKTtcblx0XHRcdHRoaXMuZGV0YWNoRWxlbWVudCggJ2Ftb3VudCcgKTtcblx0XHR9XG5cblx0XHR0aGlzLmVkaXRGaWVsZFJlc2l6ZSgpO1xuXHR9XG5cblx0b25Gb3JtSXRlbUtleVVwKCB0YXJnZXQgKSB7XG5cdFx0dmFyIHdpZGdldF9yYXRlID0gdGhpcy5lZGl0X3ZpZXdfdWlfZGljWydyYXRlJ107XG5cdFx0dmFyIHdpZGdldF91bml0cyA9IHRoaXMuZWRpdF92aWV3X3VpX2RpY1sndW5pdHMnXTtcblx0XHR2YXIgd2lkZ2V0X2Ftb3VudCA9IHRoaXMuZWRpdF92aWV3X3VpX2RpY1snYW1vdW50J107XG5cblx0XHRpZiAoIHRhcmdldC5nZXRWYWx1ZSgpLmxlbmd0aCA9PT0gMCApIHtcblx0XHRcdHdpZGdldF9hbW91bnQuc2V0UmVhZE9ubHkoIGZhbHNlICk7XG5cdFx0fVxuXHRcdGlmICggd2lkZ2V0X3JhdGUuZ2V0VmFsdWUoKS5sZW5ndGggPiAwIHx8IHdpZGdldF91bml0cy5nZXRWYWx1ZSgpLmxlbmd0aCA+IDAgKSB7XG5cdFx0XHR3aWRnZXRfYW1vdW50LnNldFJlYWRPbmx5KCB0cnVlICk7XG5cdFx0fVxuXG5cdFx0aWYgKCB3aWRnZXRfcmF0ZS5nZXRWYWx1ZSgpLmxlbmd0aCA+IDAgJiYgd2lkZ2V0X3VuaXRzLmdldFZhbHVlKCkubGVuZ3RoID4gMCApIHtcblx0XHRcdHdpZGdldF9hbW91bnQuc2V0VmFsdWUoICggcGFyc2VGbG9hdCggd2lkZ2V0X3JhdGUuZ2V0VmFsdWUoKSApICogcGFyc2VGbG9hdCggd2lkZ2V0X3VuaXRzLmdldFZhbHVlKCkgKSApLnRvRml4ZWQoIDIgKSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR3aWRnZXRfYW1vdW50LnNldFZhbHVlKCAnMC4wMCcgKTtcblx0XHR9XG5cdH1cblxuXHQvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG5cdG9uRm9ybUl0ZW1LZXlEb3duKCB0YXJnZXQgKSB7XG5cdFx0dmFyIHdpZGdldCA9IHRoaXMuZWRpdF92aWV3X3VpX2RpY1snYW1vdW50J107XG5cdFx0dmFyIHdpZGdldF9yYXRlID0gdGhpcy5lZGl0X3ZpZXdfdWlfZGljWydyYXRlJ107XG5cdFx0dmFyIHdpZGdldF91bml0cyA9IHRoaXMuZWRpdF92aWV3X3VpX2RpY1sndW5pdHMnXTtcblx0XHRpZiAoIHdpZGdldF9yYXRlLmdldFZhbHVlKCkubGVuZ3RoID4gMCAmJiB3aWRnZXRfdW5pdHMuZ2V0VmFsdWUoKS5sZW5ndGggPiAwICkge1xuXG5cdFx0fSBlbHNlIHtcblx0XHRcdHdpZGdldC5zZXRWYWx1ZSggJzAuMDAnICk7XG5cdFx0fVxuXG5cdFx0d2lkZ2V0LnNldFJlYWRPbmx5KCB0cnVlICk7XG5cdH1cblxuXHQvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuXHRzZXRDdXJyZW50RWRpdFJlY29yZERhdGEoKSB7XG5cblx0XHQvLyBXaGVuIG1hc3MgZWRpdGluZywgdGhlc2UgZmllbGRzIG1heSBub3QgYmUgdGhlIGNvbW1vbiBkYXRhLCBzbyB0aGVpciB2YWx1ZSB3aWxsIGJlIHVuZGVmaW5lZCwgc28gdGhpcyB3aWxsIGNhdXNlIHRoZWlyIGNoYW5nZSBldmVudCBjYW5ub3Qgd29yayBwcm9wZXJseS5cblx0XHR0aGlzLnNldERlZmF1bHREYXRhKCB7XG5cdFx0XHQndHlwZV9pZCc6IDEwXG5cdFx0fSApO1xuXG5cdFx0Ly9TZXQgY3VycmVudCBlZGl0IHJlY29yZCBkYXRhIHRvIGFsbCB3aWRnZXRzXG5cdFx0dmFyIHdpZGdldDtcblxuXHRcdGZvciAoIHZhciBrZXkgaW4gdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkICkge1xuXHRcdFx0d2lkZ2V0ID0gdGhpcy5lZGl0X3ZpZXdfdWlfZGljW2tleV07XG5cdFx0XHRpZiAoIEdsb2JhbC5pc1NldCggd2lkZ2V0ICkgKSB7XG5cdFx0XHRcdHN3aXRjaCAoIGtleSApIHtcblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0d2lkZ2V0LnNldFZhbHVlKCB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmRba2V5XSApO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICggdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLnJhdGUgfHwgdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLnVuaXRzICkge1xuXHRcdFx0d2lkZ2V0ID0gdGhpcy5lZGl0X3ZpZXdfdWlfZGljWydhbW91bnQnXTtcblx0XHRcdHdpZGdldC5zZXRSZWFkT25seSggdHJ1ZSApO1xuXHRcdH1cblxuXHRcdHRoaXMuY29sbGVjdFVJRGF0YVRvQ3VycmVudEVkaXRSZWNvcmQoKTtcblx0XHR0aGlzLnNldEVkaXRWaWV3RGF0YURvbmUoKTtcblx0fVxuXG5cdHNldEVkaXRWaWV3RGF0YURvbmUoKSB7XG5cdFx0c3VwZXIuc2V0RWRpdFZpZXdEYXRhRG9uZSgpO1xuXHRcdHRoaXMub25UeXBlQ2hhbmdlKCk7XG5cdH1cblxuXHRidWlsZEVkaXRWaWV3VUkoKSB7XG5cdFx0c3VwZXIuYnVpbGRFZGl0Vmlld1VJKCk7XG5cblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdHZhciBhbGxvd19tdWx0aXBsZV9zZWxlY3Rpb24gPSBmYWxzZTtcblxuXHRcdHZhciB0YWJfbW9kZWwgPSB7XG5cdFx0XHQndGFiX3JlY3VycmluZ19wc19hbWVuZG1lbnQnOiB7ICdsYWJlbCc6ICQuaTE4bi5fKCAnUmVjdXJyaW5nIFBTIEFtZW5kbWVudCcgKSB9LFxuXHRcdFx0J3RhYl9hdWRpdCc6IHRydWUsXG5cdFx0fTtcblx0XHR0aGlzLnNldFRhYk1vZGVsKCB0YWJfbW9kZWwgKTtcblxuXHRcdHRoaXMubmF2aWdhdGlvbi5BQ29tYm9Cb3goIHtcblx0XHRcdGFwaV9jbGFzczogVFRBUEkuQVBJUmVjdXJyaW5nUGF5U3R1YkFtZW5kbWVudCxcblx0XHRcdGlkOiB0aGlzLnNjcmlwdF9uYW1lICsgJ19uYXZpZ2F0aW9uJyxcblx0XHRcdGFsbG93X211bHRpcGxlX3NlbGVjdGlvbjogZmFsc2UsXG5cdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9yZWN1cnJpbmdfYW1lbmRtZW50Jyxcblx0XHRcdG5hdmlnYXRpb25fbW9kZTogdHJ1ZSxcblx0XHRcdHNob3dfc2VhcmNoX2lucHV0czogdHJ1ZVxuXHRcdH0gKTtcblxuXHRcdHRoaXMuc2V0TmF2aWdhdGlvbigpO1xuXG5cdFx0Ly9UYWIgMCBzdGFydFxuXG5cdFx0dmFyIHRhYl9yZWN1cnJpbmdfcHNfYW1lbmRtZW50ID0gdGhpcy5lZGl0X3ZpZXdfdGFiLmZpbmQoICcjdGFiX3JlY3VycmluZ19wc19hbWVuZG1lbnQnICk7XG5cblx0XHR2YXIgdGFiX3JlY3VycmluZ19wc19hbWVuZG1lbnRfY29sdW1uMSA9IHRhYl9yZWN1cnJpbmdfcHNfYW1lbmRtZW50LmZpbmQoICcuZmlyc3QtY29sdW1uJyApO1xuXG5cdFx0dGhpcy5lZGl0X3ZpZXdfdGFic1swXSA9IFtdO1xuXG5cdFx0dGhpcy5lZGl0X3ZpZXdfdGFic1swXS5wdXNoKCB0YWJfcmVjdXJyaW5nX3BzX2FtZW5kbWVudF9jb2x1bW4xICk7XG5cblx0XHQvLyBTdGF0dXNcblx0XHR2YXIgZm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5DT01CT19CT1ggKTtcblxuXHRcdGZvcm1faXRlbV9pbnB1dC5UQ29tYm9Cb3goIHsgZmllbGQ6ICdzdGF0dXNfaWQnLCBzZXRfZW1wdHk6IGZhbHNlIH0gKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuc2V0U291cmNlRGF0YSggJHRoaXMuZmlsdGVyZWRfc3RhdHVzX2FycmF5ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdTdGF0dXMnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX3JlY3VycmluZ19wc19hbWVuZG1lbnRfY29sdW1uMSwgJycgKTtcblxuXHRcdC8vIE5hbWVcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVQgKTtcblxuXHRcdGZvcm1faXRlbV9pbnB1dC5UVGV4dElucHV0KCB7IGZpZWxkOiAnbmFtZScsIHdpZHRoOiAnMTAwJScgfSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnTmFtZScgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfcmVjdXJyaW5nX3BzX2FtZW5kbWVudF9jb2x1bW4xICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXQucGFyZW50KCkud2lkdGgoICc0NSUnICk7XG5cblx0XHQvLyBEZXNjcmlwdGlvblxuXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5URVhUX0lOUFVUICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHRJbnB1dCggeyBmaWVsZDogJ2Rlc2NyaXB0aW9uJywgd2lkdGg6ICcxMDAlJyB9ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdEZXNjcmlwdGlvbicgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfcmVjdXJyaW5nX3BzX2FtZW5kbWVudF9jb2x1bW4xICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXQucGFyZW50KCkud2lkdGgoICc0NSUnICk7XG5cblx0XHQvLyBGcmVxdWVuY3lcblxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQ09NQk9fQk9YICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXQuVENvbWJvQm94KCB7IGZpZWxkOiAnZnJlcXVlbmN5X2lkJywgc2V0X2VtcHR5OiBmYWxzZSB9ICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LnNldFNvdXJjZURhdGEoICR0aGlzLmZyZXF1ZW5jeV9hcnJheSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnRnJlcXVlbmN5JyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9yZWN1cnJpbmdfcHNfYW1lbmRtZW50X2NvbHVtbjEgKTtcblxuXHRcdC8vIFN0YXJ0IERhdGVcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkRBVEVfUElDS0VSICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXQuVERhdGVQaWNrZXIoIHsgZmllbGQ6ICdzdGFydF9kYXRlJyB9ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdTdGFydCBEYXRlJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9yZWN1cnJpbmdfcHNfYW1lbmRtZW50X2NvbHVtbjEgKTtcblxuXHRcdC8vIEVuZCBEYXRlXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5EQVRFX1BJQ0tFUiApO1xuXG5cdFx0Zm9ybV9pdGVtX2lucHV0LlREYXRlUGlja2VyKCB7IGZpZWxkOiAnZW5kX2RhdGUnIH0gKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0VuZCBEYXRlJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9yZWN1cnJpbmdfcHNfYW1lbmRtZW50X2NvbHVtbjEgKTtcblxuXHRcdC8vIEVtcGxveWVlKHMpXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5BQ29tYm9Cb3goIHtcblx0XHRcdGFwaV9jbGFzczogVFRBUEkuQVBJVXNlcixcblx0XHRcdGFsbG93X211bHRpcGxlX3NlbGVjdGlvbjogdHJ1ZSxcblx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX3VzZXInLFxuXHRcdFx0c2hvd19zZWFyY2hfaW5wdXRzOiB0cnVlLFxuXHRcdFx0c2V0X2VtcHR5OiB0cnVlLFxuXHRcdFx0ZmllbGQ6ICd1c2VyJ1xuXHRcdH0gKTtcblx0XHR2YXIgZGVmYXVsdF9hcmdzID0ge307XG5cdFx0ZGVmYXVsdF9hcmdzLnBlcm1pc3Npb25fc2VjdGlvbiA9ICdyZWN1cnJpbmdfcHNfYW1lbmRtZW50Jztcblx0XHRmb3JtX2l0ZW1faW5wdXQuc2V0RGVmYXVsdEFyZ3MoIGRlZmF1bHRfYXJncyApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnRW1wbG95ZWUocyknICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX3JlY3VycmluZ19wc19hbWVuZG1lbnRfY29sdW1uMSApO1xuXG5cdFx0Ly8gUGF5IFN0dWIgQW1lbmRtZW50XG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5TRVBBUkFURURfQk9YICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LlNlcGFyYXRlZEJveCggeyBsYWJlbDogJC5pMThuLl8oICdQYXkgU3R1YiBBbWVuZG1lbnQnICkgfSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oIG51bGwsIGZvcm1faXRlbV9pbnB1dCwgdGFiX3JlY3VycmluZ19wc19hbWVuZG1lbnRfY29sdW1uMSApO1xuXG5cdFx0Ly8gUGF5IFN0dWIgQWNjb3VudFxuXHRcdHZhciBhcmdzID0ge307XG5cdFx0dmFyIGZpbHRlcl9kYXRhID0ge307XG5cdFx0ZmlsdGVyX2RhdGEudHlwZV9pZCA9IFsxMCwgMjAsIDMwLCA1MCwgNjAsIDY1LCA4MF07XG5cdFx0YXJncy5maWx0ZXJfZGF0YSA9IGZpbHRlcl9kYXRhO1xuXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5BQ29tYm9Cb3goIHtcblx0XHRcdGFwaV9jbGFzczogVFRBUEkuQVBJUGF5U3R1YkVudHJ5QWNjb3VudCxcblx0XHRcdGFsbG93X211bHRpcGxlX3NlbGVjdGlvbjogZmFsc2UsXG5cdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9QYXlTdHViQWNjb3VudCcsXG5cdFx0XHRzaG93X3NlYXJjaF9pbnB1dHM6IHRydWUsXG5cdFx0XHRzZXRfZW1wdHk6IHRydWUsXG5cdFx0XHRmaWVsZDogJ3BheV9zdHViX2VudHJ5X25hbWVfaWQnXG5cdFx0fSApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5zZXREZWZhdWx0QXJncyggYXJncyApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnUGF5IFN0dWIgQWNjb3VudCcgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfcmVjdXJyaW5nX3BzX2FtZW5kbWVudF9jb2x1bW4xICk7XG5cblx0XHQvLyBBbW91bnQgVHlwZVxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQ09NQk9fQk9YICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LlRDb21ib0JveCggeyBmaWVsZDogJ3R5cGVfaWQnLCBzZXRfZW1wdHk6IGZhbHNlIH0gKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuc2V0U291cmNlRGF0YSggJHRoaXMudHlwZV9hcnJheSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnQW1vdW50IFR5cGUnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX3JlY3VycmluZ19wc19hbWVuZG1lbnRfY29sdW1uMSApO1xuXG5cdFx0Ly8gRml4ZWRcblxuXHRcdC8vIFJhdGVcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVQgKTtcblxuXHRcdGZvcm1faXRlbV9pbnB1dC5UVGV4dElucHV0KCB7IGZpZWxkOiAncmF0ZScsIHdpZHRoOiAxNDksIGhhc0tleUV2ZW50OiB0cnVlIH0gKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ1JhdGUnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX3JlY3VycmluZ19wc19hbWVuZG1lbnRfY29sdW1uMSwgJycsIG51bGwsIHRydWUsIG51bGwsIG51bGwsIHRydWUgKTtcblxuXHRcdC8vIFVuaXRzXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5URVhUX0lOUFVUICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHRJbnB1dCggeyBmaWVsZDogJ3VuaXRzJywgd2lkdGg6IDE0OSwgaGFzS2V5RXZlbnQ6IHRydWUgfSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnVW5pdHMnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX3JlY3VycmluZ19wc19hbWVuZG1lbnRfY29sdW1uMSwgJycsIG51bGwsIHRydWUsIG51bGwsIG51bGwsIHRydWUgKTtcblxuXHRcdC8vIEFtb3VudFxuXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5URVhUX0lOUFVUICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHRJbnB1dCggeyBmaWVsZDogJ2Ftb3VudCcsIHdpZHRoOiAxNDkgfSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnQW1vdW50JyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9yZWN1cnJpbmdfcHNfYW1lbmRtZW50X2NvbHVtbjEsICcnLCBudWxsLCB0cnVlICk7XG5cblx0XHQvLyBQZXJjZW50XG5cblx0XHQvL1BlcmNlbnRcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVQgKTtcblxuXHRcdGZvcm1faXRlbV9pbnB1dC5UVGV4dElucHV0KCB7IGZpZWxkOiAncGVyY2VudF9hbW91bnQnLCB3aWR0aDogNzkgfSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnUGVyY2VudCcgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfcmVjdXJyaW5nX3BzX2FtZW5kbWVudF9jb2x1bW4xLCAnJywgbnVsbCwgdHJ1ZSApO1xuXG5cdFx0YXJncyA9IHt9O1xuXHRcdGZpbHRlcl9kYXRhID0ge307XG5cdFx0ZmlsdGVyX2RhdGEudHlwZV9pZCA9IFsxMCwgMjAsIDMwLCA0MCwgNTAsIDYwLCA2NV07XG5cdFx0YXJncy5maWx0ZXJfZGF0YSA9IGZpbHRlcl9kYXRhO1xuXG5cdFx0Ly8gUGVyY2VudCBvZlxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1ggKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuQUNvbWJvQm94KCB7XG5cdFx0XHRhcGlfY2xhc3M6IFRUQVBJLkFQSVBheVN0dWJFbnRyeUFjY291bnQsXG5cdFx0XHRhbGxvd19tdWx0aXBsZV9zZWxlY3Rpb246IGZhbHNlLFxuXHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfUGF5U3R1YkFjY291bnQnLFxuXHRcdFx0c2hvd19zZWFyY2hfaW5wdXRzOiB0cnVlLFxuXHRcdFx0c2V0X2VtcHR5OiB0cnVlLFxuXHRcdFx0ZmllbGQ6ICdwZXJjZW50X2Ftb3VudF9lbnRyeV9uYW1lX2lkJ1xuXHRcdH0gKTtcblxuXHRcdGZvcm1faXRlbV9pbnB1dC5zZXREZWZhdWx0QXJncyggYXJncyApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnUGVyY2VudCBvZicgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfcmVjdXJyaW5nX3BzX2FtZW5kbWVudF9jb2x1bW4xLCAnJywgbnVsbCwgdHJ1ZSApO1xuXG5cdFx0Ly8gUGF5IFN0dWIgTm90ZSAoUHVibGljKVxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuVEVYVF9JTlBVVCApO1xuXG5cdFx0Zm9ybV9pdGVtX2lucHV0LlRUZXh0SW5wdXQoIHsgZmllbGQ6ICdwc19hbWVuZG1lbnRfZGVzY3JpcHRpb24nLCB3aWR0aDogMzU5IH0gKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ1BheSBTdHViIE5vdGUgKFB1YmxpYyknICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX3JlY3VycmluZ19wc19hbWVuZG1lbnRfY29sdW1uMSwgJycgKTtcblx0fVxuXG5cdGJ1aWxkU2VhcmNoRmllbGRzKCkge1xuXG5cdFx0c3VwZXIuYnVpbGRTZWFyY2hGaWVsZHMoKTtcblx0XHR0aGlzLnNlYXJjaF9maWVsZHMgPSBbXG5cblx0XHRcdG5ldyBTZWFyY2hGaWVsZCgge1xuXHRcdFx0XHRsYWJlbDogJC5pMThuLl8oICdOYW1lJyApLFxuXHRcdFx0XHRpbl9jb2x1bW46IDEsXG5cdFx0XHRcdGZpZWxkOiAnbmFtZScsXG5cdFx0XHRcdGJhc2ljX3NlYXJjaDogdHJ1ZSxcblx0XHRcdFx0Zm9ybV9pdGVtX3R5cGU6IEZvcm1JdGVtVHlwZS5URVhUX0lOUFVUXG5cdFx0XHR9ICksXG5cdFx0XHRuZXcgU2VhcmNoRmllbGQoIHtcblx0XHRcdFx0bGFiZWw6ICQuaTE4bi5fKCAnVHlwZScgKSxcblx0XHRcdFx0aW5fY29sdW1uOiAxLFxuXHRcdFx0XHRmaWVsZDogJ3R5cGVfaWQnLFxuXHRcdFx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRcdFx0YmFzaWNfc2VhcmNoOiB0cnVlLFxuXHRcdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9vcHRpb25fY29sdW1uJyxcblx0XHRcdFx0Zm9ybV9pdGVtX3R5cGU6IEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWFxuXHRcdFx0fSApLFxuXHRcdFx0bmV3IFNlYXJjaEZpZWxkKCB7XG5cdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ1N0YXR1cycgKSxcblx0XHRcdFx0aW5fY29sdW1uOiAxLFxuXHRcdFx0XHRmaWVsZDogJ3N0YXR1c19pZCcsXG5cdFx0XHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdFx0XHRiYXNpY19zZWFyY2g6IHRydWUsXG5cdFx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX29wdGlvbl9jb2x1bW4nLFxuXHRcdFx0XHRmb3JtX2l0ZW1fdHlwZTogRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YXG5cdFx0XHR9ICksXG5cdFx0XHRuZXcgU2VhcmNoRmllbGQoIHtcblx0XHRcdFx0bGFiZWw6ICQuaTE4bi5fKCAnRnJlcXVlbmN5JyApLFxuXHRcdFx0XHRpbl9jb2x1bW46IDIsXG5cdFx0XHRcdGZpZWxkOiAnZnJlcXVlbmN5X2lkJyxcblx0XHRcdFx0bXVsdGlwbGU6IHRydWUsXG5cdFx0XHRcdGJhc2ljX3NlYXJjaDogdHJ1ZSxcblx0XHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfb3B0aW9uX2NvbHVtbicsXG5cdFx0XHRcdGZvcm1faXRlbV90eXBlOiBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1hcblx0XHRcdH0gKSxcblxuXHRcdFx0bmV3IFNlYXJjaEZpZWxkKCB7XG5cdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ0NyZWF0ZWQgQnknICksXG5cdFx0XHRcdGluX2NvbHVtbjogMixcblx0XHRcdFx0ZmllbGQ6ICdjcmVhdGVkX2J5Jyxcblx0XHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfdXNlcicsXG5cdFx0XHRcdGFwaV9jbGFzczogVFRBUEkuQVBJVXNlcixcblx0XHRcdFx0bXVsdGlwbGU6IHRydWUsXG5cdFx0XHRcdGJhc2ljX3NlYXJjaDogdHJ1ZSxcblx0XHRcdFx0Zm9ybV9pdGVtX3R5cGU6IEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWFxuXHRcdFx0fSApLFxuXG5cdFx0XHRuZXcgU2VhcmNoRmllbGQoIHtcblx0XHRcdFx0bGFiZWw6ICQuaTE4bi5fKCAnVXBkYXRlZCBCeScgKSxcblx0XHRcdFx0aW5fY29sdW1uOiAyLFxuXHRcdFx0XHRmaWVsZDogJ3VwZGF0ZWRfYnknLFxuXHRcdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF91c2VyJyxcblx0XHRcdFx0YXBpX2NsYXNzOiBUVEFQSS5BUElVc2VyLFxuXHRcdFx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRcdFx0YmFzaWNfc2VhcmNoOiB0cnVlLFxuXHRcdFx0XHRmb3JtX2l0ZW1fdHlwZTogRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YXG5cdFx0XHR9IClcblx0XHRdO1xuXHR9XG5cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///4744\n")}}]);