CN107193546A - 一种微服务化业务应用系统 - Google Patents
一种微服务化业务应用系统 Download PDFInfo
- Publication number
- CN107193546A CN107193546A CN201710233073.9A CN201710233073A CN107193546A CN 107193546 A CN107193546 A CN 107193546A CN 201710233073 A CN201710233073 A CN 201710233073A CN 107193546 A CN107193546 A CN 107193546A
- Authority
- CN
- China
- Prior art keywords
- service
- application
- module
- management
- submodule
- Prior art date
Links
- 238000005516 engineering processes Methods 0.000 claims abstract description 9
- 238000005538 encapsulation Methods 0.000 claims abstract description 7
- 238000000034 methods Methods 0.000 claims description 25
- 238000004458 analytical methods Methods 0.000 claims description 18
- 239000008264 clouds Substances 0.000 claims description 13
- 238000010276 construction Methods 0.000 claims description 9
- 238000007418 data mining Methods 0.000 claims description 9
- 238000007405 data analysis Methods 0.000 claims description 6
- 238000005314 correlation function Methods 0.000 claims description 5
- 230000003993 interaction Effects 0.000 claims description 5
- 239000000203 mixtures Substances 0.000 claims description 4
- 210000001520 Comb Anatomy 0.000 claims description 3
- 238000003745 diagnosis Methods 0.000 claims description 3
- 238000003860 storage Methods 0.000 claims description 3
- 280000233134 Hardware Resources companies 0.000 abstract 1
- 238000000889 atomisation Methods 0.000 abstract 1
- 230000018109 developmental process Effects 0.000 description 16
- 238000004519 manufacturing process Methods 0.000 description 5
- 230000004301 light adaptation Effects 0.000 description 4
- 230000001360 synchronised Effects 0.000 description 4
- 230000000875 corresponding Effects 0.000 description 3
- 238000010586 diagrams Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000006011 modification reactions Methods 0.000 description 3
- 239000000178 monomer Substances 0.000 description 3
- 230000001131 transforming Effects 0.000 description 3
- 229920001276 Ammonium polyphosphate Polymers 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 239000004744 fabrics Substances 0.000 description 2
- 238000010348 incorporation Methods 0.000 description 2
- 230000002452 interceptive Effects 0.000 description 2
- 238000010223 real-time analysis Methods 0.000 description 2
- NTMYVTSWQJFCPA-UHFFFAOYSA-N (2-tert-butylpyrimidin-5-yl)oxy-ethoxy-propan-2-yloxy-sulfanylidene-$l^{5}-phosphane;[cyano-(4-fluoro-3-phenoxyphenyl)methyl] 3-(2,2-dichloroethenyl)-2,2-dimethylcyclopropane-1-carboxylate Chemical compound data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0naXNvLTg4NTktMSc/Pgo8c3ZnIHZlcnNpb249JzEuMScgYmFzZVByb2ZpbGU9J2Z1bGwnCiAgICAgICAgICAgICAgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJwogICAgICAgICAgICAgICAgICAgICAgeG1sbnM6cmRraXQ9J2h0dHA6Ly93d3cucmRraXQub3JnL3htbCcKICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnhsaW5rPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJwogICAgICAgICAgICAgICAgICB4bWw6c3BhY2U9J3ByZXNlcnZlJwp3aWR0aD0nMzAwcHgnIGhlaWdodD0nMzAwcHgnIHZpZXdCb3g9JzAgMCAzMDAgMzAwJz4KPCEtLSBFTkQgT0YgSEVBREVSIC0tPgo8cmVjdCBzdHlsZT0nb3BhY2l0eToxLjA7ZmlsbDojRkZGRkZGO3N0cm9rZTpub25lJyB3aWR0aD0nMzAwJyBoZWlnaHQ9JzMwMCcgeD0nMCcgeT0nMCc+IDwvcmVjdD4KPHBhdGggY2xhc3M9J2JvbmQtMCcgZD0nTSAxMzkuNDYyLDE4OS44NzUgTCAxMjAuMjc5LDIwNy4wMjEnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0xJyBkPSdNIDEyMC4yNzksMjA3LjAyMSBMIDEyMi4xOTIsMjE2LjE4NCcgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTEnIGQ9J00gMTIyLjE5MiwyMTYuMTg0IEwgMTI0LjEwNSwyMjUuMzQ2JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojRTg0MjM1O3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMicgZD0nTSAxMTguOTU5LDIzOC4wODcgTCAxMTUuNjYsMjQxLjAzNicgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I0U4NDIzNTtzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTInIGQ9J00gMTE1LjY2LDI0MS4wMzYgTCAxMTIuMzYxLDI0My45ODUnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNGRjYwQjc7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0zJyBkPSdNIDEwMi4yNjYsMjQwLjkxOSBMIDk5LjY5OTcsMjM4LjA0Nycgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I0ZGNjBCNztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTMnIGQ9J00gOTkuNjk5NywyMzguMDQ3IEwgOTcuMTMzLDIzNS4xNzYnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNGQ0M2MzM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0zJyBkPSdNIDk4LjQyOTgsMjQ0LjM0OCBMIDk1Ljg2MzIsMjQxLjQ3Nycgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I0ZGNjBCNztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTMnIGQ9J00gOTUuODYzMiwyNDEuNDc3IEwgOTMuMjk2NSwyMzguNjA1JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojRkNDNjMzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtNCcgZD0nTSAxMDAuMzQ4LDI1NC43MjIgTCA5Ny4wNDg5LDI1Ny42NzEnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNGRjYwQjc7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC00JyBkPSdNIDk3LjA0ODksMjU3LjY3MSBMIDkzLjc0OTgsMjYwLjYyJyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojRTg0MjM1O3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtOCcgZD0nTSAxMTIuMzYxLDI1Ni4wNzMgTCAxMTQuODY1LDI1OC44NzQnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNGRjYwQjc7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC04JyBkPSdNIDExNC44NjUsMjU4Ljg3NCBMIDExNy4zNjgsMjYxLjY3NScgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I0U4NDIzNTtzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTUnIGQ9J00gODAuNTk0MSwyNjQuMzM2IEwgNzEuNjYyOCwyNjEuMzk4JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojRTg0MjM1O3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtNScgZD0nTSA3MS42NjI4LDI2MS4zOTggTCA2Mi43MzE1LDI1OC40Nicgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTYnIGQ9J00gNjIuNzMxNSwyNTguNDYgTCA0My41NDg5LDI3NS42MDYnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC03JyBkPSdNIDYyLjczMTUsMjU4LjQ2IEwgNTcuNDczOCwyMzMuMjc0JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtOScgZD0nTSAxMzAuMDc5LDI2Ny4xNjMgTCAxMzkuMzgzLDI2NS4yMjEnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNFODQyMzU7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC05JyBkPSdNIDEzOS4zODMsMjY1LjIyMSBMIDE0OC42ODYsMjYzLjI3OCcgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTEwJyBkPSdNIDE0OC42ODYsMjYzLjI3OCBMIDE1Ni43MjYsMjM4LjgzOCcgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTEwJyBkPSdNIDE1NC43OCwyNjEuMjIgTCAxNjAuNDA4LDI0NC4xMTInIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC00NycgZD0nTSAxNDguNjg2LDI2My4yNzggTCAxNjUuODMzLDI4Mi40NjEnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0xMScgZD0nTSAxNTYuNzI2LDIzOC44MzggTCAxNjYuMTc0LDIzNi44NjYnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0xMScgZD0nTSAxNjYuMTc0LDIzNi44NjYgTCAxNzUuNjIyLDIzNC44OTMnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiM0Mjg0RjQ7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0xMicgZD0nTSAxODguMDQ0LDI0MC40NDEgTCAxOTMuNTUxLDI0Ni42MDInIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiM0Mjg0RjQ7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0xMicgZD0nTSAxOTMuNTUxLDI0Ni42MDIgTCAxOTkuMDU4LDI1Mi43NjMnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0xMicgZD0nTSAxODUuODYsMjQ1LjcxOSBMIDE4OS43MTUsMjUwLjAzMScgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzQyODRGNDtzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTEyJyBkPSdNIDE4OS43MTUsMjUwLjAzMSBMIDE5My41NjksMjU0LjM0NCcgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTEzJyBkPSdNIDE5OS4wNTgsMjUyLjc2MyBMIDIyNC4yNDQsMjQ3LjUwNScgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTE3JyBkPSdNIDE5OS4wNTgsMjUyLjc2MyBMIDE5Ni4xNjcsMjYxLjU1Micgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTE3JyBkPSdNIDE5Ni4xNjcsMjYxLjU1MiBMIDE5My4yNzUsMjcwLjM0Micgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzQyODRGNDtzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTE0JyBkPSdNIDIyNC4yNDQsMjQ3LjUwNSBMIDIyOS41MDEsMjcyLjY5MScgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTE1JyBkPSdNIDIyNC4yNDQsMjQ3LjUwNSBMIDIxOC45ODYsMjIyLjMxOScgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTE2JyBkPSdNIDIyNC4yNDQsMjQ3LjUwNSBMIDI0OS40MjksMjQyLjI0Nycgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTE4JyBkPSdNIDE4NC43MjksMjc4LjUxNiBMIDE3NS4yODEsMjgwLjQ4OScgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzQyODRGNDtzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTE4JyBkPSdNIDE3NS4yODEsMjgwLjQ4OSBMIDE2NS44MzMsMjgyLjQ2MScgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTE4JyBkPSdNIDE4MC44NDMsMjc0LjA3MSBMIDE3NC4yMjksMjc1LjQ1MScgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzQyODRGNDtzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTE4JyBkPSdNIDE3NC4yMjksMjc1LjQ1MSBMIDE2Ny42MTYsMjc2LjgzMicgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTE5JyBkPSdNIDEzLjYzNjQsOTQuODg4NSBMIDM3LjgxOCw4Ni4xMDEyJyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMjAnIGQ9J00gMzcuODE4LDg2LjEwMTIgTCAzMy4zNjMzLDYwLjc2MTEnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0yMScgZD0nTSAzNy44MTgsODYuMTAxMiBMIDUwLjY3MDgsMTA4LjM5JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtNDgnIGQ9J00gMzcuODE4LDg2LjEwMTIgTCA2My41NDY3LDg2LjExNDUnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0yMicgZD0nTSA1MC42NzA4LDEwOC4zOSBMIDUwLjY1NzUsMTM0LjExOCcgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTI2JyBkPSdNIDUwLjY3MDgsMTA4LjM5IEwgNjMuNTQ2Nyw4Ni4xMTQ1JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMjMnIGQ9J00gNTAuNjU3NSwxMzQuMTE4IEwgNzIuOTMyNiwxNDYuOTk0JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMjMnIGQ9J00gNTYuNTc0LDEzMS41OTUgTCA3Mi4xNjY1LDE0MC42MDgnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0yNCcgZD0nTSA3Mi45MzI2LDE0Ni45OTQgTCA3Mi45Mjc3LDE1Ni40MjgnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0yNCcgZD0nTSA3Mi45Mjc3LDE1Ni40MjggTCA3Mi45MjI5LDE2NS44NjInIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiM1QkI3NzI7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0yNScgZD0nTSA3Mi45MzI2LDE0Ni45OTQgTCA4MC4zNjA2LDE0Mi43MTEnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0yNScgZD0nTSA4MC4zNjA2LDE0Mi43MTEgTCA4Ny43ODg2LDEzOC40MjcnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiM1QkI3NzI7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0yNycgZD0nTSA2My41NDY3LDg2LjExNDUgTCA4NS44MzUsNzMuMjYxNicgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTI4JyBkPSdNIDg4LjQwNzksNzMuMjYzIEwgODguNDEyNyw2My44MjkxJyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMjgnIGQ9J00gODguNDEyNyw2My44MjkxIEwgODguNDE3Niw1NC4zOTUyJyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojRTg0MjM1O3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMjgnIGQ9J00gODMuMjYyMSw3My4yNjAzIEwgODMuMjY3LDYzLjgyNjQnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0yOCcgZD0nTSA4My4yNjcsNjMuODI2NCBMIDgzLjI3MTgsNTQuMzkyNicgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I0U4NDIzNTtzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTI5JyBkPSdNIDg1LjgzNSw3My4yNjE2IEwgOTMuNjgzNiw3Ny43OTg0JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMjknIGQ9J00gOTMuNjgzNiw3Ny43OTg0IEwgMTAxLjUzMiw4Mi4zMzUyJyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojRTg0MjM1O3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMzAnIGQ9J00gMTE0LjY4OCw4Mi4zNDQzIEwgMTIyLjU0Myw3Ny44MTQ0JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojRTg0MjM1O3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMzAnIGQ9J00gMTIyLjU0Myw3Ny44MTQ0IEwgMTMwLjM5OCw3My4yODQ2JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMzEnIGQ9J00gMTMwLjM5OCw3My4yODQ2IEwgMTMwLjQxMiw0Ny41NTU5JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMzMnIGQ9J00gMTMwLjM5OCw3My4yODQ2IEwgMTUyLjY3Myw4Ni4xNjA0JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMzInIGQ9J00gMTMwLjQxMiw0Ny41NTU5IEwgMTMwLjQxNywzOC4xMjIxJyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMzInIGQ9J00gMTMwLjQxNywzOC4xMjIxIEwgMTMwLjQyMSwyOC42ODgyJyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojNDI4NEY0O3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMzInIGQ9J00gMTM1LjU1OSw0NC43Mjg0IEwgMTM1LjU2MywzNi43MDk2JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMzInIGQ9J00gMTM1LjU2MywzNi43MDk2IEwgMTM1LjU2NywyOC42OTA5JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojNDI4NEY0O3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMzInIGQ9J00gMTI1LjI2Nyw0NC43MjMxIEwgMTI1LjI3MiwzNi43MDQzJyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMzInIGQ9J00gMTI1LjI3MiwzNi43MDQzIEwgMTI1LjI3NiwyOC42ODU2JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojNDI4NEY0O3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMzQnIGQ9J00gMTUyLjY3Myw4Ni4xNjA0IEwgMTUyLjY2LDExMS44ODknIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0zNCcgZD0nTSAxNTcuODE3LDkwLjAyMjQgTCAxNTcuODA4LDEwOC4wMzInIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC00OScgZD0nTSAxNTIuNjczLDg2LjE2MDQgTCAxNzQuOTYyLDczLjMwNzYnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0zNScgZD0nTSAxNTIuNjYsMTExLjg4OSBMIDE3NC45MzUsMTI0Ljc2NScgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTM2JyBkPSdNIDE3NC45MzUsMTI0Ljc2NSBMIDE5Ny4yMjQsMTExLjkxMicgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTM2JyBkPSdNIDE3NS43MDgsMTE4LjM3OSBMIDE5MS4zMSwxMDkuMzgyJyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMzcnIGQ9J00gMTk3LjIyNCwxMTEuOTEyIEwgMjA1LjUwMiwxMTYuNjk3JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMzcnIGQ9J00gMjA1LjUwMiwxMTYuNjk3IEwgMjEzLjc4LDEyMS40ODMnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiM3N0Q4RUQ7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0zOCcgZD0nTSAxOTcuMjI0LDExMS45MTIgTCAxOTcuMjM3LDg2LjE4MzQnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0zOScgZD0nTSAxOTcuMjM3LDg2LjE4MzQgTCAyMDUuMDkyLDgxLjY1MzYnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0zOScgZD0nTSAyMDUuMDkyLDgxLjY1MzYgTCAyMTIuOTQ3LDc3LjEyMzgnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNFODQyMzU7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC00NicgZD0nTSAxOTcuMjM3LDg2LjE4MzQgTCAxNzQuOTYyLDczLjMwNzYnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC00NicgZD0nTSAxOTEuMzIsODguNzA3MSBMIDE3NS43MjgsNzkuNjk0JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtNDAnIGQ9J00gMjI2LjEwMyw3Ny4xMzI4IEwgMjMzLjk1Miw4MS42Njk2JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojRTg0MjM1O3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtNDAnIGQ9J00gMjMzLjk1Miw4MS42Njk2IEwgMjQxLjgsODYuMjA2NCcgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTQxJyBkPSdNIDI0MS44LDg2LjIwNjQgTCAyNDEuNzg3LDExMS45MzUnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC00MScgZD0nTSAyNDYuOTQ0LDkwLjA2ODQgTCAyNDYuOTM1LDEwOC4wNzgnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC01MCcgZD0nTSAyNDEuOCw4Ni4yMDY0IEwgMjY0LjA4OSw3My4zNTM2JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtNDInIGQ9J00gMjQxLjc4NywxMTEuOTM1IEwgMjY0LjA2MiwxMjQuODExJyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtNDMnIGQ9J00gMjY0LjA2MiwxMjQuODExIEwgMjg2LjM1LDExMS45NTgnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC00MycgZD0nTSAyNjQuODM1LDExOC40MjUgTCAyODAuNDM3LDEwOS40MjgnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC00NCcgZD0nTSAyODYuMzUsMTExLjk1OCBMIDI4Ni4zNjQsODYuMjI5NCcgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTQ1JyBkPSdNIDI4Ni4zNjQsODYuMjI5NCBMIDI2NC4wODksNzMuMzUzNicgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTQ1JyBkPSdNIDI4MC40NDcsODguNzUzIEwgMjY0Ljg1NSw3OS43NCcgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+Cjx0ZXh0IGRvbWluYW50LWJhc2VsaW5lPSJjZW50cmFsIiB0ZXh0LWFuY2hvcj0ic3RhcnQiIHg9JzEyMi4zOScgeT0nMjMzLjQ5NCcgc3R5bGU9J2ZvbnQtc2l6ZTo4cHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7ZmlsbDojRTg0MjM1JyA+PHRzcGFuPk88L3RzcGFuPjwvdGV4dD4KPHRleHQgZG9taW5hbnQtYmFzZWxpbmU9ImNlbnRyYWwiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHg9JzEwNi4zNTUnIHk9JzI1MC42NCcgc3R5bGU9J2ZvbnQtc2l6ZTo4cHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7ZmlsbDojRkY2MEI3JyA+PHRzcGFuPlA8L3RzcGFuPjwvdGV4dD4KPHRleHQgZG9taW5hbnQtYmFzZWxpbmU9ImNlbnRyYWwiIHRleHQtYW5jaG9yPSJlbmQiIHg9JzkxLjc4NDMnIHk9JzIzMS40NTcnIHN0eWxlPSdmb250LXNpemU6OHB4O2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtmb250LWZhbWlseTpzYW5zLXNlcmlmO2ZpbGw6I0ZDQzYzMycgPjx0c3Bhbj5TPC90c3Bhbj48L3RleHQ+Cjx0ZXh0IGRvbWluYW50LWJhc2VsaW5lPSJjZW50cmFsIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiB4PSc4Ny4xNzE5JyB5PScyNjcuNzg2JyBzdHlsZT0nZm9udC1zaXplOjhweDtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjtmaWxsOiNFODQyMzUnID48dHNwYW4+TzwvdHNwYW4+PC90ZXh0Pgo8dGV4dCBkb21pbmFudC1iYXNlbGluZT0iY2VudHJhbCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgeD0nMTIzLjUwMScgeT0nMjY5LjgyMicgc3R5bGU9J2ZvbnQtc2l6ZTo4cHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7ZmlsbDojRTg0MjM1JyA+PHRzcGFuPk88L3RzcGFuPjwvdGV4dD4KPHRleHQgZG9taW5hbnQtYmFzZWxpbmU9ImNlbnRyYWwiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHg9JzE4MS45MTInIHk9JzIzNC44NjcnIHN0eWxlPSdmb250LXNpemU6OHB4O2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtmb250LWZhbWlseTpzYW5zLXNlcmlmO2ZpbGw6IzQyODRGNCcgPjx0c3Bhbj5OPC90c3Bhbj48L3RleHQ+Cjx0ZXh0IGRvbWluYW50LWJhc2VsaW5lPSJjZW50cmFsIiB0ZXh0LWFuY2hvcj0ic3RhcnQiIHg9JzE4OC4xNTknIHk9JzI3OC40OScgc3R5bGU9J2ZvbnQtc2l6ZTo4cHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7ZmlsbDojNDI4NEY0JyA+PHRzcGFuPk48L3RzcGFuPjwvdGV4dD4KPHRleHQgZG9taW5hbnQtYmFzZWxpbmU9ImNlbnRyYWwiIHRleHQtYW5jaG9yPSJzdGFydCIgeD0nNjguOTE3NCcgeT0nMTc0LjAwOScgc3R5bGU9J2ZvbnQtc2l6ZTo4cHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7ZmlsbDojNUJCNzcyJyA+PHRzcGFuPkNsPC90c3Bhbj48L3RleHQ+Cjx0ZXh0IGRvbWluYW50LWJhc2VsaW5lPSJjZW50cmFsIiB0ZXh0LWFuY2hvcj0ic3RhcnQiIHg9JzkxLjIxOScgeT0nMTM1LjQyOCcgc3R5bGU9J2ZvbnQtc2l6ZTo4cHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7ZmlsbDojNUJCNzcyJyA+PHRzcGFuPkNsPC90c3Bhbj48L3RleHQ+Cjx0ZXh0IGRvbWluYW50LWJhc2VsaW5lPSJjZW50cmFsIiB0ZXh0LWFuY2hvcj0ic3RhcnQiIHg9JzgyLjcwMDknIHk9JzQ4LjgxOTQnIHN0eWxlPSdmb250LXNpemU6OHB4O2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtmb250LWZhbWlseTpzYW5zLXNlcmlmO2ZpbGw6I0U4NDIzNScgPjx0c3Bhbj5PPC90c3Bhbj48L3RleHQ+Cjx0ZXh0IGRvbWluYW50LWJhc2VsaW5lPSJjZW50cmFsIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiB4PScxMDguMTEnIHk9Jzg3LjQyMzknIHN0eWxlPSdmb250LXNpemU6OHB4O2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtmb250LWZhbWlseTpzYW5zLXNlcmlmO2ZpbGw6I0U4NDIzNScgPjx0c3Bhbj5PPC90c3Bhbj48L3RleHQ+Cjx0ZXh0IGRvbWluYW50LWJhc2VsaW5lPSJjZW50cmFsIiB0ZXh0LWFuY2hvcj0ic3RhcnQiIHg9JzEyNy41NjYnIHk9JzIzLjExMzcnIHN0eWxlPSdmb250LXNpemU6OHB4O2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtmb250LWZhbWlseTpzYW5zLXNlcmlmO2ZpbGw6IzQyODRGNCcgPjx0c3Bhbj5OPC90c3Bhbj48L3RleHQ+Cjx0ZXh0IGRvbWluYW50LWJhc2VsaW5lPSJjZW50cmFsIiB0ZXh0LWFuY2hvcj0ic3RhcnQiIHg9JzIxNy4yMTEnIHk9JzEyNi4wNzQnIHN0eWxlPSdmb250LXNpemU6OHB4O2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtmb250LWZhbWlseTpzYW5zLXNlcmlmO2ZpbGw6Izc3RDhFRCcgPjx0c3Bhbj5GPC90c3Bhbj48L3RleHQ+Cjx0ZXh0IGRvbWluYW50LWJhc2VsaW5lPSJjZW50cmFsIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiB4PScyMTkuNTI1JyB5PSc3NC42MTcnIHN0eWxlPSdmb250LXNpemU6OHB4O2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtmb250LWZhbWlseTpzYW5zLXNlcmlmO2ZpbGw6I0U4NDIzNScgPjx0c3Bhbj5PPC90c3Bhbj48L3RleHQ+Cjwvc3ZnPgo= data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0naXNvLTg4NTktMSc/Pgo8c3ZnIHZlcnNpb249JzEuMScgYmFzZVByb2ZpbGU9J2Z1bGwnCiAgICAgICAgICAgICAgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJwogICAgICAgICAgICAgICAgICAgICAgeG1sbnM6cmRraXQ9J2h0dHA6Ly93d3cucmRraXQub3JnL3htbCcKICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnhsaW5rPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJwogICAgICAgICAgICAgICAgICB4bWw6c3BhY2U9J3ByZXNlcnZlJwp3aWR0aD0nODVweCcgaGVpZ2h0PSc4NXB4JyB2aWV3Qm94PScwIDAgODUgODUnPgo8IS0tIEVORCBPRiBIRUFERVIgLS0+CjxyZWN0IHN0eWxlPSdvcGFjaXR5OjEuMDtmaWxsOiNGRkZGRkY7c3Ryb2tlOm5vbmUnIHdpZHRoPSc4NScgaGVpZ2h0PSc4NScgeD0nMCcgeT0nMCc+IDwvcmVjdD4KPHBhdGggY2xhc3M9J2JvbmQtMCcgZD0nTSAzOS4wMTQyLDUzLjI5OCBMIDMzLjU3OTIsNTguMTU2MScgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTEnIGQ9J00gMzMuNTc5Miw1OC4xNTYxIEwgMzQuMTk3Miw2MS4xMTY2JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMScgZD0nTSAzNC4xOTcyLDYxLjExNjYgTCAzNC44MTUyLDY0LjA3NzEnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNFODQyMzU7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0yJyBkPSdNIDMzLjkzNDEsNjYuMzA2MyBMIDMyLjI3MDQsNjcuNzkzNCcgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I0U4NDIzNTtzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTInIGQ9J00gMzIuMjcwNCw2Ny43OTM0IEwgMzAuNjA2Niw2OS4yODA2JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojRkY2MEI3O3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMycgZD0nTSAyOS4yMDQ0LDY4LjU3NTkgTCAyNy43NDgyLDY2Ljk0NjgnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNGRjYwQjc7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0zJyBkPSdNIDI3Ljc0ODIsNjYuOTQ2OCBMIDI2LjI5Miw2NS4zMTc2JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojRkNDNjMzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMycgZD0nTSAyOC4xMTc0LDY5LjU0NzUgTCAyNi42NjEyLDY3LjkxODQnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNGRjYwQjc7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0zJyBkPSdNIDI2LjY2MTIsNjcuOTE4NCBMIDI1LjIwNSw2Ni4yODkzJyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojRkNDNjMzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtNCcgZD0nTSAyOC42NjA5LDcxLjAxOTcgTCAyNi45OTcyLDcyLjUwNjgnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNGRjYwQjc7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC00JyBkPSdNIDI2Ljk5NzIsNzIuNTA2OCBMIDI1LjMzMzUsNzMuOTkzOScgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I0U4NDIzNTtzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTgnIGQ9J00gMzAuNjA2Niw3MS4yMzg1IEwgMzIuMDA2Myw3Mi44MDQ0JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojRkY2MEI3O3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtOCcgZD0nTSAzMi4wMDYzLDcyLjgwNDQgTCAzMy40MDU5LDc0LjM3MDInIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNFODQyMzU7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC01JyBkPSdNIDIzLjA2NCw3NC42MzUgTCAyMC4xNjg5LDczLjY4MjcnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNFODQyMzU7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC01JyBkPSdNIDIwLjE2ODksNzMuNjgyNyBMIDE3LjI3MzksNzIuNzMwNCcgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTYnIGQ9J00gMTcuMjczOSw3Mi43MzA0IEwgMTEuODM4OSw3Ny41ODg1JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtNycgZD0nTSAxNy4yNzM5LDcyLjczMDQgTCAxNS43ODQyLDY1LjU5NDQnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC05JyBkPSdNIDM1LjYyNjYsNzUuMzQ4MyBMIDM4LjYyNzIsNzQuNzIxOScgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I0U4NDIzNTtzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTknIGQ9J00gMzguNjI3Miw3NC43MjE5IEwgNDEuNjI3OCw3NC4wOTU1JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMTAnIGQ9J00gNDEuNjI3OCw3NC4wOTU1IEwgNDMuOTA1Nyw2Ny4xNzA3JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMTAnIGQ9J00gNDMuMzU0NSw3My41MTI0IEwgNDQuOTQ5LDY4LjY2NScgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTQ3JyBkPSdNIDQxLjYyNzgsNzQuMDk1NSBMIDQ2LjQ4NTksNzkuNTMwNicgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTExJyBkPSdNIDQzLjkwNTcsNjcuMTcwNyBMIDQ2Ljk0NzIsNjYuNTM1OCcgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTExJyBkPSdNIDQ2Ljk0NzIsNjYuNTM1OCBMIDQ5Ljk4ODYsNjUuOTAwOScgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzQyODRGNDtzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTEyJyBkPSdNIDUyLjA5NDcsNjYuODU5MiBMIDUzLjk5NzIsNjguOTg3Nicgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzQyODRGNDtzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTEyJyBkPSdNIDUzLjk5NzIsNjguOTg3NiBMIDU1Ljg5OTgsNzEuMTE2MScgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTEyJyBkPSdNIDUxLjU3ODUsNjguNDY5MyBMIDUyLjkxMDIsNjkuOTU5Mycgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzQyODRGNDtzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTEyJyBkPSdNIDUyLjkxMDIsNjkuOTU5MyBMIDU0LjI0Miw3MS40NDkyJyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMTMnIGQ9J00gNTUuODk5OCw3MS4xMTYxIEwgNjMuMDM1Nyw2OS42MjY0JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMTcnIGQ9J00gNTUuODk5OCw3MS4xMTYxIEwgNTQuOTYwNyw3My45NzEnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0xNycgZD0nTSA1NC45NjA3LDczLjk3MSBMIDU0LjAyMTYsNzYuODI1OScgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzQyODRGNDtzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTE0JyBkPSdNIDYzLjAzNTcsNjkuNjI2NCBMIDY0LjUyNTQsNzYuNzYyNCcgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTE1JyBkPSdNIDYzLjAzNTcsNjkuNjI2NCBMIDYxLjU0Niw2Mi40OTA1JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMTYnIGQ9J00gNjMuMDM1Nyw2OS42MjY0IEwgNzAuMTcxNyw2OC4xMzY3JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMTgnIGQ9J00gNTIuNTY4OCw3OC4yNjA3IEwgNDkuNTI3NCw3OC44OTU3JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojNDI4NEY0O3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMTgnIGQ9J00gNDkuNTI3NCw3OC44OTU3IEwgNDYuNDg1OSw3OS41MzA2JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMTgnIGQ9J00gNTEuMzU4NSw3Ny4wMjQgTCA0OS4yMjk0LDc3LjQ2ODUnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiM0Mjg0RjQ7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0xOCcgZD0nTSA0OS4yMjk0LDc3LjQ2ODUgTCA0Ny4xMDA0LDc3LjkxMjknIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0xOScgZD0nTSAzLjM2MzY0LDI2LjM4NTEgTCAxMC4yMTUxLDIzLjg5NTMnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0yMCcgZD0nTSAxMC4yMTUxLDIzLjg5NTMgTCA4Ljk1MjkzLDE2LjcxNTYnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0yMScgZD0nTSAxMC4yMTUxLDIzLjg5NTMgTCAxMy44NTY3LDMwLjIxMDQnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC00OCcgZD0nTSAxMC4yMTUxLDIzLjg5NTMgTCAxNy41MDQ5LDIzLjg5OTEnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0yMicgZD0nTSAxMy44NTY3LDMwLjIxMDQgTCAxMy44NTMsMzcuNTAwMicgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTI2JyBkPSdNIDEzLjg1NjcsMzAuMjEwNCBMIDE3LjUwNDksMjMuODk5MScgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTIzJyBkPSdNIDEzLjg1MywzNy41MDAyIEwgMjAuMTY0Miw0MS4xNDgzJyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMjMnIGQ9J00gMTUuNTI5MywzNi43ODUxIEwgMTkuOTQ3MiwzOS4zMzg4JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMjQnIGQ9J00gMjAuMTY0Miw0MS4xNDgzIEwgMjAuMTYyNyw0NC4xODU3JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMjQnIGQ9J00gMjAuMTYyNyw0NC4xODU3IEwgMjAuMTYxMSw0Ny4yMjMxJyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojNUJCNzcyO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMjUnIGQ9J00gMjAuMTY0Miw0MS4xNDgzIEwgMjIuNjMzMywzOS43MjQ1JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMjUnIGQ9J00gMjIuNjMzMywzOS43MjQ1IEwgMjUuMTAyNCwzOC4zMDA3JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojNUJCNzcyO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMjcnIGQ9J00gMTcuNTA0OSwyMy44OTkxIEwgMjMuODE5OSwyMC4yNTc1JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMjgnIGQ9J00gMjQuNTQ4OSwyMC4yNTc4IEwgMjQuNTUwNSwxNy4yMjA0JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMjgnIGQ9J00gMjQuNTUwNSwxNy4yMjA0IEwgMjQuNTUyLDE0LjE4Mycgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I0U4NDIzNTtzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTI4JyBkPSdNIDIzLjA5MDksMjAuMjU3MSBMIDIzLjA5MjUsMTcuMjE5Nycgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTI4JyBkPSdNIDIzLjA5MjUsMTcuMjE5NyBMIDIzLjA5NDEsMTQuMTgyMycgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I0U4NDIzNTtzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTI5JyBkPSdNIDIzLjgxOTksMjAuMjU3NSBMIDI2LjQwODIsMjEuNzUzNicgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTI5JyBkPSdNIDI2LjQwODIsMjEuNzUzNiBMIDI4Ljk5NjQsMjMuMjQ5Nycgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I0U4NDIzNTtzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTMwJyBkPSdNIDMxLjI2NTksMjMuMjUxMiBMIDMzLjg1NjEsMjEuNzU3Nicgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I0U4NDIzNTtzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTMwJyBkPSdNIDMzLjg1NjEsMjEuNzU3NiBMIDM2LjQ0NjIsMjAuMjY0JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMzEnIGQ9J00gMzYuNDQ2MiwyMC4yNjQgTCAzNi40NSwxMi45NzQyJyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMzMnIGQ9J00gMzYuNDQ2MiwyMC4yNjQgTCA0Mi43NTc1LDIzLjkxMjEnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0zMicgZD0nTSAzNi40NSwxMi45NzQyIEwgMzYuNDUxNSw5LjkzNjc2JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMzInIGQ9J00gMzYuNDUxNSw5LjkzNjc2IEwgMzYuNDUzMSw2Ljg5OTM1JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojNDI4NEY0O3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMzInIGQ9J00gMzcuOTA4NCwxMi4wNjM3IEwgMzcuOTA5Nyw5LjQ4MTknIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0zMicgZD0nTSAzNy45MDk3LDkuNDgxOSBMIDM3LjkxMTEsNi45MDAxJyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojNDI4NEY0O3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMzInIGQ9J00gMzQuOTkyNSwxMi4wNjIyIEwgMzQuOTkzOCw5LjQ4MDQnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0zMicgZD0nTSAzNC45OTM4LDkuNDgwNCBMIDM0Ljk5NTEsNi44OTg2JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojNDI4NEY0O3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMzQnIGQ9J00gNDIuNzU3NSwyMy45MTIxIEwgNDIuNzUzNywzMS4yMDE5JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMzQnIGQ9J00gNDQuMjE0OSwyNS4wMDYzIEwgNDQuMjEyMiwzMC4xMDkyJyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtNDknIGQ9J00gNDIuNzU3NSwyMy45MTIxIEwgNDkuMDcyNSwyMC4yNzA1JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMzUnIGQ9J00gNDIuNzUzNywzMS4yMDE5IEwgNDkuMDY1LDM0Ljg1MDEnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0zNicgZD0nTSA0OS4wNjUsMzQuODUwMSBMIDU1LjM4LDMxLjIwODQnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0zNicgZD0nTSA0OS4yODM5LDMzLjA0MDggTCA1My43MDQ0LDMwLjQ5MTcnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0zNycgZD0nTSA1NS4zOCwzMS4yMDg0IEwgNTguMDkwMSwzMi43NzQ5JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMzcnIGQ9J00gNTguMDkwMSwzMi43NzQ5IEwgNjAuODAwMSwzNC4zNDE1JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojNzdEOEVEO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMzgnIGQ9J00gNTUuMzgsMzEuMjA4NCBMIDU1LjM4MzgsMjMuOTE4Nicgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTM5JyBkPSdNIDU1LjM4MzgsMjMuOTE4NiBMIDU3Ljk3MzksMjIuNDI1JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMzknIGQ9J00gNTcuOTczOSwyMi40MjUgTCA2MC41NjQxLDIwLjkzMTQnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNFODQyMzU7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC00NicgZD0nTSA1NS4zODM4LDIzLjkxODYgTCA0OS4wNzI1LDIwLjI3MDUnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC00NicgZD0nTSA1My43MDc1LDI0LjYzMzcgTCA0OS4yODk2LDIyLjA4JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtNDAnIGQ9J00gNjIuODMzNSwyMC45MzI5IEwgNjUuNDIxOCwyMi40MjknIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNFODQyMzU7c3Ryb2tlLXdpZHRoOjJweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC00MCcgZD0nTSA2NS40MjE4LDIyLjQyOSBMIDY4LjAxMDEsMjMuOTI1Micgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTQxJyBkPSdNIDY4LjAxMDEsMjMuOTI1MiBMIDY4LjAwNjMsMzEuMjE0OScgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTQxJyBkPSdNIDY5LjQ2NzUsMjUuMDE5NCBMIDY5LjQ2NDgsMzAuMTIyMicgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTUwJyBkPSdNIDY4LjAxMDEsMjMuOTI1MiBMIDc0LjMyNTEsMjAuMjgzNScgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTQyJyBkPSdNIDY4LjAwNjMsMzEuMjE0OSBMIDc0LjMxNzYsMzQuODYzMScgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTQzJyBkPSdNIDc0LjMxNzYsMzQuODYzMSBMIDgwLjYzMjYsMzEuMjIxNScgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTQzJyBkPSdNIDc0LjUzNjUsMzMuMDUzOCBMIDc4Ljk1NywzMC41MDQ3JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtNDQnIGQ9J00gODAuNjMyNiwzMS4yMjE1IEwgODAuNjM2NCwyMy45MzE3JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtNDUnIGQ9J00gODAuNjM2NCwyMy45MzE3IEwgNzQuMzI1MSwyMC4yODM1JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtNDUnIGQ9J00gNzguOTYsMjQuNjQ2NyBMIDc0LjU0MjIsMjIuMDkzJyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHRleHQgZG9taW5hbnQtYmFzZWxpbmU9ImNlbnRyYWwiIHRleHQtYW5jaG9yPSJzdGFydCIgeD0nMzQuMTc3MScgeT0nNjUuNjU2NScgc3R5bGU9J2ZvbnQtc2l6ZToycHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7ZmlsbDojRTg0MjM1JyA+PHRzcGFuPk88L3RzcGFuPjwvdGV4dD4KPHRleHQgZG9taW5hbnQtYmFzZWxpbmU9ImNlbnRyYWwiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHg9JzI5LjYzMzgnIHk9JzcwLjUxNDYnIHN0eWxlPSdmb250LXNpemU6MnB4O2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtmb250LWZhbWlseTpzYW5zLXNlcmlmO2ZpbGw6I0ZGNjBCNycgPjx0c3Bhbj5QPC90c3Bhbj48L3RleHQ+Cjx0ZXh0IGRvbWluYW50LWJhc2VsaW5lPSJjZW50cmFsIiB0ZXh0LWFuY2hvcj0iZW5kIiB4PScyNS41MDU1JyB5PSc2NS4wNzk1JyBzdHlsZT0nZm9udC1zaXplOjJweDtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjtmaWxsOiNGQ0M2MzMnID48dHNwYW4+UzwvdHNwYW4+PC90ZXh0Pgo8dGV4dCBkb21pbmFudC1iYXNlbGluZT0iY2VudHJhbCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgeD0nMjQuMTk4NycgeT0nNzUuMzcyNycgc3R5bGU9J2ZvbnQtc2l6ZToycHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7ZmlsbDojRTg0MjM1JyA+PHRzcGFuPk88L3RzcGFuPjwvdGV4dD4KPHRleHQgZG9taW5hbnQtYmFzZWxpbmU9ImNlbnRyYWwiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHg9JzM0LjQ5MTknIHk9Jzc1Ljk0OTcnIHN0eWxlPSdmb250LXNpemU6MnB4O2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtmb250LWZhbWlseTpzYW5zLXNlcmlmO2ZpbGw6I0U4NDIzNScgPjx0c3Bhbj5PPC90c3Bhbj48L3RleHQ+Cjx0ZXh0IGRvbWluYW50LWJhc2VsaW5lPSJjZW50cmFsIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiB4PSc1MS4wNDE3JyB5PSc2Ni4wNDU1JyBzdHlsZT0nZm9udC1zaXplOjJweDtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjtmaWxsOiM0Mjg0RjQnID48dHNwYW4+TjwvdHNwYW4+PC90ZXh0Pgo8dGV4dCBkb21pbmFudC1iYXNlbGluZT0iY2VudHJhbCIgdGV4dC1hbmNob3I9InN0YXJ0IiB4PSc1Mi44MTE4JyB5PSc3OC40MDU0JyBzdHlsZT0nZm9udC1zaXplOjJweDtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjtmaWxsOiM0Mjg0RjQnID48dHNwYW4+TjwvdHNwYW4+PC90ZXh0Pgo8dGV4dCBkb21pbmFudC1iYXNlbGluZT0iY2VudHJhbCIgdGV4dC1hbmNob3I9InN0YXJ0IiB4PScxOS4wMjY2JyB5PSc0OC44MDI2JyBzdHlsZT0nZm9udC1zaXplOjJweDtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjtmaWxsOiM1QkI3NzInID48dHNwYW4+Q2w8L3RzcGFuPjwvdGV4dD4KPHRleHQgZG9taW5hbnQtYmFzZWxpbmU9ImNlbnRyYWwiIHRleHQtYW5jaG9yPSJzdGFydCIgeD0nMjUuMzQ1NCcgeT0nMzcuODcxMicgc3R5bGU9J2ZvbnQtc2l6ZToycHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7ZmlsbDojNUJCNzcyJyA+PHRzcGFuPkNsPC90c3Bhbj48L3RleHQ+Cjx0ZXh0IGRvbWluYW50LWJhc2VsaW5lPSJjZW50cmFsIiB0ZXh0LWFuY2hvcj0ic3RhcnQiIHg9JzIyLjkzMTknIHk9JzEzLjMzMjInIHN0eWxlPSdmb250LXNpemU6MnB4O2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtmb250LWZhbWlseTpzYW5zLXNlcmlmO2ZpbGw6I0U4NDIzNScgPjx0c3Bhbj5PPC90c3Bhbj48L3RleHQ+Cjx0ZXh0IGRvbWluYW50LWJhc2VsaW5lPSJjZW50cmFsIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiB4PSczMC4xMzEyJyB5PScyNC4yNzAxJyBzdHlsZT0nZm9udC1zaXplOjJweDtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjtmaWxsOiNFODQyMzUnID48dHNwYW4+TzwvdHNwYW4+PC90ZXh0Pgo8dGV4dCBkb21pbmFudC1iYXNlbGluZT0iY2VudHJhbCIgdGV4dC1hbmNob3I9InN0YXJ0IiB4PSczNS42NDM3JyB5PSc2LjA0ODg3JyBzdHlsZT0nZm9udC1zaXplOjJweDtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjtmaWxsOiM0Mjg0RjQnID48dHNwYW4+TjwvdHNwYW4+PC90ZXh0Pgo8dGV4dCBkb21pbmFudC1iYXNlbGluZT0iY2VudHJhbCIgdGV4dC1hbmNob3I9InN0YXJ0IiB4PSc2MS4wNDMxJyB5PSczNS4yMjExJyBzdHlsZT0nZm9udC1zaXplOjJweDtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjtmaWxsOiM3N0Q4RUQnID48dHNwYW4+RjwvdHNwYW4+PC90ZXh0Pgo8dGV4dCBkb21pbmFudC1iYXNlbGluZT0iY2VudHJhbCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgeD0nNjEuNjk4OCcgeT0nMjAuNjQxNScgc3R5bGU9J2ZvbnQtc2l6ZToycHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7ZmlsbDojRTg0MjM1JyA+PHRzcGFuPk88L3RzcGFuPjwvdGV4dD4KPC9zdmc+Cg== CCOP(=S)(OC(C)C)OC1=CN=C(C(C)(C)C)N=C1.CC1(C)C(C=C(Cl)Cl)C1C(=O)OC(C#N)C1=CC=C(F)C(OC=2C=CC=CC=2)=C1 NTMYVTSWQJFCPA-UHFFFAOYSA-N 0.000 description 1
- 280000523263 Construction Bank companies 0.000 description 1
- 281000186762 Sinopec companies 0.000 description 1
- 280000450078 System One companies 0.000 description 1
- 238000004364 calculation methods Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000000586 desensitisation Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000001747 exhibiting Effects 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 281999990011 institutions and organizations companies 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000003019 stabilising Effects 0.000 description 1
- 238000006467 substitution reactions Methods 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
- 210000001519 tissues Anatomy 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network-specific arrangements or communication protocols supporting networked applications
- H04L67/10—Network-specific arrangements or communication protocols supporting networked applications in which an application is distributed across nodes in the network
Abstract
Description
一种微服务化业务应用系统
技术领域
[0001]本发明涉及信息与系统架构相关技术领域,特别是指一种微服务化业务应用系 统。
背景技术
[0002]系统架构对于组建复杂的信息处理系统尤为关键,但是当前传统的IT架构已越来 越无法应对企业爆炸式的业务增长,且已经有部分国内外企业尝试采用先进的架构,从而 改变信息系统构建方式,最终期望解决复杂的业务问题。例如:国内的互联网企业阿里巴 巴、京东,大型央企中石化,金融单位建设银行等己进行了一些尝试,而基于这些企业能够 从新型架构中获益,使得微服务化架构体系越来越成为大型企业信息化转型的重要方向。 [0003]虽然基于响应快速、个性定制、快速迭代等优点,使得微服务架构逐渐被互联网企 业接受并进行应用尝试,但在传统行业的大型企业集团尚未缺少应用。发明人在实现本发 明的过程中发现,现有的微服务化架构体系应用于大型传统企业中将会至少存在以下问 题:(1)传统行业的业务运行逻辑复杂,业务版块多元,微服务要支持复杂应用,导致本身的 改造开发及部署也会十分繁琐困难。⑵微服务之间需要考虑通信接口机制,微服务之间如 果集成较多,则对后期的变更和运维带来较大影响〆3)微服务架构的运维部署对技术要求 高,需要有较高水平的开发运维团队进行支撑。
发明内容
[0004] 有鉴于此,本发明的目的在于提出一种微服务化业务应用系统,能够克服现有大 型传统企业信息化转型中出现的问题,实现信息系统的微服务化设计并且提高系统的稳定 性和可靠性。
[0005] 基于上述目的本发明提供的一种微服务化业务应用系统,所述微服务化业务应用 系统采用微服务架构进行构建,并且依托统一的应用架构对微应用与微服务进行统一配置 和管理;所述微服务化业务应用系统包括:基础设施单元、服务单元、应用单元;
[0006] 所述基础设施单元用于提供软、硬件资源并实现系统中网络的虚拟化管理,包括 一体化平台中的云基础设施;
[0007] 所述服务单元用于根据最小业务单元的业务逻辑实现原子化的服务,进行组件化 封装后按照企业资源、业务处理、统计查询、辅助决策进行分类管理,利用一体化平台中的 云平台组件和云服务中心提供的技术进行服务实现和服务管理,并对微应用的实现提供统 一的服务访向支持;
[0008] 所述应用单元用于对应用和服务根据业务逻辑进行交互界面的组件化封装,并且 根据业务场景的实际需求实现业务人员可直接操作的微应用,对微应用进行池化管理,使 得多个相关微应用构建微应用池,聚类形成应用并向各类人机交互终端提供统一的访问入 P;
[0009] 所述微服务化业务应用系统依托微应用池,组合装配形成企业管理应用模块和公 众服务应用模块;其中,所述微应用池为多个微应用的集合;所述企业管理应用模块包括基 础应用子模块、专业应用子模块和分析决策子模块;所述基础应用子模块用于为用户提供 基础应用;所述专业应用子模块用于为用户提供专业应用;所述分析决策子模块用于通过 对大数据分析提供决策支持的应用;所述公众服务应用模块用于为用户提供全方位服务。 [0010]可选的,所述微应用池中的微应用按照业务类型分为智能分析决策、专业应用、基 础应用;按照技术特性分为业务处理、统计查询、分析决策、实时采集;按照应用对象分为决 策、管理、操作;且所述微应用池根据业务需求,通过渠道整合将微应用编排组装形成各类 企业管理应用模块和公众服务应用模块。
[0011]可选的,所述应用单元面向各类用户与终端,用于提供业务功能与应用服务,包括 统一应用入口模块、应用池模块、微应用池模块和应用配置管理模块;
[0012]所述统一应用入口模块为系统对不同渠道、媒介、设备的访问或接入的途径,用于 负责系统与用户的直接交互,接受用户的信息和请求,同时提供身份鉴权、访问路由、负载 均衡一类的统一管理功能,并实现统一工作台,提供用户访问与交互,实现对互动网站、智 能终端、APP应用和桌面应用的访问渠道融合统一;
[0013]所述应用池模块用于实现对成熟套装软件的未改造功能进行管理;
[0014] 所述微应用池模块用于实现对各类微应用的统一管理,且内部按照业务分类、技 术特征、适用渠道、应用范围进行组合管理;
[0015] 所述应用配置管理模块用于实现应用池模块和微应用池模块中的各项管理功能, 包括界面组件/装配、应用商店、应用管理、渠道适配、访问权限;所述界面组件/装配用于实 现对界面组件的统一管理与装配,所述应用商店用于实现对各类微应用的注册管理并发布 给用户,所述应用管理用于实现对微应用、部件与菜单的管理,所述渠道适配用于实现对单 体界面组件和应用的访问终端类型、技术访问方式的管理,所述访问权限用于根据用户的 业务岗位、系统角色实现对单体界面组件和应用的访问控制。
[0016] 可选的,所述服务单元包含业务应用建设过程中设计实现的各类微服务与业务流 程,且服务单元从功能实现角度对应用单元进行支撑,应用单元通过调用服务单元内的功 能与服务实现相关业务需求;
[0017] 所述服务单元包括统一服务访问入口模块、企业资源中心模块、业务处理中心模 块、统计查询中心模块、辅助决策中心模块与服务配置管理模块;其中,所述企业资源中心 模块、业务处理中心模块、统计查询中心模块和辅助决策中心模块为微服务的容器目录,用 于实现对服务的在线管理;服务配置管理模块为技术支撑平台;
[0018] 所述统一服务访问入口模块用于实现应用单元对于各类组件与服务的统一访问, 完成服务调用过程中的统一路由、服务代理、负载均衡与服务发现功能;
[0019] 所述企业资源中心模块用于针对业务实现过程中,梳理出来核心微服务进行管 理,企业资源微服务用于针对企业核心管理对象的相关操作进行封装以进行共享,使得所 有涉及企业核心资源的操作均通过企业资源微服务进行操作,以保证企业核心数据资源逻 辑的统一;
[0020] 所述业务处理中心模块用于针对业务处理相关微服务与业务流程进行管理;
[0021] 所述统计查询中心模块用于进行统计和查询相关功能/服务,包含统计查询模板 管理子模块、统计查询服务子模块、统计计算服务子模块、统计回填服务子模块和即时报表 子模块;
[0022]所述辅助决策中心模块用于实现对于各类业务的数据挖掘与分析计算,且数据来 源包括全业务数据中心的数据分析中心中的数据,业务分析统计中心的服务针对全业务数 据中心内部数据分析分中心的统一分析服务进行封装;所述辅助决策中心模块包括分析模 板子模块、分析算法管理子模块、数据计算子模块、数据挖掘子模块及数据探索子模块; [0023]所述服务配置管理模块为企业业务应用建设过程中所实现的各类业务流程、业务 功能及公共服务统一进行注册、管理与维护的中心,为各类功能、服务及流程提供统一的管 理支撑;所述服务配置管理模块实现对于企业资源中心模块、业务处理中心模块、业务统计 中心模块及辅助决策中心模块四个服务容器的管理,为系统业务应用的技术支撑平台。 [0024] 可选的,所述业务处理中心模块包括业务处理微服务库子模块、实时数据处理微 服务库子模块与业务流程库子模块;
[0025]所述业务处理微服务库子模块包括业务处理功能组件,用于注册管理各类业务处 理过程相关微服务,所述业务处理功能组件通过调用企业资源微服务实现对企业核心对象 的操作;
[0026]所述实时数据处理微服务子模块用于针对实时采集类数据进行处理,以微服务方 式对实时数据的采集、计算与存储进行封装;
[0027] 所述业务流程库子模块用于针对各类应用内流程及跨业务流程的管理,实现企业 流程的流程模板、流程版本及流程实例管理。
[0028] 可选的,所述服务配置管理模块包括:微服务管理子模块、流程管理子模块、服务 流程监测子模块、功能权限与数据权限子模块;
[0029]所述微服务管理子模块用于实现对各类微服务的集中注册与配置;
[0030] 所述流程管理子模块用于实现各类流程模板、实例及版本的集中注册与维护;
[0031] 所述服务流程监测子模块用于实现对各类服务流程运行状态的监测预警;
[0032] 所述功能权限与数据权限子模块用于实现对各类角色可访问功能数据资源的管 理与配置。
[0033]可选的,所述微服务化业务应用系统采用的技术框架包括:基础功能模块和管理 配置模块;
[0034]所述基础功能模块包括渠道适配功能子模块、统一权限管理子模块、统一流程管 理子模块、消息管理子模块;
[0035]所述渠道适配功能子模块,用于提供灵活的渠道适配能力,满足移动平台、企业门 户、大屏、自助访问终端的渠道界面开发标准或规范要求;
[0036]所述统一权限管理子模块,用于支持多套组织架构,提供高性能的权限审核能力, 并对微服务、微应用访问过程中的权限进行管控;
[0037] 所述统一流程管理子模块,用于提供支持一体化流程管理与运行框架,提供跨多 套组织机构的流程审批角色定位功能;
[0038] 所述消息管理子模块,用于提供具备高性能的消息处理能力,支持同时对大并发 量的消息进行接收与处理;
[0039] 所述管理配置模块包括应用服务管理子模块和企业架构管理子模块;
[0040] 所述应用服务管理子模块,用于面向微应用、流程、微服务与数据模型提供一体化 的管理配置功能,实现各类管理对象的注册、配置及版本化管理;
[0041] 所述企业架构管理子模块,用于根据已注册的应用、功能、流程与微服务,自动生 成企业架构,并保持同步,实现企业架构的在线管理。
[0042] 可选的,所述微服务化业务应用系统的开发、运行与维护还包括开发环境支持模 块和运行保障支持模块;
[0043]所述开发环境支持模块用于为一体化云平台提供一体化的在线开发、测试与发布 框架,实现开发、测试与生产环境服务版本与契约的同步,实现测试数据的管理,实现集成 的调试与自动化测试相关功能;
[0044]所述运行保障支持模块包括微服务运行管理子模块、访问入口与负载均衡管理子 模块、应用服务部署发布子模块、安全防护子模块、灾备与多活子模块;
[0045]所述微服务运行管理子模块,用于支持微服务之间以轻量级通讯协议方式进行的 高速调用,并保证微服务之间通讯可靠,提供面向微应用访问及微服务状态及调用全过程 的监控,实现全局角度对所有微服务的状态及链路压力的监控与预警;
[0046]所述访问入口与负载均衡管理子模块,用于提供应用访问统一入口与服务调用统 一入口,实现应用访问与服务调用的路由与负载均衡,同时支持根据各应用与微服务的负 载对相关资源进行弹性伸缩及负载均衡策略自动调整;
[0047]所述应用服务部署发布子模块,用于支持面向应用、微服务及数据模型的自动化 传输,实现开发环境、测试环境及生产环境的一键化传输式发布,实现应用与服务的灰度发 布;
[0048]所述安全防护子模块,用于基于云技术,支持发布容器的多租户管理,实现各租户 之间相互隔离,互不影响,并从数据库、操作系统、中间件、微服务、微应用、访问入□等各个 层面加强权限审计并建立一套可靠的安全防护体系;
[0049]所述灾备与多活子模块,用于针对各微应用与微服务提供异地部署与多节点提供 服务的能力,实现应用服务异地多活。
[0050] 从上面所述可以看出,本发明提供的微服务化业务应用系统采用微服务架构进行 系统的整体构建,并且依托统一的应用架构对系统中的微应用与微服务进行统一配置和管 理,不仅使得基于微服务架构的信息化系统实现较为简便,而且系统整体结构及功能分布 清晰,能够进一步降低开发、运维的成本。由此,本申请所述的微服务化业务应用系统能够 克服现有大型传统企业信息化转型中出现的问题,实现信息系统的微服务化设计并且提高 系统的稳定性和可靠性。
附图说明
[0051] 图1为本发明提供的微服务化业务应用系统的一个实施例的结构示意图;
[0052] 图2为本发明提供的微服务化业务应用系统的系统技术架构示意图。
具体实施方式
[0053]为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照 附图,对本发明进一步详细说明。
[0054]需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两 个相同名称非相同的实体或者非相同的参量,可见“第一” “第二”仅为了表述的方便,不应 理解为对本发明实施例的限定,后续实施例对此不再——说明。
[0055]针对当前对于企业,尤其是大型传统企业的信息化改造存在的问题,本申请提出 一种适应性和可靠性更好且容易实现的信息化系统,对企业中的相关信息进行微服务化设 计。具体的,所述微服务化业务应用系统采用微服务架构进行构建,并且依托统一的应用架 构对微应用与微服务进行统一配置和管理;所述微服务化业务应用系统包括:基础设施单 元、服务单元和应用单元;其中,所述基础设施单元用于为系统提供软、硬件资源并实现系 统中网络的虚拟化管理,包括一体化平台中的云基础设施;也即,所述基础设施单元为系统 的一体化业务应用提供资源管理、基础硬件与信息网络等基础服务。
[0056]所述服务单元用于根据最小业务单元的业务逻辑实现原子化的服务,进行组件化 封装后按照企业资源、业务处理、统计查询、辅助决策进行分类管理,利用一体化平台中的 云平台组件和云服务中心提供的技术进行服务实现和服务管理,并对微应用的实现提供统 一的服务访问支持;
[0057]所述应用单元用于对应用和服务根据业务逻辑进行交互界面的组件化封装,并且 根据业务场景的实际需求实现业务人员可直接操作的微应用,对微应用进行池化管理,使 得多个相关微应用构建微应用池,聚类形成应用并向各类人机交互终端提供统一的访问入 P;
[0058]所述微服务化业务应用系统依托微应用池,组合装配形成企业管理应用模块和公 众服务应用模块;其中,所述微应用池为多个微应用的集合;所述企业管理应用模块包括基 础应用子模块、专业应用子模块和分析决策子模块;所述基础应用子模块用于为用户提供 基础应用,所述基础应用不属于特定业务域的应用,包括电子邮件、统一视频、统一搜索、统 一即时通信、统一知识库等。所述专业应用子模块用于为用户提供专业应用,包含企业人财 物、企业核心业务、多元业务等应用。所述分析决策子模块用于通过对大数据分析提供决策 支持的应用,包括:企业经营分析、公司战略管控、客户优质服务等应用。所述公众服务应用 模块用于为用户提供全方位服务,具体包括:电子商城、供应商服务、交易服务、金融服务 等,且所述公众服务应用还可以随着企业业务的发展进一步进行扩展。
[0059]可选的,所述微应用池中的微应用按照业务类型分为智能分析决策、专业应用、基 础应用;按照技术特性分为业务处理、统计查询、分析决策、实时采集;按照应用对象分为决 策、管理、操作;且所述微应用池根据业务需求,通过渠道整合将微应用编排组装形成各类 企业管理应用模块和公众服务应用模块。当然,也可以根据需要按照其他的维度进行应用 对象的划分。
[0060] 由上述实施例可知,本发明提供的微服务化业务应用系统采用微服务架构进行系 统的整体构建,并且依托统一的应用架构对系统中的微应用与微服务进行统一配置和管 理,不仅使得基于微服务架构的信息化系统实现较为简便,而且系统整体结构及功能分布 清晰,能够进一步降低开发、运维的成本。由此,本申请所述的微服务化业务应用系统能够 克服现有大型传统企业信息化转型中出现的问题,实现信息系统的微服务化设计并且提高 系统的稳定性和可靠性。
[0061] 在本发明一些可选的实施例中,所述应用单元面向各类用户与终端,用于提供业 务功能与应用服务,包括统一应用入口模块、应用池模块、微应用池模块和应用配置管理模 块;
[0062]所述统一应用入口模块为系统对不同渠道、媒介、设备的访问或接入的途径,用于 负责系统与用户的直接交互,接受用户的信息和请求,同时提供身份鉴权、访问路由、负载 均衡一类的统一管理功能,并实现统一工作台,提供用户访问与交互,实现对互动网站、智 能终端、APP应用和桌面应用的访问渠道融合统一;
[0063]所述应用池模块用于实现对成熟套装软件的未改造功能进行管理。通常来说一个 稳定系统的建设需要经过较长时间的演进过程,而根据“继承发展,先进实用”的一般原则, 成熟套装软件无法在短时间内按照微服务架构进行升级改造,主要在功能菜单与界面级别 实现与所述微服务化业务应用系统的融合。
[0064]所述微应用池模块用于实现对各类微应用的统一管理,且内部按照业务分类、技 术特征、适用渠道、应用范围进行组合管理;微应用通过调用微服务对业务进行实现,通过 界面组件装配为用户提供可交互的访问界面。微应用还提供界面部件与功能菜单注册至统 一应用框架,通过调用统一应用框架与统一权限调用部件与功能菜单进行一体化展示。从 业务操作的特征上可分为业务处理、统计查询和辅助决策三大类型微应用,各类微应用根 据系统应用蓝图构建微应用池。其中,所述应用蓝图是指系统依托微应用池,组合装配形成 企业管理应用模块和公众服务应用模块。
[0065]所述应用配置管理模块用于实现应用池模块和微应用池模块中的各项管理功能, 包括界面组件/装配子模块、应用商店子模块、应用管理子模块、渠道适配子模块、访问权限 子模块;所述界面组件/装配子模块用于实现对界面组件的统一管理与装配,所述应用商店 子模块用于实现对各类微应用的注册管理并发布给用户,所述应用管理子模块用于实现对 微应用、部件与菜单的管理,所述渠道适配子模块用于实现对单体界面组件和应用的访问 终端类型、技术访问方式的管理,所述访问权限子模块用于根据用户的业务岗位、系统角色 实现对单体界面组件和应用的访问控制。其中,统一访问入口模块和应用配置管理模块的 相应管理功能应由一体化平台提供通用功能,界面组件和微应用应该根据业务实际需求和 业务逻辑由开发厂商应用一体化平台提供的技术开发框架和通用技术组件进行实现。
[0066] 在本发明一些可选的实施例中,所述服务单元包含业务应用建设过程中设计实现 的各类微服务与业务流程,且服务单元从功能实现角度对应用单元进行支撑,应用单元通 过调用服务单元内的功能与服务实现相关业务需求;
[0067] 所述服务单元包括统一服务访问入口模块、企业资源中心模块、业务处理中心模 块、统计查询中心模块、辅助决策中心模块与服务配置管理模块;其中,所述企业资源中心 模块、业务处理中心模块、统计查询中心模块和辅助决策中心模块为微服务的容器目录,用 于实现对服务的在线管理;服务配置管理模块为技术支撑平台;
[0068]所述统一服务访问入口模块用于实现应用单元对于各类组件与服务的统一访问, 完成服务调用过程中的统一路由、服务代理、负载均衡与服务发现功能;其中,所述统一服 务访问入口模块对应用的展现与功能进行了隔离,最大程度的降低业务功能调整时对于微 应用的影响,提高了系统的稳定性和可靠性。
[0069]所述企业资源中心模块用于针对业务实现过程中,梳理出来核心微服务进行管 理,企业资源微服务用于针对企业核心管理对象的相关操作进行封装以进行共享,使得所 有涉及企业核心资源的操作均通过企业资源微服务进行操作,以保证企业核心数据资源逻 辑的统一;其中,所述企业核心管理对象包括:组织、员工、设备等企业主数据对象。所述企 业资源中心模块对应的企业资源微服务有利于从企业层面,对公司核心管理对象的信息化 管理方式进行统一与规范,从技术角度对企业核心资源的操作进行统一,有效避免了因为 功能重复建设,不同业务系统中对核心资源管理业务逻辑的不一致而造成的数据质量不一 致问题,也即能够提高系统构建以及信息处理的效率。
[0070]所述业务处理中心模块用于针对业务处理相关微服务与业务流程进行管理;可选 的,所述业务处理中心模块包括业务处理微服务库子模块、实时数据处理微服务库子模块 与业务流程库子模块;所述业务处理微服务库子模块包括业务处理功能组件,用于注册管 理各类业务处理过程相关微服务,所述相关微服务不直接对企业核心资源进行操作;所述 业务处理功能组件通过调用企业资源微服务实现对企业核心对象的操作;所述实时数据处 理微服务子模块用于针对实时采集类数据进行处理,以微服务方式对实时数据的采集、计 算与存储进行封装;所述业务流程库子模块用于针对各类应用内流程及跨业务流程的管 理,实现企业流程的流程模板、流程版本及流程实例管理。
[0071]所述统计查询中心模块用于进行统计和查询相关功能/服务,包含统计查询模板 管理子模块、统计查询服务子模块、统计计算服务子模块、统计回填服务子模块和即时报表 子模块;这些子模块分别实现相应的服务功能。
[0072]所述辅助决策中心模块用于实现对于各类业务的数据挖掘与分析计算,且数据来 源包括全业务数据中心的数据分析中心中的数据,业务分析统计中心的服务针对全业务数 据中心内部数据分析分中心的统一分析服务进行封装;所述辅助决策中心模块包括分析模 板子模块、分析算法管理子模块、数据计算子模块、数据挖掘子模块及数据探索子模块; [0073]所述服务配置管理模块为企业业务应用建设过程中所实现的各类业务流程、业务 功能及公共服务统一进行注册、管理与维护的中心,为各类功能、服务及流程提供统一的管 理支撑;所述服务配置管理模块实现对于企业资源中心模块、业务处理中心模块、业务统计 中心模块及辅助决策中心模块四个服务容器的管理,为系统业务应用的技术支撑平台。
[0074] 可选的,所述服务配置管理模块包括:微服务管理子模块、流程管理子模块、服务 流程监测子模块、功能权限与数据权限子模块;所述微服务管理子模块用于实现对各类微 服务的集中注册与配置;所述流程管理子模块用于实现各类流程模板、实例及版本的集中 注册与维护;所述服务流程监测子模块用于实现对各类服务流程运行状态的监测预警;所 述功能权限与数据权限子模块用于实现对各类角色可访问功能数据资源的管理与配置。
[0075] 在本发明一些可选的实施例中,基于一体化业务应用是一体化平台提供的基础技 术框架下进行业务功能实现,使得一体化业务应用在系统开发、运行与维护等方面依赖一 体化平台的研发与实施,为使得一体化业务应用的建设过程更为规范,在进行企业信息化 系统构建的过程中需要编制涉及项目管控、需求规范、设计开发、测试部署、运行维护、最终 用户手册等系列标准规范体系,使得能够明确需求、设计、研发与实施必须遵从的技术规范 要求。所述微服务化业务应用系统采用的技术框架包括:基础功能模块和管理配置模块; [0076]所述基础功能模块包括渠道适配功能子模块、统一权限管理子模块、统一流程管 理子模块、消息管理子模块;
[0077]所述渠道适配功能子模块,用于提供灵活的渠道适配能力,满足移动平台、企业门 户、大屏、自助访问终端的渠道界面开发标准或规范要求;
[0078]统一权限管理子模块,用于支持多套组织架构,提供高性能的权限审核能力,并对 微服务、微应用访问过程中的权限进行管控;
[0079]统一流程管理子模块,用于提供支持一体化流程管理与运行框架,提供跨多套组 织机构的流程审批角色定位功能;
[0080] 消息管理子模块,用于提供具备高性能的消息处理能力,支持同时对大并发量的 消息进行接收与处理;
[0081] 所述管理配置模块包括应用服务管理子模块和企业架构管理子模块;
[0082] 所述应用服务管理子模块,用于面向微应用、流程、微服务与数据模型提供一体化 的管理配置功能,实现各类管理对象的注册、配置及版本化管理;
[0083]所述企业架构管理子模块,用于根据已注册的应用、功能、流程与微服务,自动生 成企业架构,并保持同步,实现企业架构的在线管理。
[0084] 在本发明一些可选的实施例中,所述微服务化业务应用系统的开发、运行与维护 还包括开发环境支持模块和运行保障支持模块;
[0085]所述开发环境支持模块用于为一体化云平台提供一体化的在线开发、测试与发布 框架,实现开发、测试与生产环境服务版本与契约的同步,实现测试数据的管理,也即测试 环境保存一定比例的生产环境脱敏数据,实现集成的调试与自动化测试相关功能;
[0086]所述运行保障支持模块包括微服务运行管理子模块、访问入口与负载均衡管理子 模块、应用服务部署发布子模块、安全防护子模块、灾备与多活子模块;
[0087]所述微服务运行管理子模块,用于支持微服务之间以轻量级通讯协议方式进行的 高速调用,并保证微服务之间通讯可靠,提供面向微应用访问及微服务状态及调用全过程 的监控,实现全局角度对所有微服务的状态及链路压力的监控与预警;
[0088]所述访问入口与负载均衡管理子模块,用于提供应用访问统一入口与服务调用统 一入口,实现应用访问与服务调用的路由与负载均衡,同时支持根据各应用与微服务的负 载对相关资源进行弹性伸缩及负载均衡策略自动调整;
[0089] 所述应用服务部署发布子模块,用于支持面向应用、微服务及数据模型的自动化 传输,实现开发环境、测试环境及生产环境的一键化传输式发布,实现应用与服务的灰度发 布;
[0090] 所述安全防护子模块,用于基于云技术,支持发布容器的多租户管理,实现各租户 之间相互隔离,互不影响,并从数据库、操作系统、中间件、微服务、微应用、访问入□等各个 层面加强权限审计并建立一套可靠的安全防护体系;
[0091] 所述灾备与多活子模块,用于针对各微应用与微服务提供异地部署与多节点提供 服务的能力,实现应用服务异地多活。
[0092] 所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非 旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本发明的思路下,以上实施例 或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如 上所述的本发明的不同方面的许多其它变化,为了简明它们没有在细节中提供。
[0093] 另外,为简化说明和讨论,并且为了不会使本发明难以理解,在所提供的附图中可 以示出或可以不示出与集成电路(1C)芯片和其它部件的公知的电源/接地连接。此外,可以 以框图的形式示出装置,以便避免使本发明难以理解,并且这也考虑了以下事实,即关于这 些框图装置的实施方式的细节是高度取决于将要实施本发明的平台的(即,这些细节应当 完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本发明的 示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节 的情况下或者这些具体细节有变化的情况下实施本发明。因此,这些描述应被认为是说明 性的而不是限制性的。
[0094]尽管已经结合了本发明的具体实施例对本发明进行了描述,但是根据前面的描 述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例 如,其它存储器架构(例如,动态RAM (DRAM))可以使用所讨论的实施例。
[0095]本发明的实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、 修改和变型。因此,凡在本发明的精神和原则之内,所做的任何省略、修改、等同替换、改进 等,均应包含在本发明的保护范围之内。
Claims (3)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710233073.9A CN107193546A (zh) | 2017-04-11 | 2017-04-11 | 一种微服务化业务应用系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710233073.9A CN107193546A (zh) | 2017-04-11 | 2017-04-11 | 一种微服务化业务应用系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107193546A true CN107193546A (zh) | 2017-09-22 |
Family
ID=59871238
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710233073.9A CN107193546A (zh) | 2017-04-11 | 2017-04-11 | 一种微服务化业务应用系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107193546A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108268260A (zh) * | 2017-12-21 | 2018-07-10 | 博康智能信息技术有限公司 | 一种基于一体化支撑技术的快速微应用组装方法 |
CN109600406A (zh) * | 2017-09-30 | 2019-04-09 | 同方威视技术股份有限公司 | 环境辐射监测站系统 |
CN109741229A (zh) * | 2018-11-16 | 2019-05-10 | 比亚迪股份有限公司 | 应用于轨道交通的管理系统和方法 |
CN109756448A (zh) * | 2017-11-02 | 2019-05-14 | 广东亿迅科技有限公司 | 基于微服务的api网关安全管理方法及其系统 |
CN109857570A (zh) * | 2018-12-29 | 2019-06-07 | 航天信息股份有限公司 | 业务系统的标准化数据类微模块 |
CN110198340A (zh) * | 2019-04-18 | 2019-09-03 | 视联动力信息技术股份有限公司 | 一种移动终端的管理系统、方法以及装置和存储介质 |
CN110221929A (zh) * | 2019-06-19 | 2019-09-10 | 上海缤游网络科技有限公司 | 一种服务化软件系统架构及其应用方法 |
CN110380936A (zh) * | 2019-07-23 | 2019-10-25 | 中国工商银行股份有限公司 | 测试方法和装置 |
CN111190580A (zh) * | 2019-12-25 | 2020-05-22 | 湖北普罗劳格科技股份有限公司 | 一种基于微服务架构的菠菜云技术平台 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105162884A (zh) * | 2015-09-25 | 2015-12-16 | 浪潮(北京)电子信息产业有限公司 | 一种基于微服务架构的云管理平台 |
CN106230987A (zh) * | 2016-09-21 | 2016-12-14 | 南方电网科学研究院有限责任公司 | 一种基于电力PaaS云平台的信息集成系统及方法 |
CN106533929A (zh) * | 2016-12-30 | 2017-03-22 | 北京中电普华信息技术有限公司 | 一种微服务开发平台、生成方法以及部署方法和装置 |
-
2017
- 2017-04-11 CN CN201710233073.9A patent/CN107193546A/zh active Search and Examination
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105162884A (zh) * | 2015-09-25 | 2015-12-16 | 浪潮(北京)电子信息产业有限公司 | 一种基于微服务架构的云管理平台 |
CN106230987A (zh) * | 2016-09-21 | 2016-12-14 | 南方电网科学研究院有限责任公司 | 一种基于电力PaaS云平台的信息集成系统及方法 |
CN106533929A (zh) * | 2016-12-30 | 2017-03-22 | 北京中电普华信息技术有限公司 | 一种微服务开发平台、生成方法以及部署方法和装置 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109600406A (zh) * | 2017-09-30 | 2019-04-09 | 同方威视技术股份有限公司 | 环境辐射监测站系统 |
CN109756448A (zh) * | 2017-11-02 | 2019-05-14 | 广东亿迅科技有限公司 | 基于微服务的api网关安全管理方法及其系统 |
CN108268260A (zh) * | 2017-12-21 | 2018-07-10 | 博康智能信息技术有限公司 | 一种基于一体化支撑技术的快速微应用组装方法 |
CN109741229A (zh) * | 2018-11-16 | 2019-05-10 | 比亚迪股份有限公司 | 应用于轨道交通的管理系统和方法 |
CN109857570A (zh) * | 2018-12-29 | 2019-06-07 | 航天信息股份有限公司 | 业务系统的标准化数据类微模块 |
CN110198340A (zh) * | 2019-04-18 | 2019-09-03 | 视联动力信息技术股份有限公司 | 一种移动终端的管理系统、方法以及装置和存储介质 |
CN110221929A (zh) * | 2019-06-19 | 2019-09-10 | 上海缤游网络科技有限公司 | 一种服务化软件系统架构及其应用方法 |
CN110380936A (zh) * | 2019-07-23 | 2019-10-25 | 中国工商银行股份有限公司 | 测试方法和装置 |
CN111190580A (zh) * | 2019-12-25 | 2020-05-22 | 湖北普罗劳格科技股份有限公司 | 一种基于微服务架构的菠菜云技术平台 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Munshi et al. | Big data framework for analytics in smart grids | |
CN104813285B (zh) | 应用与基础设施蓝图的结合 | |
CN103530354B (zh) | 地理信息数据融合系统 | |
Sun et al. | Software as a service: An integration perspective | |
CN103401917B (zh) | 一种基于云总线的混合云计算系统及其实现方法 | |
CN102375731B (zh) | 一种免编码集成应用软件平台系统 | |
US9009006B2 (en) | Generating active links between model objects | |
US20190018711A1 (en) | Multiple service classes in a shared cloud | |
EP2342628B1 (en) | Integration of an internal cloud infrastructure with existing enterprise services and systems | |
US8365195B2 (en) | Systems and methods for generating sets of model objects having data messaging pipes | |
Fan et al. | Manufacturing grid: needs, concept, and architecture | |
Komoda | Service oriented architecture (SOA) in industrial systems | |
Hoang et al. | Service-oriented middleware architectures for cyber-physical systems | |
US7991800B2 (en) | Object oriented system and method for optimizing the execution of marketing segmentations | |
Harmon et al. | Smart cities and the Internet of Things | |
US20110055761A1 (en) | Systems and methods for managing sets of model objects via unified management interface | |
RU2583703C2 (ru) | Обнаружение и анализ злоумышленной атаки | |
Lehnhoff et al. | IEC 61850 based OPC UA communication-The future of smart grid automation | |
CN106656630A (zh) | 一种电力营销业务应用系统及其构建方法、平台 | |
US20120143634A1 (en) | Systems, Methods, and Computer Program Products for Processing Insurance Claims | |
CN103839138A (zh) | 用于支撑多个异构系统交互的系统 | |
US20050015619A1 (en) | Integration infrastrucuture | |
CN103297381A (zh) | 一种基于插件的业务访问方法及其系统 | |
Yadav et al. | IoT: Challenges and issues in indian perspective | |
US20130318152A1 (en) | Method and system for exchanging information between back-end and front-end systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |