nsc-react-component 4.4.8 → 4.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"Form.js","names":["React","PureComponent","Modal","request","utils","omit","Spin","config","getLocalStore","NscForm","constructor","props","_defineProperty","createRef","formVisible","formModalProps","formDrawerProps","isChange","expand","scope","params","beforeRender","callbackBeforeClose","callback","afterRender","getDerivedStateFromProps","nextProps","prevState","modalProps","drawerProps","showModel","Object","is","newState","visible","undefined","getFieldError","name","_this$formRef$current","formRef","current","getFieldInstance","_this$formRef$current2","getFieldsError","getFieldsValue","_this$formRef","getFieldValue","isFieldsTouched","isFieldTouched","isFieldValidating","resetFields","scrollToField","options","setFields","filds","setFieldsValue","values","_this$formRef$current3","submit","onSubmit","url","msg","propsUrl","encryptFields","encryptPropps","Error","method","requestUrl","requestData","requestEncrypt","requestParam","data","_objectWithoutProperties","_excluded","_objectSpread","toLowerCase","autoPrefix","then","res","code","_message","success","error","catch","console","log","validateFields","hide","e","_this","onCancel","onClose","hideForm","resetValue","arguments","length","setState","showForm","value","option","_this$formRef$current4","cloneElement","item","index","key","children","Array","isArray","Children","map","child","onValuesChange","val","allVal","renderPanel","newChildren","loading","changeValid","state","layout","labelCol","span","wrapperCol","Pane","createElement","_Form","_extends","ref","validateTrigger","bind","preserve","storePrefix","autoType","newModalProps","newDrawerProps","defaultprops","maskClosable","formExpand","valid","change","type","modalprops","newProps","open","spinning","Fragment","render"],"sources":["../../../src/components/base/form/Form.tsx"],"sourcesContent":["/*\r\n * @Descripttion:表单组件\r\n * @version:\r\n * @Author: rxzhu\r\n * @Date: 2021-04-09 09:18:34\r\n * @LastEditors: rxzhu\r\n * @LastEditTime: 2021-04-23 15:23:54\r\n */\r\nimport React, { PureComponent } from \"react\";\r\nimport { Form, FormProps, Drawer, DrawerProps, message } from \"antd\";\r\nimport Modal from \"../modal\";\r\nimport { FormInstance } from \"antd/lib/form\";\r\nimport { request ,utils} from \"@bj-nsc/msn/lib/utils\";\r\nimport omit from \"omit.js\";\r\nimport { NscModalPorps } from \"../modal\";\r\nimport Spin from \"../spin\";\r\nimport config from \"../../config\";\r\nimport {getLocalStore} from '@bj-nsc/functions'\r\nexport interface IFormProps extends FormProps {\r\n showModel?: \"modal\" | \"drawer\" | \"auto\";\r\n modalProps?: NscModalPorps;\r\n drawerProps?: DrawerProps & {\r\n onOk?: any;\r\n okButtonProps?: Object;\r\n formExpand?: Object;\r\n };\r\n url?: string;\r\n encryptFields?: Array<String>;\r\n changeValid?: boolean; //数据修改关闭校验\r\n loading?: boolean; //表单加载状态\r\n}\r\n\r\nclass NscForm extends PureComponent<IFormProps> {\r\n formRef = React.createRef<FormInstance>();\r\n state = {\r\n formVisible: false,\r\n formModalProps: {},\r\n formDrawerProps: {},\r\n isChange: false,\r\n expand: false,\r\n };\r\n option: any = {\r\n //回调作用域\r\n scope: this,\r\n //open传递过来的页面参数\r\n params: {},\r\n //显示之前回调\r\n beforeRender: null,\r\n //关闭之前回调,如果return false,且窗口不关闭\r\n callbackBeforeClose: null,\r\n //关闭后回调,异步操作\r\n callback: null,\r\n //显示之后回调\r\n afterRender: null,\r\n };\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n static getDerivedStateFromProps(nextProps, prevState) {\r\n const { modalProps, drawerProps, showModel } = nextProps;\r\n const { formModalProps, formDrawerProps } = prevState;\r\n if (showModel == \"modal\") {\r\n // JSON.stringify(formModalProps) !== JSON.stringify(modalProps)\r\n if (!Object.is(formModalProps, modalProps)) {\r\n let newState = {\r\n formDrawerProps: modalProps,\r\n } as any;\r\n if (modalProps.visible !== null && modalProps.visible !== undefined) {\r\n newState.formVisible = modalProps.visible;\r\n }\r\n return newState;\r\n }\r\n } else if (showModel == \"drawer\") {\r\n // JSON.stringify(formDrawerProps) !== JSON.stringify(drawerProps)\r\n if (!Object.is(formDrawerProps, drawerProps)) {\r\n let newState = {\r\n formDrawerProps: drawerProps,\r\n } as any;\r\n if (\r\n drawerProps?.visible !== null &&\r\n drawerProps?.visible !== undefined\r\n ) {\r\n newState.formVisible = drawerProps.visible;\r\n }\r\n return newState;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n //获取对应字段名的错误信息\r\n getFieldError(name) {\r\n return this.formRef.current?.getFieldError(name);\r\n }\r\n\r\n //获取对应字段实例\r\n getFieldInstance(name) {\r\n return this.formRef.current?.getFieldInstance(name);\r\n }\r\n\r\n //获取一组字段名对应的错误信息,返回为数组形式\r\n getFieldsError() {\r\n return this.formRef.current.getFieldsError();\r\n }\r\n\r\n //获取一组字段名对应的值,会按照对应结构返回\r\n getFieldsValue() {\r\n return this.formRef?.current?.getFieldsValue();\r\n }\r\n\r\n //获取对应字段名的值\r\n getFieldValue(name) {\r\n return this.formRef.current.getFieldValue(name);\r\n }\r\n\r\n //检查一组字段是否被用户操作过\r\n isFieldsTouched() {\r\n return this.formRef.current.isFieldsTouched();\r\n }\r\n\r\n //检查对应字段是否被用户操作过\r\n isFieldTouched(name) {\r\n return this.formRef.current.isFieldTouched(name);\r\n }\r\n\r\n //检查一组字段是否正在校验\r\n isFieldValidating(name) {\r\n return this.formRef.current.isFieldValidating(name);\r\n }\r\n\r\n //重置一组字段到\r\n resetFields() {\r\n this.formRef.current.resetFields();\r\n }\r\n\r\n scrollToField(name, options) {\r\n this.formRef.current.scrollToField(name, options);\r\n }\r\n\r\n setFields(filds) {\r\n this.formRef.current.setFields(filds);\r\n }\r\n\r\n setFieldsValue(values) {\r\n this.formRef.current?.setFieldsValue(values);\r\n }\r\n\r\n submit() {\r\n this.formRef.current.submit();\r\n }\r\n\r\n onSubmit(\r\n url?: string,\r\n options?: any,\r\n callback?: (res?: any) => void,\r\n msg?: boolean\r\n ) {\r\n const { url: propsUrl, encryptFields: encryptPropps = [] } = this.props;\r\n if (!url && !propsUrl) {\r\n throw new Error(\"没有上传的url!\");\r\n }\r\n const { method = \"post\" } = options;\r\n let requestUrl = url ? url : propsUrl;\r\n let requestData = this.formRef.current.getFieldsValue();\r\n let requestEncrypt = encryptPropps;\r\n let requestParam = { method: method, data: requestData } as { data: any };\r\n if (options) {\r\n const { data, encryptFields, ...params } = options;\r\n requestParam = { ...requestParam, ...params };\r\n if (data) {\r\n delete requestParam.data;\r\n if (method.toLowerCase() == \"get\") {\r\n requestParam = { ...requestParam, ...params, params: data };\r\n } else {\r\n requestParam = { ...requestParam, ...params, data: data };\r\n }\r\n }\r\n if (encryptFields) {\r\n requestEncrypt = encryptFields;\r\n }\r\n }\r\n\r\n request(requestUrl, {\r\n autoPrefix: true,\r\n ...requestParam,\r\n encryptFields: requestEncrypt,\r\n })\r\n .then(function (res: any) {\r\n const { code } = res;\r\n if (msg) {\r\n if (code === 200) {\r\n message.success(\"提交成功\");\r\n } else {\r\n message.error(\"提交失败\");\r\n }\r\n }\r\n callback && callback(res);\r\n })\r\n .catch(function (error: any) {\r\n console.log(\"error\", error);\r\n });\r\n }\r\n\r\n validateFields(name) {\r\n return this.formRef.current.validateFields(name);\r\n }\r\n\r\n hide(e) {\r\n const { showModel, modalProps = {}, drawerProps = {} } = this.props;\r\n let _this = this;\r\n const { onCancel } = modalProps;\r\n const { onClose } = drawerProps;\r\n if (showModel == \"drawer\" && onClose) {\r\n onClose(e);\r\n } else if (showModel == \"modal\" && onCancel) {\r\n onCancel(e);\r\n } else {\r\n _this.hideForm();\r\n }\r\n }\r\n\r\n hideForm(resetValue = true) {\r\n this.setState(\r\n {\r\n formVisible: false,\r\n isChange: false,\r\n },\r\n () => {\r\n if (resetValue) {\r\n this.formRef.current.resetFields();\r\n }\r\n }\r\n );\r\n }\r\n\r\n showForm(value?: any, option: any = {}) {\r\n this.setState(\r\n {\r\n formVisible: true,\r\n isChange: false,\r\n },\r\n () => {\r\n this.formRef.current?.setFieldsValue(value);\r\n const { afterRender } = option;\r\n utils.callback(afterRender, this);\r\n }\r\n );\r\n }\r\n\r\n cloneElement(item, index = 0) {\r\n let _this = this;\r\n if (typeof item == \"string\") return item;\r\n let props = {} as { key: number; children: any };\r\n props.key = index;\r\n try {\r\n if (item.props && item.props.children) {\r\n if (Array.isArray(item.props.children)) {\r\n props.children = React.Children.map(\r\n item.props.children,\r\n function (child, index) {\r\n return _this.cloneElement(child, index);\r\n }\r\n );\r\n } else {\r\n props.children = this.cloneElement(item.props.children, 0);\r\n }\r\n }\r\n return React.cloneElement(item, props);\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n onValuesChange(val, allVal) {\r\n const { onValuesChange } = this.props;\r\n this.setState({\r\n isChange: true,\r\n });\r\n onValuesChange && onValuesChange(val, allVal);\r\n }\r\n renderPanel(newChildren, props) {\r\n const {\r\n showModel,\r\n drawerProps = {},\r\n modalProps = {},\r\n loading = false,\r\n changeValid = true,\r\n } = this.props;\r\n const { formVisible } = this.state;\r\n const layout = {\r\n labelCol: { span: this.props.layout == \"vertical\" ? 24 : 4 },\r\n wrapperCol: { span: this.props.layout == \"vertical\" ? 24 : 20 },\r\n };\r\n const Pane = () => {\r\n return (\r\n <Form\r\n ref={this.formRef}\r\n validateTrigger={[\"onBlur\", \"onChange\"]}\r\n // draggable={true}\r\n {...layout}\r\n {...props}\r\n onValuesChange={this.onValuesChange.bind(this)}\r\n preserve={false}\r\n />\r\n );\r\n };\r\n if (showModel) {\r\n const { showModel } = this.props;\r\n const { storePrefix } = config();\r\n let autoType = getLocalStore(\r\n \"formType\",\r\n storePrefix ? storePrefix : \"nsc-home\"\r\n );\r\n autoType = autoType ? autoType : null;\r\n let newModalProps = omit(modalProps, [\"visible\"]);\r\n let newDrawerProps = omit(drawerProps, [\"visible\"]);\r\n let defaultprops = {\r\n maskClosable: !this.state.isChange,\r\n formExpand: {\r\n expand: true,\r\n valid: changeValid,\r\n change: this.state.isChange,\r\n },\r\n type: showModel,\r\n } as any;\r\n let modalprops = { ...defaultprops };\r\n let newProps = {} as any;\r\n if (\r\n showModel == \"drawer\" ||\r\n (showModel == \"auto\" && autoType == \"drawer\")\r\n ) {\r\n newProps = { ...newModalProps, ...newDrawerProps };\r\n } else {\r\n newProps = { ...newDrawerProps, ...newModalProps };\r\n }\r\n modalprops = {\r\n ...defaultprops,\r\n ...newModalProps,\r\n ...newDrawerProps,\r\n ...newProps,\r\n onCancel: this.hide.bind(this),\r\n // onClose: this.hide.bind(this),\r\n };\r\n return (\r\n <Modal open={formVisible} {...modalprops}>\r\n {loading ? <Spin spinning={loading}>{Pane()}</Spin> : Pane()}\r\n </Modal>\r\n );\r\n } else {\r\n return <>{loading ? <Spin spinning={loading}>{Pane()}</Spin> : Pane()}</>;\r\n }\r\n }\r\n render() {\r\n const props = omit(this.props, [\r\n \"form\",\r\n \"showModel\",\r\n \"modalProps\",\r\n \"drawerProps\",\r\n \"url\",\r\n \"encryptFields\",\r\n \"changeValid\",\r\n ]);\r\n return <>{this.renderPanel(props.children, props)}</>;\r\n }\r\n}\r\nexport default NscForm;\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"Form.js","names":["React","PureComponent","Modal","request","utils","omit","Spin","config","getLocalStore","NscForm","constructor","props","_defineProperty","createRef","formVisible","formModalProps","formDrawerProps","isChange","expand","scope","params","beforeRender","callbackBeforeClose","callback","afterRender","getDerivedStateFromProps","nextProps","prevState","modalProps","drawerProps","showModel","Object","is","newState","visible","undefined","getFieldError","name","_this$formRef$current","formRef","current","getFieldInstance","_this$formRef$current2","getFieldsError","getFieldsValue","_this$formRef","getFieldValue","isFieldsTouched","isFieldTouched","isFieldValidating","resetFields","scrollToField","options","setFields","filds","setFieldsValue","values","_this$formRef$current3","submit","onSubmit","url","msg","propsUrl","encryptFields","encryptPropps","Error","method","requestUrl","requestData","requestEncrypt","requestParam","data","_objectWithoutProperties","_excluded","_objectSpread","toLowerCase","autoPrefix","then","res","code","_message","success","error","catch","console","log","validateFields","hide","e","_this","onCancel","onClose","hideForm","resetValue","arguments","length","setState","showForm","value","option","_this$formRef$current4","cloneElement","item","index","key","children","Array","isArray","Children","map","child","onValuesChange","val","allVal","renderPanel","newChildren","loading","changeValid","state","layout","labelCol","span","wrapperCol","Pane","createElement","_Form","_extends","ref","validateTrigger","bind","preserve","storePrefix","autoType","newModalProps","newDrawerProps","defaultprops","maskClosable","formExpand","valid","change","type","modalprops","newProps","open","spinning","Fragment","render"],"sources":["../../../src/components/base/form/Form.tsx"],"sourcesContent":["/*\r\n * @Descripttion:表单组件\r\n * @version:\r\n * @Author: rxzhu\r\n * @Date: 2021-04-09 09:18:34\r\n * @LastEditors: rxzhu\r\n * @LastEditTime: 2021-04-23 15:23:54\r\n */\r\nimport React, { PureComponent } from \"react\";\r\nimport { Form, FormProps, Drawer, DrawerProps, message } from \"antd\";\r\nimport Modal from \"../modal\";\r\nimport { FormInstance } from \"antd/lib/form\";\r\nimport { request ,utils} from \"@bj-nsc/msn/lib/utils\";\r\nimport omit from \"omit.js\";\r\nimport { NscModalPorps } from \"../modal\";\r\nimport Spin from \"../spin\";\r\nimport config from \"../../config\";\r\nimport {getLocalStore} from '@bj-nsc/functions'\r\nexport interface IFormProps extends FormProps {\r\n showModel?: \"modal\" | \"drawer\" | \"auto\";\r\n modalProps?: NscModalPorps;\r\n drawerProps?: DrawerProps & {\r\n onOk?: any;\r\n okButtonProps?: Object;\r\n formExpand?: Object;\r\n };\r\n url?: string;\r\n encryptFields?: Array<String>;\r\n changeValid?: boolean; //数据修改关闭校验\r\n loading?: boolean; //表单加载状态\r\n}\r\n\r\nclass NscForm extends PureComponent<IFormProps> {\r\n formRef = React.createRef<FormInstance>();\r\n state = {\r\n formVisible: false,\r\n formModalProps: {},\r\n formDrawerProps: {},\r\n isChange: false,\r\n expand: false,\r\n };\r\n option: any = {\r\n //回调作用域\r\n scope: this,\r\n //open传递过来的页面参数\r\n params: {},\r\n //显示之前回调\r\n beforeRender: null,\r\n //关闭之前回调,如果return false,且窗口不关闭\r\n callbackBeforeClose: null,\r\n //关闭后回调,异步操作\r\n callback: null,\r\n //显示之后回调\r\n afterRender: null,\r\n };\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n static getDerivedStateFromProps(nextProps, prevState) {\r\n const { modalProps, drawerProps, showModel } = nextProps;\r\n const { formModalProps, formDrawerProps } = prevState;\r\n if (showModel == \"modal\") {\r\n // JSON.stringify(formModalProps) !== JSON.stringify(modalProps)\r\n if (!Object.is(formModalProps, modalProps)) {\r\n let newState = {\r\n formDrawerProps: modalProps,\r\n } as any;\r\n if (modalProps.visible !== null && modalProps.visible !== undefined) {\r\n newState.formVisible = modalProps.visible;\r\n }\r\n return newState;\r\n }\r\n } else if (showModel == \"drawer\") {\r\n // JSON.stringify(formDrawerProps) !== JSON.stringify(drawerProps)\r\n if (!Object.is(formDrawerProps, drawerProps)) {\r\n let newState = {\r\n formDrawerProps: drawerProps,\r\n } as any;\r\n if (\r\n drawerProps?.visible !== null &&\r\n drawerProps?.visible !== undefined\r\n ) {\r\n newState.formVisible = drawerProps.visible;\r\n }\r\n return newState;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n //获取对应字段名的错误信息\r\n getFieldError(name) {\r\n return this.formRef.current?.getFieldError(name);\r\n }\r\n\r\n //获取对应字段实例\r\n getFieldInstance(name) {\r\n return this.formRef.current?.getFieldInstance(name);\r\n }\r\n\r\n //获取一组字段名对应的错误信息,返回为数组形式\r\n getFieldsError() {\r\n return this.formRef.current.getFieldsError();\r\n }\r\n\r\n //获取一组字段名对应的值,会按照对应结构返回\r\n getFieldsValue() {\r\n return this.formRef?.current?.getFieldsValue();\r\n }\r\n\r\n //获取对应字段名的值\r\n getFieldValue(name) {\r\n return this.formRef.current.getFieldValue(name);\r\n }\r\n\r\n //检查一组字段是否被用户操作过\r\n isFieldsTouched() {\r\n return this.formRef.current.isFieldsTouched();\r\n }\r\n\r\n //检查对应字段是否被用户操作过\r\n isFieldTouched(name) {\r\n return this.formRef.current.isFieldTouched(name);\r\n }\r\n\r\n //检查一组字段是否正在校验\r\n isFieldValidating(name) {\r\n return this.formRef.current.isFieldValidating(name);\r\n }\r\n\r\n //重置一组字段到\r\n resetFields() {\r\n this.formRef.current.resetFields();\r\n }\r\n\r\n scrollToField(name, options) {\r\n this.formRef.current.scrollToField(name, options);\r\n }\r\n\r\n setFields(filds) {\r\n this.formRef.current.setFields(filds);\r\n }\r\n\r\n setFieldsValue(values) {\r\n this.formRef.current?.setFieldsValue(values);\r\n }\r\n\r\n submit() {\r\n this.formRef.current.submit();\r\n }\r\n\r\n onSubmit(\r\n url?: string,\r\n options?: any,\r\n callback?: (res?: any) => void,\r\n msg?: boolean\r\n ) {\r\n const { url: propsUrl, encryptFields: encryptPropps = [] } = this.props;\r\n if (!url && !propsUrl) {\r\n throw new Error(\"没有上传的url!\");\r\n }\r\n const { method = \"post\" } = options;\r\n let requestUrl = url ? url : propsUrl;\r\n let requestData = this.formRef.current.getFieldsValue();\r\n let requestEncrypt = encryptPropps;\r\n let requestParam = { method: method, data: requestData } as { data: any };\r\n if (options) {\r\n const { data, encryptFields, ...params } = options;\r\n requestParam = { ...requestParam, ...params };\r\n if (data) {\r\n delete requestParam.data;\r\n if (method.toLowerCase() == \"get\") {\r\n requestParam = { ...requestParam, ...params, params: data };\r\n } else {\r\n requestParam = { ...requestParam, ...params, data: data };\r\n }\r\n }\r\n if (encryptFields) {\r\n requestEncrypt = encryptFields;\r\n }\r\n }\r\n\r\n request(requestUrl, {\r\n autoPrefix: true,\r\n ...requestParam,\r\n encryptFields: requestEncrypt,\r\n })\r\n .then(function (res: any) {\r\n const { code } = res;\r\n if (msg) {\r\n if (code === 200) {\r\n message.success(\"提交成功\");\r\n } else {\r\n message.error(\"提交失败\");\r\n }\r\n }\r\n callback && callback(res);\r\n })\r\n .catch(function (error: any) {\r\n console.log(\"error\", error);\r\n });\r\n }\r\n\r\n validateFields(name) {\r\n return this.formRef.current.validateFields(name);\r\n }\r\n\r\n hide(e) {\r\n const { showModel, modalProps = {}, drawerProps = {} } = this.props;\r\n let _this = this;\r\n const { onCancel } = modalProps;\r\n const { onClose } = drawerProps;\r\n if (showModel == \"drawer\" && onClose) {\r\n onClose(e);\r\n } else if (showModel == \"modal\" && onCancel) {\r\n onCancel(e);\r\n } else {\r\n _this.hideForm();\r\n }\r\n }\r\n\r\n hideForm(resetValue = true) {\r\n this.setState(\r\n {\r\n formVisible: false,\r\n isChange: false,\r\n },\r\n () => {\r\n if (resetValue) {\r\n this.formRef.current.resetFields();\r\n }\r\n }\r\n );\r\n }\r\n\r\n showForm(value?: any, option: any = {}) {\r\n this.setState(\r\n {\r\n formVisible: true,\r\n isChange: false,\r\n },\r\n () => {\r\n this.formRef.current?.setFieldsValue(value);\r\n const { afterRender } = option;\r\n utils.callback(afterRender, this);\r\n }\r\n );\r\n }\r\n\r\n cloneElement(item, index = 0) {\r\n let _this = this;\r\n if (typeof item == \"string\") return item;\r\n let props = {} as { key: number; children: any };\r\n props.key = index;\r\n try {\r\n if (item.props && item.props.children) {\r\n if (Array.isArray(item.props.children)) {\r\n props.children = React.Children.map(\r\n item.props.children,\r\n function (child, index) {\r\n return _this.cloneElement(child, index);\r\n }\r\n );\r\n } else {\r\n props.children = this.cloneElement(item.props.children, 0);\r\n }\r\n }\r\n return React.cloneElement(item, props);\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n onValuesChange(val, allVal) {\r\n const { onValuesChange } = this.props;\r\n this.setState({\r\n isChange: true,\r\n });\r\n onValuesChange && onValuesChange(val, allVal);\r\n }\r\n renderPanel(newChildren, props) {\r\n const {\r\n showModel,\r\n drawerProps = {},\r\n modalProps = {},\r\n loading = false,\r\n changeValid = true,\r\n } = this.props;\r\n const { formVisible } = this.state;\r\n const layout = {\r\n labelCol: { span: this.props.layout == \"horizontal\" ? 4 : 24 },\r\n wrapperCol: { span: this.props.layout == \"horizontal\" ? 20 : 24 },\r\n };\r\n const Pane = () => {\r\n return (\r\n <Form\r\n ref={this.formRef}\r\n validateTrigger={[\"onBlur\", \"onChange\"]}\r\n layout=\"vertical\"\r\n {...layout}\r\n {...props}\r\n onValuesChange={this.onValuesChange.bind(this)}\r\n preserve={false}\r\n />\r\n );\r\n };\r\n if (showModel) {\r\n const { showModel } = this.props;\r\n const { storePrefix } = config();\r\n let autoType = getLocalStore(\r\n \"formType\",\r\n storePrefix ? storePrefix : \"nsc-home\"\r\n );\r\n autoType = autoType ? autoType : null;\r\n let newModalProps = omit(modalProps, [\"visible\"]);\r\n let newDrawerProps = omit(drawerProps, [\"visible\"]);\r\n let defaultprops = {\r\n maskClosable: !this.state.isChange,\r\n formExpand: {\r\n expand: true,\r\n valid: changeValid,\r\n change: this.state.isChange,\r\n },\r\n type: showModel,\r\n } as any;\r\n let modalprops = { ...defaultprops };\r\n let newProps = {} as any;\r\n if (\r\n showModel == \"drawer\" ||\r\n (showModel == \"auto\" && autoType == \"drawer\")\r\n ) {\r\n newProps = { ...newModalProps, ...newDrawerProps };\r\n } else {\r\n newProps = { ...newDrawerProps, ...newModalProps };\r\n }\r\n modalprops = {\r\n ...defaultprops,\r\n ...newModalProps,\r\n ...newDrawerProps,\r\n ...newProps,\r\n onCancel: this.hide.bind(this),\r\n // onClose: this.hide.bind(this),\r\n };\r\n return (\r\n <Modal open={formVisible} {...modalprops}>\r\n {loading ? <Spin spinning={loading}>{Pane()}</Spin> : Pane()}\r\n </Modal>\r\n );\r\n } else {\r\n return <>{loading ? <Spin spinning={loading}>{Pane()}</Spin> : Pane()}</>;\r\n }\r\n }\r\n render() {\r\n const props = omit(this.props, [\r\n \"form\",\r\n \"showModel\",\r\n \"modalProps\",\r\n \"drawerProps\",\r\n \"url\",\r\n \"encryptFields\",\r\n \"changeValid\",\r\n ]);\r\n return <>{this.renderPanel(props.children, props)}</>;\r\n }\r\n}\r\nexport default NscForm;\r\n"],"mappings":"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"}
@@ -13,6 +13,7 @@ interface ImportPropos {
13
13
  closeCallBack?: any;
14
14
  };
15
15
  showButton?: boolean;
16
+ buttonText?: string;
16
17
  [propsName: string]: any;
17
18
  }
18
19
  declare class NscImportData extends React.PureComponent<ImportPropos, any> {
@@ -109,7 +109,7 @@ class NscImportData extends React.PureComponent {
109
109
  key: index
110
110
  }, item) : /*#__PURE__*/React.createElement("div", {
111
111
  key: index
112
- }, "第" + item.rowNum + "行数据重复;");
112
+ }, "第" + item.rowNum + "行数据重复;" + item.errorMsg ? item.errorMsg : "");
113
113
  } else {
114
114
  return typeof item == "string" ? /*#__PURE__*/React.createElement("div", {
115
115
  key: index
@@ -194,7 +194,8 @@ class NscImportData extends React.PureComponent {
194
194
  downTempletUrl,
195
195
  checkData,
196
196
  checkUrl,
197
- requestConfig
197
+ requestConfig,
198
+ buttonText
198
199
  } = this.props;
199
200
  const footer = /*#__PURE__*/React.createElement("div", {
200
201
  className: "footer"
@@ -284,8 +285,8 @@ class NscImportData extends React.PureComponent {
284
285
  onClick: () => {
285
286
  this.show();
286
287
  }
287
- }, "\u6570\u636E\u5BFC\u5165")), /*#__PURE__*/React.createElement(NscModal, {
288
- title: "\u6570\u636E\u5BFC\u5165",
288
+ }, buttonText || "数据导入")), /*#__PURE__*/React.createElement(NscModal, {
289
+ title: buttonText || "数据导入",
289
290
  width: 800,
290
291
  wrapClassName: "import-modal",
291
292
  ref: this.modalRef,
@@ -358,4 +359,4 @@ class NscImportData extends React.PureComponent {
358
359
  }
359
360
  }
360
361
  export default NscImportData;
361
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIk5zY1VwbG9hZCIsIk5TQ0J1dHRvbiIsIk5zY0Rvd25Mb2FkIiwiTnNjTW9kYWwiLCJGaWxlSWNvbiIsIlVwbG9hZE91dGxpbmVkIiwiRm9sZGVyT3V0bGluZWQiLCJDbG9zZUNpcmNsZU91dGxpbmVkIiwiRXhjbGFtYXRpb25DaXJjbGVPdXRsaW5lZCIsIlN0ZXBzIiwibnNjRmlsZSIsIkFsZXJ0IiwiQ29sbGFwc2UiLCJEZWxldGVPdXRsaW5lZCIsIk5zY0ltcG9ydERhdGEiLCJQdXJlQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJhcmd1bWVudHMiLCJfZGVmaW5lUHJvcGVydHkiLCJzdGF0dXMiLCJmaWxlIiwiY3VycmVudFN0ZXAiLCJyZXF1ZXN0U3RhdHVzIiwiZXJyb3JMaXN0Iiwid2Fybkxpc3QiLCJidXR0b25Mb2FkaW5nIiwiY3JlYXRlUmVmIiwiZmlsZVNpemVLYiIsIm51bWJlciIsImxlbmd0aCIsInVuZGVmaW5lZCIsInRvRml4ZWQiLCJzaG93IiwiX3RoaXMkbW9kYWxSZWYkY3VycmVuIiwibW9kYWxSZWYiLCJjdXJyZW50IiwiaGlkZSIsIl90aGlzJG1vZGFsUmVmJGN1cnJlbjIiLCJyZXNldERhdGEiLCJpbXBvcnREYXRhIiwiaXNPdmVyd3JpdGUiLCJyZXF1ZXN0Q29uZmlnIiwiaW1wb3J0VXJsIiwib25DYWxsQmFja3MiLCJwcm9wcyIsImRhdGEiLCJjb25maWciLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJzZXRTdGF0ZSIsImltcG9ydEZpbGUiLCJ1cmwiLCJfb2JqZWN0U3ByZWFkIiwidGhlbiIsInJlcyIsImNvZGUiLCJfcmVzJGRhdGEiLCJfcmVzJGRhdGEyIiwid2FybmluZ3MiLCJlcnJvcnMiLCJfbWVzc2FnZSIsInN1Y2Nlc3MiLCJuYW1lIiwiaW1wb3J0Q2FsbEJhY2siLCJtc2ciLCJlcnJvciIsInJlbmRlckVycm9yQ29udGVudCIsImxpc3QiLCJtYXAiLCJpdGVtIiwiaW5kZXgiLCJzdGF0ZSIsImNyZWF0ZUVsZW1lbnQiLCJrZXkiLCJyb3dOdW0iLCJlcnJvck1zZyIsInJlbmRlclJlc3VsdCIsImFsZXJ0X21zZ19tYXAiLCJ3YXJuaW5nIiwiX2FsZXJ0X21zZ19tYXAkcmVxdWVzIiwic3R5bGUiLCJtYXJnaW5Ub3AiLCJtZXNzYWdlIiwidHlwZSIsInNob3dJY29uIiwiZXhwYW5kSWNvblBvc2l0aW9uIiwiY2xhc3NOYW1lIiwiYmFja2dyb3VuZENvbG9yIiwiYm9yZGVyIiwiYm9yZGVyUmFkaXVzIiwiZGVmYXVsdEFjdGl2ZUtleSIsIlBhbmVsIiwiaGVhZGVyIiwiY29sb3IiLCJleHRyYSIsImJhY2tncm91bmQiLCJyZW5kZXIiLCJkb3duTG9hZFRlbXBsZXQiLCJkb3duVGVtcGxldFVybCIsImNoZWNrRGF0YSIsImNoZWNrVXJsIiwiZm9vdGVyIiwib25DbGljayIsImVycm9yQ291bnQiLCJkdXBsaWNhdGVDb3VudCIsImR1cGxpY2F0ZUxpc3QiLCJkaXNhYmxlZCIsImljb24iLCJtYXJnaW5MZWZ0IiwiY2hpbGRyZW4iLCJGcmFnbWVudCIsInNob3dCdXR0b24iLCJ0aXRsZSIsIndpZHRoIiwid3JhcENsYXNzTmFtZSIsInJlZiIsIm9uQ2FuY2VsIiwiZGlzcGxheSIsImJlZm9yZVVwbG9hZCIsImFsbG93RmlsZVN1ZmZpeCIsImFjY2VwdCIsInNob3dVcGxvYWRMaXN0Iiwic2l6ZSIsIml0ZW1zIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYmFzZS9pbXBvcnREYXRhL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubGVzc1wiO1xyXG5pbXBvcnQgTnNjVXBsb2FkIGZyb20gXCIuLi91cGxvYWRcIjtcclxuaW1wb3J0IE5TQ0J1dHRvbiBmcm9tIFwiLi4vYnV0dG9uXCI7XHJcbmltcG9ydCBOc2NEb3duTG9hZCBmcm9tIFwiLi4vZG93bmxvYWRcIjtcclxuaW1wb3J0IE5zY01vZGFsIGZyb20gXCIuLi9tb2RhbFwiO1xyXG5pbXBvcnQgRmlsZUljb24gZnJvbSBcIi4uL2NvbW1vbi9GaWxlSWNvblwiO1xyXG5pbXBvcnQge1xyXG4gIFVwbG9hZE91dGxpbmVkLFxyXG4gIEZvbGRlck91dGxpbmVkLFxyXG4gIENsb3NlQ2lyY2xlT3V0bGluZWQsXHJcbiAgRXhjbGFtYXRpb25DaXJjbGVPdXRsaW5lZCxcclxufSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuaW1wb3J0IFN0ZXBzIGZyb20gXCIuLi9zdGVwc1wiO1xyXG5pbXBvcnQgbnNjRmlsZSBmcm9tIFwibnNjLWZpbGVcIjtcclxuaW1wb3J0IHsgbWVzc2FnZSB9IGZyb20gXCJhbnRkXCI7XHJcbmltcG9ydCBBbGVydCBmcm9tIFwiLi4vYWxlcnRcIjtcclxuaW1wb3J0IENvbGxhcHNlIGZyb20gXCIuLi9jb2xsYXBzZVwiO1xyXG5pbXBvcnQgSWNvbiBmcm9tIFwiLi4vY29tbW9uL0ljb25cIjtcclxuaW1wb3J0IHsgRGVsZXRlT3V0bGluZWQgfSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuXHJcbmludGVyZmFjZSBJbXBvcnRQcm9wb3Mge1xyXG4gIGNoZWNrRGF0YT86IGJvb2xlYW47IC8v5piv5ZCm6L+b6KGM5pWw5o2u5qCh6aqM77yM6buY6K6kZmFsc2VcclxuICBjaGVja1VybD86IHN0cmluZzsgLy/mlbDmja7moKHpqozmjqXlj6PlnLDlnYBcclxuICBpbXBvcnRVcmw6IHN0cmluZzsgLy/mlbDmja7lr7zlhaXlnLDlnYBcclxuICByZXF1ZXN0Q29uZmlnPzogYW55O1xyXG4gIGRvd25Mb2FkVGVtcGxldD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65LiL6L295qih5p2/5oyJ6ZKuXHJcbiAgZG93blRlbXBsZXRVcmw/OiBzdHJpbmc7IC8v5LiL6L295qih5p2/5Zyw5Z2AXHJcbiAgb25DYWxsQmFja3M/OiB7XHJcbiAgICBjaGVja0NhbGxCYWNrPzogYW55OyAvL+aVsOaNruagoemqjOWbnuiwg1xyXG4gICAgaW1wb3J0Q2FsbEJhY2s/OiBhbnk7IC8v5pWw5o2u5a+85YWl5Zue6LCDXHJcbiAgICBjbG9zZUNhbGxCYWNrPzogYW55O1xyXG4gIH07XHJcbiAgc2hvd0J1dHRvbj86IGJvb2xlYW47XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmNsYXNzIE5zY0ltcG9ydERhdGEgZXh0ZW5kcyBSZWFjdC5QdXJlQ29tcG9uZW50PEltcG9ydFByb3BvcywgYW55PiB7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICBzdGF0dXM6IDEsXHJcbiAgICBmaWxlOiBudWxsLFxyXG4gICAgY3VycmVudFN0ZXA6IDEsXHJcbiAgICByZXF1ZXN0U3RhdHVzOiBcIlwiLFxyXG4gICAgZXJyb3JMaXN0OiBbXSxcclxuICAgIHdhcm5MaXN0OiBbXSxcclxuICAgIGJ1dHRvbkxvYWRpbmc6IGZhbHNlLFxyXG4gIH07XHJcbiAgbW9kYWxSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIGZpbGVTaXplS2IobnVtYmVyID0gMCkge1xyXG4gICAgcmV0dXJuIChudW1iZXIgLyAxMDI0KS50b0ZpeGVkKDIpO1xyXG4gIH1cclxuICBzaG93KCkge1xyXG4gICAgdGhpcy5tb2RhbFJlZi5jdXJyZW50Py5zaG93KCk7XHJcbiAgfVxyXG4gIGhpZGUoKSB7XHJcbiAgICB0aGlzLm1vZGFsUmVmLmN1cnJlbnQ/LmhpZGUoKTtcclxuICAgIHRoaXMucmVzZXREYXRhKCk7XHJcbiAgfVxyXG4gIGltcG9ydERhdGEoZmlsZSwgaXNPdmVyd3JpdGUpIHtcclxuICAgIGNvbnN0IHsgcmVxdWVzdENvbmZpZyA9IHt9LCBpbXBvcnRVcmwsIG9uQ2FsbEJhY2tzID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgeyBkYXRhID0ge30sIC4uLmNvbmZpZyB9ID0gcmVxdWVzdENvbmZpZztcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBidXR0b25Mb2FkaW5nOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICAvLyBsZXQgZm9ybURhdGEgPSB7Li4uZGF0YX1cclxuXHJcbiAgICBuc2NGaWxlXHJcbiAgICAgIC5pbXBvcnRGaWxlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHVybDogaW1wb3J0VXJsLFxyXG4gICAgICAgICAgZGF0YTogeyAuLi5kYXRhLCBpc092ZXJ3cml0ZTogaXNPdmVyd3JpdGUgfSxcclxuICAgICAgICAgIGZpbGU6IGZpbGUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb25maWdcclxuICAgICAgKVxyXG4gICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIGJ1dHRvbkxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChyZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIC8vIG1lc3NhZ2Uuc3VjY2VzcyhcIuWvvOWFpeaIkOWKn++8gVwiKTtcclxuICAgICAgICAgIGlmIChyZXMuZGF0YT8ud2FybmluZ3M/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgcmVxdWVzdFN0YXR1czogXCJ3YXJuaW5nXCIsXHJcbiAgICAgICAgICAgICAgd2Fybkxpc3Q6IHJlcy5kYXRhLndhcm5pbmdzLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAocmVzLmRhdGE/LmVycm9ycz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAvLyBtZXNzYWdlLnN1Y2Nlc3MoXCLlr7zlhaXlpLHotKXvvIFcIik7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgIHJlcXVlc3RTdGF0dXM6IFwiZXJyb3JcIixcclxuICAgICAgICAgICAgICBlcnJvckxpc3Q6IHJlcy5kYXRhLmVycm9ycyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBtZXNzYWdlLnN1Y2Nlc3MoKGZpbGU/Lm5hbWUgfHwgXCJcIikgKyBcIuWvvOWFpeaIkOWKn++8gVwiKTtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgcmVxdWVzdFN0YXR1czogXCJzdWNjZXNzXCIsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgb25DYWxsQmFja3M/LmltcG9ydENhbGxCYWNrICYmIG9uQ2FsbEJhY2tzPy5pbXBvcnRDYWxsQmFjayhyZXMpO1xyXG4gICAgICAgICAgLy8gdGhpcy5oaWRlKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICFyZXMubXNnICYmIG1lc3NhZ2UuZXJyb3IoXCLlr7zlhaXlpLHotKXvvIFcIik7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgcmVxdWVzdFN0YXR1czogXCJlcnJvclwiLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgcmVuZGVyRXJyb3JDb250ZW50KGxpc3QpIHtcclxuICAgIHJldHVybiBsaXN0Lm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuc3RhdGUucmVxdWVzdFN0YXR1cyA9PSBcIndhcm5pbmdcIikge1xyXG4gICAgICAgIHJldHVybiB0eXBlb2YgaXRlbSA9PSBcInN0cmluZ1wiID8gKFxyXG4gICAgICAgICAgPGRpdiBrZXk9e2luZGV4fT57aXRlbX08L2Rpdj5cclxuICAgICAgICApIDogKFxyXG4gICAgICAgICAgPGRpdiBrZXk9e2luZGV4fT57XCLnrKxcIiArIGl0ZW0ucm93TnVtICsgXCLooYzmlbDmja7ph43lpI3vvJtcIn08L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB0eXBlb2YgaXRlbSA9PSBcInN0cmluZ1wiID8gKFxyXG4gICAgICAgICAgPGRpdiBrZXk9e2luZGV4fT57aXRlbX08L2Rpdj5cclxuICAgICAgICApIDogKFxyXG4gICAgICAgICAgPGRpdiBrZXk9e2luZGV4fT57aXRlbS5lcnJvck1zZ308L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgcmVuZGVyUmVzdWx0KCkge1xyXG4gICAgY29uc3QgeyByZXF1ZXN0U3RhdHVzLCBlcnJvckxpc3QsIHdhcm5MaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgYWxlcnRfbXNnX21hcCA9IHtcclxuICAgICAgc3VjY2VzczogXCLlr7zlhaXmiJDlip9cIixcclxuICAgICAgZXJyb3I6IFwi5a+85YWl5aSx6LSlXCIsXHJcbiAgICAgIHdhcm5pbmc6IFwi5ZGK6K2m5o+Q56S6XCIsXHJcbiAgICB9O1xyXG4gICAgaWYgKHJlcXVlc3RTdGF0dXMpIHtcclxuICAgICAgaWYgKHJlcXVlc3RTdGF0dXMgPT0gXCJzdWNjZXNzXCIpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPEFsZXJ0XHJcbiAgICAgICAgICAgIHN0eWxlPXt7IG1hcmdpblRvcDogXCI4cHhcIiB9fVxyXG4gICAgICAgICAgICBtZXNzYWdlPXthbGVydF9tc2dfbWFwW3JlcXVlc3RTdGF0dXNdID8/IFwi5o+Q56S6XCJ9XHJcbiAgICAgICAgICAgIHR5cGU9e1wic3VjY2Vzc1wifVxyXG4gICAgICAgICAgICBzaG93SWNvblxyXG4gICAgICAgICAgLz5cclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8Q29sbGFwc2VcclxuICAgICAgICAgICAgZXhwYW5kSWNvblBvc2l0aW9uPVwicmlnaHRcIlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e1xyXG4gICAgICAgICAgICAgIHJlcXVlc3RTdGF0dXMgPT0gXCJ3YXJuaW5nXCIgPyBcImNvbnRlbnQtd2FybmluZ1wiIDogXCJjb250ZW50LWVycm9yXCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjpcclxuICAgICAgICAgICAgICAgIHJlcXVlc3RTdGF0dXMgPT0gXCJ3YXJuaW5nXCIgPyBcIiNGQ0UxQUJcIiA6IFwiI2ZmZjJmMFwiLFxyXG4gICAgICAgICAgICAgIGJvcmRlcjpcclxuICAgICAgICAgICAgICAgIHJlcXVlc3RTdGF0dXMgPT0gXCJ3YXJuaW5nXCJcclxuICAgICAgICAgICAgICAgICAgPyBcIjFweCBzb2xpZCAjRkNFMUFCXCJcclxuICAgICAgICAgICAgICAgICAgOiBcIjFweCBzb2xpZCAjRkZDQ0M3XCIsXHJcbiAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBcIjJweFwiLFxyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICBkZWZhdWx0QWN0aXZlS2V5PXtbXCIxXCJdfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8Q29sbGFwc2UuUGFuZWxcclxuICAgICAgICAgICAgICBrZXk9XCIxXCJcclxuICAgICAgICAgICAgICBoZWFkZXI9e1xyXG4gICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHJlcXVlc3RTdGF0dXMgPT0gXCJ3YXJuaW5nXCIgPyBcIiNGQUFEMTRcIiA6IFwiI2Y2MFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7cmVxdWVzdFN0YXR1cyA9PSBcIndhcm5pbmdcIiA/IChcclxuICAgICAgICAgICAgICAgICAgICAgIDxFeGNsYW1hdGlvbkNpcmNsZU91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgIDxDbG9zZUNpcmNsZU91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICB7YWxlcnRfbXNnX21hcFtyZXF1ZXN0U3RhdHVzXX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGV4dHJhPXtcclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IHJlcXVlc3RTdGF0dXMgPT0gXCJ3YXJuaW5nXCIgPyBcIiNGQUFEMTRcIiA6IFwiI2Y2MFwiLFxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7cmVxdWVzdFN0YXR1cyA9PSBcIndhcm5pbmdcIiA/IFwi5p+l55yLXCIgOiBcIuafpeeci+mUmeivr1wifVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6XHJcbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdFN0YXR1cyA9PSBcIndhcm5pbmdcIiA/IFwiI0ZGRkRGNlwiIDogXCIjZmZmOWY5XCIsXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiY29udGVudC1lcnJvcl9fbXNnXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJFcnJvckNvbnRlbnQoXHJcbiAgICAgICAgICAgICAgICAgIHJlcXVlc3RTdGF0dXMgPT0gXCJ3YXJuaW5nXCIgPyB3YXJuTGlzdCA6IGVycm9yTGlzdFxyXG4gICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9Db2xsYXBzZS5QYW5lbD5cclxuICAgICAgICAgIDwvQ29sbGFwc2U+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICByZXNldERhdGEoKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc3RhdHVzOiAxLFxyXG4gICAgICBmaWxlOiBudWxsLFxyXG4gICAgICBjdXJyZW50U3RlcDogMSxcclxuICAgICAgcmVxdWVzdFN0YXR1czogXCJcIixcclxuICAgICAgZXJyb3JMaXN0OiBbXSxcclxuICAgICAgd2Fybkxpc3Q6IFtdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHsgZmlsZSwgc3RhdHVzLCBjdXJyZW50U3RlcCwgcmVxdWVzdFN0YXR1cyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHtcclxuICAgICAgZG93bkxvYWRUZW1wbGV0LFxyXG4gICAgICBkb3duVGVtcGxldFVybCxcclxuICAgICAgY2hlY2tEYXRhLFxyXG4gICAgICBjaGVja1VybCxcclxuICAgICAgcmVxdWVzdENvbmZpZyxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgZm9vdGVyID0gKFxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvb3RlclwiPlxyXG4gICAgICAgIDxOU0NCdXR0b25cclxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5oaWRlKCk7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIOWPlua2iFxyXG4gICAgICAgIDwvTlNDQnV0dG9uPlxyXG5cclxuICAgICAgICB7c3RhdHVzID09IDEgJiYgdGhpcy5zdGF0ZS5maWxlICYmIChcclxuICAgICAgICAgIDxOU0NCdXR0b25cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgc3RhdHVzOiAyLFxyXG4gICAgICAgICAgICAgICAgY3VycmVudFN0ZXA6IDEsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgaWYgKGNoZWNrRGF0YSkge1xyXG4gICAgICAgICAgICAgICAgbnNjRmlsZVxyXG4gICAgICAgICAgICAgICAgICAuaW1wb3J0RmlsZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBjaGVja1VybCxcclxuICAgICAgICAgICAgICAgICAgICBmaWxlOiBmaWxlLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHJlcXVlc3RDb25maWc/LmRhdGEgfHwge30sXHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgIC50aGVuKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLmRhdGEuZXJyb3JDb3VudCA9PSAwICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5kYXRhLmR1cGxpY2F0ZUNvdW50ID09IDBcclxuICAgICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RlcDogMixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0U3RhdHVzOiBcInN1Y2Nlc3NcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW1wb3J0RGF0YShmaWxlLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5lcnJvckNvdW50ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0U3RhdHVzOiBcImVycm9yXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JMaXN0OiByZXMuZGF0YS5lcnJvckxpc3QsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEuZHVwbGljYXRlQ291bnQgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RTdGF0dXM6IFwid2FybmluZ1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5MaXN0OiByZXMuZGF0YS5kdXBsaWNhdGVMaXN0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW1wb3J0RGF0YShmaWxlLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICBkaXNhYmxlZD17ZmlsZSA/IGZhbHNlIDogdHJ1ZX1cclxuICAgICAgICAgICAgaWNvbj17PFVwbG9hZE91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICBzdHlsZT17eyBtYXJnaW5MZWZ0OiAyMCB9fVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDlvIDlp4vkuIrkvKBcclxuICAgICAgICAgIDwvTlNDQnV0dG9uPlxyXG4gICAgICAgICl9XHJcbiAgICAgICAge3N0YXR1cyA9PSAyICYmIHRoaXMucHJvcHMuY2hlY2tEYXRhICE9PSB0cnVlICYmIChcclxuICAgICAgICAgIDxOU0NCdXR0b25cclxuICAgICAgICAgICAgdHlwZT1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICBzdHlsZT17eyBtYXJnaW5MZWZ0OiAyMCB9fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICBmaWxlOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgc3RhdHVzOiAxLFxyXG4gICAgICAgICAgICAgICAgY3VycmVudFN0ZXA6IDEsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtyZXF1ZXN0U3RhdHVzID09IFwic3VjY2Vzc1wiID8gXCLnu6fnu63kuIrkvKBcIiA6IFwi6YeN5paw5LiK5LygXCJ9XHJcbiAgICAgICAgICA8L05TQ0J1dHRvbj5cclxuICAgICAgICApfVxyXG4gICAgICAgIHtyZXF1ZXN0U3RhdHVzID09IFwid2FybmluZ1wiICYmIHN0YXR1cyA9PSAyICYmIHRoaXMucHJvcHMuY2hlY2tEYXRhICYmIChcclxuICAgICAgICAgIDxOU0NCdXR0b25cclxuICAgICAgICAgICAgdHlwZT1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICBzdHlsZT17eyBtYXJnaW5MZWZ0OiAyMCB9fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5pbXBvcnREYXRhKHRoaXMuc3RhdGUuZmlsZSwgZmFsc2UpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICBkaXNhYmxlZD17dGhpcy5zdGF0ZS5idXR0b25Mb2FkaW5nfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDkuI3opobnm5bmlbDmja5cclxuICAgICAgICAgIDwvTlNDQnV0dG9uPlxyXG4gICAgICAgICl9XHJcbiAgICAgICAge3JlcXVlc3RTdGF0dXMgPT0gXCJ3YXJuaW5nXCIgJiYgc3RhdHVzID09IDIgJiYgdGhpcy5wcm9wcy5jaGVja0RhdGEgJiYgKFxyXG4gICAgICAgICAgPE5TQ0J1dHRvblxyXG4gICAgICAgICAgICB0eXBlPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgIHN0eWxlPXt7IG1hcmdpbkxlZnQ6IDIwIH19XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmltcG9ydERhdGEodGhpcy5zdGF0ZS5maWxlLCB0cnVlKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgZGlzYWJsZWQ9e3RoaXMuc3RhdGUuYnV0dG9uTG9hZGluZ31cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg6KaG55uW5pWw5o2uXHJcbiAgICAgICAgICA8L05TQ0J1dHRvbj5cclxuICAgICAgICApfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdj5cclxuICAgICAgICB7dGhpcy5wcm9wcy5jaGlsZHJlbiA/IChcclxuICAgICAgICAgIHRoaXMucHJvcHMuY2hpbGRyZW5cclxuICAgICAgICApIDogKFxyXG4gICAgICAgICAgPD5cclxuICAgICAgICAgICAge3RoaXMucHJvcHMuc2hvd0J1dHRvbiAmJiAoXHJcbiAgICAgICAgICAgICAgPE5TQ0J1dHRvblxyXG4gICAgICAgICAgICAgICAgdHlwZT1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNob3coKTtcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAg5pWw5o2u5a+85YWlXHJcbiAgICAgICAgICAgICAgPC9OU0NCdXR0b24+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICA8Lz5cclxuICAgICAgICApfVxyXG5cclxuICAgICAgICA8TnNjTW9kYWxcclxuICAgICAgICAgIHRpdGxlPVwi5pWw5o2u5a+85YWlXCJcclxuICAgICAgICAgIHdpZHRoPXs4MDB9XHJcbiAgICAgICAgICB3cmFwQ2xhc3NOYW1lPXtcImltcG9ydC1tb2RhbFwifVxyXG4gICAgICAgICAgcmVmPXt0aGlzLm1vZGFsUmVmfVxyXG4gICAgICAgICAgZm9vdGVyPXtmb290ZXJ9XHJcbiAgICAgICAgICBvbkNhbmNlbD17KCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmhpZGUoKTtcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250ZW50XCI+XHJcbiAgICAgICAgICAgIHtzdGF0dXMgPT0gMSA/IChcclxuICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiBcImZsZXhcIiB9fT5cclxuICAgICAgICAgICAgICAgICAgPE5zY1VwbG9hZFxyXG4gICAgICAgICAgICAgICAgICAgIGJlZm9yZVVwbG9hZD17KGZpbGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICBhbGxvd0ZpbGVTdWZmaXg9e1tcInhsc1wiLCBcInhsc3hcIl19XHJcbiAgICAgICAgICAgICAgICAgICAgYWNjZXB0PXtcIi54bHMsLnhsc3hcIn1cclxuICAgICAgICAgICAgICAgICAgICBzaG93VXBsb2FkTGlzdD17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8TlNDQnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmaWxlID8gdHJ1ZSA6IGZhbHNlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgaWNvbj17PEZvbGRlck91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIOmAieaLqeaWh+S7tlxyXG4gICAgICAgICAgICAgICAgICAgIDwvTlNDQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L05zY1VwbG9hZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgIHtkb3duTG9hZFRlbXBsZXQgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgIDxOc2NEb3duTG9hZCB1cmw9e2Rvd25UZW1wbGV0VXJsfT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxOU0NCdXR0b24gdHlwZT1cInByaW1hcnlcIiBzdHlsZT17eyBtYXJnaW5MZWZ0OiAyMCB9fT5cclxuICAgICAgICAgICAgICAgICAgICAgICAg5qih5p2/5LiL6L29XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L05TQ0J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L05zY0Rvd25Mb2FkPlxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInVwbG9hZC10aXBcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ1cGxvYWQtdGlwLWxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8RXhjbGFtYXRpb25DaXJjbGVPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ1cGxvYWQtdGlwLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgMeOAgeaUr+aMgUV4Y2VsIDIwMDflj4rku6XkuIrniYjmnKzvvIzkuJTmr4/mrKHlj6rog73kuIrkvKDkuIDkuKrmlofku7bvvJtcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PjLjgIHlr7zlhaXliY3lhYjkuIvovb3mqKHmnb/vvIzlubbmoLnmja7mqKHmnb/loavlhpnmlbDmja7vvJs8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICB7ZmlsZSAmJiAoXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidXBsb2FkLWZpbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpbGUtaWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPEZpbGVJY29uIHR5cGU9XCJleGNlbFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWxlLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmlsZS10aXRsZVwiPntmaWxlLm5hbWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpbGUtZGVzY1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICDmlofku7blpKflsI/vvJp7dGhpcy5maWxlU2l6ZUtiKGZpbGUuc2l6ZSkgKyBcIktCXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZpbGUtZGVsZXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxEZWxldGVPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxTdGVwc1xyXG4gICAgICAgICAgICAgICAgICBjdXJyZW50PXtjdXJyZW50U3RlcH1cclxuICAgICAgICAgICAgICAgICAgaXRlbXM9e1tcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXCLmlbDmja7liIbmnpBcIixcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcIuaVsOaNruaPkuWFpVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIF19XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e1wicmVzdWx0LWNvbnRlbnRcIn0+e3RoaXMucmVuZGVyUmVzdWx0KCl9PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L05zY01vZGFsPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IE5zY0ltcG9ydERhdGE7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBT0EsS0FBSyxNQUFNLE9BQU87QUFDekIsT0FBTyxjQUFjO0FBQ3JCLE9BQU9DLFNBQVMsTUFBTSxXQUFXO0FBQ2pDLE9BQU9DLFNBQVMsTUFBTSxXQUFXO0FBQ2pDLE9BQU9DLFdBQVcsTUFBTSxhQUFhO0FBQ3JDLE9BQU9DLFFBQVEsTUFBTSxVQUFVO0FBQy9CLE9BQU9DLFFBQVEsTUFBTSxvQkFBb0I7QUFDekMsU0FDRUMsY0FBYyxFQUNkQyxjQUFjLEVBQ2RDLG1CQUFtQixFQUNuQkMseUJBQXlCLFFBQ3BCLG1CQUFtQjtBQUMxQixPQUFPQyxLQUFLLE1BQU0sVUFBVTtBQUM1QixPQUFPQyxPQUFPLE1BQU0sVUFBVTtBQUU5QixPQUFPQyxLQUFLLE1BQU0sVUFBVTtBQUM1QixPQUFPQyxRQUFRLE1BQU0sYUFBYTtBQUVsQyxTQUFTQyxjQUFjLFFBQVEsbUJBQW1CO0FBaUJsRCxNQUFNQyxhQUFhLFNBQVNmLEtBQUssQ0FBQ2dCLGFBQWEsQ0FBb0I7RUFBQUMsWUFBQTtJQUFBLFNBQUFDLFNBQUE7SUFBQUMsZUFBQSxnQkFD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
362
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIk5zY1VwbG9hZCIsIk5TQ0J1dHRvbiIsIk5zY0Rvd25Mb2FkIiwiTnNjTW9kYWwiLCJGaWxlSWNvbiIsIlVwbG9hZE91dGxpbmVkIiwiRm9sZGVyT3V0bGluZWQiLCJDbG9zZUNpcmNsZU91dGxpbmVkIiwiRXhjbGFtYXRpb25DaXJjbGVPdXRsaW5lZCIsIlN0ZXBzIiwibnNjRmlsZSIsIkFsZXJ0IiwiQ29sbGFwc2UiLCJEZWxldGVPdXRsaW5lZCIsIk5zY0ltcG9ydERhdGEiLCJQdXJlQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJhcmd1bWVudHMiLCJfZGVmaW5lUHJvcGVydHkiLCJzdGF0dXMiLCJmaWxlIiwiY3VycmVudFN0ZXAiLCJyZXF1ZXN0U3RhdHVzIiwiZXJyb3JMaXN0Iiwid2Fybkxpc3QiLCJidXR0b25Mb2FkaW5nIiwiY3JlYXRlUmVmIiwiZmlsZVNpemVLYiIsIm51bWJlciIsImxlbmd0aCIsInVuZGVmaW5lZCIsInRvRml4ZWQiLCJzaG93IiwiX3RoaXMkbW9kYWxSZWYkY3VycmVuIiwibW9kYWxSZWYiLCJjdXJyZW50IiwiaGlkZSIsIl90aGlzJG1vZGFsUmVmJGN1cnJlbjIiLCJyZXNldERhdGEiLCJpbXBvcnREYXRhIiwiaXNPdmVyd3JpdGUiLCJyZXF1ZXN0Q29uZmlnIiwiaW1wb3J0VXJsIiwib25DYWxsQmFja3MiLCJwcm9wcyIsImRhdGEiLCJjb25maWciLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJzZXRTdGF0ZSIsImltcG9ydEZpbGUiLCJ1cmwiLCJfb2JqZWN0U3ByZWFkIiwidGhlbiIsInJlcyIsImNvZGUiLCJfcmVzJGRhdGEiLCJfcmVzJGRhdGEyIiwid2FybmluZ3MiLCJlcnJvcnMiLCJfbWVzc2FnZSIsInN1Y2Nlc3MiLCJuYW1lIiwiaW1wb3J0Q2FsbEJhY2siLCJtc2ciLCJlcnJvciIsInJlbmRlckVycm9yQ29udGVudCIsImxpc3QiLCJtYXAiLCJpdGVtIiwiaW5kZXgiLCJzdGF0ZSIsImNyZWF0ZUVsZW1lbnQiLCJrZXkiLCJyb3dOdW0iLCJlcnJvck1zZyIsInJlbmRlclJlc3VsdCIsImFsZXJ0X21zZ19tYXAiLCJ3YXJuaW5nIiwiX2FsZXJ0X21zZ19tYXAkcmVxdWVzIiwic3R5bGUiLCJtYXJnaW5Ub3AiLCJtZXNzYWdlIiwidHlwZSIsInNob3dJY29uIiwiZXhwYW5kSWNvblBvc2l0aW9uIiwiY2xhc3NOYW1lIiwiYmFja2dyb3VuZENvbG9yIiwiYm9yZGVyIiwiYm9yZGVyUmFkaXVzIiwiZGVmYXVsdEFjdGl2ZUtleSIsIlBhbmVsIiwiaGVhZGVyIiwiY29sb3IiLCJleHRyYSIsImJhY2tncm91bmQiLCJyZW5kZXIiLCJkb3duTG9hZFRlbXBsZXQiLCJkb3duVGVtcGxldFVybCIsImNoZWNrRGF0YSIsImNoZWNrVXJsIiwiYnV0dG9uVGV4dCIsImZvb3RlciIsIm9uQ2xpY2siLCJlcnJvckNvdW50IiwiZHVwbGljYXRlQ291bnQiLCJkdXBsaWNhdGVMaXN0IiwiZGlzYWJsZWQiLCJpY29uIiwibWFyZ2luTGVmdCIsImNoaWxkcmVuIiwiRnJhZ21lbnQiLCJzaG93QnV0dG9uIiwidGl0bGUiLCJ3aWR0aCIsIndyYXBDbGFzc05hbWUiLCJyZWYiLCJvbkNhbmNlbCIsImRpc3BsYXkiLCJiZWZvcmVVcGxvYWQiLCJhbGxvd0ZpbGVTdWZmaXgiLCJhY2NlcHQiLCJzaG93VXBsb2FkTGlzdCIsInNpemUiLCJpdGVtcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvaW1wb3J0RGF0YS9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgXCIuL2luZGV4Lmxlc3NcIjtcclxuaW1wb3J0IE5zY1VwbG9hZCBmcm9tIFwiLi4vdXBsb2FkXCI7XHJcbmltcG9ydCBOU0NCdXR0b24gZnJvbSBcIi4uL2J1dHRvblwiO1xyXG5pbXBvcnQgTnNjRG93bkxvYWQgZnJvbSBcIi4uL2Rvd25sb2FkXCI7XHJcbmltcG9ydCBOc2NNb2RhbCBmcm9tIFwiLi4vbW9kYWxcIjtcclxuaW1wb3J0IEZpbGVJY29uIGZyb20gXCIuLi9jb21tb24vRmlsZUljb25cIjtcclxuaW1wb3J0IHtcclxuICBVcGxvYWRPdXRsaW5lZCxcclxuICBGb2xkZXJPdXRsaW5lZCxcclxuICBDbG9zZUNpcmNsZU91dGxpbmVkLFxyXG4gIEV4Y2xhbWF0aW9uQ2lyY2xlT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCBTdGVwcyBmcm9tIFwiLi4vc3RlcHNcIjtcclxuaW1wb3J0IG5zY0ZpbGUgZnJvbSBcIm5zYy1maWxlXCI7XHJcbmltcG9ydCB7IG1lc3NhZ2UgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgQWxlcnQgZnJvbSBcIi4uL2FsZXJ0XCI7XHJcbmltcG9ydCBDb2xsYXBzZSBmcm9tIFwiLi4vY29sbGFwc2VcIjtcclxuaW1wb3J0IEljb24gZnJvbSBcIi4uL2NvbW1vbi9JY29uXCI7XHJcbmltcG9ydCB7IERlbGV0ZU91dGxpbmVkIH0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcblxyXG5pbnRlcmZhY2UgSW1wb3J0UHJvcG9zIHtcclxuICBjaGVja0RhdGE/OiBib29sZWFuOyAvL+aYr+WQpui/m+ihjOaVsOaNruagoemqjO+8jOm7mOiupGZhbHNlXHJcbiAgY2hlY2tVcmw/OiBzdHJpbmc7IC8v5pWw5o2u5qCh6aqM5o6l5Y+j5Zyw5Z2AXHJcbiAgaW1wb3J0VXJsOiBzdHJpbmc7IC8v5pWw5o2u5a+85YWl5Zyw5Z2AXHJcbiAgcmVxdWVzdENvbmZpZz86IGFueTtcclxuICBkb3duTG9hZFRlbXBsZXQ/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuS4i+i9veaooeadv+aMiemSrlxyXG4gIGRvd25UZW1wbGV0VXJsPzogc3RyaW5nOyAvL+S4i+i9veaooeadv+WcsOWdgFxyXG4gIG9uQ2FsbEJhY2tzPzoge1xyXG4gICAgY2hlY2tDYWxsQmFjaz86IGFueTsgLy/mlbDmja7moKHpqozlm57osINcclxuICAgIGltcG9ydENhbGxCYWNrPzogYW55OyAvL+aVsOaNruWvvOWFpeWbnuiwg1xyXG4gICAgY2xvc2VDYWxsQmFjaz86IGFueTtcclxuICB9O1xyXG4gIHNob3dCdXR0b24/OiBib29sZWFuO1xyXG4gIGJ1dHRvblRleHQ/OiBzdHJpbmc7XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmNsYXNzIE5zY0ltcG9ydERhdGEgZXh0ZW5kcyBSZWFjdC5QdXJlQ29tcG9uZW50PEltcG9ydFByb3BvcywgYW55PiB7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICBzdGF0dXM6IDEsXHJcbiAgICBmaWxlOiBudWxsLFxyXG4gICAgY3VycmVudFN0ZXA6IDEsXHJcbiAgICByZXF1ZXN0U3RhdHVzOiBcIlwiLFxyXG4gICAgZXJyb3JMaXN0OiBbXSxcclxuICAgIHdhcm5MaXN0OiBbXSxcclxuICAgIGJ1dHRvbkxvYWRpbmc6IGZhbHNlLFxyXG4gIH07XHJcbiAgbW9kYWxSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIGZpbGVTaXplS2IobnVtYmVyID0gMCkge1xyXG4gICAgcmV0dXJuIChudW1iZXIgLyAxMDI0KS50b0ZpeGVkKDIpO1xyXG4gIH1cclxuICBzaG93KCkge1xyXG4gICAgdGhpcy5tb2RhbFJlZi5jdXJyZW50Py5zaG93KCk7XHJcbiAgfVxyXG4gIGhpZGUoKSB7XHJcbiAgICB0aGlzLm1vZGFsUmVmLmN1cnJlbnQ/LmhpZGUoKTtcclxuICAgIHRoaXMucmVzZXREYXRhKCk7XHJcbiAgfVxyXG4gIGltcG9ydERhdGEoZmlsZSwgaXNPdmVyd3JpdGUpIHtcclxuICAgIGNvbnN0IHsgcmVxdWVzdENvbmZpZyA9IHt9LCBpbXBvcnRVcmwsIG9uQ2FsbEJhY2tzID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgeyBkYXRhID0ge30sIC4uLmNvbmZpZyB9ID0gcmVxdWVzdENvbmZpZztcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBidXR0b25Mb2FkaW5nOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICAvLyBsZXQgZm9ybURhdGEgPSB7Li4uZGF0YX1cclxuXHJcbiAgICBuc2NGaWxlXHJcbiAgICAgIC5pbXBvcnRGaWxlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHVybDogaW1wb3J0VXJsLFxyXG4gICAgICAgICAgZGF0YTogeyAuLi5kYXRhLCBpc092ZXJ3cml0ZTogaXNPdmVyd3JpdGUgfSxcclxuICAgICAgICAgIGZpbGU6IGZpbGUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb25maWdcclxuICAgICAgKVxyXG4gICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIGJ1dHRvbkxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChyZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIC8vIG1lc3NhZ2Uuc3VjY2VzcyhcIuWvvOWFpeaIkOWKn++8gVwiKTtcclxuICAgICAgICAgIGlmIChyZXMuZGF0YT8ud2FybmluZ3M/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgcmVxdWVzdFN0YXR1czogXCJ3YXJuaW5nXCIsXHJcbiAgICAgICAgICAgICAgd2Fybkxpc3Q6IHJlcy5kYXRhLndhcm5pbmdzLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAocmVzLmRhdGE/LmVycm9ycz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAvLyBtZXNzYWdlLnN1Y2Nlc3MoXCLlr7zlhaXlpLHotKXvvIFcIik7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgIHJlcXVlc3RTdGF0dXM6IFwiZXJyb3JcIixcclxuICAgICAgICAgICAgICBlcnJvckxpc3Q6IHJlcy5kYXRhLmVycm9ycyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBtZXNzYWdlLnN1Y2Nlc3MoKGZpbGU/Lm5hbWUgfHwgXCJcIikgKyBcIuWvvOWFpeaIkOWKn++8gVwiKTtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgcmVxdWVzdFN0YXR1czogXCJzdWNjZXNzXCIsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgb25DYWxsQmFja3M/LmltcG9ydENhbGxCYWNrICYmIG9uQ2FsbEJhY2tzPy5pbXBvcnRDYWxsQmFjayhyZXMpO1xyXG4gICAgICAgICAgLy8gdGhpcy5oaWRlKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICFyZXMubXNnICYmIG1lc3NhZ2UuZXJyb3IoXCLlr7zlhaXlpLHotKXvvIFcIik7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgcmVxdWVzdFN0YXR1czogXCJlcnJvclwiLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgcmVuZGVyRXJyb3JDb250ZW50KGxpc3QpIHtcclxuICAgIHJldHVybiBsaXN0Lm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuc3RhdGUucmVxdWVzdFN0YXR1cyA9PSBcIndhcm5pbmdcIikge1xyXG4gICAgICAgIHJldHVybiB0eXBlb2YgaXRlbSA9PSBcInN0cmluZ1wiID8gKFxyXG4gICAgICAgICAgPGRpdiBrZXk9e2luZGV4fT57aXRlbX08L2Rpdj5cclxuICAgICAgICApIDogKFxyXG4gICAgICAgICAgPGRpdiBrZXk9e2luZGV4fT5cclxuICAgICAgICAgICAge1wi56ysXCIgKyBpdGVtLnJvd051bSArIFwi6KGM5pWw5o2u6YeN5aSN77ybXCIgKyBpdGVtLmVycm9yTXNnXHJcbiAgICAgICAgICAgICAgPyBpdGVtLmVycm9yTXNnXHJcbiAgICAgICAgICAgICAgOiBcIlwifVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIGl0ZW0gPT0gXCJzdHJpbmdcIiA/IChcclxuICAgICAgICAgIDxkaXYga2V5PXtpbmRleH0+e2l0ZW19PC9kaXY+XHJcbiAgICAgICAgKSA6IChcclxuICAgICAgICAgIDxkaXYga2V5PXtpbmRleH0+e2l0ZW0uZXJyb3JNc2d9PC9kaXY+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJlbmRlclJlc3VsdCgpIHtcclxuICAgIGNvbnN0IHsgcmVxdWVzdFN0YXR1cywgZXJyb3JMaXN0LCB3YXJuTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IGFsZXJ0X21zZ19tYXAgPSB7XHJcbiAgICAgIHN1Y2Nlc3M6IFwi5a+85YWl5oiQ5YqfXCIsXHJcbiAgICAgIGVycm9yOiBcIuWvvOWFpeWksei0pVwiLFxyXG4gICAgICB3YXJuaW5nOiBcIuWRiuitpuaPkOekulwiLFxyXG4gICAgfTtcclxuICAgIGlmIChyZXF1ZXN0U3RhdHVzKSB7XHJcbiAgICAgIGlmIChyZXF1ZXN0U3RhdHVzID09IFwic3VjY2Vzc1wiKSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxBbGVydFxyXG4gICAgICAgICAgICBzdHlsZT17eyBtYXJnaW5Ub3A6IFwiOHB4XCIgfX1cclxuICAgICAgICAgICAgbWVzc2FnZT17YWxlcnRfbXNnX21hcFtyZXF1ZXN0U3RhdHVzXSA/PyBcIuaPkOekulwifVxyXG4gICAgICAgICAgICB0eXBlPXtcInN1Y2Nlc3NcIn1cclxuICAgICAgICAgICAgc2hvd0ljb25cclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPENvbGxhcHNlXHJcbiAgICAgICAgICAgIGV4cGFuZEljb25Qb3NpdGlvbj1cInJpZ2h0XCJcclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtcclxuICAgICAgICAgICAgICByZXF1ZXN0U3RhdHVzID09IFwid2FybmluZ1wiID8gXCJjb250ZW50LXdhcm5pbmdcIiA6IFwiY29udGVudC1lcnJvclwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6XHJcbiAgICAgICAgICAgICAgICByZXF1ZXN0U3RhdHVzID09IFwid2FybmluZ1wiID8gXCIjRkNFMUFCXCIgOiBcIiNmZmYyZjBcIixcclxuICAgICAgICAgICAgICBib3JkZXI6XHJcbiAgICAgICAgICAgICAgICByZXF1ZXN0U3RhdHVzID09IFwid2FybmluZ1wiXHJcbiAgICAgICAgICAgICAgICAgID8gXCIxcHggc29saWQgI0ZDRTFBQlwiXHJcbiAgICAgICAgICAgICAgICAgIDogXCIxcHggc29saWQgI0ZGQ0NDN1wiLFxyXG4gICAgICAgICAgICAgIGJvcmRlclJhZGl1czogXCIycHhcIixcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgZGVmYXVsdEFjdGl2ZUtleT17W1wiMVwiXX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPENvbGxhcHNlLlBhbmVsXHJcbiAgICAgICAgICAgICAga2V5PVwiMVwiXHJcbiAgICAgICAgICAgICAgaGVhZGVyPXtcclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiByZXF1ZXN0U3RhdHVzID09IFwid2FybmluZ1wiID8gXCIjRkFBRDE0XCIgOiBcIiNmNjBcIixcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAge3JlcXVlc3RTdGF0dXMgPT0gXCJ3YXJuaW5nXCIgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICA8RXhjbGFtYXRpb25DaXJjbGVPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICA8Q2xvc2VDaXJjbGVPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAge2FsZXJ0X21zZ19tYXBbcmVxdWVzdFN0YXR1c119XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBleHRyYT17XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiByZXF1ZXN0U3RhdHVzID09IFwid2FybmluZ1wiID8gXCIjRkFBRDE0XCIgOiBcIiNmNjBcIixcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge3JlcXVlc3RTdGF0dXMgPT0gXCJ3YXJuaW5nXCIgPyBcIuafpeeci1wiIDogXCLmn6XnnIvplJnor69cIn1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOlxyXG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RTdGF0dXMgPT0gXCJ3YXJuaW5nXCIgPyBcIiNGRkZERjZcIiA6IFwiI2ZmZjlmOVwiLFxyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImNvbnRlbnQtZXJyb3JfX21zZ1wiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3RoaXMucmVuZGVyRXJyb3JDb250ZW50KFxyXG4gICAgICAgICAgICAgICAgICByZXF1ZXN0U3RhdHVzID09IFwid2FybmluZ1wiID8gd2Fybkxpc3QgOiBlcnJvckxpc3RcclxuICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvQ29sbGFwc2UuUGFuZWw+XHJcbiAgICAgICAgICA8L0NvbGxhcHNlPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcmVzZXREYXRhKCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHN0YXR1czogMSxcclxuICAgICAgZmlsZTogbnVsbCxcclxuICAgICAgY3VycmVudFN0ZXA6IDEsXHJcbiAgICAgIHJlcXVlc3RTdGF0dXM6IFwiXCIsXHJcbiAgICAgIGVycm9yTGlzdDogW10sXHJcbiAgICAgIHdhcm5MaXN0OiBbXSxcclxuICAgIH0pO1xyXG4gIH1cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7IGZpbGUsIHN0YXR1cywgY3VycmVudFN0ZXAsIHJlcXVlc3RTdGF0dXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGRvd25Mb2FkVGVtcGxldCxcclxuICAgICAgZG93blRlbXBsZXRVcmwsXHJcbiAgICAgIGNoZWNrRGF0YSxcclxuICAgICAgY2hlY2tVcmwsXHJcbiAgICAgIHJlcXVlc3RDb25maWcsXHJcbiAgICAgIGJ1dHRvblRleHQsXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGZvb3RlciA9IChcclxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmb290ZXJcIj5cclxuICAgICAgICA8TlNDQnV0dG9uXHJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICDlj5bmtohcclxuICAgICAgICA8L05TQ0J1dHRvbj5cclxuXHJcbiAgICAgICAge3N0YXR1cyA9PSAxICYmIHRoaXMuc3RhdGUuZmlsZSAmJiAoXHJcbiAgICAgICAgICA8TlNDQnV0dG9uXHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgIHN0YXR1czogMixcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRTdGVwOiAxLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIGlmIChjaGVja0RhdGEpIHtcclxuICAgICAgICAgICAgICAgIG5zY0ZpbGVcclxuICAgICAgICAgICAgICAgICAgLmltcG9ydEZpbGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHVybDogY2hlY2tVcmwsXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsZTogZmlsZSxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhOiByZXF1ZXN0Q29uZmlnPy5kYXRhIHx8IHt9LFxyXG4gICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5kYXRhLmVycm9yQ291bnQgPT0gMCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXMuZGF0YS5kdXBsaWNhdGVDb3VudCA9PSAwXHJcbiAgICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0ZXA6IDIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdFN0YXR1czogXCJzdWNjZXNzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmltcG9ydERhdGEoZmlsZSwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEuZXJyb3JDb3VudCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdFN0YXR1czogXCJlcnJvclwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTGlzdDogcmVzLmRhdGEuZXJyb3JMaXN0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLmR1cGxpY2F0ZUNvdW50ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0U3RhdHVzOiBcIndhcm5pbmdcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuTGlzdDogcmVzLmRhdGEuZHVwbGljYXRlTGlzdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmltcG9ydERhdGEoZmlsZSwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgZGlzYWJsZWQ9e2ZpbGUgPyBmYWxzZSA6IHRydWV9XHJcbiAgICAgICAgICAgIGljb249ezxVcGxvYWRPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgc3R5bGU9e3sgbWFyZ2luTGVmdDogMjAgfX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5byA5aeL5LiK5LygXHJcbiAgICAgICAgICA8L05TQ0J1dHRvbj5cclxuICAgICAgICApfVxyXG4gICAgICAgIHtzdGF0dXMgPT0gMiAmJiB0aGlzLnByb3BzLmNoZWNrRGF0YSAhPT0gdHJ1ZSAmJiAoXHJcbiAgICAgICAgICA8TlNDQnV0dG9uXHJcbiAgICAgICAgICAgIHR5cGU9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgc3R5bGU9e3sgbWFyZ2luTGVmdDogMjAgfX1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgZmlsZTogbnVsbCxcclxuICAgICAgICAgICAgICAgIHN0YXR1czogMSxcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRTdGVwOiAxLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7cmVxdWVzdFN0YXR1cyA9PSBcInN1Y2Nlc3NcIiA/IFwi57un57ut5LiK5LygXCIgOiBcIumHjeaWsOS4iuS8oFwifVxyXG4gICAgICAgICAgPC9OU0NCdXR0b24+XHJcbiAgICAgICAgKX1cclxuICAgICAgICB7cmVxdWVzdFN0YXR1cyA9PSBcIndhcm5pbmdcIiAmJiBzdGF0dXMgPT0gMiAmJiB0aGlzLnByb3BzLmNoZWNrRGF0YSAmJiAoXHJcbiAgICAgICAgICA8TlNDQnV0dG9uXHJcbiAgICAgICAgICAgIHR5cGU9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgc3R5bGU9e3sgbWFyZ2luTGVmdDogMjAgfX1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuaW1wb3J0RGF0YSh0aGlzLnN0YXRlLmZpbGUsIGZhbHNlKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgZGlzYWJsZWQ9e3RoaXMuc3RhdGUuYnV0dG9uTG9hZGluZ31cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5LiN6KaG55uW5pWw5o2uXHJcbiAgICAgICAgICA8L05TQ0J1dHRvbj5cclxuICAgICAgICApfVxyXG4gICAgICAgIHtyZXF1ZXN0U3RhdHVzID09IFwid2FybmluZ1wiICYmIHN0YXR1cyA9PSAyICYmIHRoaXMucHJvcHMuY2hlY2tEYXRhICYmIChcclxuICAgICAgICAgIDxOU0NCdXR0b25cclxuICAgICAgICAgICAgdHlwZT1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICBzdHlsZT17eyBtYXJnaW5MZWZ0OiAyMCB9fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5pbXBvcnREYXRhKHRoaXMuc3RhdGUuZmlsZSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIGRpc2FibGVkPXt0aGlzLnN0YXRlLmJ1dHRvbkxvYWRpbmd9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOimhuebluaVsOaNrlxyXG4gICAgICAgICAgPC9OU0NCdXR0b24+XHJcbiAgICAgICAgKX1cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAge3RoaXMucHJvcHMuY2hpbGRyZW4gPyAoXHJcbiAgICAgICAgICB0aGlzLnByb3BzLmNoaWxkcmVuXHJcbiAgICAgICAgKSA6IChcclxuICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgIHt0aGlzLnByb3BzLnNob3dCdXR0b24gJiYgKFxyXG4gICAgICAgICAgICAgIDxOU0NCdXR0b25cclxuICAgICAgICAgICAgICAgIHR5cGU9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zaG93KCk7XHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHtidXR0b25UZXh0IHx8IFwi5pWw5o2u5a+85YWlXCJ9XHJcbiAgICAgICAgICAgICAgPC9OU0NCdXR0b24+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICA8Lz5cclxuICAgICAgICApfVxyXG5cclxuICAgICAgICA8TnNjTW9kYWxcclxuICAgICAgICAgIHRpdGxlPXtidXR0b25UZXh0IHx8IFwi5pWw5o2u5a+85YWlXCJ9XHJcbiAgICAgICAgICB3aWR0aD17ODAwfVxyXG4gICAgICAgICAgd3JhcENsYXNzTmFtZT17XCJpbXBvcnQtbW9kYWxcIn1cclxuICAgICAgICAgIHJlZj17dGhpcy5tb2RhbFJlZn1cclxuICAgICAgICAgIGZvb3Rlcj17Zm9vdGVyfVxyXG4gICAgICAgICAgb25DYW5jZWw9eygpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5oaWRlKCk7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udGVudFwiPlxyXG4gICAgICAgICAgICB7c3RhdHVzID09IDEgPyAoXHJcbiAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogXCJmbGV4XCIgfX0+XHJcbiAgICAgICAgICAgICAgICAgIDxOc2NVcGxvYWRcclxuICAgICAgICAgICAgICAgICAgICBiZWZvcmVVcGxvYWQ9eyhmaWxlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgYWxsb3dGaWxlU3VmZml4PXtbXCJ4bHNcIiwgXCJ4bHN4XCJdfVxyXG4gICAgICAgICAgICAgICAgICAgIGFjY2VwdD17XCIueGxzLC54bHN4XCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgc2hvd1VwbG9hZExpc3Q9e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPE5TQ0J1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZmlsZSA/IHRydWUgOiBmYWxzZX1cclxuICAgICAgICAgICAgICAgICAgICAgIGljb249ezxGb2xkZXJPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICDpgInmi6nmlofku7ZcclxuICAgICAgICAgICAgICAgICAgICA8L05TQ0J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9Oc2NVcGxvYWQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICB7ZG93bkxvYWRUZW1wbGV0ICYmIChcclxuICAgICAgICAgICAgICAgICAgICA8TnNjRG93bkxvYWQgdXJsPXtkb3duVGVtcGxldFVybH0+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8TlNDQnV0dG9uIHR5cGU9XCJwcmltYXJ5XCIgc3R5bGU9e3sgbWFyZ2luTGVmdDogMjAgfX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIOaooeadv+S4i+i9vVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9OU0NCdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Oc2NEb3duTG9hZD5cclxuICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ1cGxvYWQtdGlwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidXBsb2FkLXRpcC1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPEV4Y2xhbWF0aW9uQ2lyY2xlT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidXBsb2FkLXRpcC1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDHjgIHmlK/mjIFFeGNlbCAyMDA35Y+K5Lul5LiK54mI5pys77yM5LiU5q+P5qyh5Y+q6IO95LiK5Lyg5LiA5Liq5paH5Lu277ybXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj4y44CB5a+85YWl5YmN5YWI5LiL6L295qih5p2/77yM5bm25qC55o2u5qih5p2/5aGr5YaZ5pWw5o2u77ybPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAge2ZpbGUgJiYgKFxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInVwbG9hZC1maWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWxlLWljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxGaWxlSWNvbiB0eXBlPVwiZXhjZWxcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmlsZS1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpbGUtdGl0bGVcIj57ZmlsZS5uYW1lfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWxlLWRlc2NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAg5paH5Lu25aSn5bCP77yae3RoaXMuZmlsZVNpemVLYihmaWxlLnNpemUpICsgXCJLQlwifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmaWxlLWRlbGV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8RGVsZXRlT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8U3RlcHNcclxuICAgICAgICAgICAgICAgICAgY3VycmVudD17Y3VycmVudFN0ZXB9XHJcbiAgICAgICAgICAgICAgICAgIGl0ZW1zPXtbXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFwi5pWw5o2u5YiG5p6QXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXCLmlbDmja7mj5LlhaVcIixcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICBdfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtcInJlc3VsdC1jb250ZW50XCJ9Pnt0aGlzLnJlbmRlclJlc3VsdCgpfTwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9Oc2NNb2RhbD5cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBOc2NJbXBvcnREYXRhO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU9BLEtBQUssTUFBTSxPQUFPO0FBQ3pCLE9BQU8sY0FBYztBQUNyQixPQUFPQyxTQUFTLE1BQU0sV0FBVztBQUNqQyxPQUFPQyxTQUFTLE1BQU0sV0FBVztBQUNqQyxPQUFPQyxXQUFXLE1BQU0sYUFBYTtBQUNyQyxPQUFPQyxRQUFRLE1BQU0sVUFBVTtBQUMvQixPQUFPQyxRQUFRLE1BQU0sb0JBQW9CO0FBQ3pDLFNBQ0VDLGNBQWMsRUFDZEMsY0FBYyxFQUNkQyxtQkFBbUIsRUFDbkJDLHlCQUF5QixRQUNwQixtQkFBbUI7QUFDMUIsT0FBT0MsS0FBSyxNQUFNLFVBQVU7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
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","NscUpload","NSCButton","NscDownLoad","NscModal","FileIcon","UploadOutlined","FolderOutlined","CloseCircleOutlined","ExclamationCircleOutlined","Steps","nscFile","Alert","Collapse","DeleteOutlined","NscImportData","PureComponent","constructor","arguments","_defineProperty","status","file","currentStep","requestStatus","errorList","warnList","buttonLoading","createRef","fileSizeKb","number","length","undefined","toFixed","show","_this$modalRef$curren","modalRef","current","hide","_this$modalRef$curren2","resetData","importData","isOverwrite","requestConfig","importUrl","onCallBacks","props","data","config","_objectWithoutProperties","_excluded","setState","importFile","url","_objectSpread","then","res","code","_res$data","_res$data2","warnings","errors","_message","success","name","importCallBack","msg","error","renderErrorContent","list","map","item","index","state","createElement","key","rowNum","errorMsg","renderResult","alert_msg_map","warning","_alert_msg_map$reques","style","marginTop","message","type","showIcon","expandIconPosition","className","backgroundColor","border","borderRadius","defaultActiveKey","Panel","header","color","extra","background","render","downLoadTemplet","downTempletUrl","checkData","checkUrl","footer","onClick","errorCount","duplicateCount","duplicateList","disabled","icon","marginLeft","children","Fragment","showButton","title","width","wrapClassName","ref","onCancel","display","beforeUpload","allowFileSuffix","accept","showUploadList","size","items"],"sources":["../../../src/components/base/importData/index.tsx"],"sourcesContent":["import React from \"react\";\r\nimport \"./index.less\";\r\nimport NscUpload from \"../upload\";\r\nimport NSCButton from \"../button\";\r\nimport NscDownLoad from \"../download\";\r\nimport NscModal from \"../modal\";\r\nimport FileIcon from \"../common/FileIcon\";\r\nimport {\r\n UploadOutlined,\r\n FolderOutlined,\r\n CloseCircleOutlined,\r\n ExclamationCircleOutlined,\r\n} from \"@ant-design/icons\";\r\nimport Steps from \"../steps\";\r\nimport nscFile from \"nsc-file\";\r\nimport { message } from \"antd\";\r\nimport Alert from \"../alert\";\r\nimport Collapse from \"../collapse\";\r\nimport Icon from \"../common/Icon\";\r\nimport { DeleteOutlined } from \"@ant-design/icons\";\r\n\r\ninterface ImportPropos {\r\n checkData?: boolean; //是否进行数据校验,默认false\r\n checkUrl?: string; //数据校验接口地址\r\n importUrl: string; //数据导入地址\r\n requestConfig?: any;\r\n downLoadTemplet?: boolean; //是否显示下载模板按钮\r\n downTempletUrl?: string; //下载模板地址\r\n onCallBacks?: {\r\n checkCallBack?: any; //数据校验回调\r\n importCallBack?: any; //数据导入回调\r\n closeCallBack?: any;\r\n };\r\n showButton?: boolean;\r\n [propsName: string]: any;\r\n}\r\nclass NscImportData extends React.PureComponent<ImportPropos, any> {\r\n state = {\r\n status: 1,\r\n file: null,\r\n currentStep: 1,\r\n requestStatus: \"\",\r\n errorList: [],\r\n warnList: [],\r\n buttonLoading: false,\r\n };\r\n modalRef = React.createRef<any>();\r\n fileSizeKb(number = 0) {\r\n return (number / 1024).toFixed(2);\r\n }\r\n show() {\r\n this.modalRef.current?.show();\r\n }\r\n hide() {\r\n this.modalRef.current?.hide();\r\n this.resetData();\r\n }\r\n importData(file, isOverwrite) {\r\n const { requestConfig = {}, importUrl, onCallBacks = {} } = this.props;\r\n let { data = {}, ...config } = requestConfig;\r\n this.setState({\r\n buttonLoading: true,\r\n });\r\n // let formData = {...data}\r\n\r\n nscFile\r\n .importFile(\r\n {\r\n url: importUrl,\r\n data: { ...data, isOverwrite: isOverwrite },\r\n file: file,\r\n },\r\n config\r\n )\r\n .then((res: any) => {\r\n this.setState({\r\n buttonLoading: false,\r\n });\r\n if (res.code == 200) {\r\n // message.success(\"导入成功!\");\r\n if (res.data?.warnings?.length > 0) {\r\n this.setState({\r\n requestStatus: \"warning\",\r\n warnList: res.data.warnings,\r\n });\r\n } else if (res.data?.errors?.length > 0) {\r\n // message.success(\"导入失败!\");\r\n this.setState({\r\n requestStatus: \"error\",\r\n errorList: res.data.errors,\r\n });\r\n } else {\r\n message.success((file?.name || \"\") + \"导入成功!\");\r\n this.setState({\r\n requestStatus: \"success\",\r\n });\r\n }\r\n onCallBacks?.importCallBack && onCallBacks?.importCallBack(res);\r\n // this.hide();\r\n } else {\r\n !res.msg && message.error(\"导入失败!\");\r\n this.setState({\r\n requestStatus: \"error\",\r\n });\r\n }\r\n });\r\n }\r\n renderErrorContent(list) {\r\n return list.map((item, index) => {\r\n if (this.state.requestStatus == \"warning\") {\r\n return typeof item == \"string\" ? (\r\n <div key={index}>{item}</div>\r\n ) : (\r\n <div key={index}>{\"第\" + item.rowNum + \"行数据重复;\"}</div>\r\n );\r\n } else {\r\n return typeof item == \"string\" ? (\r\n <div key={index}>{item}</div>\r\n ) : (\r\n <div key={index}>{item.errorMsg}</div>\r\n );\r\n }\r\n });\r\n }\r\n renderResult() {\r\n const { requestStatus, errorList, warnList } = this.state;\r\n const alert_msg_map = {\r\n success: \"导入成功\",\r\n error: \"导入失败\",\r\n warning: \"告警提示\",\r\n };\r\n if (requestStatus) {\r\n if (requestStatus == \"success\") {\r\n return (\r\n <Alert\r\n style={{ marginTop: \"8px\" }}\r\n message={alert_msg_map[requestStatus] ?? \"提示\"}\r\n type={\"success\"}\r\n showIcon\r\n />\r\n );\r\n } else {\r\n return (\r\n <Collapse\r\n expandIconPosition=\"right\"\r\n className={\r\n requestStatus == \"warning\" ? \"content-warning\" : \"content-error\"\r\n }\r\n style={{\r\n backgroundColor:\r\n requestStatus == \"warning\" ? \"#FCE1AB\" : \"#fff2f0\",\r\n border:\r\n requestStatus == \"warning\"\r\n ? \"1px solid #FCE1AB\"\r\n : \"1px solid #FFCCC7\",\r\n borderRadius: \"2px\",\r\n }}\r\n defaultActiveKey={[\"1\"]}\r\n >\r\n <Collapse.Panel\r\n key=\"1\"\r\n header={\r\n <div>\r\n <span\r\n style={{\r\n color: requestStatus == \"warning\" ? \"#FAAD14\" : \"#f60\",\r\n }}\r\n >\r\n {requestStatus == \"warning\" ? (\r\n <ExclamationCircleOutlined />\r\n ) : (\r\n <CloseCircleOutlined />\r\n )}\r\n {alert_msg_map[requestStatus]}\r\n </span>\r\n </div>\r\n }\r\n extra={\r\n <span\r\n style={{\r\n color: requestStatus == \"warning\" ? \"#FAAD14\" : \"#f60\",\r\n }}\r\n >\r\n {requestStatus == \"warning\" ? \"查看\" : \"查看错误\"}\r\n </span>\r\n }\r\n >\r\n <div\r\n style={{\r\n background:\r\n requestStatus == \"warning\" ? \"#FFFDF6\" : \"#fff9f9\",\r\n }}\r\n className=\"content-error__msg\"\r\n >\r\n {this.renderErrorContent(\r\n requestStatus == \"warning\" ? warnList : errorList\r\n )}\r\n </div>\r\n </Collapse.Panel>\r\n </Collapse>\r\n );\r\n }\r\n }\r\n }\r\n resetData() {\r\n this.setState({\r\n status: 1,\r\n file: null,\r\n currentStep: 1,\r\n requestStatus: \"\",\r\n errorList: [],\r\n warnList: [],\r\n });\r\n }\r\n render() {\r\n const { file, status, currentStep, requestStatus } = this.state;\r\n const {\r\n downLoadTemplet,\r\n downTempletUrl,\r\n checkData,\r\n checkUrl,\r\n requestConfig,\r\n } = this.props;\r\n const footer = (\r\n <div className=\"footer\">\r\n <NSCButton\r\n onClick={() => {\r\n this.hide();\r\n }}\r\n >\r\n 取消\r\n </NSCButton>\r\n\r\n {status == 1 && this.state.file && (\r\n <NSCButton\r\n onClick={() => {\r\n this.setState({\r\n status: 2,\r\n currentStep: 1,\r\n });\r\n if (checkData) {\r\n nscFile\r\n .importFile({\r\n url: checkUrl,\r\n file: file,\r\n data: requestConfig?.data || {},\r\n })\r\n .then((res: any) => {\r\n if (res.code == 200) {\r\n if (\r\n res.data.errorCount == 0 &&\r\n res.data.duplicateCount == 0\r\n ) {\r\n this.setState({\r\n currentStep: 2,\r\n requestStatus: \"success\",\r\n });\r\n this.importData(file, false);\r\n return;\r\n }\r\n if (res.data.errorCount > 0) {\r\n this.setState({\r\n requestStatus: \"error\",\r\n errorList: res.data.errorList,\r\n });\r\n return;\r\n }\r\n if (res.data.duplicateCount > 0) {\r\n this.setState({\r\n requestStatus: \"warning\",\r\n warnList: res.data.duplicateList,\r\n });\r\n return;\r\n }\r\n }\r\n });\r\n } else {\r\n this.importData(file, false);\r\n }\r\n }}\r\n disabled={file ? false : true}\r\n icon={<UploadOutlined />}\r\n style={{ marginLeft: 20 }}\r\n >\r\n 开始上传\r\n </NSCButton>\r\n )}\r\n {status == 2 && this.props.checkData !== true && (\r\n <NSCButton\r\n type=\"primary\"\r\n style={{ marginLeft: 20 }}\r\n onClick={() => {\r\n this.setState({\r\n file: null,\r\n status: 1,\r\n currentStep: 1,\r\n });\r\n }}\r\n >\r\n {requestStatus == \"success\" ? \"继续上传\" : \"重新上传\"}\r\n </NSCButton>\r\n )}\r\n {requestStatus == \"warning\" && status == 2 && this.props.checkData && (\r\n <NSCButton\r\n type=\"primary\"\r\n style={{ marginLeft: 20 }}\r\n onClick={() => {\r\n this.importData(this.state.file, false);\r\n }}\r\n disabled={this.state.buttonLoading}\r\n >\r\n 不覆盖数据\r\n </NSCButton>\r\n )}\r\n {requestStatus == \"warning\" && status == 2 && this.props.checkData && (\r\n <NSCButton\r\n type=\"primary\"\r\n style={{ marginLeft: 20 }}\r\n onClick={() => {\r\n this.importData(this.state.file, true);\r\n }}\r\n disabled={this.state.buttonLoading}\r\n >\r\n 覆盖数据\r\n </NSCButton>\r\n )}\r\n </div>\r\n );\r\n\r\n return (\r\n <div>\r\n {this.props.children ? (\r\n this.props.children\r\n ) : (\r\n <>\r\n {this.props.showButton && (\r\n <NSCButton\r\n type=\"primary\"\r\n onClick={() => {\r\n this.show();\r\n }}\r\n >\r\n 数据导入\r\n </NSCButton>\r\n )}\r\n </>\r\n )}\r\n\r\n <NscModal\r\n title=\"数据导入\"\r\n width={800}\r\n wrapClassName={\"import-modal\"}\r\n ref={this.modalRef}\r\n footer={footer}\r\n onCancel={() => {\r\n this.hide();\r\n }}\r\n >\r\n <div className=\"content\">\r\n {status == 1 ? (\r\n <div>\r\n <div style={{ display: \"flex\" }}>\r\n <NscUpload\r\n beforeUpload={(file) => {\r\n this.setState({\r\n file,\r\n });\r\n return false;\r\n }}\r\n allowFileSuffix={[\"xls\", \"xlsx\"]}\r\n accept={\".xls,.xlsx\"}\r\n showUploadList={false}\r\n >\r\n <NSCButton\r\n type={\"primary\"}\r\n disabled={file ? true : false}\r\n icon={<FolderOutlined />}\r\n >\r\n 选择文件\r\n </NSCButton>\r\n </NscUpload>\r\n\r\n {downLoadTemplet && (\r\n <NscDownLoad url={downTempletUrl}>\r\n <NSCButton type=\"primary\" style={{ marginLeft: 20 }}>\r\n 模板下载\r\n </NSCButton>\r\n </NscDownLoad>\r\n )}\r\n </div>\r\n <div className=\"upload-tip\">\r\n <div className=\"upload-tip-left\">\r\n <ExclamationCircleOutlined />\r\n </div>\r\n <div className=\"upload-tip-content\">\r\n <div>\r\n 1、支持Excel 2007及以上版本,且每次只能上传一个文件;\r\n </div>\r\n <div>2、导入前先下载模板,并根据模板填写数据;</div>\r\n </div>\r\n </div>\r\n\r\n {file && (\r\n <div className=\"upload-file\">\r\n <div className=\"file-icon\">\r\n <FileIcon type=\"excel\" />\r\n </div>\r\n <div className=\"file-content\">\r\n <div className=\"file-title\">{file.name}</div>\r\n <div className=\"file-desc\">\r\n <span>\r\n 文件大小:{this.fileSizeKb(file.size) + \"KB\"}\r\n </span>\r\n </div>\r\n </div>\r\n <div\r\n className=\"file-delete\"\r\n onClick={() => {\r\n this.setState({\r\n file: null,\r\n });\r\n }}\r\n >\r\n <DeleteOutlined />\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n ) : (\r\n <div>\r\n <Steps\r\n current={currentStep}\r\n items={[\r\n {\r\n title: \"数据分析\",\r\n },\r\n {\r\n title: \"数据插入\",\r\n },\r\n ]}\r\n />\r\n <div className={\"result-content\"}>{this.renderResult()}</div>\r\n </div>\r\n )}\r\n </div>\r\n </NscModal>\r\n </div>\r\n );\r\n }\r\n}\r\nexport default NscImportData;\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["React","NscUpload","NSCButton","NscDownLoad","NscModal","FileIcon","UploadOutlined","FolderOutlined","CloseCircleOutlined","ExclamationCircleOutlined","Steps","nscFile","Alert","Collapse","DeleteOutlined","NscImportData","PureComponent","constructor","arguments","_defineProperty","status","file","currentStep","requestStatus","errorList","warnList","buttonLoading","createRef","fileSizeKb","number","length","undefined","toFixed","show","_this$modalRef$curren","modalRef","current","hide","_this$modalRef$curren2","resetData","importData","isOverwrite","requestConfig","importUrl","onCallBacks","props","data","config","_objectWithoutProperties","_excluded","setState","importFile","url","_objectSpread","then","res","code","_res$data","_res$data2","warnings","errors","_message","success","name","importCallBack","msg","error","renderErrorContent","list","map","item","index","state","createElement","key","rowNum","errorMsg","renderResult","alert_msg_map","warning","_alert_msg_map$reques","style","marginTop","message","type","showIcon","expandIconPosition","className","backgroundColor","border","borderRadius","defaultActiveKey","Panel","header","color","extra","background","render","downLoadTemplet","downTempletUrl","checkData","checkUrl","buttonText","footer","onClick","errorCount","duplicateCount","duplicateList","disabled","icon","marginLeft","children","Fragment","showButton","title","width","wrapClassName","ref","onCancel","display","beforeUpload","allowFileSuffix","accept","showUploadList","size","items"],"sources":["../../../src/components/base/importData/index.tsx"],"sourcesContent":["import React from \"react\";\r\nimport \"./index.less\";\r\nimport NscUpload from \"../upload\";\r\nimport NSCButton from \"../button\";\r\nimport NscDownLoad from \"../download\";\r\nimport NscModal from \"../modal\";\r\nimport FileIcon from \"../common/FileIcon\";\r\nimport {\r\n UploadOutlined,\r\n FolderOutlined,\r\n CloseCircleOutlined,\r\n ExclamationCircleOutlined,\r\n} from \"@ant-design/icons\";\r\nimport Steps from \"../steps\";\r\nimport nscFile from \"nsc-file\";\r\nimport { message } from \"antd\";\r\nimport Alert from \"../alert\";\r\nimport Collapse from \"../collapse\";\r\nimport Icon from \"../common/Icon\";\r\nimport { DeleteOutlined } from \"@ant-design/icons\";\r\n\r\ninterface ImportPropos {\r\n checkData?: boolean; //是否进行数据校验,默认false\r\n checkUrl?: string; //数据校验接口地址\r\n importUrl: string; //数据导入地址\r\n requestConfig?: any;\r\n downLoadTemplet?: boolean; //是否显示下载模板按钮\r\n downTempletUrl?: string; //下载模板地址\r\n onCallBacks?: {\r\n checkCallBack?: any; //数据校验回调\r\n importCallBack?: any; //数据导入回调\r\n closeCallBack?: any;\r\n };\r\n showButton?: boolean;\r\n buttonText?: string;\r\n [propsName: string]: any;\r\n}\r\nclass NscImportData extends React.PureComponent<ImportPropos, any> {\r\n state = {\r\n status: 1,\r\n file: null,\r\n currentStep: 1,\r\n requestStatus: \"\",\r\n errorList: [],\r\n warnList: [],\r\n buttonLoading: false,\r\n };\r\n modalRef = React.createRef<any>();\r\n fileSizeKb(number = 0) {\r\n return (number / 1024).toFixed(2);\r\n }\r\n show() {\r\n this.modalRef.current?.show();\r\n }\r\n hide() {\r\n this.modalRef.current?.hide();\r\n this.resetData();\r\n }\r\n importData(file, isOverwrite) {\r\n const { requestConfig = {}, importUrl, onCallBacks = {} } = this.props;\r\n let { data = {}, ...config } = requestConfig;\r\n this.setState({\r\n buttonLoading: true,\r\n });\r\n // let formData = {...data}\r\n\r\n nscFile\r\n .importFile(\r\n {\r\n url: importUrl,\r\n data: { ...data, isOverwrite: isOverwrite },\r\n file: file,\r\n },\r\n config\r\n )\r\n .then((res: any) => {\r\n this.setState({\r\n buttonLoading: false,\r\n });\r\n if (res.code == 200) {\r\n // message.success(\"导入成功!\");\r\n if (res.data?.warnings?.length > 0) {\r\n this.setState({\r\n requestStatus: \"warning\",\r\n warnList: res.data.warnings,\r\n });\r\n } else if (res.data?.errors?.length > 0) {\r\n // message.success(\"导入失败!\");\r\n this.setState({\r\n requestStatus: \"error\",\r\n errorList: res.data.errors,\r\n });\r\n } else {\r\n message.success((file?.name || \"\") + \"导入成功!\");\r\n this.setState({\r\n requestStatus: \"success\",\r\n });\r\n }\r\n onCallBacks?.importCallBack && onCallBacks?.importCallBack(res);\r\n // this.hide();\r\n } else {\r\n !res.msg && message.error(\"导入失败!\");\r\n this.setState({\r\n requestStatus: \"error\",\r\n });\r\n }\r\n });\r\n }\r\n renderErrorContent(list) {\r\n return list.map((item, index) => {\r\n if (this.state.requestStatus == \"warning\") {\r\n return typeof item == \"string\" ? (\r\n <div key={index}>{item}</div>\r\n ) : (\r\n <div key={index}>\r\n {\"第\" + item.rowNum + \"行数据重复;\" + item.errorMsg\r\n ? item.errorMsg\r\n : \"\"}\r\n </div>\r\n );\r\n } else {\r\n return typeof item == \"string\" ? (\r\n <div key={index}>{item}</div>\r\n ) : (\r\n <div key={index}>{item.errorMsg}</div>\r\n );\r\n }\r\n });\r\n }\r\n renderResult() {\r\n const { requestStatus, errorList, warnList } = this.state;\r\n const alert_msg_map = {\r\n success: \"导入成功\",\r\n error: \"导入失败\",\r\n warning: \"告警提示\",\r\n };\r\n if (requestStatus) {\r\n if (requestStatus == \"success\") {\r\n return (\r\n <Alert\r\n style={{ marginTop: \"8px\" }}\r\n message={alert_msg_map[requestStatus] ?? \"提示\"}\r\n type={\"success\"}\r\n showIcon\r\n />\r\n );\r\n } else {\r\n return (\r\n <Collapse\r\n expandIconPosition=\"right\"\r\n className={\r\n requestStatus == \"warning\" ? \"content-warning\" : \"content-error\"\r\n }\r\n style={{\r\n backgroundColor:\r\n requestStatus == \"warning\" ? \"#FCE1AB\" : \"#fff2f0\",\r\n border:\r\n requestStatus == \"warning\"\r\n ? \"1px solid #FCE1AB\"\r\n : \"1px solid #FFCCC7\",\r\n borderRadius: \"2px\",\r\n }}\r\n defaultActiveKey={[\"1\"]}\r\n >\r\n <Collapse.Panel\r\n key=\"1\"\r\n header={\r\n <div>\r\n <span\r\n style={{\r\n color: requestStatus == \"warning\" ? \"#FAAD14\" : \"#f60\",\r\n }}\r\n >\r\n {requestStatus == \"warning\" ? (\r\n <ExclamationCircleOutlined />\r\n ) : (\r\n <CloseCircleOutlined />\r\n )}\r\n {alert_msg_map[requestStatus]}\r\n </span>\r\n </div>\r\n }\r\n extra={\r\n <span\r\n style={{\r\n color: requestStatus == \"warning\" ? \"#FAAD14\" : \"#f60\",\r\n }}\r\n >\r\n {requestStatus == \"warning\" ? \"查看\" : \"查看错误\"}\r\n </span>\r\n }\r\n >\r\n <div\r\n style={{\r\n background:\r\n requestStatus == \"warning\" ? \"#FFFDF6\" : \"#fff9f9\",\r\n }}\r\n className=\"content-error__msg\"\r\n >\r\n {this.renderErrorContent(\r\n requestStatus == \"warning\" ? warnList : errorList\r\n )}\r\n </div>\r\n </Collapse.Panel>\r\n </Collapse>\r\n );\r\n }\r\n }\r\n }\r\n resetData() {\r\n this.setState({\r\n status: 1,\r\n file: null,\r\n currentStep: 1,\r\n requestStatus: \"\",\r\n errorList: [],\r\n warnList: [],\r\n });\r\n }\r\n render() {\r\n const { file, status, currentStep, requestStatus } = this.state;\r\n const {\r\n downLoadTemplet,\r\n downTempletUrl,\r\n checkData,\r\n checkUrl,\r\n requestConfig,\r\n buttonText,\r\n } = this.props;\r\n const footer = (\r\n <div className=\"footer\">\r\n <NSCButton\r\n onClick={() => {\r\n this.hide();\r\n }}\r\n >\r\n 取消\r\n </NSCButton>\r\n\r\n {status == 1 && this.state.file && (\r\n <NSCButton\r\n onClick={() => {\r\n this.setState({\r\n status: 2,\r\n currentStep: 1,\r\n });\r\n if (checkData) {\r\n nscFile\r\n .importFile({\r\n url: checkUrl,\r\n file: file,\r\n data: requestConfig?.data || {},\r\n })\r\n .then((res: any) => {\r\n if (res.code == 200) {\r\n if (\r\n res.data.errorCount == 0 &&\r\n res.data.duplicateCount == 0\r\n ) {\r\n this.setState({\r\n currentStep: 2,\r\n requestStatus: \"success\",\r\n });\r\n this.importData(file, false);\r\n return;\r\n }\r\n if (res.data.errorCount > 0) {\r\n this.setState({\r\n requestStatus: \"error\",\r\n errorList: res.data.errorList,\r\n });\r\n return;\r\n }\r\n if (res.data.duplicateCount > 0) {\r\n this.setState({\r\n requestStatus: \"warning\",\r\n warnList: res.data.duplicateList,\r\n });\r\n return;\r\n }\r\n }\r\n });\r\n } else {\r\n this.importData(file, false);\r\n }\r\n }}\r\n disabled={file ? false : true}\r\n icon={<UploadOutlined />}\r\n style={{ marginLeft: 20 }}\r\n >\r\n 开始上传\r\n </NSCButton>\r\n )}\r\n {status == 2 && this.props.checkData !== true && (\r\n <NSCButton\r\n type=\"primary\"\r\n style={{ marginLeft: 20 }}\r\n onClick={() => {\r\n this.setState({\r\n file: null,\r\n status: 1,\r\n currentStep: 1,\r\n });\r\n }}\r\n >\r\n {requestStatus == \"success\" ? \"继续上传\" : \"重新上传\"}\r\n </NSCButton>\r\n )}\r\n {requestStatus == \"warning\" && status == 2 && this.props.checkData && (\r\n <NSCButton\r\n type=\"primary\"\r\n style={{ marginLeft: 20 }}\r\n onClick={() => {\r\n this.importData(this.state.file, false);\r\n }}\r\n disabled={this.state.buttonLoading}\r\n >\r\n 不覆盖数据\r\n </NSCButton>\r\n )}\r\n {requestStatus == \"warning\" && status == 2 && this.props.checkData && (\r\n <NSCButton\r\n type=\"primary\"\r\n style={{ marginLeft: 20 }}\r\n onClick={() => {\r\n this.importData(this.state.file, true);\r\n }}\r\n disabled={this.state.buttonLoading}\r\n >\r\n 覆盖数据\r\n </NSCButton>\r\n )}\r\n </div>\r\n );\r\n\r\n return (\r\n <div>\r\n {this.props.children ? (\r\n this.props.children\r\n ) : (\r\n <>\r\n {this.props.showButton && (\r\n <NSCButton\r\n type=\"primary\"\r\n onClick={() => {\r\n this.show();\r\n }}\r\n >\r\n {buttonText || \"数据导入\"}\r\n </NSCButton>\r\n )}\r\n </>\r\n )}\r\n\r\n <NscModal\r\n title={buttonText || \"数据导入\"}\r\n width={800}\r\n wrapClassName={\"import-modal\"}\r\n ref={this.modalRef}\r\n footer={footer}\r\n onCancel={() => {\r\n this.hide();\r\n }}\r\n >\r\n <div className=\"content\">\r\n {status == 1 ? (\r\n <div>\r\n <div style={{ display: \"flex\" }}>\r\n <NscUpload\r\n beforeUpload={(file) => {\r\n this.setState({\r\n file,\r\n });\r\n return false;\r\n }}\r\n allowFileSuffix={[\"xls\", \"xlsx\"]}\r\n accept={\".xls,.xlsx\"}\r\n showUploadList={false}\r\n >\r\n <NSCButton\r\n type={\"primary\"}\r\n disabled={file ? true : false}\r\n icon={<FolderOutlined />}\r\n >\r\n 选择文件\r\n </NSCButton>\r\n </NscUpload>\r\n\r\n {downLoadTemplet && (\r\n <NscDownLoad url={downTempletUrl}>\r\n <NSCButton type=\"primary\" style={{ marginLeft: 20 }}>\r\n 模板下载\r\n </NSCButton>\r\n </NscDownLoad>\r\n )}\r\n </div>\r\n <div className=\"upload-tip\">\r\n <div className=\"upload-tip-left\">\r\n <ExclamationCircleOutlined />\r\n </div>\r\n <div className=\"upload-tip-content\">\r\n <div>\r\n 1、支持Excel 2007及以上版本,且每次只能上传一个文件;\r\n </div>\r\n <div>2、导入前先下载模板,并根据模板填写数据;</div>\r\n </div>\r\n </div>\r\n\r\n {file && (\r\n <div className=\"upload-file\">\r\n <div className=\"file-icon\">\r\n <FileIcon type=\"excel\" />\r\n </div>\r\n <div className=\"file-content\">\r\n <div className=\"file-title\">{file.name}</div>\r\n <div className=\"file-desc\">\r\n <span>\r\n 文件大小:{this.fileSizeKb(file.size) + \"KB\"}\r\n </span>\r\n </div>\r\n </div>\r\n <div\r\n className=\"file-delete\"\r\n onClick={() => {\r\n this.setState({\r\n file: null,\r\n });\r\n }}\r\n >\r\n <DeleteOutlined />\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n ) : (\r\n <div>\r\n <Steps\r\n current={currentStep}\r\n items={[\r\n {\r\n title: \"数据分析\",\r\n },\r\n {\r\n title: \"数据插入\",\r\n },\r\n ]}\r\n />\r\n <div className={\"result-content\"}>{this.renderResult()}</div>\r\n </div>\r\n )}\r\n </div>\r\n </NscModal>\r\n </div>\r\n );\r\n }\r\n}\r\nexport default NscImportData;\r\n"],"mappings":"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"}