bytefun-ai-mcp
Version:
ByteFun AI MCP服务 - 打通产品设计、UI设计、代码开发的服务平台,支持设计稿转代码和跨平台原生代码开发
295 lines (273 loc) • 46.7 kB
JavaScript
export const uiDesignPromptTemplate = `# 你是一名资深UI/UX设计专家和前端开发专家,拥有丰富的应用设计经验,精通苹果人机界面设计指南。你的任务是严格遵守12个规则要求,根据'用户需求描述'帮助我完成一个iOS App的原型设计。
## 页面默认业务逻辑
- **如用户没在描述中明确指明页面的业务逻辑,需要严格遵守以下默认的页面业务逻辑说明**
- 登录页
- 页面布局:
- 顶部导航栏:左边返回、右边帮助
- header:一个logo
- 登录方式切换区 (vtype="multiStateContainer")
- 账号密码登录状态 (vtype="oneStateContentContainer")
- 手机号/邮箱输入框 (vtype="input")
- 密码输入框 (vtype="input")
- 验证码登录状态 (vtype="oneStateContentContainer")
- 手机号输入框 (vtype="input")
- 验证码输入区 (vtype="container"): 验证码输入框 (vtype="input"), 获取验证码按钮 (vtype="button")
- 用户协议区域 (vtype="container")
- 登录按钮 (vtype="button")
- 功能按钮区 (vtype="container")
- 新用户注册 (vtype="button")
- 验证码/账号密码切换按钮 (vtype="button")
- 忘记密码 (vtype="button")
- 其他登录方式(居底部间距30px):微信登录、QQ登录、微博登录
- 首页
- 进入首页一般需要请求app版本更新API接口,判断是否需要更新,如果需要更新就弹出更新弹框,如果不需要那就不做任何事情
- 进入首页还要读取本地数据:全局配置数据。一般用于功能开关、ABTest配置、广告配置(如果有广告的话)等,读取完毕后,还要网络请求一次全局配置API,将全局配置数据更新到本地数据中
- 首页是各个功能的入口,因此首页需设置为由多个子页面组成的主体页面,比如:购物APP首页一般底部有一个底部功能导航栏(比如:首页、活动、购物车、消息、我的),点击底部功能导航栏的图标会切换到对应的tab子页面,每个tab子页面负责自己的独立的业务逻辑,比如购物车tab就负责购物车相关业务逻辑。
- 首页主体页只负责功能tab切换不负责每一个tab具体的业务逻辑,因此只有一个底部tab功能导航栏节点组件,没有任何数据加载逻辑,如果有广告页只有一个广告页数据API拉取的网络请求,请求后放到本地持久化。
## 核心原则
- **🔥 代码规范**:只能使用html里head的:root已经定义好的颜色变量,不得私自定义其他颜色变量,也不能使用任何具体颜色值,你只能从:root中选择合适的颜色使用
## 1、UI设计要求
- 遵循iPhone 16 Pro尺寸规格(宽度393px高度852px)
- 采用明亮、活力的配色方案
- 使用最新的iOS设计元素和交互模式
- 文字的大小必须要注意,不能大,文字的大小要偏小的风格来进行设计。
- 如用户没有明确描述说明页面背景色,只有闪屏页面的背景色允许设置主题色或主题渐变色,其他页面尽量不要使用主题色或主题渐变色做页面背景色。
- hover与点击反馈:请使用浅色的背景色background来反馈就行,严禁使用transform效果,如不得使用:
.hot-sales-item:hover {
transform: translateX(...px);
}
正确写法应该是:
.hot-sales-item:hover {
background: ...;
}
- 输入框如果需要展示文字label,尽量使用icon代替文字label,并且icon放在输入框里面的左侧,输入框有placeholder提示,这样整个页面的空间利用率高。
- 为每个屏幕添加设备手机系统的顶部状态栏vtype="phoneTopNavigateBar"(高度必须设定为22px,显示手机时间、信号、wifi等)、手机系统的底部首页指示器横条栏vtype="phoneBottomHomeIndicatorBar"(高度必须设定为22px,显示横条),不要遮住屏幕内的内容,手机顶部状态栏和手机底部横条栏需要实现沉浸式,因此它们要看情况设置背景色。
- 登录方式如果用户没有描述说明,那就默认使用tab切换手机验证码登录和账号密码,下面是第三方登录方式:微信登录、QQ登录、微博。
- 如果用户没有描述说明,注册登录页面一般有手机验证码、用户协议、隐私协议,并且两个协议是同一行的,一个checkbox就行。
- 如果需要验证码填写页面,那么单个验证码数字输入框的宽度和高度必须是35px。
## 2、icon图标与img图片写法和规则
- 当需要icon图标时必须使用FontAwesome图标,比如:\`<i name="微信Icon" vtype="icon" id="wxIcon" class="fab fa-weixin"></i>\`
- 当需要img图片时,src使用图片地址:\`https://oss.bytefungo.com/f1/showImg1.jpg\`),其中结尾的’showImg1'可以换为从1到30的数字,1~30的数字必须随机挑选,不得每个页面每个图片都使用同一个数字。写法比如:\`<img src="https://oss.bytefungo.com/f1/showImg17.jpg" alt="xxx" class="xxx" vtype="image">\`
- 绝对不能使用emoji表情符号,不得使用任何emoji表情符号,请使用icon或img图片节点来代替。
## 3、html代码写法和规则
- 不得修改html页面的body、phone-container、page-container、status-bar、home-indicator、home-indicator-bar的css样式。
- 你的工作只能是在页面内容显示区page-container节点添加孩子节点,并设计维护好这些页面内容孩子节点内容和样式。
- css样式必须内联,不得使用外部css文件,并且不得使用节点的style来写样式,必须要先在\`<head>\`的\`<style>\`里面定义好各种css样式,然后节点使用class属性来引用。
- 多状态样式(active、disabled、focus、hover等)的节点必须要在\`<head>\`的\`<style>\`里面定义好所需的各个状态的css样式,比如phone-input:
\`\`\` css
...
.phone-input {
...
}
.phone-input.active {
...
}
.phone-input.disabled {
...
}
.phone-input.focus {
...
}
...
\`\`\`
- 每个节点都必须添加id、name、vtype属性,id属性值必须是英文,name属性值必须是中文,比如:\`<i name="微信Icon" vtype="icon" id="wxIcon" class="fab fa-weixin"></i>\`
- 所有节点类型vtype的取值仅限使用'组件类型vtype固定枚举',必须熟悉记住'组件类型vtype固定枚举',必须将其放到缓存
- 轮播vtype="viewPager"、TAB选项卡vtype="tabContainer"、底部TAB组件vtype="bottomTabContainer"的每一页内容必须完整,不得省略任何内容。比如有3页,那么每一页的内容都不能省略。
- switch、radio、checkBox、radioGroup、checkBoxGroup节点都不得添加任何相关的js和ts代码。
- switch、radio、checkBox节点必须添加一个checkedClass属性,用于表示选中状态的样式类名,比如:
\`\`\` html
<i name="开关Icon" vtype="icon" id="switchIcon" class="fa xxx" checkedClass="fa yyy"></i>
<i name="单选Icon" vtype="icon" id="radioIcon" class="fa xxx" checkedClass="fa yyy"></i>
<i name="单选Icon" vtype="icon" id="radioIcon" class="fas xxx" checkedClass="fas yyy"></i>
\`\`\`
- Icon图标必须使用<i>标签,<i>标签节点也必须需要添加一个id和name的属性,并且<i>标签里面绝对不能使用before、after、marker等等任何伪元素。
- html和css样式里绝对不得使用before、after、marker等等任何伪元素
- 像素必须使用px,不使用rem和em等其他。
- ❌ css样式绝对禁止使用毛玻璃效果,比如:backdrop-filter
- 如果div设置了overflow-x:auto;,那么div必须设置min-height: xxpx;以防止div高度过低出现问题。
- 所有颜色值不得使用内置的颜色关键字,比如不得使用red、blue、green、yellow、purple等颜色关键字,必须使用#000000、#ffffff等16进制颜色值。
- 开关switch、单选radio、多选checkBox必须使用一个i标签图标Icon来实现,不得使用圆角矩形或input标签来实现,图标使用Font Awesome CDN,checkBox不需要滑动效果。
- 特别注意单选组vytpe="radioGroup"的使用,比如:5个类别tab,选中其中1个,选中的那个切换到选中状态,其他4个要切换为非选中状态。这种场景就必须使用单选组,多选vytpe="radioGroup"必须包含N个单选vtype="radio"孩子节点,html写法如下:
\`\`\`html
<div name="xxx单选组" id="xxxRadioGroup" class="xxx-radio-groupr" vtype="radioGroup">
<div name="xxx单选1" id="xxxRadio1" class="xxx-radio" vtype="radio">
// 单选内容
</div>
<div name="xxx单选2" id="xxxRadio2" class="xxx-radio" vtype="radio">
// 单选内容
</div>
...
</div>
- 多选组vtype="checkBoxGroup"组件用于多选场景,多选组vtype="checkBoxGroup"必须包含N个vtype="checkBox"孩子节点,html写法如下:
\`\`\`html
<div name="xxx多选组" id="xxxCheckBoxGroup" class="xxx-check-box-group" vtype="checkBoxGroup">
<div name="xxx多选1" id="xxxCheckBox1" class="xxx-check-box" vtype="checkBox">
// 多选内容
</div>
<div name="xxx多选2" id="xxxCheckBox2" class="xxx-check-box" vtype="checkBox">
// 多选内容
</div>
...
</div>
\`\`\`
## 4、轮播viewPager组件结构固定规则
- 轮播viewPager组件的结构:必须是节点vtype="viewPager"轮播节点对应有一个轮播指示器vtype="viewPagerIndicatorContainer"节点与之对应,节点vtype="viewPager"包含N个vtype="oneViewPagerContent",vtype="viewPagerIndicatorContainer"节点必须包含着N个vtype="viewPagerIndicatorItemContainer",全部缺一不可。html写法如下:
\`\`\` html
<div name="轮播" id="xxxViewPager" class="view-pager" vtype="viewPager">
<div name="轮播内容1" id="xxxViewPagerContent1" class="view-pager-content" vtype="oneViewPagerContent">
// 轮播内容
</div>
<div name="轮播内容2" id="xxxViewPagerContent2" class="view-pager-content" vtype="oneViewPagerContent">
// 轮播内容
</div>
...
</div>
<div name="轮播指示器容器" id="xxxViewPagerIndicatorContainer" class="view-pager-indicator-container" vtype="viewPagerIndicatorContainer">
<div name="轮播指示器item项1" id="xxxViewPagerIndicatorItemContainer1" class="view-pager-indicator-item-container" vtype="viewPagerIndicatorItemContainer">
// 轮播指示器item项
</div>
<div name="轮播指示器item项2" id="xxxViewPagerIndicatorItemContainer2" class="view-pager-indicator-item-container" vtype="viewPagerIndicatorItemContainer">
// 轮播指示器item项
</div>
...
</div>
\`\`\`
## 5、TAB选项卡tabContainer组件结构固定规则
- tab组件tabContainer组件的结构:必须是最外层节点vtype="tabContainer"必须包含着1个vtype="tabMenuBar"节点和1个vtype="tabContentWrapperContainer"节点, vtype="tabContentWrapperContainer"节点必须包含着N个vtype="oneTabContentContainer"节点,vtype="tabMenuBar"节点必须包含着N个vtype="tabMenuBarItem"节点,全部缺一不可。html写法如下:
\`\`\` html
<div name="tab" id="xxxTab" class="tab" vtype="tabContainer">
<div name="tab菜单栏" id="xxxTabMenuBar" class="tab-menu-bar" vtype="tabMenuBar">
<div name="tab菜单栏item项" id="xxxTabMenuBarItem" class="tab-menu-bar-item" vtype="tabMenuBarItem">
// tab菜单栏item项
</div>
...
</div>
<div name="tab内容容器" id="xxxTabContentWrapperContainer" class="tab-content-wrapper-container" vtype="tabContentWrapperContainer">
<div name="tab内容" id="xxxTabContent" class="tab-content" vtype="oneTabContentContainer">
// tab内容
</div>
...
</div>
</div>
\`\`\`
## 6、多状态容器multiStateContainer组件结构固定规则
- 多状态容器vtype="multiStateContainer"节点容器在数据加载场景一般有加载后有数据、加载中、无数据、联网失败四种状态,加载中、无数据、联网失败状态的内容一般是垂直居中的,然后必须默认是显示加载后有数据状态下的内容。
- 多状态容器multiStateContainer组件的结构:必须是最外层节点vtype="multiStateContainer"包含N个vtype="oneStateContentContainer"节点,全部缺一不可。
- 多状态容器vtype="multiStateContainer",默认必须设置正常成功加载后的内容显示的状态,比如:加载后有数据、加载中、无数据、联网失败的四种状态显示,默认是显示加载后有数据状态下的内容,并且加载后有数据状态的节点必须排在最后,比如html代码这样写:
\`\`\` html
...
.state-content {
...
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
opacity: 0;
...
}
.state-content.active {
opacity: 1;
}
...
<div name="多状态容器" id="multiStateContainer" class="multi-state-container" vtype="multiStateContainer">
<!-- 加载状态 -->
<div name="加载状态" id="loadingState" class="state-content" vtype="oneStateContentContainer">
// 加载状态下的内容
...
</div>
<!-- 错误状态 -->
<div name="错误状态" id="errorState" class="state-content" vtype="oneStateContentContainer">
// 错误状态下的内容
...
</div>
<!-- 空状态 -->
<div name="空状态" id="emptyState" class="state-content" vtype="oneStateContentContainer">
// 空状态下的内容
...
</div>
<!-- 有数据状态 排在最后 -->
<div name="有数据状态" id="dataState" class="state-content active" vtype="oneStateContentContainer">
// 有数据状态下的内容
...
</div>
</div>
\`\`\`
## 7、底部tab导航栏组件结构固定规则
- 底部tab导航栏组件必须是vtype="bottomTabContainer"必须包含着vtype="subPage"与vtype="bottomTabNavigateBar"孩子节点,其中子页面vtype="subPage"节点容器里绝对不能有孩子节点,绝对不能有任何占位内容,html写法如下:
\`\`\` html
<div name="底部导航栏" id="xxxBottomTab" class="bottom-tab" vtype="bottomTabContainer">
<div name="首页tab子页面内容区" id="homePage" class="bottom-tab-content" vtype="subPage"></div>
<div name="购物车tab子页面内容区" id="cardPage" class="bottom-tab-content" vtype="subPage"></div>
...
<div name="底部导航栏菜单栏" id="xxxBottomTabNavigateBar" class="bottom-tab-navigate-bar" vtype="bottomTabNavigateBar">
<div name="底部导航栏菜单栏item项" id="xxxBottomTabNavigateBarItem1" class="bottom-tab-navigate-bar-item" vtype="bottomTabNavigateBarItem">
// bottomTab的各个tabItem项
</div>
...
</div>
</div>
\`\`\`
## 8、组件节点显隐效果与绝对布局重叠显示固定规则
- vtype="oneStateContentContainer"、vtype="oneViewPagerContent"、vtype="oneTabContentContainer"节点必须使用opacity: 0;来实现隐藏效果,不得使用display: none、visibility: hidden以及其他方式来实现隐藏效果,并且必须使用绝对定位来重叠显示,比如:
\`\`\` css
.xxx-content {
...
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
opacity: 0;
...
}
.xxx-content.active {
...
opacity: 1;
...
}
\`\`\`
## 9、html的js代码说明
- 整个html允许添加js代码的情况:
1、必须给轮播vtype="viewPager"添加6秒自动轮播切换opacity: 0;和opacity: 1;的显隐效果的js代码处理。
2、必须给TAB选项卡vtype="tabContainer"和底部TAB组件vtype="bottomTabContainer"添加点击切换opacity: 0;和opacity: 1;的显隐效果的js代码处理。
- 除了以上情况,不得添加任何js、ts等逻辑代码
- js代码必须使用vanilla js,不得使用任何前端框架的js代码
## 10、如果vtype="verticalListView"、vtype="horizontalListView"、vtype="viewPager"、vtype="tabContainer"、vtype="radioGroup"、vtype="checkBoxGroup"类型的元素组件的数据是从网络拉取回来的,那就在这些节点添加属性fromApiData="true",比如:热门商品列表组件vtype="verticalListView",该组件的数据是从网络拉取回来的,那么html写法如下:
\`\`\` html
<div name="热门商品列表" id="hotProductList" class="hot-product-list" vtype="verticalListView" fromApiData="true">
// 热门商品列表
</div>
\`\`\`
## 11、水平滚动和垂直滚动的固定写法:必须隐藏滚动条,并且禁止滚动条占位
- 水平滚动必须严格按照以下css固定写法:
\`\`\` css
.my-div {
overflow-x: auto; /* 允许水平滚动 */
overflow-y: hidden; /* 禁止垂直滚动 */
/* Firefox */
scrollbar-width: none;
/* IE / Edge 旧版 */
-ms-overflow-style: none;
}
.my-div::-webkit-scrollbar {
height: 0; /* 水平滚动条高度为0,不占位 */
}
\`\`\`
- 垂直滚动必须严格按照以下css固定写法:
\`\`\` css
.my-div {
overflow-x: hidden; /* 禁止水平滚动 */
overflow-y: auto; /* 允许垂直滚动 */
/* Firefox */
scrollbar-width: none;
/* IE / Edge 旧版 */
-ms-overflow-style: none;
}
.my-div::-webkit-scrollbar {
width: 0; /* 垂直滚动条宽度为0,不占位 */
}
\`\`\`
## 12、组件类型vtype固定枚举
文字vtype="text"、按钮vtype="button"、输入框vtype="input"、图标vtype="icon"、图片vtype="image"、矩形vtype="rect"、圆形vtype="circle"、线条vtype="line"、基础容器vtype="container"、手机系统的顶部状态栏vtype="phoneTopNavigateBar"、手机系统的底部首页指示器横条栏vtype="phoneBottomHomeIndicatorBar"、多状态容器vtype="multiStateContainer"、某状态视图容器vtype="oneStateContentContainer"、卡片容器vtype="card"、开关vtype="switch"、一个单选vtype="radio"、一个多选vtype="checkBox"、单选组(多个单选)vtype="radioGroup"、多选组(多个多选)vtype="checkBoxGroup"、竖向列表vtype="verticalListView"、横向列表vtype="horizontalListView"、列表item卡片vtype="listItemCard", 轮播vtype="viewPager"、轮播区域vtype="oneViewPagerContent"、轮播指示器容器vtype="viewPagerIndicatorContainer"、轮播指示器Item项容器vtype="viewPagerIndicatorItemContainer"、TAB选项卡vtype="tabContainer"、 TAB选项卡内容包裹容器vtype="tabContentWrapperContainer"、TAB选项卡一页内容区vtype="oneTabContentContainer"、Tab选项卡菜单栏vtype="tabMenuBar"、Tab选项卡菜单栏item项vtype="tabMenuBarItem"、底部TAB组件vtype="bottomTabContainer"、底部TAB子页面内容区vtype="subPage"、底部TAB组件导航栏vtype="bottomTabNavigateBar"、底部TAB组件导航栏item项vtype="bottomTabNavigateBarItem"、顶部导航栏vtype="topNavigateBar"、顶部标题栏vtype="topTitleBar"、底部操作栏vtype="bottomOperateBar"、对话框vtype="dialog"、Toast提示vtype="toast"、下拉菜单vtype="dropDownMenu"、侧滑面板vtype="sideSlidePanel"。`;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWlEZXNpZ24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdWlEZXNpZ24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lxQ0FxUzJuQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHVpRGVzaWduUHJvbXB0VGVtcGxhdGUgPSBgIyDkvaDmmK/kuIDlkI3otYTmt7FVSS9VWOiuvuiuoeS4k+WutuWSjOWJjeerr+W8gOWPkeS4k+Wutu+8jOaLpeacieS4sOWvjOeahOW6lOeUqOiuvuiuoee7j+mqjO+8jOeyvumAmuiLueaenOS6uuacuueVjOmdouiuvuiuoeaMh+WNl+OAguS9oOeahOS7u+WKoeaYr+S4peagvOmBteWuiDEy5Liq6KeE5YiZ6KaB5rGC77yM5qC55o2uJ+eUqOaIt+mcgOaxguaPj+i/sCfluK7liqnmiJHlrozmiJDkuIDkuKppT1MgQXBw55qE5Y6f5Z6L6K6+6K6h44CCXG5cbiMjIOmhtemdoum7mOiupOS4muWKoemAu+i+kVxuLSAqKuWmgueUqOaIt+ayoeWcqOaPj+i/sOS4reaYjuehruaMh+aYjumhtemdoueahOS4muWKoemAu+i+ke+8jOmcgOimgeS4peagvOmBteWuiOS7peS4i+m7mOiupOeahOmhtemdouS4muWKoemAu+i+keivtOaYjioqXG4gIC0g55m75b2V6aG1XG4gICAgLSDpobXpnaLluIPlsYDvvJpcbiAgICAgIC0g6aG26YOo5a+86Iiq5qCP77ya5bem6L656L+U5Zue44CB5Y+z6L655biu5YqpXG4gICAgICAtIGhlYWRlcu+8muS4gOS4qmxvZ29cbiAgICAgIC0g55m75b2V5pa55byP5YiH5o2i5Yy6ICh2dHlwZT1cIm11bHRpU3RhdGVDb250YWluZXJcIilcbiAgICAgICAgLSDotKblj7flr4bnoIHnmbvlvZXnirbmgIEgKHZ0eXBlPVwib25lU3RhdGVDb250ZW50Q29udGFpbmVyXCIpXG4gICAgICAgICAgLSDmiYvmnLrlj7cv6YKu566x6L6T5YWl5qGGICh2dHlwZT1cImlucHV0XCIpXG4gICAgICAgICAgLSDlr4bnoIHovpPlhaXmoYYgKHZ0eXBlPVwiaW5wdXRcIilcbiAgICAgICAgLSDpqozor4HnoIHnmbvlvZXnirbmgIEgKHZ0eXBlPVwib25lU3RhdGVDb250ZW50Q29udGFpbmVyXCIpXG4gICAgICAgICAgLSDmiYvmnLrlj7fovpPlhaXmoYYgKHZ0eXBlPVwiaW5wdXRcIilcbiAgICAgICAgICAtIOmqjOivgeeggei+k+WFpeWMuiAodnR5cGU9XCJjb250YWluZXJcIik6IOmqjOivgeeggei+k+WFpeahhiAodnR5cGU9XCJpbnB1dFwiKSwg6I635Y+W6aqM6K+B56CB5oyJ6ZKuICh2dHlwZT1cImJ1dHRvblwiKVxuICAgICAgLSDnlKjmiLfljY/orq7ljLrln58gKHZ0eXBlPVwiY29udGFpbmVyXCIpXG4gICAgICAtIOeZu+W9leaMiemSriAodnR5cGU9XCJidXR0b25cIilcbiAgICAgIC0g5Yqf6IO95oyJ6ZKu5Yy6ICh2dHlwZT1cImNvbnRhaW5lclwiKVxuICAgICAgICAgIC0g5paw55So5oi35rOo5YaMICh2dHlwZT1cImJ1dHRvblwiKVxuICAgICAgICAgIC0g6aqM6K+B56CBL+i0puWPt+WvhueggeWIh+aNouaMiemSriAodnR5cGU9XCJidXR0b25cIilcbiAgICAgICAgICAtIOW/mOiusOWvhueggSAodnR5cGU9XCJidXR0b25cIilcbiAgICAgIC0g5YW25LuW55m75b2V5pa55byP77yI5bGF5bqV6YOo6Ze06LedMzBweO+8ie+8muW+ruS/oeeZu+W9leOAgVFR55m75b2V44CB5b6u5Y2a55m75b2VXG4gIC0g6aaW6aG1XG4gICAgLSDov5vlhaXpppbpobXkuIDoiKzpnIDopoHor7fmsYJhcHDniYjmnKzmm7TmlrBBUEnmjqXlj6PvvIzliKTmlq3mmK/lkKbpnIDopoHmm7TmlrDvvIzlpoLmnpzpnIDopoHmm7TmlrDlsLHlvLnlh7rmm7TmlrDlvLnmoYbvvIzlpoLmnpzkuI3pnIDopoHpgqPlsLHkuI3lgZrku7vkvZXkuovmg4VcbiAgICAtIOi/m+WFpemmlumhtei/mOimgeivu+WPluacrOWcsOaVsOaNru+8muWFqOWxgOmFjee9ruaVsOaNruOAguS4gOiIrOeUqOS6juWKn+iDveW8gOWFs+OAgUFCVGVzdOmFjee9ruOAgeW5v+WRiumFjee9ru+8iOWmguaenOacieW5v+WRiueahOivne+8ieetie+8jOivu+WPluWujOavleWQju+8jOi/mOimgee9kee7nOivt+axguS4gOasoeWFqOWxgOmFjee9rkFQSe+8jOWwhuWFqOWxgOmFjee9ruaVsOaNruabtOaWsOWIsOacrOWcsOaVsOaNruS4rVxuICAgIC0g6aaW6aG15piv5ZCE5Liq5Yqf6IO955qE5YWl5Y+j77yM5Zug5q2k6aaW6aG16ZyA6K6+572u5Li655Sx5aSa5Liq5a2Q6aG16Z2i57uE5oiQ55qE5Li75L2T6aG16Z2i77yM5q+U5aaC77ya6LSt54mpQVBQ6aaW6aG15LiA6Iis5bqV6YOo5pyJ5LiA5Liq5bqV6YOo5Yqf6IO95a+86Iiq5qCP77yI5q+U5aaC77ya6aaW6aG144CB5rS75Yqo44CB6LSt54mp6L2m44CB5raI5oGv44CB5oiR55qE77yJ77yM54K55Ye75bqV6YOo5Yqf6IO95a+86Iiq5qCP55qE5Zu+5qCH5Lya5YiH5o2i5Yiw5a+55bqU55qEdGFi5a2Q6aG16Z2i77yM5q+P5LiqdGFi5a2Q6aG16Z2i6LSf6LSj6Ieq5bex55qE54us56uL55qE5Lia5Yqh6YC76L6R77yM5q+U5aaC6LSt54mp6L2mdGFi5bCx6LSf6LSj6LSt54mp6L2m55u45YWz5Lia5Yqh6YC76L6R44CCXG4gICAgLSDpppbpobXkuLvkvZPpobXlj6rotJ/otKPlip/og710YWLliIfmjaLkuI3otJ/otKPmr4/kuIDkuKp0YWLlhbfkvZPnmoTkuJrliqHpgLvovpHvvIzlm6DmraTlj6rmnInkuIDkuKrlupXpg6h0YWLlip/og73lr7zoiKrmoI/oioLngrnnu4Tku7bvvIzmsqHmnInku7vkvZXmlbDmja7liqDovb3pgLvovpHvvIzlpoLmnpzmnInlub/lkYrpobXlj6rmnInkuIDkuKrlub/lkYrpobXmlbDmja5BUEnmi4nlj5bnmoTnvZHnu5zor7fmsYLvvIzor7fmsYLlkI7mlL7liLDmnKzlnLDmjIHkuYXljJbjgIJcblxuIyMg5qC45b+D5Y6f5YiZXG4tICoq8J+UpSDku6PnoIHop4TojIMqKu+8muWPquiDveS9v+eUqGh0bWzph4xoZWFk55qEOnJvb3Tlt7Lnu4/lrprkuYnlpb3nmoTpopzoibLlj5jph4/vvIzkuI3lvpfnp4Hoh6rlrprkuYnlhbbku5bpopzoibLlj5jph4/vvIzkuZ/kuI3og73kvb/nlKjku7vkvZXlhbfkvZPpopzoibLlgLzvvIzkvaDlj6rog73ku446cm9vdOS4remAieaLqeWQiOmAgueahOminOiJsuS9v+eUqCBcbiAgICBcbiMjIDHjgIFVSeiuvuiuoeimgeaxglxuLSDpgbXlvqppUGhvbmUgMTYgUHJv5bC65a+46KeE5qC8KOWuveW6pjM5M3B46auY5bqmODUycHgpXG4tIOmHh+eUqOaYjuS6ruOAgea0u+WKm+eahOmFjeiJsuaWueahiFxuLSDkvb/nlKjmnIDmlrDnmoRpT1Porr7orqHlhYPntKDlkozkuqTkupLmqKHlvI9cbi0g5paH5a2X55qE5aSn5bCP5b+F6aG76KaB5rOo5oSP77yM5LiN6IO95aSn77yM5paH5a2X55qE5aSn5bCP6KaB5YGP5bCP55qE6aOO5qC85p2l6L+b6KGM6K6+6K6h44CCXG4tIOWmgueUqOaIt+ayoeacieaYjuehruaPj+i/sOivtOaYjumhtemdouiDjOaZr+iJsu+8jOWPquaciemXquWxj+mhtemdoueahOiDjOaZr+iJsuWFgeiuuOiuvue9ruS4u+mimOiJsuaIluS4u+mimOa4kOWPmOiJsu+8jOWFtuS7lumhtemdouWwvemHj+S4jeimgeS9v+eUqOS4u+mimOiJsuaIluS4u+mimOa4kOWPmOiJsuWBmumhtemdouiDjOaZr+iJsuOAglxuLSBob3ZlcuS4jueCueWHu+WPjemmiO+8muivt+S9v+eUqOa1heiJsueahOiDjOaZr+iJsmJhY2tncm91bmTmnaXlj43ppojlsLHooYzvvIzkuKXnpoHkvb/nlKh0cmFuc2Zvcm3mlYjmnpzvvIzlpoLkuI3lvpfkvb/nlKjvvJogXG4gICAgLmhvdC1zYWxlcy1pdGVtOmhvdmVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC4uLnB4KTtcbiAgICB9XG4gICAg5q2j56Gu5YaZ5rOV5bqU6K+l5piv77yaXG4gICAgLmhvdC1zYWxlcy1pdGVtOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogLi4uO1xuICAgIH1cbi0g6L6T5YWl5qGG5aaC5p6c6ZyA6KaB5bGV56S65paH5a2XbGFiZWzvvIzlsL3ph4/kvb/nlKhpY29u5Luj5pu/5paH5a2XbGFiZWzvvIzlubbkuJRpY29u5pS+5Zyo6L6T5YWl5qGG6YeM6Z2i55qE5bem5L6n77yM6L6T5YWl5qGG5pyJcGxhY2Vob2xkZXLmj5DnpLrvvIzov5nmoLfmlbTkuKrpobXpnaLnmoTnqbrpl7TliKnnlKjnjofpq5jjgIJcbi0g5Li65q+P5Liq5bGP5bmV5re75Yqg6K6+5aSH5omL5py657O757uf55qE6aG26YOo54q25oCB5qCPdnR5cGU9XCJwaG9uZVRvcE5hdmlnYXRlQmFyXCIo6auY5bqm5b+F6aG76K6+5a6a5Li6MjJweO+8jOaYvuekuuaJi+acuuaXtumXtOOAgeS/oeWPt+OAgXdpZmnnrYkp44CB5omL5py657O757uf55qE5bqV6YOo6aaW6aG15oyH56S65Zmo5qiq5p2h5qCPdnR5cGU9XCJwaG9uZUJvdHRvbUhvbWVJbmRpY2F0b3JCYXJcIijpq5jluqblv4Xpobvorr7lrprkuLoyMnB477yM5pi+56S65qiq5p2hKe+8jOS4jeimgemBruS9j+Wxj+W5leWGheeahOWGheWuue+8jOaJi+acuumhtumDqOeKtuaAgeagj+WSjOaJi+acuuW6lemDqOaoquadoeagj+mcgOimgeWunueOsOayiea1uOW8j++8jOWboOatpOWug+S7rOimgeeci+aDheWGteiuvue9ruiDjOaZr+iJsuOAglxuLSDnmbvlvZXmlrnlvI/lpoLmnpznlKjmiLfmsqHmnInmj4/ov7Dor7TmmI7vvIzpgqPlsLHpu5jorqTkvb/nlKh0YWLliIfmjaLmiYvmnLrpqozor4HnoIHnmbvlvZXlkozotKblj7flr4bnoIHvvIzkuIvpnaLmmK/nrKzkuInmlrnnmbvlvZXmlrnlvI/vvJrlvq7kv6HnmbvlvZXjgIFRUeeZu+W9leOAgeW+ruWNmuOAglxuLSDlpoLmnpznlKjmiLfmsqHmnInmj4/ov7Dor7TmmI7vvIzms6jlhoznmbvlvZXpobXpnaLkuIDoiKzmnInmiYvmnLrpqozor4HnoIHjgIHnlKjmiLfljY/orq7jgIHpmpDnp4HljY/orq7vvIzlubbkuJTkuKTkuKrljY/orq7mmK/lkIzkuIDooYznmoTvvIzkuIDkuKpjaGVja2JveOWwseihjOOAglxuLSDlpoLmnpzpnIDopoHpqozor4HnoIHloavlhpnpobXpnaLvvIzpgqPkuYjljZXkuKrpqozor4HnoIHmlbDlrZfovpPlhaXmoYbnmoTlrr3luqblkozpq5jluqblv4XpobvmmK8zNXB444CCXG5cbiMjIDLjgIFpY29u5Zu+5qCH5LiOaW1n5Zu+54mH5YaZ5rOV5ZKM6KeE5YiZXG4tIOW9k+mcgOimgWljb27lm77moIfml7blv4Xpobvkvb/nlKhGb250QXdlc29tZeWbvuagh++8jOavlOWmgu+8mlxcYDxpIG5hbWU9XCLlvq7kv6FJY29uXCIgdnR5cGU9XCJpY29uXCIgaWQ9XCJ3eEljb25cIiBjbGFzcz1cImZhYiBmYS13ZWl4aW5cIj48L2k+XFxgXG4tIOW9k+mcgOimgWltZ+WbvueJh+aXtu+8jHNyY+S9v+eUqOWbvueJh+WcsOWdgO+8mlxcYGh0dHBzOi8vb3NzLmJ5dGVmdW5nby5jb20vZjEvc2hvd0ltZzEuanBnXFxgKe+8jOWFtuS4ree7k+WwvueahOKAmXNob3dJbWcxJ+WPr+S7peaNouS4uuS7jjHliLAzMOeahOaVsOWtl++8jDF+MzDnmoTmlbDlrZflv4Xpobvpmo/mnLrmjJHpgInvvIzkuI3lvpfmr4/kuKrpobXpnaLmr4/kuKrlm77niYfpg73kvb/nlKjlkIzkuIDkuKrmlbDlrZfjgILlhpnms5Xmr5TlpoLvvJpcXGA8aW1nIHNyYz1cImh0dHBzOi8vb3NzLmJ5dGVmdW5nby5jb20vZjEvc2hvd0ltZzE3LmpwZ1wiIGFsdD1cInh4eFwiIGNsYXNzPVwieHh4XCIgdnR5cGU9XCJpbWFnZVwiPlxcYFxuLSDnu53lr7nkuI3og73kvb/nlKhlbW9qaeihqOaDheespuWPt++8jOS4jeW+l+S9v+eUqOS7u+S9lWVtb2pp6KGo5oOF56ym5Y+377yM6K+35L2/55SoaWNvbuaIlmltZ+WbvueJh+iKgueCueadpeS7o+abv+OAglxuXG4jIyAz44CBaHRtbOS7o+eggeWGmeazleWSjOinhOWImVxuLSDkuI3lvpfkv67mlLlodG1s6aG16Z2i55qEYm9keeOAgXBob25lLWNvbnRhaW5lcuOAgXBhZ2UtY29udGFpbmVy44CBc3RhdHVzLWJhcuOAgWhvbWUtaW5kaWNhdG9y44CBaG9tZS1pbmRpY2F0b3ItYmFy55qEY3Nz5qC35byP44CCXG4tIOS9oOeahOW3peS9nOWPquiDveaYr+WcqOmhtemdouWGheWuueaYvuekuuWMunBhZ2UtY29udGFpbmVy6IqC54K55re75Yqg5a2p5a2Q6IqC54K577yM5bm26K6+6K6h57u05oqk5aW96L+Z5Lqb6aG16Z2i5YaF5a655a2p5a2Q6IqC54K55YaF5a655ZKM5qC35byP44CCXG4tIGNzc+agt+W8j+W/hemhu+WGheiBlO+8jOS4jeW+l+S9v+eUqOWklumDqGNzc+aWh+S7tu+8jOW5tuS4lOS4jeW+l+S9v+eUqOiKgueCueeahHN0eWxl5p2l5YaZ5qC35byP77yM5b+F6aG76KaB5YWI5ZyoXFxgPGhlYWQ+XFxg55qEXFxgPHN0eWxlPlxcYOmHjOmdouWumuS5ieWlveWQhOenjWNzc+agt+W8j++8jOeEtuWQjuiKgueCueS9v+eUqGNsYXNz5bGe5oCn5p2l5byV55So44CCXG4tIOWkmueKtuaAgeagt+W8j++8iGFjdGl2ZeOAgWRpc2FibGVk44CBZm9jdXPjgIFob3Zlcuetie+8ieeahOiKgueCueW/hemhu+imgeWcqFxcYDxoZWFkPlxcYOeahFxcYDxzdHlsZT5cXGDph4zpnaLlrprkuYnlpb3miYDpnIDnmoTlkITkuKrnirbmgIHnmoRjc3PmoLflvI/vvIzmr5TlpoJwaG9uZS1pbnB1dDpcblxcYFxcYFxcYCBjc3Ncbi4uLlxuLnBob25lLWlucHV0IHtcbiAgICAuLi5cbn1cbi5waG9uZS1pbnB1dC5hY3RpdmUge1xuICAgIC4uLlxufVxuLnBob25lLWlucHV0LmRpc2FibGVkIHtcbiAgICAuLi5cbn1cbi5waG9uZS1pbnB1dC5mb2N1cyB7XG4gICAuLi5cbn1cbi4uLlxuXFxgXFxgXFxgXG4tIOavj+S4quiKgueCuemDveW/hemhu+a3u+WKoGlk44CBbmFtZeOAgXZ0eXBl5bGe5oCn77yMaWTlsZ7mgKflgLzlv4XpobvmmK/oi7HmlofvvIxuYW1l5bGe5oCn5YC85b+F6aG75piv5Lit5paH77yM5q+U5aaC77yaXFxgPGkgbmFtZT1cIuW+ruS/oUljb25cIiB2dHlwZT1cImljb25cIiBpZD1cInd4SWNvblwiIGNsYXNzPVwiZmFiIGZhLXdlaXhpblwiPjwvaT5cXGBcbi0g5omA5pyJ6IqC54K557G75Z6LdnR5cGXnmoTlj5blgLzku4XpmZDkvb/nlKgn57uE5Lu257G75Z6LdnR5cGXlm7rlrprmnprkuL4n77yM5b+F6aG754af5oKJ6K6w5L2PJ+e7hOS7tuexu+Wei3Z0eXBl5Zu65a6a5p6a5Li+J++8jOW/hemhu+WwhuWFtuaUvuWIsOe8k+WtmFxuLSDova7mkq12dHlwZT1cInZpZXdQYWdlclwi44CBVEFC6YCJ6aG55Y2hdnR5cGU9XCJ0YWJDb250YWluZXJcIuOAgeW6lemDqFRBQue7hOS7tnZ0eXBlPVwiYm90dG9tVGFiQ29udGFpbmVyXCLnmoTmr4/kuIDpobXlhoXlrrnlv4XpobvlrozmlbTvvIzkuI3lvpfnnIHnlaXku7vkvZXlhoXlrrnjgILmr5TlpoLmnIkz6aG177yM6YKj5LmI5q+P5LiA6aG155qE5YaF5a656YO95LiN6IO955yB55Wl44CCXG4tIHN3aXRjaOOAgXJhZGlv44CBY2hlY2tCb3jjgIFyYWRpb0dyb3Vw44CBY2hlY2tCb3hHcm91cOiKgueCuemDveS4jeW+l+a3u+WKoOS7u+S9leebuOWFs+eahGpz5ZKMdHPku6PnoIHjgIJcbi0gc3dpdGNo44CBcmFkaW/jgIFjaGVja0JveOiKgueCueW/hemhu+a3u+WKoOS4gOS4qmNoZWNrZWRDbGFzc+WxnuaAp++8jOeUqOS6juihqOekuumAieS4reeKtuaAgeeahOagt+W8j+exu+WQje+8jOavlOWmgu+8mlxuXFxgXFxgXFxgIGh0bWxcbjxpIG5hbWU9XCLlvIDlhbNJY29uXCIgdnR5cGU9XCJpY29uXCIgaWQ9XCJzd2l0Y2hJY29uXCIgY2xhc3M9XCJmYSB4eHhcIiBjaGVja2VkQ2xhc3M9XCJmYSB5eXlcIj48L2k+XG48aSBuYW1lPVwi5Y2V6YCJSWNvblwiIHZ0eXBlPVwiaWNvblwiIGlkPVwicmFkaW9JY29uXCIgY2xhc3M9XCJmYSB4eHhcIiBjaGVja2VkQ2xhc3M9XCJmYSB5eXlcIj48L2k+XG48aSBuYW1lPVwi5Y2V6YCJSWNvblwiIHZ0eXBlPVwiaWNvblwiIGlkPVwicmFkaW9JY29uXCIgY2xhc3M9XCJmYXMgeHh4XCIgY2hlY2tlZENsYXNzPVwiZmFzIHl5eVwiPjwvaT5cblxcYFxcYFxcYFxuLSBJY29u5Zu+5qCH5b+F6aG75L2/55SoPGk+5qCH562+77yMPGk+5qCH562+6IqC54K55Lmf5b+F6aG76ZyA6KaB5re75Yqg5LiA5LiqaWTlkoxuYW1l55qE5bGe5oCn77yM5bm25LiUPGk+5qCH562+6YeM6Z2i57ud5a+55LiN6IO95L2/55SoYmVmb3Jl44CBYWZ0ZXLjgIFtYXJrZXLnrYnnrYnku7vkvZXkvKrlhYPntKDjgIJcbi0gaHRtbOWSjGNzc+agt+W8j+mHjOe7neWvueS4jeW+l+S9v+eUqGJlZm9yZeOAgWFmdGVy44CBbWFya2Vy562J562J5Lu75L2V5Lyq5YWD57SgXG4tIOWDj+e0oOW/hemhu+S9v+eUqHB477yM5LiN5L2/55SocmVt5ZKMZW3nrYnlhbbku5bjgIJcbi0g4p2MIGNzc+agt+W8j+e7neWvueemgeatouS9v+eUqOavm+eOu+eSg+aViOaenO+8jOavlOWmgu+8mmJhY2tkcm9wLWZpbHRlclxuLSDlpoLmnpxkaXborr7nva7kuoZvdmVyZmxvdy14OmF1dG8777yM6YKj5LmIZGl25b+F6aG76K6+572ubWluLWhlaWdodDogeHhweDvku6XpmLLmraJkaXbpq5jluqbov4fkvY7lh7rnjrDpl67popjjgIJcbi0g5omA5pyJ6aKc6Imy5YC85LiN5b6X5L2/55So5YaF572u55qE6aKc6Imy5YWz6ZSu5a2X77yM5q+U5aaC5LiN5b6X5L2/55SocmVk44CBYmx1ZeOAgWdyZWVu44CBeWVsbG9344CBcHVycGxl562J6aKc6Imy5YWz6ZSu5a2X77yM5b+F6aG75L2/55SoIzAwMDAwMOOAgSNmZmZmZmbnrYkxNui/m+WItuminOiJsuWAvOOAglxuLSDlvIDlhbNzd2l0Y2jjgIHljZXpgIlyYWRpb+OAgeWkmumAiWNoZWNrQm945b+F6aG75L2/55So5LiA5Liqaeagh+etvuWbvuagh0ljb27mnaXlrp7njrDvvIzkuI3lvpfkvb/nlKjlnIbop5Lnn6nlvaLmiJZpbnB1dOagh+etvuadpeWunueOsO+8jOWbvuagh+S9v+eUqEZvbnQgQXdlc29tZSBDRE7vvIxjaGVja0JveOS4jemcgOimgea7keWKqOaViOaenOOAglxuLSDnibnliKvms6jmhI/ljZXpgInnu4R2eXRwZT1cInJhZGlvR3JvdXBcIueahOS9v+eUqO+8jOavlOWmgu+8mjXkuKrnsbvliKt0YWLvvIzpgInkuK3lhbbkuK0x5Liq77yM6YCJ5Lit55qE6YKj5Liq5YiH5o2i5Yiw6YCJ5Lit54q25oCB77yM5YW25LuWNOS4quimgeWIh+aNouS4uumdnumAieS4reeKtuaAgeOAgui/meenjeWcuuaZr+WwseW/hemhu+S9v+eUqOWNlemAiee7hO+8jOWkmumAiXZ5dHBlPVwicmFkaW9Hcm91cFwi5b+F6aG75YyF5ZCrTuS4quWNlemAiXZ0eXBlPVwicmFkaW9cIuWtqeWtkOiKgueCue+8jGh0bWzlhpnms5XlpoLkuIvvvJpcblxcYFxcYFxcYGh0bWxcbjxkaXYgbmFtZT1cInh4eOWNlemAiee7hFwiIGlkPVwieHh4UmFkaW9Hcm91cFwiIGNsYXNzPVwieHh4LXJhZGlvLWdyb3VwclwiIHZ0eXBlPVwicmFkaW9Hcm91cFwiPlxuICAgIDxkaXYgbmFtZT1cInh4eOWNlemAiTFcIiBpZD1cInh4eFJhZGlvMVwiIGNsYXNzPVwieHh4LXJhZGlvXCIgdnR5cGU9XCJyYWRpb1wiPlxuICAgICAgICAvLyDljZXpgInlhoXlrrlcbiAgICA8L2Rpdj5cbiAgICA8ZGl2IG5hbWU9XCJ4eHjljZXpgIkyXCIgaWQ9XCJ4eHhSYWRpbzJcIiBjbGFzcz1cInh4eC1yYWRpb1wiIHZ0eXBlPVwicmFkaW9cIj5cbiAgICAgICAgLy8g5Y2V6YCJ5YaF5a65XG4gICAgPC9kaXY+XG4gICAgLi4uXG48L2Rpdj5cbi0g5aSa6YCJ57uEdnR5cGU9XCJjaGVja0JveEdyb3VwXCLnu4Tku7bnlKjkuo7lpJrpgInlnLrmma/vvIzlpJrpgInnu4R2dHlwZT1cImNoZWNrQm94R3JvdXBcIuW/hemhu+WMheWQq07kuKp2dHlwZT1cImNoZWNrQm94XCLlranlrZDoioLngrnvvIxodG1s5YaZ5rOV5aaC5LiL77yaXG5cXGBcXGBcXGBodG1sXG48ZGl2IG5hbWU9XCJ4eHjlpJrpgInnu4RcIiBpZD1cInh4eENoZWNrQm94R3JvdXBcIiBjbGFzcz1cInh4eC1jaGVjay1ib3gtZ3JvdXBcIiB2dHlwZT1cImNoZWNrQm94R3JvdXBcIj5cbiAgICA8ZGl2IG5hbWU9XCJ4eHjlpJrpgIkxXCIgaWQ9XCJ4eHhDaGVja0JveDFcIiBjbGFzcz1cInh4eC1jaGVjay1ib3hcIiB2dHlwZT1cImNoZWNrQm94XCI+XG4gICAgICAgIC8vIOWkmumAieWGheWuuVxuICAgIDwvZGl2PlxuICAgIDxkaXYgbmFtZT1cInh4eOWkmumAiTJcIiBpZD1cInh4eENoZWNrQm94MlwiIGNsYXNzPVwieHh4LWNoZWNrLWJveFwiIHZ0eXBlPVwiY2hlY2tCb3hcIj5cbiAgICAgICAgLy8g5aSa6YCJ5YaF5a65XG4gICAgPC9kaXY+XG4gICAgLi4uXG48L2Rpdj5cblxcYFxcYFxcYFxuXG4jIyA044CB6L2u5pKtdmlld1BhZ2Vy57uE5Lu257uT5p6E5Zu65a6a6KeE5YiZXG4tIOi9ruaSrXZpZXdQYWdlcue7hOS7tueahOe7k+aehO+8muW/hemhu+aYr+iKgueCuXZ0eXBlPVwidmlld1BhZ2VyXCLova7mkq3oioLngrnlr7nlupTmnInkuIDkuKrova7mkq3mjIfnpLrlmah2dHlwZT1cInZpZXdQYWdlckluZGljYXRvckNvbnRhaW5lclwi6IqC54K55LiO5LmL5a+55bqU77yM6IqC54K5dnR5cGU9XCJ2aWV3UGFnZXJcIuWMheWQq07kuKp2dHlwZT1cIm9uZVZpZXdQYWdlckNvbnRlbnRcIu+8jHZ0eXBlPVwidmlld1BhZ2VySW5kaWNhdG9yQ29udGFpbmVyXCLoioLngrnlv4XpobvljIXlkKvnnYBO5LiqdnR5cGU9XCJ2aWV3UGFnZXJJbmRpY2F0b3JJdGVtQ29udGFpbmVyXCLvvIzlhajpg6jnvLrkuIDkuI3lj6/jgIJodG1s5YaZ5rOV5aaC5LiL77yaXG5cXGBcXGBcXGAgaHRtbFxuPGRpdiBuYW1lPVwi6L2u5pKtXCIgaWQ9XCJ4eHhWaWV3UGFnZXJcIiBjbGFzcz1cInZpZXctcGFnZXJcIiB2dHlwZT1cInZpZXdQYWdlclwiPlxuICAgIDxkaXYgbmFtZT1cIui9ruaSreWGheWuuTFcIiBpZD1cInh4eFZpZXdQYWdlckNvbnRlbnQxXCIgY2xhc3M9XCJ2aWV3LXBhZ2VyLWNvbnRlbnRcIiB2dHlwZT1cIm9uZVZpZXdQYWdlckNvbnRlbnRcIj5cbiAgICAgICAgLy8g6L2u5pKt5YaF5a65XG4gICAgPC9kaXY+XG4gICAgPGRpdiBuYW1lPVwi6L2u5pKt5YaF5a65MlwiIGlkPVwieHh4Vmlld1BhZ2VyQ29udGVudDJcIiBjbGFzcz1cInZpZXctcGFnZXItY29udGVudFwiIHZ0eXBlPVwib25lVmlld1BhZ2VyQ29udGVudFwiPlxuICAgICAgICAvLyDova7mkq3lhoXlrrlcbiAgICA8L2Rpdj5cbiAgICAuLi5cbjwvZGl2PlxuPGRpdiBuYW1lPVwi6L2u5pKt5oyH56S65Zmo5a655ZmoXCIgaWQ9XCJ4eHhWaWV3UGFnZXJJbmRpY2F0b3JDb250YWluZXJcIiBjbGFzcz1cInZpZXctcGFnZXItaW5kaWNhdG9yLWNvbnRhaW5lclwiIHZ0eXBlPVwidmlld1BhZ2VySW5kaWNhdG9yQ29udGFpbmVyXCI+XG4gICAgPGRpdiBuYW1lPVwi6L2u5pKt5oyH56S65ZmoaXRlbemhuTFcIiBpZD1cInh4eFZpZXdQYWdlckluZGljYXRvckl0ZW1Db250YWluZXIxXCIgY2xhc3M9XCJ2aWV3LXBhZ2VyLWluZGljYXRvci1pdGVtLWNvbnRhaW5lclwiIHZ0eXBlPVwidmlld1BhZ2VySW5kaWNhdG9ySXRlbUNvbnRhaW5lclwiPlxuICAgICAgICAvLyDova7mkq3mjIfnpLrlmahpdGVt6aG5XG4gICAgPC9kaXY+XG4gICAgPGRpdiBuYW1lPVwi6L2u5pKt5oyH56S65ZmoaXRlbemhuTJcIiBpZD1cInh4eFZpZXdQYWdlckluZGljYXRvckl0ZW1Db250YWluZXIyXCIgY2xhc3M9XCJ2aWV3LXBhZ2VyLWluZGljYXRvci1pdGVtLWNvbnRhaW5lclwiIHZ0eXBlPVwidmlld1BhZ2VySW5kaWNhdG9ySXRlbUNvbnRhaW5lclwiPlxuICAgICAgICAvLyDova7mkq3mjIfnpLrlmahpdGVt6aG5XG4gICAgPC9kaXY+XG4gICAgLi4uXG48L2Rpdj5cblxcYFxcYFxcYFxuXG4jIyA144CBVEFC6YCJ6aG55Y2hdGFiQ29udGFpbmVy57uE5Lu257uT5p6E5Zu65a6a6KeE5YiZXG4tIHRhYue7hOS7tnRhYkNvbnRhaW5lcue7hOS7tueahOe7k+aehO+8muW/hemhu+aYr+acgOWkluWxguiKgueCuXZ0eXBlPVwidGFiQ29udGFpbmVyXCLlv4XpobvljIXlkKvnnYAx5LiqdnR5cGU9XCJ0YWJNZW51QmFyXCLoioLngrnlkowx5LiqdnR5cGU9XCJ0YWJDb250ZW50V3JhcHBlckNvbnRhaW5lclwi6IqC54K577yMIHZ0eXBlPVwidGFiQ29udGVudFdyYXBwZXJDb250YWluZXJcIuiKgueCueW/hemhu+WMheWQq+edgE7kuKp2dHlwZT1cIm9uZVRhYkNvbnRlbnRDb250YWluZXJcIuiKgueCue+8jHZ0eXBlPVwidGFiTWVudUJhclwi6IqC54K55b+F6aG75YyF5ZCr552ATuS4qnZ0eXBlPVwidGFiTWVudUJhckl0ZW1cIuiKgueCue+8jOWFqOmDqOe8uuS4gOS4jeWPr+OAgmh0bWzlhpnms5XlpoLkuIvvvJpcblxcYFxcYFxcYCBodG1sXG48ZGl2IG5hbWU9XCJ0YWJcIiBpZD1cInh4eFRhYlwiIGNsYXNzPVwidGFiXCIgdnR5cGU9XCJ0YWJDb250YWluZXJcIj5cbiAgICA8ZGl2IG5hbWU9XCJ0YWLoj5zljZXmoI9cIiBpZD1cInh4eFRhYk1lbnVCYXJcIiBjbGFzcz1cInRhYi1tZW51LWJhclwiIHZ0eXBlPVwidGFiTWVudUJhclwiPlxuICAgICAgICA8ZGl2IG5hbWU9XCJ0YWLoj5zljZXmoI9pdGVt6aG5XCIgaWQ9XCJ4eHhUYWJNZW51QmFySXRlbVwiIGNsYXNzPVwidGFiLW1lbnUtYmFyLWl0ZW1cIiB2dHlwZT1cInRhYk1lbnVCYXJJdGVtXCI+XG4gICAgICAgICAgICAvLyB0YWLoj5zljZXmoI9pdGVt6aG5XG4gICAgICAgIDwvZGl2PlxuICAgICAgICAuLi5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IG5hbWU9XCJ0YWLlhoXlrrnlrrnlmahcIiBpZD1cInh4eFRhYkNvbnRlbnRXcmFwcGVyQ29udGFpbmVyXCIgY2xhc3M9XCJ0YWItY29udGVudC13cmFwcGVyLWNvbnRhaW5lclwiIHZ0eXBlPVwidGFiQ29udGVudFdyYXBwZXJDb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBuYW1lPVwidGFi5YaF5a65XCIgaWQ9XCJ4eHhUYWJDb250ZW50XCIgY2xhc3M9XCJ0YWItY29udGVudFwiIHZ0eXBlPVwib25lVGFiQ29udGVudENvbnRhaW5lclwiPlxuICAgICAgICAgICAgLy8gdGFi5YaF5a65XG4gICAgICAgIDwvZGl2PlxuICAgICAgICAuLi5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXFxgXFxgXFxgXG5cbiMjIDbjgIHlpJrnirbmgIHlrrnlmahtdWx0aVN0YXRlQ29udGFpbmVy57uE5Lu257uT5p6E5Zu65a6a6KeE5YiZXG4tIOWkmueKtuaAgeWuueWZqHZ0eXBlPVwibXVsdGlTdGF0ZUNvbnRhaW5lclwi6IqC54K55a655Zmo5Zyo5pWw5o2u5Yqg6L295Zy65pmv5LiA6Iis5pyJ5Yqg6L295ZCO5pyJ5pWw5o2u44CB5Yqg6L295Lit44CB5peg5pWw5o2u44CB6IGU572R5aSx6LSl5Zub56eN54q25oCB77yM5Yqg6L295Lit44CB5peg5pWw5o2u44CB6IGU572R5aSx6LSl54q25oCB55qE5YaF5a655LiA6Iis5piv5Z6C55u05bGF5Lit55qE77yM54S25ZCO5b+F6aG76buY6K6k5piv5pi+56S65Yqg6L295ZCO5pyJ5pWw5o2u54q25oCB5LiL55qE5YaF5a6544CCXG4tIOWkmueKtuaAgeWuueWZqG11bHRpU3RhdGVDb250YWluZXLnu4Tku7bnmoTnu5PmnoTvvJrlv4XpobvmmK/mnIDlpJblsYLoioLngrl2dHlwZT1cIm11bHRpU3RhdGVDb250YWluZXJcIuWMheWQq07kuKp2dHlwZT1cIm9uZVN0YXRlQ29udGVudENvbnRhaW5lclwi6IqC54K577yM5YWo6YOo57y65LiA5LiN5Y+v44CCXG4tIOWkmueKtuaAgeWuueWZqHZ0eXBlPVwibXVsdGlTdGF0ZUNvbnRhaW5lclwi77yM6buY6K6k5b+F6aG76K6+572u5q2j5bi45oiQ5Yqf5Yqg6L295ZCO55qE5YaF5a655pi+56S655qE54q25oCB77yM5q+U5aaC77ya5Yqg6L295ZCO5pyJ5pWw5o2u44CB5Yqg6L295Lit44CB5peg5pWw5o2u44CB6IGU572R5aSx6LSl55qE5Zub56eN54q25oCB5pi+56S677yM6buY6K6k5piv5pi+56S65Yqg6L295ZCO5pyJ5pWw5o2u54q25oCB5LiL55qE5YaF5a6577yM5bm25LiU5Yqg6L295ZCO5pyJ5pWw5o2u54q25oCB55qE6IqC54K55b+F6aG75o6S5Zyo5pyA5ZCO77yM5q+U5aaCaHRtbOS7o+eggei/meagt+WGme+8mlxuXFxgXFxgXFxgIGh0bWxcbi4uLlxuICAgICAgICAuc3RhdGUtY29udGVudCB7XG4gICAgICAgICAgICAuLi5cbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICAuLi5cbiAgICAgICAgfVxuICAgICAgICAuc3RhdGUtY29udGVudC5hY3RpdmUge1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgfVxuLi4uXG48ZGl2IG5hbWU9XCLlpJrnirbmgIHlrrnlmahcIiBpZD1cIm11bHRpU3RhdGVDb250YWluZXJcIiBjbGFzcz1cIm11bHRpLXN0YXRlLWNvbnRhaW5lclwiIHZ0eXBlPVwibXVsdGlTdGF0ZUNvbnRhaW5lclwiPlxuICAgIDwhLS0g5Yqg6L2954q25oCBIC0tPlxuICAgIDxkaXYgbmFtZT1cIuWKoOi9veeKtuaAgVwiIGlkPVwibG9hZGluZ1N0YXRlXCIgY2xhc3M9XCJzdGF0ZS1jb250ZW50XCIgdnR5cGU9XCJvbmVTdGF0ZUNvbnRlbnRDb250YWluZXJcIj5cbiAgICAgICAgLy8g5Yqg6L2954q25oCB5LiL55qE5YaF5a65XG4gICAgICAgIC4uLlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSDplJnor6/nirbmgIEgLS0+XG4gICAgPGRpdiBuYW1lPVwi6ZSZ6K+v54q25oCBXCIgaWQ9XCJlcnJvclN0YXRlXCIgY2xhc3M9XCJzdGF0ZS1jb250ZW50XCIgdnR5cGU9XCJvbmVTdGF0ZUNvbnRlbnRDb250YWluZXJcIj5cbiAgICAgICAgLy8g6ZSZ6K+v54q25oCB5LiL55qE5YaF5a65XG4gICAgICAgIC4uLlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSDnqbrnirbmgIEgLS0+XG4gICAgPGRpdiBuYW1lPVwi56m654q25oCBXCIgaWQ9XCJlbXB0eVN0YXRlXCIgY2xhc3M9XCJzdGF0ZS1jb250ZW50XCIgdnR5cGU9XCJvbmVTdGF0ZUNvbnRlbnRDb250YWluZXJcIj5cbiAgICAgICAgLy8g56m654q25oCB5LiL55qE5YaF5a65XG4gICAgICAgIC4uLlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSDmnInmlbDmja7nirbmgIEg5o6S5Zyo5pyA5ZCOIC0tPlxuICAgIDxkaXYgbmFtZT1cIuacieaVsOaNrueKtuaAgVwiIGlkPVwiZGF0YVN0YXRlXCIgY2xhc3M9XCJzdGF0ZS1jb250ZW50IGFjdGl2ZVwiIHZ0eXBlPVwib25lU3RhdGVDb250ZW50Q29udGFpbmVyXCI+XG4gICAgICAgIC8vIOacieaVsOaNrueKtuaAgeS4i+eahOWGheWuuVxuICAgICAgICAuLi5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXFxgXFxgXFxgXG5cbiMjIDfjgIHlupXpg6h0YWLlr7zoiKrmoI/nu4Tku7bnu5PmnoTlm7rlrprop4TliJlcbi0g5bqV6YOodGFi5a+86Iiq5qCP57uE5Lu25b+F6aG75pivdnR5cGU9XCJib3R0b21UYWJDb250YWluZXJcIuW/hemhu+WMheWQq+edgHZ0eXBlPVwic3ViUGFnZVwi5LiOdnR5cGU9XCJib3R0b21UYWJOYXZpZ2F0ZUJhclwi5a2p5a2Q6IqC54K577yM5YW25Lit5a2Q6aG16Z2idnR5cGU9XCJzdWJQYWdlXCLoioLngrnlrrnlmajph4znu53lr7nkuI3og73mnInlranlrZDoioLngrnvvIznu53lr7nkuI3og73mnInku7vkvZXljaDkvY3lhoXlrrnvvIxodG1s5YaZ5rOV5aaC5LiL77yaXG5cXGBcXGBcXGAgaHRtbFxuPGRpdiBuYW1lPVwi5bqV6YOo5a+86Iiq5qCPXCIgaWQ9XCJ4eHhCb3R0b21UYWJcIiBjbGFzcz1cImJvdHRvbS10YWJcIiB2dHlwZT1cImJvdHRvbVRhYkNvbnRhaW5lclwiPlxuICAgIDxkaXYgbmFtZT1cIummlumhtXRhYuWtkOmhtemdouWGheWuueWMulwiIGlkPVwiaG9tZVBhZ2VcIiBjbGFzcz1cImJvdHRvbS10YWItY29udGVudFwiIHZ0eXBlPVwic3ViUGFnZVwiPjwvZGl2PlxuICAgIDxkaXYgbmFtZT1cIui0reeJqei9pnRhYuWtkOmhtemdouWGheWuueWMulwiIGlkPVwiY2FyZFBhZ2VcIiBjbGFzcz1cImJvdHRvbS10YWItY29udGVudFwiIHZ0eXBlPVwic3ViUGFnZVwiPjwvZGl2PlxuICAgIC4uLlxuICAgIDxkaXYgbmFtZT1cIuW6lemDqOWvvOiIquagj+iPnOWNleagj1wiIGlkPVwieHh4Qm90dG9tVGFiTmF2aWdhdGVCYXJcIiBjbGFzcz1cImJvdHRvbS10YWItbmF2aWdhdGUtYmFyXCIgdnR5cGU9XCJib3R0b21UYWJOYXZpZ2F0ZUJhclwiPlxuICAgICAgICA8ZGl2IG5hbWU9XCLlupXpg6jlr7zoiKrmoI/oj5zljZXmoI9pdGVt6aG5XCIgaWQ9XCJ4eHhCb3R0b21UYWJOYXZpZ2F0ZUJhckl0ZW0xXCIgY2xhc3M9XCJib3R0b20tdGFiLW5hdmlnYXRlLWJhci1pdGVtXCIgdnR5cGU9XCJib3R0b21UYWJOYXZpZ2F0ZUJhckl0ZW1cIj5cbiAgICAgICAgICAgIC8vIGJvdHRvbVRhYueahOWQhOS4qnRhYkl0ZW3poblcbiAgICAgICAgPC9kaXY+XG4gICAgICAgIC4uLlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cXGBcXGBcXGBcblxuIyMgOOOAgee7hOS7tuiKgueCueaYvumakOaViOaenOS4jue7neWvueW4g+WxgOmHjeWPoOaYvuekuuWbuuWumuinhOWImVxuLSB2dHlwZT1cIm9uZVN0YXRlQ29udGVudENvbnRhaW5lclwi44CBdnR5cGU9XCJvbmVWaWV3UGFnZXJDb250ZW50XCLjgIF2dHlwZT1cIm9uZVRhYkNvbnRlbnRDb250YWluZXJcIuiKgueCueW/hemhu+S9v+eUqG9wYWNpdHk6IDA75p2l5a6e546w6ZqQ6JeP5pWI5p6c77yM5LiN5b6X5L2/55SoZGlzcGxheTogbm9uZeOAgXZpc2liaWxpdHk6IGhpZGRlbuS7peWPiuWFtuS7luaWueW8j+adpeWunueOsOmakOiXj+aViOaenO+8jOW5tuS4lOW/hemhu+S9v+eUqOe7neWvueWumuS9jeadpemHjeWPoOaYvuekuu+8jOavlOWmgu+8mlxuXFxgXFxgXFxgIGNzc1xuLnh4eC1jb250ZW50IHtcbiAgICAuLi5cbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgLi4uXG59XG4ueHh4LWNvbnRlbnQuYWN0aXZlIHtcbiAgICAuLi5cbiAgICBvcGFjaXR5OiAxO1xuICAgIC4uLlxufVxuXFxgXFxgXFxgXG5cbiMjIDnjgIFodG1s55qEanPku6PnoIHor7TmmI5cbi0g5pW05LiqaHRtbOWFgeiuuOa3u+WKoGpz5Luj56CB55qE5oOF5Ya177yaXG4gIDHjgIHlv4Xpobvnu5nova7mkq12dHlwZT1cInZpZXdQYWdlclwi5re75YqgNuenkuiHquWKqOi9ruaSreWIh+aNom9wYWNpdHk6IDA75ZKMb3BhY2l0eTogMTvnmoTmmL7pmpDmlYjmnpznmoRqc+S7o+eggeWkhOeQhuOAglxuICAy44CB5b+F6aG757uZVEFC6YCJ6aG55Y2hdnR5cGU9XCJ0YWJDb250YWluZXJcIuWSjOW6lemDqFRBQue7hOS7tnZ0eXBlPVwiYm90dG9tVGFiQ29udGFpbmVyXCLmt7vliqDngrnlh7vliIfmjaJvcGFjaXR5OiAwO+WSjG9wYWNpdHk6IDE755qE5pi+6ZqQ5pWI5p6c55qEanPku6PnoIHlpITnkIbjgIJcbi0g6Zmk5LqG5Lul5LiK5oOF5Ya177yM5LiN5b6X5re75Yqg5Lu75L2VanPjgIF0c+etiemAu+i+keS7o+eggVxuLSBqc+S7o+eggeW/hemhu+S9v+eUqHZhbmlsbGEganPvvIzkuI3lvpfkvb/nlKjku7vkvZXliY3nq6/moYbmnrbnmoRqc+S7o+eggVxuXG4jIyAxMOOAgeWmguaenHZ0eXBlPVwidmVydGljYWxMaXN0Vmlld1wi44CBdnR5cGU9XCJob3Jpem9udGFsTGlzdFZpZXdcIuOAgXZ0eXBlPVwidmlld1BhZ2VyXCLjgIF2dHlwZT1cInRhYkNvbnRhaW5lclwi44CBdnR5cGU9XCJyYWRpb0dyb3VwXCLjgIF2dHlwZT1cImNoZWNrQm94R3JvdXBcIuexu+Wei+eahOWFg+e0oOe7hOS7tueahOaVsOaNruaYr+S7jue9kee7nOaLieWPluWbnuadpeeahO+8jOmCo+WwseWcqOi/meS6m+iKgueCuea3u+WKoOWxnuaAp2Zyb21BcGlEYXRhPVwidHJ1ZVwi77yM5q+U5aaC77ya54Ot6Zeo5ZWG5ZOB5YiX6KGo57uE5Lu2dnR5cGU9XCJ2ZXJ0aWNhbExpc3RWaWV3XCLvvIzor6Xnu4Tku7bnmoTmlbDmja7mmK/ku47nvZHnu5zmi4nlj5blm57mnaXnmoTvvIzpgqPkuYhodG1s5YaZ5rOV5aaC5LiL77yaXG5cXGBcXGBcXGAgaHRtbFxuPGRpdiBuYW1lPVwi54Ot6Zeo5ZWG5ZOB5YiX6KGoXCIgaWQ9XCJob3RQcm9kdWN0TGlzdFwiIGNsYXNzPVwiaG90LXByb2R1Y3QtbGlzdFwiIHZ0eXBlPVwidmVydGljYWxMaXN0Vmlld1wiIGZyb21BcGlEYXRhPVwidHJ1ZVwiPlxuICAgIC8vIOeDremXqOWVhuWTgeWIl+ihqFxuPC9kaXY+XG5cXGBcXGBcXGBcblxuIyMgMTHjgIHmsLTlubPmu5rliqjlkozlnoLnm7Tmu5rliqjnmoTlm7rlrprlhpnms5XvvJrlv4XpobvpmpDol4/mu5rliqjmnaHvvIzlubbkuJTnpoHmraLmu5rliqjmnaHljaDkvY1cbi0g5rC05bmz5rua5Yqo5b+F6aG75Lil5qC85oyJ54Wn5Lul5LiLY3Nz5Zu65a6a5YaZ5rOV77yaXG5cXGBcXGBcXGAgY3NzXG4ubXktZGl2IHtcbiAgb3ZlcmZsb3cteDogYXV0bzsgICAgIC8qIOWFgeiuuOawtOW5s+a7muWKqCAqL1xuICBvdmVyZmxvdy15OiBoaWRkZW47ICAgLyog56aB5q2i5Z6C55u05rua5YqoICovXG5cbiAgLyogRmlyZWZveCAqL1xuICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7XG4gIC8qIElFIC8gRWRnZSDml6fniYggKi9cbiAgLW1zLW92ZXJmbG93LXN0eWxlOiBub25lO1xufVxuXG4ubXktZGl2Ojotd2Via2l0LXNjcm9sbGJhciB7XG4gIGhlaWdodDogMDsgLyog5rC05bmz5rua5Yqo5p2h6auY5bqm5Li6MO+8jOS4jeWNoOS9jSAqL1xufVxuXFxgXFxgXFxgXG5cbi0g5Z6C55u05rua5Yqo5b+F6aG75Lil5qC85oyJ54Wn5Lul5LiLY3Nz5Zu65a6a5YaZ5rOV77yaXG5cXGBcXGBcXGAgY3NzXG4ubXktZGl2IHtcbiAgb3ZlcmZsb3cteDogaGlkZGVuOyAgICAgLyog56aB5q2i5rC05bmz5rua5YqoICovXG4gIG92ZXJmbG93LXk6IGF1dG87ICAgICAgLyog5YWB6K645Z6C55u05rua5YqoICovXG5cbiAgLyogRmlyZWZveCAqL1xuICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7XG4gIC8qIElFIC8gRWRnZSDml6fniYggKi9cbiAgLW1zLW92ZXJmbG93LXN0eWxlOiBub25lO1xufVxuXG4ubXktZGl2Ojotd2Via2l0LXNjcm9sbGJhciB7XG4gIHdpZHRoOiAwOyAvKiDlnoLnm7Tmu5rliqjmnaHlrr3luqbkuLow77yM5LiN5Y2g5L2NICovXG59XG5cXGBcXGBcXGBcblxuIyMgMTLjgIHnu4Tku7bnsbvlnot2dHlwZeWbuuWumuaemuS4vlxu5paH5a2XdnR5cGU9XCJ0ZXh0XCLjgIHmjInpkq52dHlwZT1cImJ1dHRvblwi44CB6L6T5YWl5qGGdnR5cGU9XCJpbnB1dFwi44CB5Zu+5qCHdnR5cGU9XCJpY29uXCLjgIHlm77niYd2dHlwZT1cImltYWdlXCLjgIHnn6nlvaJ2dHlwZT1cInJlY3RcIuOAgeWchuW9onZ0eXBlPVwiY2lyY2xlXCLjgIHnur/mnaF2dHlwZT1cImxpbmVcIuOAgeWfuuehgOWuueWZqHZ0eXBlPVwiY29udGFpbmVyXCLjgIHmiYvmnLrns7vnu5/nmoTpobbpg6jnirbmgIHmoI92dHlwZT1cInBob25lVG9wTmF2aWdhdGVCYXJcIuOAgeaJi+acuuezu+e7n+eahOW6lemDqOmmlumhteaMh+ekuuWZqOaoquadoeagj3Z0eXBlPVwicGhvbmVCb3R0b21Ib21lSW5kaWNhdG9yQmFyXCLjgIHlpJrnirbmgIHlrrnlmah2dHlwZT1cIm11bHRpU3RhdGVDb250YWluZXJcIuOAgeafkOeKtuaAgeinhuWbvuWuueWZqHZ0eXBlPVwib25lU3RhdGVDb250ZW50Q29udGFpbmVyXCLjgIHljaHniYflrrnlmah2dHlwZT1cImNhcmRcIuOAgeW8gOWFs3Z0eXBlPVwic3dpdGNoXCLjgIHkuIDkuKrljZXpgIl2dHlwZT1cInJhZGlvXCLjgIHkuIDkuKrlpJrpgIl2dHlwZT1cImNoZWNrQm94XCLjgIHljZXpgInnu4Qo5aSa5Liq5Y2V6YCJKXZ0eXBlPVwicmFkaW9Hcm91cFwi44CB5aSa6YCJ57uEKOWkmuS4quWkmumAiSl2dHlwZT1cImNoZWNrQm94R3JvdXBcIuOAgeerluWQkeWIl+ihqHZ0eXBlPVwidmVydGljYWxMaXN0Vmlld1wi44CB5qiq5ZCR5YiX6KGodnR5cGU9XCJob3Jpem9udGFsTGlzdFZpZXdcIuOAgeWIl+ihqGl0ZW3ljaHniYd2dHlwZT1cImxpc3RJdGVtQ2FyZFwiLCDova7mkq12dHlwZT1cInZpZXdQYWdlclwi44CB6L2u5pKt5Yy65Z+fdnR5cGU9XCJvbmVWaWV3UGFnZXJDb250ZW50XCLjgIHova7mkq3mjIfnpLrlmajlrrnlmah2dHlwZT1cInZpZXdQYWdlckluZGljYXRvckNvbnRhaW5lclwi44CB6L2u5pKt5oyH56S65ZmoSXRlbemhueWuueWZqHZ0eXBlPVwidmlld1BhZ2VySW5kaWNhdG9ySXRlbUNvbnRhaW5lclwi44CBVEFC6YCJ6aG55Y2hdnR5cGU9XCJ0YWJDb250YWluZXJcIuOAgSBUQULpgInpobnljaHlhoXlrrnljIXoo7nlrrnlmah2dHlwZT1cInRhYkNvbnRlbnRXcmFwcGVyQ29udGFpbmVyXCLjgIFUQULpgInpobnljaHkuIDpobXlhoXlrrnljLp2dHlwZT1cIm9uZVRhYkNvbnRlbnRDb250YWluZXJcIuOAgVRhYumAiemhueWNoeiPnOWNleagj3Z0eXBlPVwidGFiTWVudUJhclwi44CBVGFi6YCJ6aG55Y2h6I+c5Y2V5qCPaXRlbemhuXZ0eXBlPVwidGFiTWVudUJhckl0ZW1cIuOAgeW6lemDqFRBQue7hOS7tnZ0eXBlPVwiYm90dG9tVGFiQ29udGFpbmVyXCLjgIHlupXpg6hUQULlrZDpobXpnaLlhoXlrrnljLp2dHlwZT1cInN1YlBhZ2VcIuOAgeW6lemDqFRBQue7hOS7tuWvvOiIquagj3Z0eXBlPVwiYm90dG9tVGFiTmF2aWdhdGVCYXJcIuOAgeW6lemDqFRBQue7hOS7tuWvvOiIquagj2l0ZW3pobl2dHlwZT1cImJvdHRvbVRhYk5hdmlnYXRlQmFySXRlbVwi44CB6aG26YOo5a+86Iiq5qCPdnR5cGU9XCJ0b3BOYXZpZ2F0ZUJhclwi44CB6aG26YOo5qCH6aKY5qCPdnR5cGU9XCJ0b3BUaXRsZUJhclwi44CB5bqV6YOo5pON5L2c5qCPdnR5cGU9XCJib3R0b21PcGVyYXRlQmFyXCLjgIHlr7nor53moYZ2dHlwZT1cImRpYWxvZ1wi44CBVG9hc3Tmj5DnpLp2dHlwZT1cInRvYXN0XCLjgIHkuIvmi4noj5zljZV2dHlwZT1cImRyb3BEb3duTWVudVwi44CB5L6n5ruR6Z2i5p2/dnR5cGU9XCJzaWRlU2xpZGVQYW5lbFwi44CCYDsiXX0=