
正文
Vue底层实现原理总结
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
要实现MVVM 响应式原理,要实现如下几点
1、实现一个数据监听器Observer,能够对数据对象的所有属性进行监听,如有变动可拿到最新值并通知订阅者
2、实现一个指令解析器Compile,对每个元素节点的指令进行扫描和解析,根据指令模板替换数据,以及绑定相应的更新函数
3、实现一个Watcher,作为连接Observer和Compile的桥梁,能够订阅并收到每个属性变动的通知,执行指令绑定的相应回调函数,从而更新视图
4、mvvm入口函数,整合以上三者
1、实现Observer
我们知道可以利用 Object.defineProperty() 来监听属性变化,那么将需要observe的数据对象进行递归遍历,包括子属性对象的属性,都加上 setter和getter 这样的话,给这个对象的某个值赋值,就会触发setter,那么就能监听到了数据变化。。。相关代码可以是这样:5f39ae17-8c62-4a45-bc43-b32064c9388a:W3siYmxvY2tJZCI6Ijc0MTAtMTU1MDY1NzI0ODYwMSIsImJsb2NrVHlwZSI6InBhcmFncmFwaCIsInN0eWxlcyI6eyJhbGlnbiI6ImxlZnQiLCJpbmRlbnQiOjAsInRleHQtaW5kZW50IjowLCJsaW5lLWhlaWdodCI6MS43NSwiYmFjay1jb2xvciI6IiIsInBhZGRpbmciOiIifSwidHlwZSI6InBhcmFncmFwaCIsInJpY2hUZXh0Ijp7ImRhdGEiOlt7ImNoYXIiOiLov5kiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5qC3Iiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IueahCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLor50iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi77yMIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Iue7mSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLov5kiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5LiqIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWvuSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLosaEiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi55qEIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuafkCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLkuKoiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5YC8Iiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Iui1iyIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlgLwiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi77yMIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWwsSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLkvJoiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6KemIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWPkSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJzIiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJlIiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJ0Iiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJ0Iiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJlIiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJyIiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLvvIwiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6YKjIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuS5iCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlsLEiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6IO9Iiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuebkSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlkKwiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5YiwIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuS6hiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmlbAiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5o2uIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWPmCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLljJYiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi44CCIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuOAgiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLnm7giLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5YWzIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuS7oyIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLnoIEiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5Y+vIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuS7pSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmmK8iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6L+ZIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuagtyIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLvvJoiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX1dLCJpc1JpY2hUZXh0Ijp0cnVlLCJrZWVwTGluZUJyZWFrIjp0cnVlfX1d5f39ae17-8c62-4a45-bc43-b32064c9388a:W3siYmxvY2tJZCI6IjcwMjYtMTU1MDY1NzI0ODU5OSIsImJsb2NrVHlwZSI6InBhcmFncmFwaCIsInN0eWxlcyI6eyJhbGlnbiI6ImxlZnQiLCJpbmRlbnQiOjAsInRleHQtaW5kZW50IjowLCJsaW5lLWhlaWdodCI6MS43NSwiYmFjay1jb2xvciI6IiIsInBhZGRpbmciOiIifSwidHlwZSI6InBhcmFncmFwaCIsInJpY2hUZXh0Ijp7ImRhdGEiOlt7ImNoYXIiOiLpgqMiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5LmIIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWwhiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLpnIAiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6KaBIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Im8iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoiYiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJzIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6ImUiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoiciIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJ2Iiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6ImUiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi55qEIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaVsCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmja4iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5a+5Iiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuixoSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLov5siLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6KGMIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IumAkiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlvZIiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6YGNIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWOhiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLvvIwiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5YyFIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaLrCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlrZAiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5bGeIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaApyIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlr7kiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6LGhIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IueahCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlsZ4iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5oCnIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Iu+8jCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLpg70iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5YqgIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuS4iiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLCoCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJzIiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJlIiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJ0Iiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJ0Iiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJlIiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJyIiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlkowiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoiZyIsInN0eWxlcyI6eyJmb250LWZhbWlseSI6IkNvdXJpZXIgTmV3IiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoiZSIsInN0eWxlcyI6eyJmb250LWZhbWlseSI6IkNvdXJpZXIgTmV3IiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoidCIsInN0eWxlcyI6eyJmb250LWZhbWlseSI6IkNvdXJpZXIgTmV3IiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoidCIsInN0eWxlcyI6eyJmb250LWZhbWlseSI6IkNvdXJpZXIgTmV3IiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoiZSIsInN0eWxlcyI6eyJmb250LWZhbWlseSI6IkNvdXJpZXIgTmV3IiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoiciIsInN0eWxlcyI6eyJmb250LWZhbWlseSI6IkNvdXJpZXIgTmV3IiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX1dLCJpc1JpY2hUZXh0Ijp0cnVlLCJrZWVwTGluZUJyZWFrIjp0cnVlfX1d
var data = {name: 'zhimeng'};
observe(data);
data.name = 'zhimeng520'; // 哈哈哈,监听到值变化了 zhimeng --> zhimeng520
function observe(data) {
if (!data || typeof data !== 'object') {
return;
}
// 取出所有属性遍历
Object.keys(data).forEach(function(key) {
defineReactive(data, key, data[key]);
});
};
function defineReactive(data, key, val) {
observe(val); // 监听子属性
Object.defineProperty(data, key, {
enumerable: true, // 可枚举
configurable: false, // 不能再define
get: function() {
return val;
},
set: function(newVal) {
console.log('哈哈哈,监听到值变化了 ', val, ' --> ', newVal);
val = newVal;
}
});
}
这样我们已经可以监听每个数据的变化了,那么监听到变化之后就是怎么通知订阅者了,所以接下来我们需要实现一个消息订阅器,很简单,维护一个数组,用来收集订阅者,数据变动触发notify,再调用订阅者的update方法,代码改善之后是这样:
// ... 省略
function defineReactive(data, key, val) {
var dep = new Dep();
observe(val); // 监听子属性 Object.defineProperty(data, key, {
// ... 省略
set: function(newVal) {
if (val === newVal) return;
console.log('哈哈哈,监听到值变化了 ', val, ' --> ', newVal);
val = newVal;
dep.notify(); // 通知所有订阅者
}
});
} function Dep() {
this.subs = [];
}
Dep.prototype = {
addSub: function(sub) {
this.subs.push(sub);
},
notify: function() {
this.subs.forEach(function(sub) {
sub.update();
});
}
};
那么问题来了,谁是订阅者?怎么往订阅器添加订阅者?
没错,上面的思路整理中我们已经明确订阅者应该是Watcher, 而且var dep = new Dep();是在 defineReactive方法内部定义的,所以想通过dep添加订阅者,就必须要在闭包内操作,所以我们可以在 getter里面动手脚:
5f39ae17-8c62-4a45-bc43-b32064c9388a:W3siYmxvY2tJZCI6IjE4ODMtMTU1MDY1NzY4MjIxMiIsImJsb2NrVHlwZSI6InBhcmFncmFwaCIsInN0eWxlcyI6eyJhbGlnbiI6ImxlZnQiLCJpbmRlbnQiOjAsInRleHQtaW5kZW50IjowLCJsaW5lLWhlaWdodCI6MS43NSwiYmFjay1jb2xvciI6IiIsInBhZGRpbmciOiIifSwidHlwZSI6InBhcmFncmFwaCIsInJpY2hUZXh0Ijp7ImRhdGEiOlt7ImNoYXIiOiLpgqMiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5LmIIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IumXriIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLpopgiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5p2lIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuS6hiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLvvIwiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6LCBIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaYryIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLorqIiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6ZiFIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuiAhSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLvvJ8iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5oCOIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuS5iCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlvoAiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6K6iIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IumYhSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlmagiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5re7Iiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWKoCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLorqIiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6ZiFIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuiAhSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLvvJ8iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX1dLCJpc1JpY2hUZXh0Ijp0cnVlLCJrZWVwTGluZUJyZWFrIjp0cnVlfX0seyJibG9ja0lkIjoiOTY0MC0xNTUwNjU3NzA5MzgyIiwiYmxvY2tUeXBlIjoicGFyYWdyYXBoIiwic3R5bGVzIjp7ImFsaWduIjoibGVmdCIsImluZGVudCI6MCwidGV4dC1pbmRlbnQiOjAsImxpbmUtaGVpZ2h0IjoxLjc1LCJiYWNrLWNvbG9yIjoiIiwicGFkZGluZyI6IiJ9LCJ0eXBlIjoicGFyYWdyYXBoIiwicmljaFRleHQiOnsiZGF0YSI6W3siY2hhciI6IuayoSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLplJkiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi77yMIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuS4iiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLpnaIiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi55qEIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaAnSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLot68iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5pW0Iiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IueQhiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLkuK0iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5oiRIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuS7rCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlt7IiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi57uPIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaYjiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLnoa4iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6K6iIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IumYhSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLogIUiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5bqUIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuivpSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmmK8iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoiVyIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJhIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6InQiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoiYyIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJoIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6ImUiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoiciIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiIsIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IiAiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6ICMIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuS4lCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJ2Iiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJmb250LXNpemUiOjEzLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJhIiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJmb250LXNpemUiOjEzLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJyIiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJmb250LXNpemUiOjEzLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiIgIiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJmb250LXNpemUiOjEzLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJkIiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJmb250LXNpemUiOjEzLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJlIiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJmb250LXNpemUiOjEzLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJwIiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJmb250LXNpemUiOjEzLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiIgIiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJmb250LXNpemUiOjEzLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiI9Iiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJmb250LXNpemUiOjEzLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiIgIiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJmb250LXNpemUiOjEzLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJuIiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJmb250LXNpemUiOjEzLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJlIiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJmb250LXNpemUiOjEzLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJ3Iiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJmb250LXNpemUiOjEzLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiIgIiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJmb250LXNpemUiOjEzLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJEIiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJmb250LXNpemUiOjEzLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJlIiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJmb250LXNpemUiOjEzLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJwIiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJmb250LXNpemUiOjEzLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiIoIiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJmb250LXNpemUiOjEzLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiIpIiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJmb250LXNpemUiOjEzLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiI7Iiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJmb250LXNpemUiOjEzLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmmK8iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5ZyoIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IsKgIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6ImQiLCJzdHlsZXMiOnsiZm9udC1mYW1pbHkiOiJDb3VyaWVyIE5ldyIsImZvbnQtc2l6ZSI6MTMsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6ImUiLCJzdHlsZXMiOnsiZm9udC1mYW1pbHkiOiJDb3VyaWVyIE5ldyIsImZvbnQtc2l6ZSI6MTMsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6ImYiLCJzdHlsZXMiOnsiZm9udC1mYW1pbHkiOiJDb3VyaWVyIE5ldyIsImZvbnQtc2l6ZSI6MTMsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6ImkiLCJzdHlsZXMiOnsiZm9udC1mYW1pbHkiOiJDb3VyaWVyIE5ldyIsImZvbnQtc2l6ZSI6MTMsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Im4iLCJzdHlsZXMiOnsiZm9udC1mYW1pbHkiOiJDb3VyaWVyIE5ldyIsImZvbnQtc2l6ZSI6MTMsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6ImUiLCJzdHlsZXMiOnsiZm9udC1mYW1pbHkiOiJDb3VyaWVyIE5ldyIsImZvbnQtc2l6ZSI6MTMsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IlIiLCJzdHlsZXMiOnsiZm9udC1mYW1pbHkiOiJDb3VyaWVyIE5ldyIsImZvbnQtc2l6ZSI6MTMsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6ImUiLCJzdHlsZXMiOnsiZm9udC1mYW1pbHkiOiJDb3VyaWVyIE5ldyIsImZvbnQtc2l6ZSI6MTMsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6ImEiLCJzdHlsZXMiOnsiZm9udC1mYW1pbHkiOiJDb3VyaWVyIE5ldyIsImZvbnQtc2l6ZSI6MTMsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6ImMiLCJzdHlsZXMiOnsiZm9udC1mYW1pbHkiOiJDb3VyaWVyIE5ldyIsImZvbnQtc2l6ZSI6MTMsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6InQiLCJzdHlsZXMiOnsiZm9udC1mYW1pbHkiOiJDb3VyaWVyIE5ldyIsImZvbnQtc2l6ZSI6MTMsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6ImkiLCJzdHlsZXMiOnsiZm9udC1mYW1pbHkiOiJDb3VyaWVyIE5ldyIsImZvbnQtc2l6ZSI6MTMsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6InYiLCJzdHlsZXMiOnsiZm9udC1mYW1pbHkiOiJDb3VyaWVyIE5ldyIsImZvbnQtc2l6ZSI6MTMsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6ImUiLCJzdHlsZXMiOnsiZm9udC1mYW1pbHkiOiJDb3VyaWVyIE5ldyIsImZvbnQtc2l6ZSI6MTMsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaWuSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLms5UiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5YaFIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IumDqCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlrpoiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5LmJIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IueahCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLvvIwiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5omAIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuS7pSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmg7MiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6YCaIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Iui/hyIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJkIiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJmb250LXNpemUiOjEzLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJlIiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJmb250LXNpemUiOjEzLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJwIiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJmb250LXNpemUiOjEzLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmt7siLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5YqgIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuiuoiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLpmIUiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6ICFIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Iu+8jCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlsLEiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5b+FIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IumhuyIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLopoEiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5ZyoIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IumXrSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLljIUiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5YaFIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaTjSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLkvZwiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi77yMIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaJgCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLku6UiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5oiRIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuS7rCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlj68iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5LulIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWcqCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLCoCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJnIiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJmb250LXNpemUiOjEzLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJlIiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJmb250LXNpemUiOjEzLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJ0Iiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJmb250LXNpemUiOjEzLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJ0Iiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJmb250LXNpemUiOjEzLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJlIiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJmb250LXNpemUiOjEzLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJyIiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJmb250LXNpemUiOjEzLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLph4wiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6Z2iIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWKqCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmiYsiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6ISaIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Iu+8miIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fV0sImlzUmljaFRleHQiOnRydWUsImtlZXBMaW5lQnJlYWsiOnRydWV9fV0=
// Observer.js
// ...省略
Object.defineProperty(data, key, {
get: function() {
// 由于需要在闭包内添加watcher,所以通过Dep定义一个全局target属性,暂存watcher, 添加完移除
Dep.target && dep.addDep(Dep.target);
return val;
}
// ... 省略
}); // Watcher.js
Watcher.prototype = {
get: function(key) {
Dep.target = this;
this.value = data[key]; // 这里会触发属性的getter,从而添加订阅者
Dep.target = null;
}
}
这里已经实现了一个Observer了,已经具备了监听数据和数据变化通知订阅者的功能 完整代码 那么接下来就是实现Compile了
2、实现Compile
compile主要做的事情是解析模板指令,将模板中的变量替换成数据,然后初始化渲染页面视图,并将每个指令对应的节点绑定更新函数,添加监听数据的订阅者,一旦数据有变动,收到通知,更新视图,如图所示:
因为遍历解析的过程有多次操作dom节点,为提高性能和效率,会先将跟节点el转换成文档碎片fragment进行解析编译操作,解析完成,再将fragment添加回原来的真实dom节点中
function Compile(el) {
this.$el = this.isElementNode(el) ? el : document.querySelector(el);
if (this.$el) {
this.$fragment = this.node2Fragment(this.$el);
this.init();
this.$el.appendChild(this.$fragment);
}
}
Compile.prototype = {
init: function() { this.compileElement(this.$fragment); },
node2Fragment: function(el) {
var fragment = document.createDocumentFragment(), child;
// 将原生节点拷贝到fragment
while (child = el.firstChild) {
fragment.appendChild(child);
}
return fragment;
}
};
compileElement方法将遍历所有节点及其子节点,进行扫描解析编译,调用对应的指令渲染函数进行数据渲染,并调用对应的指令更新函数进行绑定,详看代码及注释说明:
5f39ae17-8c62-4a45-bc43-b32064c9388a:W3siYmxvY2tJZCI6Ijg3NTUtMTU1MDY1NzkyODEyNiIsImJsb2NrVHlwZSI6InBhcmFncmFwaCIsInN0eWxlcyI6eyJhbGlnbiI6ImxlZnQiLCJpbmRlbnQiOjAsInRleHQtaW5kZW50IjowLCJsaW5lLWhlaWdodCI6MS43NSwiYmFjay1jb2xvciI6IiIsInBhZGRpbmciOiIifSwidHlwZSI6InBhcmFncmFwaCIsInJpY2hUZXh0Ijp7ImRhdGEiOlt7ImNoYXIiOiJjIn0seyJjaGFyIjoibyJ9LHsiY2hhciI6Im0ifSx7ImNoYXIiOiJwIn0seyJjaGFyIjoiaSJ9LHsiY2hhciI6ImwifSx7ImNoYXIiOiJlIn0seyJjaGFyIjoiRSJ9LHsiY2hhciI6ImwifSx7ImNoYXIiOiJlIn0seyJjaGFyIjoibSJ9LHsiY2hhciI6ImUifSx7ImNoYXIiOiJuIn0seyJjaGFyIjoidCJ9LHsiY2hhciI6IuaWuSJ9LHsiY2hhciI6IuazlSJ9LHsiY2hhciI6IuWwhiJ9LHsiY2hhciI6IumBjSJ9LHsiY2hhciI6IuWOhiJ9LHsiY2hhciI6IuaJgCJ9LHsiY2hhciI6IuaciSJ9LHsiY2hhciI6IuiKgiJ9LHsiY2hhciI6IueCuSJ9LHsiY2hhciI6IuWPiiJ9LHsiY2hhciI6IuWFtiJ9LHsiY2hhciI6IuWtkCJ9LHsiY2hhciI6IuiKgiJ9LHsiY2hhciI6IueCuSJ9LHsiY2hhciI6Iu+8jCJ9LHsiY2hhciI6Iui/myJ9LHsiY2hhciI6IuihjCJ9LHsiY2hhciI6IuaJqyJ9LHsiY2hhciI6IuaPjyJ9LHsiY2hhciI6IuinoyJ9LHsiY2hhciI6IuaekCJ9LHsiY2hhciI6Iue8liJ9LHsiY2hhciI6IuivkSJ9LHsiY2hhciI6Iu+8jCJ9LHsiY2hhciI6IuiwgyJ9LHsiY2hhciI6IueUqCJ9LHsiY2hhciI6IuWvuSJ9LHsiY2hhciI6IuW6lCJ9LHsiY2hhciI6IueahCJ9LHsiY2hhciI6IuaMhyJ9LHsiY2hhciI6IuS7pCJ9LHsiY2hhciI6Iua4siJ9LHsiY2hhciI6IuafkyJ9LHsiY2hhciI6IuWHvSJ9LHsiY2hhciI6IuaVsCJ9LHsiY2hhciI6Iui/myJ9LHsiY2hhciI6IuihjCJ9LHsiY2hhciI6IuaVsCJ9LHsiY2hhciI6IuaNriJ9LHsiY2hhciI6Iua4siJ9LHsiY2hhciI6IuafkyJ9LHsiY2hhciI6Iu+8jCJ9LHsiY2hhciI6IuW5tiJ9LHsiY2hhciI6IuiwgyJ9LHsiY2hhciI6IueUqCJ9LHsiY2hhciI6IuWvuSJ9LHsiY2hhciI6IuW6lCJ9LHsiY2hhciI6IueahCJ9LHsiY2hhciI6IuaMhyJ9LHsiY2hhciI6IuS7pCJ9LHsiY2hhciI6IuabtCJ9LHsiY2hhciI6IuaWsCJ9LHsiY2hhciI6IuWHvSJ9LHsiY2hhciI6IuaVsCJ9LHsiY2hhciI6Iui/myJ9LHsiY2hhciI6IuihjCJ9LHsiY2hhciI6Iue7kSJ9LHsiY2hhciI6IuWumiJ9LHsiY2hhciI6Iu+8jCJ9LHsiY2hhciI6IuivpiJ9LHsiY2hhciI6IueciyJ9LHsiY2hhciI6IuS7oyJ9LHsiY2hhciI6IueggSJ9LHsiY2hhciI6IuWPiiJ9LHsiY2hhciI6IuazqCJ9LHsiY2hhciI6IumHiiJ9LHsiY2hhciI6IuivtCJ9LHsiY2hhciI6IuaYjiJ9LHsiY2hhciI6Iu+8miJ9XSwiaXNSaWNoVGV4dCI6dHJ1ZSwia2VlcExpbmVCcmVhayI6dHJ1ZX19XQ==
Compile.prototype = {
// ... 省略
compileElement: function(el) {
var childNodes = el.childNodes, me = this;
[].slice.call(childNodes).forEach(function(node) {
var text = node.textContent;
var reg = /\{\{(.*)\}\}/; // 表达式文本
// 按元素节点方式编译
if (me.isElementNode(node)) {
me.compile(node);
} else if (me.isTextNode(node) && reg.test(text)) {
me.compileText(node, RegExp.$1);
}
// 遍历编译子节点
if (node.childNodes && node.childNodes.length) {
me.compileElement(node);
}
});
},
compile: function(node) {
var nodeAttrs = node.attributes, me = this;
[].slice.call(nodeAttrs).forEach(function(attr) {
// 规定:指令以 v-xxx 命名
// 如 <span v-text="content"></span> 中指令为 v-text
var attrName = attr.name; // v-text
if (me.isDirective(attrName)) {
var exp = attr.value; // content
var dir = attrName.substring(2); // text
if (me.isEventDirective(dir)) {
// 事件指令, 如 v-on:click
compileUtil.eventHandler(node, me.$vm, exp, dir);
} else {
// 普通指令
compileUtil[dir] && compileUtil[dir](node, me.$vm, exp);
}
}
});
}
};
// 指令处理集合
var compileUtil = {
text: function(node, vm, exp) {
this.bind(node, vm, exp, 'text');
},
// ...省略
bind: function(node, vm, exp, dir) {
var updaterFn = updater[dir + 'Updater'];
// 第一次初始化视图
updaterFn && updaterFn(node, vm[exp]);
// 实例化订阅者,此操作会在对应的属性消息订阅器中添加了该订阅者watcher
new Watcher(vm, exp, function(value, oldValue) {
// 一旦属性值有变化,会收到通知执行此更新函数,更新视图
updaterFn && updaterFn(node, value, oldValue);
});
}
};
// 更新函数
var updater = {
textUpdater: function(node, value) {
node.textContent = typeof value == 'undefined' ? '' : value;
}
// ...省略
};
这里通过递归遍历保证了每个节点及子节点都会解析编译到,包括了{{}}表达式声明的文本节点。指令的声明规定是通过特定前缀的节点属性来标记,如<span v-text="content" other-attr中v-text便是指令,而other-attr不是指令,只是普通的属性。
监听数据、绑定更新函数的处理是在compileUtil.bind()这个方法中,通过new Watcher()添加回调来接收数据变化的通知
至此,一个简单的Compile就完成了,完整代码。接下来要看看Watcher这个订阅者的具体实现了
3、实现Watcher
Watcher订阅者作为Observer和Compile之间通信的桥梁,主要做的事情是:
1、在自身实例化时往属性订阅器(dep)里面添加自己
2、自身必须有一个update()方法
3、待属性变动dep.notice()通知时,能调用自身的update()方法,并触发Compile中绑定的回调,则功成身退。
如果有点乱,可以回顾下前面的思路整理
5f39ae17-8c62-4a45-bc43-b32064c9388a:W3siYmxvY2tJZCI6IjI5MTUtMTU1MDY1Nzk1Mjc0MyIsImJsb2NrVHlwZSI6InBhcmFncmFwaCIsInN0eWxlcyI6eyJhbGlnbiI6ImxlZnQiLCJpbmRlbnQiOjAsInRleHQtaW5kZW50IjowLCJsaW5lLWhlaWdodCI6MS43NSwiYmFjay1jb2xvciI6IiIsInBhZGRpbmciOiIifSwidHlwZSI6InBhcmFncmFwaCIsInJpY2hUZXh0Ijp7ImRhdGEiOlt7ImNoYXIiOiLov5kifSx7ImNoYXIiOiLph4wifSx7ImNoYXIiOiLpgJoifSx7ImNoYXIiOiLov4cifSx7ImNoYXIiOiLpgJIifSx7ImNoYXIiOiLlvZIifSx7ImNoYXIiOiLpgY0ifSx7ImNoYXIiOiLljoYifSx7ImNoYXIiOiLkv50ifSx7ImNoYXIiOiLor4EifSx7ImNoYXIiOiLkuoYifSx7ImNoYXIiOiLmr48ifSx7ImNoYXIiOiLkuKoifSx7ImNoYXIiOiLoioIifSx7ImNoYXIiOiLngrkifSx7ImNoYXIiOiLlj4oifSx7ImNoYXIiOiLlrZAifSx7ImNoYXIiOiLoioIifSx7ImNoYXIiOiLngrkifSx7ImNoYXIiOiLpg70ifSx7ImNoYXIiOiLkvJoifSx7ImNoYXIiOiLop6MifSx7ImNoYXIiOiLmnpAifSx7ImNoYXIiOiLnvJYifSx7ImNoYXIiOiLor5EifSx7ImNoYXIiOiLliLAifSx7ImNoYXIiOiLvvIwifSx7ImNoYXIiOiLljIUifSx7ImNoYXIiOiLmi6wifSx7ImNoYXIiOiLkuoYifSx7ImNoYXIiOiJ7In0seyJjaGFyIjoieyJ9LHsiY2hhciI6In0ifSx7ImNoYXIiOiJ9In0seyJjaGFyIjoi6KGoIn0seyJjaGFyIjoi6L6+In0seyJjaGFyIjoi5byPIn0seyJjaGFyIjoi5aOwIn0seyJjaGFyIjoi5piOIn0seyJjaGFyIjoi55qEIn0seyJjaGFyIjoi5paHIn0seyJjaGFyIjoi5pysIn0seyJjaGFyIjoi6IqCIn0seyJjaGFyIjoi54K5In0seyJjaGFyIjoi44CCIn0seyJjaGFyIjoi5oyHIn0seyJjaGFyIjoi5LukIn0seyJjaGFyIjoi55qEIn0seyJjaGFyIjoi5aOwIn0seyJjaGFyIjoi5piOIn0seyJjaGFyIjoi6KeEIn0seyJjaGFyIjoi5a6aIn0seyJjaGFyIjoi5pivIn0seyJjaGFyIjoi6YCaIn0seyJjaGFyIjoi6L+HIn0seyJjaGFyIjoi54m5In0seyJjaGFyIjoi5a6aIn0seyJjaGFyIjoi5YmNIn0seyJjaGFyIjoi57yAIn0seyJjaGFyIjoi55qEIn0seyJjaGFyIjoi6IqCIn0seyJjaGFyIjoi54K5In0seyJjaGFyIjoi5bGeIn0seyJjaGFyIjoi5oCnIn0seyJjaGFyIjoi5p2lIn0seyJjaGFyIjoi5qCHIn0seyJjaGFyIjoi6K6wIn0seyJjaGFyIjoi77yMIn0seyJjaGFyIjoi5aaCIn0seyJjaGFyIjoiPCJ9LHsiY2hhciI6InMifSx7ImNoYXIiOiJwIn0seyJjaGFyIjoiYSJ9LHsiY2hhciI6Im4ifSx7ImNoYXIiOiIgIn0seyJjaGFyIjoidiJ9LHsiY2hhciI6Ii0ifSx7ImNoYXIiOiJ0In0seyJjaGFyIjoiZSJ9LHsiY2hhciI6IngifSx7ImNoYXIiOiJ0In0seyJjaGFyIjoiPSJ9LHsiY2hhciI6IlwiIn0seyJjaGFyIjoiYyJ9LHsiY2hhciI6Im8ifSx7ImNoYXIiOiJuIn0seyJjaGFyIjoidCJ9LHsiY2hhciI6ImUifSx7ImNoYXIiOiJuIn0seyJjaGFyIjoidCJ9LHsiY2hhciI6IlwiIn0seyJjaGFyIjoiICJ9LHsiY2hhciI6Im8ifSx7ImNoYXIiOiJ0In0seyJjaGFyIjoiaCJ9LHsiY2hhciI6ImUifSx7ImNoYXIiOiJyIn0seyJjaGFyIjoiLSJ9LHsiY2hhciI6ImEifSx7ImNoYXIiOiJ0In0seyJjaGFyIjoidCJ9LHsiY2hhciI6InIifSx7ImNoYXIiOiLkuK0ifSx7ImNoYXIiOiJ2In0seyJjaGFyIjoiLSJ9LHsiY2hhciI6InQifSx7ImNoYXIiOiJlIn0seyJjaGFyIjoieCJ9LHsiY2hhciI6InQifSx7ImNoYXIiOiLkvr8ifSx7ImNoYXIiOiLmmK8ifSx7ImNoYXIiOiLmjIcifSx7ImNoYXIiOiLku6QifSx7ImNoYXIiOiLvvIwifSx7ImNoYXIiOiLogIwifSx7ImNoYXIiOiJvIn0seyJjaGFyIjoidCJ9LHsiY2hhciI6ImgifSx7ImNoYXIiOiJlIn0seyJjaGFyIjoiciJ9LHsiY2hhciI6Ii0ifSx7ImNoYXIiOiJhIn0seyJjaGFyIjoidCJ9LHsiY2hhciI6InQifSx7ImNoYXIiOiJyIn0seyJjaGFyIjoi5LiNIn0seyJjaGFyIjoi5pivIn0seyJjaGFyIjoi5oyHIn0seyJjaGFyIjoi5LukIn0seyJjaGFyIjoi77yMIn0seyJjaGFyIjoi5Y+qIn0seyJjaGFyIjoi5pivIn0seyJjaGFyIjoi5pmuIn0seyJjaGFyIjoi6YCaIn0seyJjaGFyIjoi55qEIn0seyJjaGFyIjoi5bGeIn0seyJjaGFyIjoi5oCnIn0seyJjaGFyIjoi44CCIn1dLCJpc1JpY2hUZXh0Ijp0cnVlLCJrZWVwTGluZUJyZWFrIjp0cnVlfX0seyJibG9ja0lkIjoiOTU4MS0xNTUwNjU3OTUyNzQzIiwiYmxvY2tUeXBlIjoicGFyYWdyYXBoIiwic3R5bGVzIjp7ImFsaWduIjoibGVmdCIsImluZGVudCI6MCwidGV4dC1pbmRlbnQiOjAsImxpbmUtaGVpZ2h0IjoxLjc1LCJiYWNrLWNvbG9yIjoiIiwicGFkZGluZyI6IiJ9LCJ0eXBlIjoicGFyYWdyYXBoIiwicmljaFRleHQiOnsiZGF0YSI6W3siY2hhciI6IuebkSJ9LHsiY2hhciI6IuWQrCJ9LHsiY2hhciI6IuaVsCJ9LHsiY2hhciI6IuaNriJ9LHsiY2hhciI6IuOAgSJ9LHsiY2hhciI6Iue7kSJ9LHsiY2hhciI6IuWumiJ9LHsiY2hhciI6IuabtCJ9LHsiY2hhciI6IuaWsCJ9LHsiY2hhciI6IuWHvSJ9LHsiY2hhciI6IuaVsCJ9LHsiY2hhciI6IueahCJ9LHsiY2hhciI6IuWkhCJ9LHsiY2hhciI6IueQhiJ9LHsiY2hhciI6IuaYryJ9LHsiY2hhciI6IuWcqCJ9LHsiY2hhciI6ImMifSx7ImNoYXIiOiJvIn0seyJjaGFyIjoibSJ9LHsiY2hhciI6InAifSx7ImNoYXIiOiJpIn0seyJjaGFyIjoibCJ9LHsiY2hhciI6ImUifSx7ImNoYXIiOiJVIn0seyJjaGFyIjoidCJ9LHsiY2hhciI6ImkifSx7ImNoYXIiOiJsIn0seyJjaGFyIjoiLiJ9LHsiY2hhciI6ImIifSx7ImNoYXIiOiJpIn0seyJjaGFyIjoibiJ9LHsiY2hhciI6ImQifSx7ImNoYXIiOiIoIn0seyJjaGFyIjoiKSJ9LHsiY2hhciI6Iui/mSJ9LHsiY2hhciI6IuS4qiJ9LHsiY2hhciI6IuaWuSJ9LHsiY2hhciI6IuazlSJ9LHsiY2hhciI6IuS4rSJ9LHsiY2hhciI6Iu+8jCJ9LHsiY2hhciI6IumAmiJ9LHsiY2hhciI6Iui/hyJ9LHsiY2hhciI6Im4ifSx7ImNoYXIiOiJlIn0seyJjaGFyIjoidyJ9LHsiY2hhciI6IiAifSx7ImNoYXIiOiJXIn0seyJjaGFyIjoiYSJ9LHsiY2hhciI6InQifSx7ImNoYXIiOiJjIn0seyJjaGFyIjoiaCJ9LHsiY2hhciI6ImUifSx7ImNoYXIiOiJyIn0seyJjaGFyIjoiKCJ9LHsiY2hhciI6IikifSx7ImNoYXIiOiLmt7sifSx7ImNoYXIiOiLliqAifSx7ImNoYXIiOiLlm54ifSx7ImNoYXIiOiLosIMifSx7ImNoYXIiOiLmnaUifSx7ImNoYXIiOiLmjqUifSx7ImNoYXIiOiLmlLYifSx7ImNoYXIiOiLmlbAifSx7ImNoYXIiOiLmja4ifSx7ImNoYXIiOiLlj5gifSx7ImNoYXIiOiLljJYifSx7ImNoYXIiOiLnmoQifSx7ImNoYXIiOiLpgJoifSx7ImNoYXIiOiLnn6UifV0sImlzUmljaFRleHQiOnRydWUsImtlZXBMaW5lQnJlYWsiOnRydWV9fSx7ImJsb2NrSWQiOiIzNjQ4LTE1NTA2NTc5NTI3NDMiLCJibG9ja1R5cGUiOiJwYXJhZ3JhcGgiLCJzdHlsZXMiOnsiYWxpZ24iOiJsZWZ0IiwiaW5kZW50IjowLCJ0ZXh0LWluZGVudCI6MCwibGluZS1oZWlnaHQiOjEuNzUsImJhY2stY29sb3IiOiIiLCJwYWRkaW5nIjoiIn0sInR5cGUiOiJwYXJhZ3JhcGgiLCJyaWNoVGV4dCI6eyJkYXRhIjpbXSwiaXNSaWNoVGV4dCI6dHJ1ZSwia2VlcExpbmVCcmVhayI6dHJ1ZX19LHsiYmxvY2tJZCI6IjUxNjUtMTU1MDY1Nzk1Mjc0MyIsImJsb2NrVHlwZSI6InBhcmFncmFwaCIsInN0eWxlcyI6eyJhbGlnbiI6ImxlZnQiLCJpbmRlbnQiOjAsInRleHQtaW5kZW50IjowLCJsaW5lLWhlaWdodCI6MS43NSwiYmFjay1jb2xvciI6IiIsInBhZGRpbmciOiIifSwidHlwZSI6InBhcmFncmFwaCIsInJpY2hUZXh0Ijp7ImRhdGEiOlt7ImNoYXIiOiLoh7MifSx7ImNoYXIiOiLmraQifSx7ImNoYXIiOiLvvIwifSx7ImNoYXIiOiLkuIAifSx7ImNoYXIiOiLkuKoifSx7ImNoYXIiOiLnroAifSx7ImNoYXIiOiLljZUifSx7ImNoYXIiOiLnmoQifSx7ImNoYXIiOiJDIn0seyJjaGFyIjoibyJ9LHsiY2hhciI6Im0ifSx7ImNoYXIiOiJwIn0seyJjaGFyIjoiaSJ9LHsiY2hhciI6ImwifSx7ImNoYXIiOiJlIn0seyJjaGFyIjoi5bCxIn0seyJjaGFyIjoi5a6MIn0seyJjaGFyIjoi5oiQIn0seyJjaGFyIjoi5LqGIn0seyJjaGFyIjoi77yMIn0seyJjaGFyIjoi5a6MIn0seyJjaGFyIjoi5pW0In0seyJjaGFyIjoi5LujIn0seyJjaGFyIjoi56CBIn0seyJjaGFyIjoi44CCIn0seyJjaGFyIjoi5o6lIn0seyJjaGFyIjoi5LiLIn0seyJjaGFyIjoi5p2lIn0seyJjaGFyIjoi6KaBIn0seyJjaGFyIjoi55yLIn0seyJjaGFyIjoi55yLIn0seyJjaGFyIjoiVyJ9LHsiY2hhciI6ImEifSx7ImNoYXIiOiJ0In0seyJjaGFyIjoiYyJ9LHsiY2hhciI6ImgifSx7ImNoYXIiOiJlIn0seyJjaGFyIjoiciJ9LHsiY2hhciI6Iui/mSJ9LHsiY2hhciI6IuS4qiJ9LHsiY2hhciI6IuiuoiJ9LHsiY2hhciI6IumYhSJ9LHsiY2hhciI6IuiAhSJ9LHsiY2hhciI6IueahCJ9LHsiY2hhciI6IuWFtyJ9LHsiY2hhciI6IuS9kyJ9LHsiY2hhciI6IuWuniJ9LHsiY2hhciI6IueOsCJ9LHsiY2hhciI6IuS6hiJ9XSwiaXNSaWNoVGV4dCI6dHJ1ZSwia2VlcExpbmVCcmVhayI6dHJ1ZX19LHsiYmxvY2tJZCI6IjIwODctMTU1MDY1Nzk1Mjc0MyIsImJsb2NrVHlwZSI6InBhcmFncmFwaCIsInN0eWxlcyI6eyJhbGlnbiI6ImxlZnQiLCJpbmRlbnQiOjAsInRleHQtaW5kZW50IjowLCJsaW5lLWhlaWdodCI6MS43NSwiYmFjay1jb2xvciI6IiIsInBhZGRpbmciOiIifSwidHlwZSI6InBhcmFncmFwaCIsInJpY2hUZXh0Ijp7ImRhdGEiOltdLCJpc1JpY2hUZXh0Ijp0cnVlLCJrZWVwTGluZUJyZWFrIjp0cnVlfX0seyJibG9ja0lkIjoiNjg3MC0xNTUwNjU3OTUyNzQzIiwiYmxvY2tUeXBlIjoicGFyYWdyYXBoIiwic3R5bGVzIjp7ImFsaWduIjoibGVmdCIsImluZGVudCI6MCwidGV4dC1pbmRlbnQiOjAsImxpbmUtaGVpZ2h0IjoxLjc1LCJiYWNrLWNvbG9yIjoiIiwicGFkZGluZyI6IiJ9LCJ0eXBlIjoicGFyYWdyYXBoIiwicmljaFRleHQiOnsiZGF0YSI6W3siY2hhciI6IjMifSx7ImNoYXIiOiLjgIEifSx7ImNoYXIiOiLlrp4ifSx7ImNoYXIiOiLnjrAifSx7ImNoYXIiOiJXIn0seyJjaGFyIjoiYSJ9LHsiY2hhciI6InQifSx7ImNoYXIiOiJjIn0seyJjaGFyIjoiaCJ9LHsiY2hhciI6ImUifSx7ImNoYXIiOiJyIn1dLCJpc1JpY2hUZXh0Ijp0cnVlLCJrZWVwTGluZUJyZWFrIjp0cnVlfX0seyJibG9ja0lkIjoiMTkxNC0xNTUwNjU3OTUyNzQzIiwiYmxvY2tUeXBlIjoicGFyYWdyYXBoIiwic3R5bGVzIjp7ImFsaWduIjoibGVmdCIsImluZGVudCI6MCwidGV4dC1pbmRlbnQiOjAsImxpbmUtaGVpZ2h0IjoxLjc1LCJiYWNrLWNvbG9yIjoiIiwicGFkZGluZyI6IiJ9LCJ0eXBlIjoicGFyYWdyYXBoIiwicmljaFRleHQiOnsiZGF0YSI6W3siY2hhciI6IlcifSx7ImNoYXIiOiJhIn0seyJjaGFyIjoidCJ9LHsiY2hhciI6ImMifSx7ImNoYXIiOiJoIn0seyJjaGFyIjoiZSJ9LHsiY2hhciI6InIifSx7ImNoYXIiOiLorqIifSx7ImNoYXIiOiLpmIUifSx7ImNoYXIiOiLogIUifSx7ImNoYXIiOiLkvZwifSx7ImNoYXIiOiLkuLoifSx7ImNoYXIiOiJPIn0seyJjaGFyIjoiYiJ9LHsiY2hhciI6InMifSx7ImNoYXIiOiJlIn0seyJjaGFyIjoiciJ9LHsiY2hhciI6InYifSx7ImNoYXIiOiJlIn0seyJjaGFyIjoiciJ9LHsiY2hhciI6IuWSjCJ9LHsiY2hhciI6IkMifSx7ImNoYXIiOiJvIn0seyJjaGFyIjoibSJ9LHsiY2hhciI6InAifSx7ImNoYXIiOiJpIn0seyJjaGFyIjoibCJ9LHsiY2hhciI6ImUifSx7ImNoYXIiOiLkuYsifSx7ImNoYXIiOiLpl7QifSx7ImNoYXIiOiLpgJoifSx7ImNoYXIiOiLkv6EifSx7ImNoYXIiOiLnmoQifSx7ImNoYXIiOiLmoaUifSx7ImNoYXIiOiLmooEifSx7ImNoYXIiOiLvvIwifSx7ImNoYXIiOiLkuLsifSx7ImNoYXIiOiLopoEifSx7ImNoYXIiOiLlgZoifSx7ImNoYXIiOiLnmoQifSx7ImNoYXIiOiLkuosifSx7ImNoYXIiOiLmg4UifSx7ImNoYXIiOiLmmK8ifSx7ImNoYXIiOiI6In1dLCJpc1JpY2hUZXh0Ijp0cnVlLCJrZWVwTGluZUJyZWFrIjp0cnVlfX0seyJibG9ja0lkIjoiMjM3NS0xNTUwNjU3OTUyNzQzIiwiYmxvY2tUeXBlIjoicGFyYWdyYXBoIiwic3R5bGVzIjp7ImFsaWduIjoibGVmdCIsImluZGVudCI6MCwidGV4dC1pbmRlbnQiOjAsImxpbmUtaGVpZ2h0IjoxLjc1LCJiYWNrLWNvbG9yIjoiIiwicGFkZGluZyI6IiJ9LCJ0eXBlIjoicGFyYWdyYXBoIiwicmljaFRleHQiOnsiZGF0YSI6W3siY2hhciI6IjEifSx7ImNoYXIiOiLjgIEifSx7ImNoYXIiOiLlnKgifSx7ImNoYXIiOiLoh6oifSx7ImNoYXIiOiLouqsifSx7ImNoYXIiOiLlrp4ifSx7ImNoYXIiOiLkvosifSx7ImNoYXIiOiLljJYifSx7ImNoYXIiOiLml7YifSx7ImNoYXIiOiLlvoAifSx7ImNoYXIiOiLlsZ4ifSx7ImNoYXIiOiLmgKcifSx7ImNoYXIiOiLorqIifSx7ImNoYXIiOiLpmIUifSx7ImNoYXIiOiLlmagifSx7ImNoYXIiOiIoIn0seyJjaGFyIjoiZCJ9LHsiY2hhciI6ImUifSx7ImNoYXIiOiJwIn0seyJjaGFyIjoiKSJ9LHsiY2hhciI6IumHjCJ9LHsiY2hhciI6IumdoiJ9LHsiY2hhciI6Iua3uyJ9LHsiY2hhciI6IuWKoCJ9LHsiY2hhciI6IuiHqiJ9LHsiY2hhciI6IuW3sSJ9XSwiaXNSaWNoVGV4dCI6dHJ1ZSwia2VlcExpbmVCcmVhayI6dHJ1ZX19LHsiYmxvY2tJZCI6IjU0NjAtMTU1MDY1Nzk1Mjc0MyIsImJsb2NrVHlwZSI6InBhcmFncmFwaCIsInN0eWxlcyI6eyJhbGlnbiI6ImxlZnQiLCJpbmRlbnQiOjAsInRleHQtaW5kZW50IjowLCJsaW5lLWhlaWdodCI6MS43NSwiYmFjay1jb2xvciI6IiIsInBhZGRpbmciOiIifSwidHlwZSI6InBhcmFncmFwaCIsInJpY2hUZXh0Ijp7ImRhdGEiOlt7ImNoYXIiOiIyIn0seyJjaGFyIjoi44CBIn0seyJjaGFyIjoi6IeqIn0seyJjaGFyIjoi6LqrIn0seyJjaGFyIjoi5b+FIn0seyJjaGFyIjoi6aG7In0seyJjaGFyIjoi5pyJIn0seyJjaGFyIjoi5LiAIn0seyJjaGFyIjoi5LiqIn0seyJjaGFyIjoidSJ9LHsiY2hhciI6InAifSx7ImNoYXIiOiJkIn0seyJjaGFyIjoiYSJ9LHsiY2hhciI6InQifSx7ImNoYXIiOiJlIn0seyJjaGFyIjoiKCJ9LHsiY2hhciI6IikifSx7ImNoYXIiOiLmlrkifSx7ImNoYXIiOiLms5UifV0sImlzUmljaFRleHQiOnRydWUsImtlZXBMaW5lQnJlYWsiOnRydWV9fSx7ImJsb2NrSWQiOiI5OTYwLTE1NTA2NTc5NTI3NDMiLCJibG9ja1R5cGUiOiJwYXJhZ3JhcGgiLCJzdHlsZXMiOnsiYWxpZ24iOiJsZWZ0IiwiaW5kZW50IjowLCJ0ZXh0LWluZGVudCI6MCwibGluZS1oZWlnaHQiOjEuNzUsImJhY2stY29sb3IiOiIiLCJwYWRkaW5nIjoiIn0sInR5cGUiOiJwYXJhZ3JhcGgiLCJyaWNoVGV4dCI6eyJkYXRhIjpbeyJjaGFyIjoiMyJ9LHsiY2hhciI6IuOAgSJ9LHsiY2hhciI6IuW+hSJ9LHsiY2hhciI6IuWxniJ9LHsiY2hhciI6IuaApyJ9LHsiY2hhciI6IuWPmCJ9LHsiY2hhciI6IuWKqCJ9LHsiY2hhciI6ImQifSx7ImNoYXIiOiJlIn0seyJjaGFyIjoicCJ9LHsiY2hhciI6Ii4ifSx7ImNoYXIiOiJuIn0seyJjaGFyIjoibyJ9LHsiY2hhciI6InQifSx7ImNoYXIiOiJpIn0seyJjaGFyIjoiYyJ9LHsiY2hhciI6ImUifSx7ImNoYXIiOiIoIn0seyJjaGFyIjoiKSJ9LHsiY2hhciI6IumAmiJ9LHsiY2hhciI6IuefpSJ9LHsiY2hhciI6IuaXtiJ9LHsiY2hhciI6Iu+8jCJ9LHsiY2hhciI6IuiDvSJ9LHsiY2hhciI6IuiwgyJ9LHsiY2hhciI6IueUqCJ9LHsiY2hhciI6IuiHqiJ9LHsiY2hhciI6Iui6qyJ9LHsiY2hhciI6IueahCJ9LHsiY2hhciI6InUifSx7ImNoYXIiOiJwIn0seyJjaGFyIjoiZCJ9LHsiY2hhciI6ImEifSx7ImNoYXIiOiJ0In0seyJjaGFyIjoiZSJ9LHsiY2hhciI6IigifSx7ImNoYXIiOiIpIn0seyJjaGFyIjoi5pa5In0seyJjaGFyIjoi5rOVIn0seyJjaGFyIjoi77yMIn0seyJjaGFyIjoi5bm2In0seyJjaGFyIjoi6KemIn0seyJjaGFyIjoi5Y+RIn0seyJjaGFyIjoiQyJ9LHsiY2hhciI6Im8ifSx7ImNoYXIiOiJtIn0seyJjaGFyIjoicCJ9LHsiY2hhciI6ImkifSx7ImNoYXIiOiJsIn0seyJjaGFyIjoiZSJ9LHsiY2hhciI6IuS4rSJ9LHsiY2hhciI6Iue7kSJ9LHsiY2hhciI6IuWumiJ9LHsiY2hhciI6IueahCJ9LHsiY2hhciI6IuWbniJ9LHsiY2hhciI6IuiwgyJ9LHsiY2hhciI6Iu+8jCJ9LHsiY2hhciI6IuWImSJ9LHsiY2hhciI6IuWKnyJ9LHsiY2hhciI6IuaIkCJ9LHsiY2hhciI6Iui6qyJ9LHsiY2hhciI6IumAgCJ9LHsiY2hhciI6IuOAgiJ9XSwiaXNSaWNoVGV4dCI6dHJ1ZSwia2VlcExpbmVCcmVhayI6dHJ1ZX19LHsiYmxvY2tJZCI6IjkxMjItMTU1MDY1Nzk1Mjc0NCIsImJsb2NrVHlwZSI6InBhcmFncmFwaCIsInN0eWxlcyI6eyJhbGlnbiI6ImxlZnQiLCJpbmRlbnQiOjAsInRleHQtaW5kZW50IjowLCJsaW5lLWhlaWdodCI6MS43NSwiYmFjay1jb2xvciI6IiIsInBhZGRpbmciOiIifSwidHlwZSI6InBhcmFncmFwaCIsInJpY2hUZXh0Ijp7ImRhdGEiOlt7ImNoYXIiOiLlpoIifSx7ImNoYXIiOiLmnpwifSx7ImNoYXIiOiLmnIkifSx7ImNoYXIiOiLngrkifSx7ImNoYXIiOiLkubEifSx7ImNoYXIiOiLvvIwifSx7ImNoYXIiOiLlj68ifSx7ImNoYXIiOiLku6UifSx7ImNoYXIiOiLlm54ifSx7ImNoYXIiOiLpob4ifSx7ImNoYXIiOiLkuIsifSx7ImNoYXIiOiLliY0ifSx7ImNoYXIiOiLpnaIifSx7ImNoYXIiOiLnmoQifSx7ImNoYXIiOiLmgJ0ifSx7ImNoYXIiOiLot68ifSx7ImNoYXIiOiLmlbQifSx7ImNoYXIiOiLnkIYifV0sImlzUmljaFRleHQiOnRydWUsImtlZXBMaW5lQnJlYWsiOnRydWV9fV0=
function Watcher(vm, exp, cb) {
this.cb = cb;
this.vm = vm;
this.exp = exp;
// 此处为了触发属性的getter,从而在dep添加自己,结合Observer更易理解
this.value = this.get();
}
Watcher.prototype = {
update: function() {
this.run(); // 属性值变化收到通知
},
run: function() {
var value = this.get(); // 取到最新值
var oldVal = this.value;
if (value !== oldVal) {
this.value = value;
this.cb.call(this.vm, value, oldVal); // 执行Compile中绑定的回调,更新视图
}
},
get: function() {
Dep.target = this; // 将当前订阅者指向自己
var value = this.vm[exp]; // 触发getter,添加自己到属性订阅器中
Dep.target = null; // 添加完毕,重置
return value;
}
};
// 这里再次列出Observer和Dep,方便理解
Object.defineProperty(data, key, {
get: function() {
// 由于需要在闭包内添加watcher,所以可以在Dep定义一个全局target属性,暂存watcher, 添加完移除
Dep.target && dep.addDep(Dep.target);
return val;
}
// ... 省略
});
Dep.prototype = {
notify: function() {
this.subs.forEach(function(sub) {
sub.update(); // 调用订阅者的update方法,通知变化
});
}
};
实例化Watcher的时候,调用get()方法,通过Dep.target = watcherInstance标记订阅者是当前watcher实例,强行触发属性定义的getter方法,getter方法执行的时候,就会在属性的订阅器dep添加当前watcher实例,从而在属性值有变化的时候,watcherInstance就能收到更新通知。
ok, Watcher也已经实现了,完整代码
基本上vue中数据绑定相关比较核心的几个模块也是这几个,猛戳这里 在src 目录可找到vue源码。
最后来讲讲MVVM入口文件的相关逻辑和实现吧,相对就比较简单了~
4、实现MVVM
MVVM作为数据绑定的入口,整合Observer、Compile和Watcher三者,通过Observer来监听自己的model数据变化,通过Compile来解析编译模板指令,最终利用Watcher搭起Observer和Compile之间的通信桥梁,达到数据变化 -> 视图更新;视图交互变化(input) -> 数据model变更的双向绑定效果。
一个简单的MVVM构造器是这样子:
5f39ae17-8c62-4a45-bc43-b32064c9388a:W3siYmxvY2tJZCI6IjEwOTYtMTU1MDY1Nzk1Mjc0OCIsImJsb2NrVHlwZSI6InBhcmFncmFwaCIsInN0eWxlcyI6eyJhbGlnbiI6ImxlZnQiLCJpbmRlbnQiOjAsInRleHQtaW5kZW50IjowLCJsaW5lLWhlaWdodCI6MS43NSwiYmFjay1jb2xvciI6IiIsInBhZGRpbmciOiIifSwidHlwZSI6InBhcmFncmFwaCIsInJpY2hUZXh0Ijp7ImRhdGEiOlt7ImNoYXIiOiLmnIAifSx7ImNoYXIiOiLlkI4ifSx7ImNoYXIiOiLmnaUifSx7ImNoYXIiOiLorrIifSx7ImNoYXIiOiLorrIifSx7ImNoYXIiOiJNIn0seyJjaGFyIjoiViJ9LHsiY2hhciI6IlYifSx7ImNoYXIiOiJNIn0seyJjaGFyIjoi5YWlIn0seyJjaGFyIjoi5Y+jIn0seyJjaGFyIjoi5paHIn0seyJjaGFyIjoi5Lu2In0seyJjaGFyIjoi55qEIn0seyJjaGFyIjoi55u4In0seyJjaGFyIjoi5YWzIn0seyJjaGFyIjoi6YC7In0seyJjaGFyIjoi6L6RIn0seyJjaGFyIjoi5ZKMIn0seyJjaGFyIjoi5a6eIn0seyJjaGFyIjoi546wIn0seyJjaGFyIjoi5ZCnIn0seyJjaGFyIjoi77yMIn0seyJjaGFyIjoi55u4In0seyJjaGFyIjoi5a+5In0seyJjaGFyIjoi5bCxIn0seyJjaGFyIjoi5q+UIn0seyJjaGFyIjoi6L6DIn0seyJjaGFyIjoi566AIn0seyJjaGFyIjoi5Y2VIn0seyJjaGFyIjoi5LqGIn0seyJjaGFyIjoifiJ9XSwiaXNSaWNoVGV4dCI6dHJ1ZSwia2VlcExpbmVCcmVhayI6dHJ1ZX19LHsiYmxvY2tJZCI6IjY2MjEtMTU1MDY1Nzk1Mjc0OCIsImJsb2NrVHlwZSI6InBhcmFncmFwaCIsInN0eWxlcyI6eyJhbGlnbiI6ImxlZnQiLCJpbmRlbnQiOjAsInRleHQtaW5kZW50IjowLCJsaW5lLWhlaWdodCI6MS43NSwiYmFjay1jb2xvciI6IiIsInBhZGRpbmciOiIifSwidHlwZSI6InBhcmFncmFwaCIsInJpY2hUZXh0Ijp7ImRhdGEiOltdLCJpc1JpY2hUZXh0Ijp0cnVlLCJrZWVwTGluZUJyZWFrIjp0cnVlfX0seyJibG9ja0lkIjoiNzkyOS0xNTUwNjU3OTUyNzQ4IiwiYmxvY2tUeXBlIjoicGFyYWdyYXBoIiwic3R5bGVzIjp7ImFsaWduIjoibGVmdCIsImluZGVudCI6MCwidGV4dC1pbmRlbnQiOjAsImxpbmUtaGVpZ2h0IjoxLjc1LCJiYWNrLWNvbG9yIjoiIiwicGFkZGluZyI6IiJ9LCJ0eXBlIjoicGFyYWdyYXBoIiwicmljaFRleHQiOnsiZGF0YSI6W3siY2hhciI6IjQifSx7ImNoYXIiOiLjgIEifSx7ImNoYXIiOiLlrp4ifSx7ImNoYXIiOiLnjrAifSx7ImNoYXIiOiJNIn0seyJjaGFyIjoiViJ9LHsiY2hhciI6IlYifSx7ImNoYXIiOiJNIn1dLCJpc1JpY2hUZXh0Ijp0cnVlLCJrZWVwTGluZUJyZWFrIjp0cnVlfX0seyJibG9ja0lkIjoiMDA5MC0xNTUwNjU3OTUyNzQ4IiwiYmxvY2tUeXBlIjoicGFyYWdyYXBoIiwic3R5bGVzIjp7ImFsaWduIjoibGVmdCIsImluZGVudCI6MCwidGV4dC1pbmRlbnQiOjAsImxpbmUtaGVpZ2h0IjoxLjc1LCJiYWNrLWNvbG9yIjoiIiwicGFkZGluZyI6IiJ9LCJ0eXBlIjoicGFyYWdyYXBoIiwicmljaFRleHQiOnsiZGF0YSI6W3siY2hhciI6Ik0ifSx7ImNoYXIiOiJWIn0seyJjaGFyIjoiViJ9LHsiY2hhciI6Ik0ifSx7ImNoYXIiOiLkvZwifSx7ImNoYXIiOiLkuLoifSx7ImNoYXIiOiLmlbAifSx7ImNoYXIiOiLmja4ifSx7ImNoYXIiOiLnu5EifSx7ImNoYXIiOiLlrpoifSx7ImNoYXIiOiLnmoQifSx7ImNoYXIiOiLlhaUifSx7ImNoYXIiOiLlj6MifSx7ImNoYXIiOiLvvIwifSx7ImNoYXIiOiLmlbQifSx7ImNoYXIiOiLlkIgifSx7ImNoYXIiOiJPIn0seyJjaGFyIjoiYiJ9LHsiY2hhciI6InMifSx7ImNoYXIiOiJlIn0seyJjaGFyIjoiciJ9LHsiY2hhciI6InYifSx7ImNoYXIiOiJlIn0seyJjaGFyIjoiciJ9LHsiY2hhciI6IuOAgSJ9LHsiY2hhciI6IkMifSx7ImNoYXIiOiJvIn0seyJjaGFyIjoibSJ9LHsiY2hhciI6InAifSx7ImNoYXIiOiJpIn0seyJjaGFyIjoibCJ9LHsiY2hhciI6ImUifSx7ImNoYXIiOiLlkowifSx7ImNoYXIiOiJXIn0seyJjaGFyIjoiYSJ9LHsiY2hhciI6InQifSx7ImNoYXIiOiJjIn0seyJjaGFyIjoiaCJ9LHsiY2hhciI6ImUifSx7ImNoYXIiOiJyIn0seyJjaGFyIjoi5LiJIn0seyJjaGFyIjoi6ICFIn0seyJjaGFyIjoi77yMIn0seyJjaGFyIjoi6YCaIn0seyJjaGFyIjoi6L+HIn0seyJjaGFyIjoiTyJ9LHsiY2hhciI6ImIifSx7ImNoYXIiOiJzIn0seyJjaGFyIjoiZSJ9LHsiY2hhciI6InIifSx7ImNoYXIiOiJ2In0seyJjaGFyIjoiZSJ9LHsiY2hhciI6InIifSx7ImNoYXIiOiLmnaUifSx7ImNoYXIiOiLnm5EifSx7ImNoYXIiOiLlkKwifSx7ImNoYXIiOiLoh6oifSx7ImNoYXIiOiLlt7EifSx7ImNoYXIiOiLnmoQifSx7ImNoYXIiOiJtIn0seyJjaGFyIjoibyJ9LHsiY2hhciI6ImQifSx7ImNoYXIiOiJlIn0seyJjaGFyIjoibCJ9LHsiY2hhciI6IuaVsCJ9LHsiY2hhciI6IuaNriJ9LHsiY2hhciI6IuWPmCJ9LHsiY2hhciI6IuWMliJ9LHsiY2hhciI6Iu+8jCJ9LHsiY2hhciI6IumAmiJ9LHsiY2hhciI6Iui/hyJ9LHsiY2hhciI6IkMifSx7ImNoYXIiOiJvIn0seyJjaGFyIjoibSJ9LHsiY2hhciI6InAifSx7ImNoYXIiOiJpIn0seyJjaGFyIjoibCJ9LHsiY2hhciI6ImUifSx7ImNoYXIiOiLmnaUifSx7ImNoYXIiOiLop6MifSx7ImNoYXIiOiLmnpAifSx7ImNoYXIiOiLnvJYifSx7ImNoYXIiOiLor5EifSx7ImNoYXIiOiLmqKEifSx7ImNoYXIiOiLmnb8ifSx7ImNoYXIiOiLmjIcifSx7ImNoYXIiOiLku6QifSx7ImNoYXIiOiLvvIwifSx7ImNoYXIiOiLmnIAifSx7ImNoYXIiOiLnu4gifSx7ImNoYXIiOiLliKkifSx7ImNoYXIiOiLnlKgifSx7ImNoYXIiOiJXIn0seyJjaGFyIjoiYSJ9LHsiY2hhciI6InQifSx7ImNoYXIiOiJjIn0seyJjaGFyIjoiaCJ9LHsiY2hhciI6ImUifSx7ImNoYXIiOiJyIn0seyJjaGFyIjoi5pCtIn0seyJjaGFyIjoi6LW3In0seyJjaGFyIjoiTyJ9LHsiY2hhciI6ImIifSx7ImNoYXIiOiJzIn0seyJjaGFyIjoiZSJ9LHsiY2hhciI6InIifSx7ImNoYXIiOiJ2In0seyJjaGFyIjoiZSJ9LHsiY2hhciI6InIifSx7ImNoYXIiOiLlkowifSx7ImNoYXIiOiJDIn0seyJjaGFyIjoibyJ9LHsiY2hhciI6Im0ifSx7ImNoYXIiOiJwIn0seyJjaGFyIjoiaSJ9LHsiY2hhciI6ImwifSx7ImNoYXIiOiJlIn0seyJjaGFyIjoi5LmLIn0seyJjaGFyIjoi6Ze0In0seyJjaGFyIjoi55qEIn0seyJjaGFyIjoi6YCaIn0seyJjaGFyIjoi5L+hIn0seyJjaGFyIjoi5qGlIn0seyJjaGFyIjoi5qKBIn0seyJjaGFyIjoi77yMIn0seyJjaGFyIjoi6L6+In0seyJjaGFyIjoi5YiwIn0seyJjaGFyIjoi5pWwIn0seyJjaGFyIjoi5o2uIn0seyJjaGFyIjoi5Y+YIn0seyJjaGFyIjoi5YyWIn0seyJjaGFyIjoiICJ9LHsiY2hhciI6Ii0ifSx7ImNoYXIiOiI+In0seyJjaGFyIjoiICJ9LHsiY2hhciI6IuinhiJ9LHsiY2hhciI6IuWbviJ9LHsiY2hhciI6IuabtCJ9LHsiY2hhciI6IuaWsCJ9LHsiY2hhciI6Iu+8myJ9LHsiY2hhciI6IuinhiJ9LHsiY2hhciI6IuWbviJ9LHsiY2hhciI6IuS6pCJ9LHsiY2hhciI6IuS6kiJ9LHsiY2hhciI6IuWPmCJ9LHsiY2hhciI6IuWMliJ9LHsiY2hhciI6IigifSx7ImNoYXIiOiJpIn0seyJjaGFyIjoibiJ9LHsiY2hhciI6InAifSx7ImNoYXIiOiJ1In0seyJjaGFyIjoidCJ9LHsiY2hhciI6IikifSx7ImNoYXIiOiIgIn0seyJjaGFyIjoiLSJ9LHsiY2hhciI6Ij4ifSx7ImNoYXIiOiIgIn0seyJjaGFyIjoi5pWwIn0seyJjaGFyIjoi5o2uIn0seyJjaGFyIjoibSJ9LHsiY2hhciI6Im8ifSx7ImNoYXIiOiJkIn0seyJjaGFyIjoiZSJ9LHsiY2hhciI6ImwifSx7ImNoYXIiOiLlj5gifSx7ImNoYXIiOiLmm7QifSx7ImNoYXIiOiLnmoQifSx7ImNoYXIiOiLlj4wifSx7ImNoYXIiOiLlkJEifSx7ImNoYXIiOiLnu5EifSx7ImNoYXIiOiLlrpoifSx7ImNoYXIiOiLmlYgifSx7ImNoYXIiOiLmnpwifSx7ImNoYXIiOiLjgIIifV0sImlzUmljaFRleHQiOnRydWUsImtlZXBMaW5lQnJlYWsiOnRydWV9fSx7ImJsb2NrSWQiOiIyMDMxLTE1NTA2NTc5NTI3NDgiLCJibG9ja1R5cGUiOiJwYXJhZ3JhcGgiLCJzdHlsZXMiOnsiYWxpZ24iOiJsZWZ0IiwiaW5kZW50IjowLCJ0ZXh0LWluZGVudCI6MCwibGluZS1oZWlnaHQiOjEuNzUsImJhY2stY29sb3IiOiIiLCJwYWRkaW5nIjoiIn0sInR5cGUiOiJwYXJhZ3JhcGgiLCJyaWNoVGV4dCI6eyJkYXRhIjpbXSwiaXNSaWNoVGV4dCI6dHJ1ZSwia2VlcExpbmVCcmVhayI6dHJ1ZX19LHsiYmxvY2tJZCI6Ijk4NjctMTU1MDY1Nzk1Mjc0OCIsImJsb2NrVHlwZSI6InBhcmFncmFwaCIsInN0eWxlcyI6eyJhbGlnbiI6ImxlZnQiLCJpbmRlbnQiOjAsInRleHQtaW5kZW50IjowLCJsaW5lLWhlaWdodCI6MS43NSwiYmFjay1jb2xvciI6IiIsInBhZGRpbmciOiIifSwidHlwZSI6InBhcmFncmFwaCIsInJpY2hUZXh0Ijp7ImRhdGEiOlt7ImNoYXIiOiLkuIAifSx7ImNoYXIiOiLkuKoifSx7ImNoYXIiOiLnroAifSx7ImNoYXIiOiLljZUifSx7ImNoYXIiOiLnmoQifSx7ImNoYXIiOiJNIn0seyJjaGFyIjoiViJ9LHsiY2hhciI6IlYifSx7ImNoYXIiOiJNIn0seyJjaGFyIjoi5p6EIn0seyJjaGFyIjoi6YCgIn0seyJjaGFyIjoi5ZmoIn0seyJjaGFyIjoi5pivIn0seyJjaGFyIjoi6L+ZIn0seyJjaGFyIjoi5qC3In0seyJjaGFyIjoi5a2QIn0seyJjaGFyIjoi77yaIn1dLCJpc1JpY2hUZXh0Ijp0cnVlLCJrZWVwTGluZUJyZWFrIjp0cnVlfX1d
function MVVM(options) {
this.$options = options;
var data = this._data = this.$options.data;
observe(data, this);
this.$compile = new Compile(options.el || document.body, this)
}
但是这里有个问题,从代码中可看出监听的数据对象是options.data,每次需要更新视图,则必须通过var vm = new MVVM({data:{name: 'zhimeng'}}); vm._data.name = 'zhimeng520'; 这样的方式来改变数据。
显然不符合我们一开始的期望,我们所期望的调用方式应该是这样的:
var vm = new MVVM({data: {name: 'zhimeng'}}); vm.name = 'zhimeng520';
所以这里需要给MVVM实例添加一个属性代理的方法,使访问vm的属性代理为访问vm._data的属性,改造后的代码如下:
5f39ae17-8c62-4a45-bc43-b32064c9388a:W3siYmxvY2tJZCI6IjE5OTQtMTU1MDY1Nzk1Mjc1MCIsImJsb2NrVHlwZSI6InBhcmFncmFwaCIsInN0eWxlcyI6eyJhbGlnbiI6ImxlZnQiLCJpbmRlbnQiOjAsInRleHQtaW5kZW50IjowLCJsaW5lLWhlaWdodCI6MS43NSwiYmFjay1jb2xvciI6IiIsInBhZGRpbmciOiIifSwidHlwZSI6InBhcmFncmFwaCIsInJpY2hUZXh0Ijp7ImRhdGEiOlt7ImNoYXIiOiLmiYAifSx7ImNoYXIiOiLku6UifSx7ImNoYXIiOiLov5kifSx7ImNoYXIiOiLph4wifSx7ImNoYXIiOiLpnIAifSx7ImNoYXIiOiLopoEifSx7ImNoYXIiOiLnu5kifSx7ImNoYXIiOiJNIn0seyJjaGFyIjoiViJ9LHsiY2hhciI6IlYifSx7ImNoYXIiOiJNIn0seyJjaGFyIjoi5a6eIn0seyJjaGFyIjoi5L6LIn0seyJjaGFyIjoi5re7In0seyJjaGFyIjoi5YqgIn0seyJjaGFyIjoi5LiAIn0seyJjaGFyIjoi5LiqIn0seyJjaGFyIjoi5bGeIn0seyJjaGFyIjoi5oCnIn0seyJjaGFyIjoi5LujIn0seyJjaGFyIjoi55CGIn0seyJjaGFyIjoi55qEIn0seyJjaGFyIjoi5pa5In0seyJjaGFyIjoi5rOVIn0seyJjaGFyIjoi77yMIn0seyJjaGFyIjoi5L2/In0seyJjaGFyIjoi6K6/In0seyJjaGFyIjoi6ZeuIn0seyJjaGFyIjoidiJ9LHsiY2hhciI6Im0ifSx7ImNoYXIiOiLnmoQifSx7ImNoYXIiOiLlsZ4ifSx7ImNoYXIiOiLmgKcifSx7ImNoYXIiOiLku6MifSx7ImNoYXIiOiLnkIYifSx7ImNoYXIiOiLkuLoifSx7ImNoYXIiOiLorr8ifSx7ImNoYXIiOiLpl64ifSx7ImNoYXIiOiJ2In0seyJjaGFyIjoibSJ9LHsiY2hhciI6Ii4ifSx7ImNoYXIiOiJfIn0seyJjaGFyIjoiZCJ9LHsiY2hhciI6ImEifSx7ImNoYXIiOiJ0In0seyJjaGFyIjoiYSJ9LHsiY2hhciI6IueahCJ9LHsiY2hhciI6IuWxniJ9LHsiY2hhciI6IuaApyJ9LHsiY2hhciI6Iu+8jCJ9LHsiY2hhciI6IuaUuSJ9LHsiY2hhciI6IumAoCJ9LHsiY2hhciI6IuWQjiJ9LHsiY2hhciI6IueahCJ9LHsiY2hhciI6IuS7oyJ9LHsiY2hhciI6IueggSJ9LHsiY2hhciI6IuWmgiJ9LHsiY2hhciI6IuS4iyJ9LHsiY2hhciI6Iu+8miJ9XSwiaXNSaWNoVGV4dCI6dHJ1ZSwia2VlcExpbmVCcmVhayI6dHJ1ZX19XQ==
function MVVM(options) {
this.$options = options;
var data = this._data = this.$options.data, me = this;
// 属性代理,实现 vm.xxx -> vm._data.xxx
Object.keys(data).forEach(function(key) {
me._proxy(key);
});
observe(data, this);
this.$compile = new Compile(options.el || document.body, this)
}
MVVM.prototype = {
_proxy: function(key) {
var me = this;
Object.defineProperty(me, key, {
configurable: false,
enumerable: true,
get: function proxyGetter() {
return me._data[key];
},
set: function proxySetter(newVal) {
me._data[key] = newVal;
}
});
}
};
要围绕“几种实现双向绑定的做法”、“实现Observer”、“实现Compile”、“实现Watcher”、“实现MVVM”这几个模块来阐述了双向绑定的原理和实现。并根据思路流程渐进梳理讲解了一些细节思路和比较关键的内容点,以及通过展示部分关键代码讲述了怎样一步步实现一个双向绑定MVVM。
参考 https://github.com/DMQ/mvvm/blob
5f39ae17-8c62-4a45-bc43-b32064c9388a:W3siYmxvY2tJZCI6IjM5MTAtMTU1MDY1Nzk1Mjc0OSIsImJsb2NrVHlwZSI6InBhcmFncmFwaCIsInN0eWxlcyI6eyJhbGlnbiI6ImxlZnQiLCJpbmRlbnQiOjAsInRleHQtaW5kZW50IjowLCJsaW5lLWhlaWdodCI6MS43NSwiYmFjay1jb2xvciI6IiIsInBhZGRpbmciOiIifSwidHlwZSI6InBhcmFncmFwaCIsInJpY2hUZXh0Ijp7ImRhdGEiOlt7ImNoYXIiOiLkvYYifSx7ImNoYXIiOiLmmK8ifSx7ImNoYXIiOiLov5kifSx7ImNoYXIiOiLph4wifSx7ImNoYXIiOiLmnIkifSx7ImNoYXIiOiLkuKoifSx7ImNoYXIiOiLpl64ifSx7ImNoYXIiOiLpopgifSx7ImNoYXIiOiLvvIwifSx7ImNoYXIiOiLku44ifSx7ImNoYXIiOiLku6MifSx7ImNoYXIiOiLnoIEifSx7ImNoYXIiOiLkuK0ifSx7ImNoYXIiOiLlj68ifSx7ImNoYXIiOiLnnIsifSx7ImNoYXIiOiLlh7oifSx7ImNoYXIiOiLnm5EifSx7ImNoYXIiOiLlkKwifSx7ImNoYXIiOiLnmoQifSx7ImNoYXIiOiLmlbAifSx7ImNoYXIiOiLmja4ifSx7ImNoYXIiOiLlr7kifSx7ImNoYXIiOiLosaEifSx7ImNoYXIiOiLmmK8ifSx7ImNoYXIiOiJvIn0seyJjaGFyIjoicCJ9LHsiY2hhciI6InQifSx7ImNoYXIiOiJpIn0seyJjaGFyIjoibyJ9LHsiY2hhciI6Im4ifSx7ImNoYXIiOiJzIn0seyJjaGFyIjoiLiJ9LHsiY2hhciI6ImQifSx7ImNoYXIiOiJhIn0seyJjaGFyIjoidCJ9LHsiY2hhciI6ImEifSx7ImNoYXIiOiLvvIwifSx7ImNoYXIiOiLmr48ifSx7ImNoYXIiOiLmrKEifSx7ImNoYXIiOiLpnIAifSx7ImNoYXIiOiLopoEifSx7ImNoYXIiOiLmm7QifSx7ImNoYXIiOiLmlrAifSx7ImNoYXIiOiLop4YifSx7ImNoYXIiOiLlm74ifSx7ImNoYXIiOiLvvIwifSx7ImNoYXIiOiLliJkifSx7ImNoYXIiOiLlv4UifSx7ImNoYXIiOiLpobsifSx7ImNoYXIiOiLpgJoifSx7ImNoYXIiOiLov4cifSx7ImNoYXIiOiJ2In0seyJjaGFyIjoiYSJ9LHsiY2hhciI6InIifSx7ImNoYXIiOiIgIn0seyJjaGFyIjoidiJ9LHsiY2hhciI6Im0ifSx7ImNoYXIiOiIgIn0seyJjaGFyIjoiPSJ9LHsiY2hhciI6IiAifSx7ImNoYXIiOiJuIn0seyJjaGFyIjoiZSJ9LHsiY2hhciI6IncifSx7ImNoYXIiOiIgIn0seyJjaGFyIjoiTSJ9LHsiY2hhciI6IlYifSx7ImNoYXIiOiJWIn0seyJjaGFyIjoiTSJ9LHsiY2hhciI6IigifSx7ImNoYXIiOiJ7In0seyJjaGFyIjoiZCJ9LHsiY2hhciI6ImEifSx7ImNoYXIiOiJ0In0seyJjaGFyIjoiYSJ9LHsiY2hhciI6IjoifSx7ImNoYXIiOiJ7In0seyJjaGFyIjoibiJ9LHsiY2hhciI6ImEifSx7ImNoYXIiOiJtIn0seyJjaGFyIjoiZSJ9LHsiY2hhciI6IjoifSx7ImNoYXIiOiIgIn0seyJjaGFyIjoiJyJ9LHsiY2hhciI6ImsifSx7ImNoYXIiOiJpIn0seyJjaGFyIjoibiJ9LHsiY2hhciI6ImQifSx7ImNoYXIiOiJlIn0seyJjaGFyIjoibiJ9LHsiY2hhciI6ImcifSx7ImNoYXIiOiInIn0seyJjaGFyIjoifSJ9LHsiY2hhciI6In0ifSx7ImNoYXIiOiIpIn0seyJjaGFyIjoiOyJ9LHsiY2hhciI6IiAifSx7ImNoYXIiOiJ2In0seyJjaGFyIjoibSJ9LHsiY2hhciI6Ii4ifSx7ImNoYXIiOiJfIn0seyJjaGFyIjoiZCJ9LHsiY2hhciI6ImEifSx7ImNoYXIiOiJ0In0seyJjaGFyIjoiYSJ9LHsiY2hhciI6Ii4ifSx7ImNoYXIiOiJuIn0seyJjaGFyIjoiYSJ9LHsiY2hhciI6Im0ifSx7ImNoYXIiOiJlIn0seyJjaGFyIjoiICJ9LHsiY2hhciI6Ij0ifSx7ImNoYXIiOiIgIn0seyJjaGFyIjoiJyJ9LHsiY2hhciI6ImQifSx7ImNoYXIiOiJtIn0seyJjaGFyIjoicSJ9LHsiY2hhciI6IicifSx7ImNoYXIiOiI7In0seyJjaGFyIjoiICJ9LHsiY2hhciI6Iui/mSJ9LHsiY2hhciI6IuagtyJ9LHsiY2hhciI6IueahCJ9LHsiY2hhciI6IuaWuSJ9LHsiY2hhciI6IuW8jyJ9LHsiY2hhciI6IuadpSJ9LHsiY2hhciI6IuaUuSJ9LHsiY2hhciI6IuWPmCJ9LHsiY2hhciI6IuaVsCJ9LHsiY2hhciI6IuaNriJ9LHsiY2hhciI6IuOAgiJ9XSwiaXNSaWNoVGV4dCI6dHJ1ZSwia2VlcExpbmVCcmVhayI6dHJ1ZX19LHsiYmxvY2tJZCI6IjMxOTQtMTU1MDY1Nzk1Mjc0OSIsImJsb2NrVHlwZSI6InBhcmFncmFwaCIsInN0eWxlcyI6eyJhbGlnbiI6ImxlZnQiLCJpbmRlbnQiOjAsInRleHQtaW5kZW50IjowLCJsaW5lLWhlaWdodCI6MS43NSwiYmFjay1jb2xvciI6IiIsInBhZGRpbmciOiIifSwidHlwZSI6InBhcmFncmFwaCIsInJpY2hUZXh0Ijp7ImRhdGEiOltdLCJpc1JpY2hUZXh0Ijp0cnVlLCJrZWVwTGluZUJyZWFrIjp0cnVlfX0seyJibG9ja0lkIjoiOTgyOS0xNTUwNjU3OTUyNzQ5IiwiYmxvY2tUeXBlIjoicGFyYWdyYXBoIiwic3R5bGVzIjp7ImFsaWduIjoibGVmdCIsImluZGVudCI6MCwidGV4dC1pbmRlbnQiOjAsImxpbmUtaGVpZ2h0IjoxLjc1LCJiYWNrLWNvbG9yIjoiIiwicGFkZGluZyI6IiJ9LCJ0eXBlIjoicGFyYWdyYXBoIiwicmljaFRleHQiOnsiZGF0YSI6W3siY2hhciI6IuaYviJ9LHsiY2hhciI6IueEtiJ9LHsiY2hhciI6IuS4jSJ9LHsiY2hhciI6IuespiJ9LHsiY2hhciI6IuWQiCJ9LHsiY2hhciI6IuaIkSJ9LHsiY2hhciI6IuS7rCJ9LHsiY2hhciI6IuS4gCJ9LHsiY2hhciI6IuW8gCJ9LHsiY2hhciI6IuWniyJ9LHsiY2hhciI6IueahCJ9LHsiY2hhciI6IuacnyJ9LHsiY2hhciI6IuacmyJ9LHsiY2hhciI6Iu+8jCJ9LHsiY2hhciI6IuaIkSJ9LHsiY2hhciI6IuS7rCJ9LHsiY2hhciI6IuaJgCJ9LHsiY2hhciI6IuacnyJ9LHsiY2hhciI6IuacmyJ9LHsiY2hhciI6IueahCJ9LHsiY2hhciI6IuiwgyJ9LHsiY2hhciI6IueUqCJ9LHsiY2hhciI6IuaWuSJ9LHsiY2hhciI6IuW8jyJ9LHsiY2hhciI6IuW6lCJ9LHsiY2hhciI6IuivpSJ9LHsiY2hhciI6IuaYryJ9LHsiY2hhciI6Iui/mSJ9LHsiY2hhciI6IuagtyJ9LHsiY2hhciI6IueahCJ9LHsiY2hhciI6Iu+8miJ9XSwiaXNSaWNoVGV4dCI6dHJ1ZSwia2VlcExpbmVCcmVhayI6dHJ1ZX19XQ==
5f39ae17-8c62-4a45-bc43-b32064c9388a:W3siYmxvY2tJZCI6IjE2NDYtMTU1MDY1Nzk1Mjc0OCIsImJsb2NrVHlwZSI6InBhcmFncmFwaCIsInN0eWxlcyI6eyJhbGlnbiI6ImxlZnQiLCJpbmRlbnQiOjAsInRleHQtaW5kZW50IjowLCJsaW5lLWhlaWdodCI6MS43NSwiYmFjay1jb2xvciI6IiIsInBhZGRpbmciOiIifSwidHlwZSI6InBhcmFncmFwaCIsInJpY2hUZXh0Ijp7ImRhdGEiOlt7ImNoYXIiOiLln7oifSx7ImNoYXIiOiLmnKwifSx7ImNoYXIiOiLkuIoifSx7ImNoYXIiOiJ2In0seyJjaGFyIjoidSJ9LHsiY2hhciI6ImUifSx7ImNoYXIiOiLkuK0ifSx7ImNoYXIiOiLmlbAifSx7ImNoYXIiOiLmja4ifSx7ImNoYXIiOiLnu5EifSx7ImNoYXIiOiLlrpoifSx7ImNoYXIiOiLnm7gifSx7ImNoYXIiOiLlhbMifSx7ImNoYXIiOiLmr5QifSx7ImNoYXIiOiLovoMifSx7ImNoYXIiOiLmoLgifSx7ImNoYXIiOiLlv4MifSx7ImNoYXIiOiLnmoQifSx7ImNoYXIiOiLlh6AifSx7ImNoYXIiOiLkuKoifSx7ImNoYXIiOiLmqKEifSx7ImNoYXIiOiLlnZcifSx7ImNoYXIiOiLkuZ8ifSx7ImNoYXIiOiLmmK8ifSx7ImNoYXIiOiLov5kifSx7ImNoYXIiOiLlh6AifSx7ImNoYXIiOiLkuKoifSx7ImNoYXIiOiLvvIwifSx7ImNoYXIiOiLnjJsifSx7ImNoYXIiOiLmiLMifSx7ImNoYXIiOiLov5kifSx7ImNoYXIiOiLph4wifSx7ImNoYXIiOiIgIn0seyJjaGFyIjoiaCIsInN0eWxlcyI6eyJ1bmRlcmxpbmUiOnRydWUsImNvbG9yIjoiIzAwMzg4NCIsImhyZWYiOiJodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVlIn19LHsiY2hhciI6InQiLCJzdHlsZXMiOnsidW5kZXJsaW5lIjp0cnVlLCJjb2xvciI6IiMwMDM4ODQiLCJocmVmIjoiaHR0cHM6Ly9naXRodWIuY29tL3Z1ZWpzL3Z1ZSJ9fSx7ImNoYXIiOiJ0Iiwic3R5bGVzIjp7InVuZGVybGluZSI6dHJ1ZSwiY29sb3IiOiIjMDAzODg0IiwiaHJlZiI6Imh0dHBzOi8vZ2l0aHViLmNvbS92dWVqcy92dWUifX0seyJjaGFyIjoicCIsInN0eWxlcyI6eyJ1bmRlcmxpbmUiOnRydWUsImNvbG9yIjoiIzAwMzg4NCIsImhyZWYiOiJodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVlIn19LHsiY2hhciI6InMiLCJzdHlsZXMiOnsidW5kZXJsaW5lIjp0cnVlLCJjb2xvciI6IiMwMDM4ODQiLCJocmVmIjoiaHR0cHM6Ly9naXRodWIuY29tL3Z1ZWpzL3Z1ZSJ9fSx7ImNoYXIiOiI6Iiwic3R5bGVzIjp7InVuZGVybGluZSI6dHJ1ZSwiY29sb3IiOiIjMDAzODg0IiwiaHJlZiI6Imh0dHBzOi8vZ2l0aHViLmNvbS92dWVqcy92dWUifX0seyJjaGFyIjoiLyIsInN0eWxlcyI6eyJ1bmRlcmxpbmUiOnRydWUsImNvbG9yIjoiIzAwMzg4NCIsImhyZWYiOiJodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVlIn19LHsiY2hhciI6Ii8iLCJzdHlsZXMiOnsidW5kZXJsaW5lIjp0cnVlLCJjb2xvciI6IiMwMDM4ODQiLCJocmVmIjoiaHR0cHM6Ly9naXRodWIuY29tL3Z1ZWpzL3Z1ZSJ9fSx7ImNoYXIiOiJnIiwic3R5bGVzIjp7InVuZGVybGluZSI6dHJ1ZSwiY29sb3IiOiIjMDAzODg0IiwiaHJlZiI6Imh0dHBzOi8vZ2l0aHViLmNvbS92dWVqcy92dWUifX0seyJjaGFyIjoiaSIsInN0eWxlcyI6eyJ1bmRlcmxpbmUiOnRydWUsImNvbG9yIjoiIzAwMzg4NCIsImhyZWYiOiJodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVlIn19LHsiY2hhciI6InQiLCJzdHlsZXMiOnsidW5kZXJsaW5lIjp0cnVlLCJjb2xvciI6IiMwMDM4ODQiLCJocmVmIjoiaHR0cHM6Ly9naXRodWIuY29tL3Z1ZWpzL3Z1ZSJ9fSx7ImNoYXIiOiJoIiwic3R5bGVzIjp7InVuZGVybGluZSI6dHJ1ZSwiY29sb3IiOiIjMDAzODg0IiwiaHJlZiI6Imh0dHBzOi8vZ2l0aHViLmNvbS92dWVqcy92dWUifX0seyJjaGFyIjoidSIsInN0eWxlcyI6eyJ1bmRlcmxpbmUiOnRydWUsImNvbG9yIjoiIzAwMzg4NCIsImhyZWYiOiJodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVlIn19LHsiY2hhciI6ImIiLCJzdHlsZXMiOnsidW5kZXJsaW5lIjp0cnVlLCJjb2xvciI6IiMwMDM4ODQiLCJocmVmIjoiaHR0cHM6Ly9naXRodWIuY29tL3Z1ZWpzL3Z1ZSJ9fSx7ImNoYXIiOiIuIiwic3R5bGVzIjp7InVuZGVybGluZSI6dHJ1ZSwiY29sb3IiOiIjMDAzODg0IiwiaHJlZiI6Imh0dHBzOi8vZ2l0aHViLmNvbS92dWVqcy92dWUifX0seyJjaGFyIjoiYyIsInN0eWxlcyI6eyJ1bmRlcmxpbmUiOnRydWUsImNvbG9yIjoiIzAwMzg4NCIsImhyZWYiOiJodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVlIn19LHsiY2hhciI6Im8iLCJzdHlsZXMiOnsidW5kZXJsaW5lIjp0cnVlLCJjb2xvciI6IiMwMDM4ODQiLCJocmVmIjoiaHR0cHM6Ly9naXRodWIuY29tL3Z1ZWpzL3Z1ZSJ9fSx7ImNoYXIiOiJtIiwic3R5bGVzIjp7InVuZGVybGluZSI6dHJ1ZSwiY29sb3IiOiIjMDAzODg0IiwiaHJlZiI6Imh0dHBzOi8vZ2l0aHViLmNvbS92dWVqcy92dWUifX0seyJjaGFyIjoiLyIsInN0eWxlcyI6eyJ1bmRlcmxpbmUiOnRydWUsImNvbG9yIjoiIzAwMzg4NCIsImhyZWYiOiJodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVlIn19LHsiY2hhciI6InYiLCJzdHlsZXMiOnsidW5kZXJsaW5lIjp0cnVlLCJjb2xvciI6IiMwMDM4ODQiLCJocmVmIjoiaHR0cHM6Ly9naXRodWIuY29tL3Z1ZWpzL3Z1ZSJ9fSx7ImNoYXIiOiJ1Iiwic3R5bGVzIjp7InVuZGVybGluZSI6dHJ1ZSwiY29sb3IiOiIjMDAzODg0IiwiaHJlZiI6Imh0dHBzOi8vZ2l0aHViLmNvbS92dWVqcy92dWUifX0seyJjaGFyIjoiZSIsInN0eWxlcyI6eyJ1bmRlcmxpbmUiOnRydWUsImNvbG9yIjoiIzAwMzg4NCIsImhyZWYiOiJodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVlIn19LHsiY2hhciI6ImoiLCJzdHlsZXMiOnsidW5kZXJsaW5lIjp0cnVlLCJjb2xvciI6IiMwMDM4ODQiLCJocmVmIjoiaHR0cHM6Ly9naXRodWIuY29tL3Z1ZWpzL3Z1ZSJ9fSx7ImNoYXIiOiJzIiwic3R5bGVzIjp7InVuZGVybGluZSI6dHJ1ZSwiY29sb3IiOiIjMDAzODg0IiwiaHJlZiI6Imh0dHBzOi8vZ2l0aHViLmNvbS92dWVqcy92dWUifX0seyJjaGFyIjoiLyIsInN0eWxlcyI6eyJ1bmRlcmxpbmUiOnRydWUsImNvbG9yIjoiIzAwMzg4NCIsImhyZWYiOiJodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVlIn19LHsiY2hhciI6InYiLCJzdHlsZXMiOnsidW5kZXJsaW5lIjp0cnVlLCJjb2xvciI6IiMwMDM4ODQiLCJocmVmIjoiaHR0cHM6Ly9naXRodWIuY29tL3Z1ZWpzL3Z1ZSJ9fSx7ImNoYXIiOiJ1Iiwic3R5bGVzIjp7InVuZGVybGluZSI6dHJ1ZSwiY29sb3IiOiIjMDAzODg0IiwiaHJlZiI6Imh0dHBzOi8vZ2l0aHViLmNvbS92dWVqcy92dWUifX0seyJjaGFyIjoiZSIsInN0eWxlcyI6eyJ1bmRlcmxpbmUiOnRydWUsImNvbG9yIjoiIzAwMzg4NCIsImhyZWYiOiJodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVlIn19LHsiY2hhciI6IiAifSx7ImNoYXIiOiLlnKgifSx7ImNoYXIiOiJzIn0seyJjaGFyIjoiciJ9LHsiY2hhciI6ImMifSx7ImNoYXIiOiIgIn0seyJjaGFyIjoi55uuIn0seyJjaGFyIjoi5b2VIn0seyJjaGFyIjoi5Y+vIn0seyJjaGFyIjoi5om+In0seyJjaGFyIjoi5YiwIn0seyJjaGFyIjoidiJ9LHsiY2hhciI6InUifSx7ImNoYXIiOiJlIn0seyJjaGFyIjoi5rqQIn0seyJjaGFyIjoi56CBIn0seyJjaGFyIjoi44CCIn1dLCJpc1JpY2hUZXh0Ijp0cnVlLCJrZWVwTGluZUJyZWFrIjp0cnVlfX1d
5f39ae17-8c62-4a45-bc43-b32064c9388a:W3siYmxvY2tJZCI6IjY5OTktMTU1MDY1Nzk1Mjc0NyIsImJsb2NrVHlwZSI6InBhcmFncmFwaCIsInN0eWxlcyI6eyJhbGlnbiI6ImxlZnQiLCJpbmRlbnQiOjAsInRleHQtaW5kZW50IjowLCJsaW5lLWhlaWdodCI6MS43NSwiYmFjay1jb2xvciI6IiIsInBhZGRpbmciOiIifSwidHlwZSI6InBhcmFncmFwaCIsInJpY2hUZXh0Ijp7ImRhdGEiOlt7ImNoYXIiOiLlrp4ifSx7ImNoYXIiOiLkvosifSx7ImNoYXIiOiLljJYifSx7ImNoYXIiOiJXIn0seyJjaGFyIjoiYSJ9LHsiY2hhciI6InQifSx7ImNoYXIiOiJjIn0seyJjaGFyIjoiaCJ9LHsiY2hhciI6ImUifSx7ImNoYXIiOiJyIn0seyJjaGFyIjoi55qEIn0seyJjaGFyIjoi5pe2In0seyJjaGFyIjoi5YCZIn0seyJjaGFyIjoi77yMIn0seyJjaGFyIjoi6LCDIn0seyJjaGFyIjoi55SoIn0seyJjaGFyIjoiZyJ9LHsiY2hhciI6ImUifSx7ImNoYXIiOiJ0In0seyJjaGFyIjoiKCJ9LHsiY2hhciI6IikifSx7ImNoYXIiOiLmlrkifSx7ImNoYXIiOiLms5UifSx7ImNoYXIiOiLvvIwifSx7ImNoYXIiOiLpgJoifSx7ImNoYXIiOiLov4cifSx7ImNoYXIiOiJEIn0seyJjaGFyIjoiZSJ9LHsiY2hhciI6InAifSx7ImNoYXIiOiIuIn0seyJjaGFyIjoidCJ9LHsiY2hhciI6ImEifSx7ImNoYXIiOiJyIn0seyJjaGFyIjoiZyJ9LHsiY2hhciI6ImUifSx7ImNoYXIiOiJ0In0seyJjaGFyIjoiICJ9LHsiY2hhciI6Ij0ifSx7ImNoYXIiOiIgIn0seyJjaGFyIjoidyJ9LHsiY2hhciI6ImEifSx7ImNoYXIiOiJ0In0seyJjaGFyIjoiYyJ9LHsiY2hhciI6ImgifSx7ImNoYXIiOiJlIn0seyJjaGFyIjoiciJ9LHsiY2hhciI6IkkifSx7ImNoYXIiOiJuIn0seyJjaGFyIjoicyJ9LHsiY2hhciI6InQifSx7ImNoYXIiOiJhIn0seyJjaGFyIjoibiJ9LHsiY2hhciI6ImMifSx7ImNoYXIiOiJlIn0seyJjaGFyIjoi5qCHIn0seyJjaGFyIjoi6K6wIn0seyJjaGFyIjoi6K6iIn0seyJjaGFyIjoi6ZiFIn0seyJjaGFyIjoi6ICFIn0seyJjaGFyIjoi5pivIn0seyJjaGFyIjoi5b2TIn0seyJjaGFyIjoi5YmNIn0seyJjaGFyIjoidyJ9LHsiY2hhciI6ImEifSx7ImNoYXIiOiJ0In0seyJjaGFyIjoiYyJ9LHsiY2hhciI6ImgifSx7ImNoYXIiOiJlIn0seyJjaGFyIjoiciJ9LHsiY2hhciI6IuWuniJ9LHsiY2hhciI6IuS+iyJ9LHsiY2hhciI6Iu+8jCJ9LHsiY2hhciI6IuW8uiJ9LHsiY2hhciI6IuihjCJ9LHsiY2hhciI6IuinpiJ9LHsiY2hhciI6IuWPkSJ9LHsiY2hhciI6IuWxniJ9LHsiY2hhciI6IuaApyJ9LHsiY2hhciI6IuWumiJ9LHsiY2hhciI6IuS5iSJ9LHsiY2hhciI6IueahCJ9LHsiY2hhciI6ImcifSx7ImNoYXIiOiJlIn0seyJjaGFyIjoidCJ9LHsiY2hhciI6InQifSx7ImNoYXIiOiJlIn0seyJjaGFyIjoiciJ9LHsiY2hhciI6IuaWuSJ9LHsiY2hhciI6IuazlSJ9LHsiY2hhciI6Iu+8jCJ9LHsiY2hhciI6ImcifSx7ImNoYXIiOiJlIn0seyJjaGFyIjoidCJ9LHsiY2hhciI6InQifSx7ImNoYXIiOiJlIn0seyJjaGFyIjoiciJ9LHsiY2hhciI6IuaWuSJ9LHsiY2hhciI6IuazlSJ9LHsiY2hhciI6IuaJpyJ9LHsiY2hhciI6IuihjCJ9LHsiY2hhciI6IueahCJ9LHsiY2hhciI6IuaXtiJ9LHsiY2hhciI6IuWAmSJ9LHsiY2hhciI6Iu+8jCJ9LHsiY2hhciI6IuWwsSJ9LHsiY2hhciI6IuS8miJ9LHsiY2hhciI6IuWcqCJ9LHsiY2hhciI6IuWxniJ9LHsiY2hhciI6IuaApyJ9LHsiY2hhciI6IueahCJ9LHsiY2hhciI6IuiuoiJ9LHsiY2hhciI6IumYhSJ9LHsiY2hhciI6IuWZqCJ9LHsiY2hhciI6ImQifSx7ImNoYXIiOiJlIn0seyJjaGFyIjoicCJ9LHsiY2hhciI6Iua3uyJ9LHsiY2hhciI6IuWKoCJ9LHsiY2hhciI6IuW9kyJ9LHsiY2hhciI6IuWJjSJ9LHsiY2hhciI6IncifSx7ImNoYXIiOiJhIn0seyJjaGFyIjoidCJ9LHsiY2hhciI6ImMifSx7ImNoYXIiOiJoIn0seyJjaGFyIjoiZSJ9LHsiY2hhciI6InIifSx7ImNoYXIiOiLlrp4ifSx7ImNoYXIiOiLkvosifSx7ImNoYXIiOiLvvIwifSx7ImNoYXIiOiLku44ifSx7ImNoYXIiOiLogIwifSx7ImNoYXIiOiLlnKgifSx7ImNoYXIiOiLlsZ4ifSx7ImNoYXIiOiLmgKcifSx7ImNoYXIiOiLlgLwifSx7ImNoYXIiOiLmnIkifSx7ImNoYXIiOiLlj5gifSx7ImNoYXIiOiLljJYifSx7ImNoYXIiOiLnmoQifSx7ImNoYXIiOiLml7YifSx7ImNoYXIiOiLlgJkifSx7ImNoYXIiOiLvvIwifSx7ImNoYXIiOiJ3In0seyJjaGFyIjoiYSJ9LHsiY2hhciI6InQifSx7ImNoYXIiOiJjIn0seyJjaGFyIjoiaCJ9LHsiY2hhciI6ImUifSx7ImNoYXIiOiJyIn0seyJjaGFyIjoiSSJ9LHsiY2hhciI6Im4ifSx7ImNoYXIiOiJzIn0seyJjaGFyIjoidCJ9LHsiY2hhciI6ImEifSx7ImNoYXIiOiJuIn0seyJjaGFyIjoiYyJ9LHsiY2hhciI6ImUifSx7ImNoYXIiOiLlsLEifSx7ImNoYXIiOiLog70ifSx7ImNoYXIiOiLmlLYifSx7ImNoYXIiOiLliLAifSx7ImNoYXIiOiLmm7QifSx7ImNoYXIiOiLmlrAifSx7ImNoYXIiOiLpgJoifSx7ImNoYXIiOiLnn6UifSx7ImNoYXIiOiLjgIIifV0sImlzUmljaFRleHQiOnRydWUsImtlZXBMaW5lQnJlYWsiOnRydWV9fSx7ImJsb2NrSWQiOiI5Mjg2LTE1NTA2NTc5NTI3NDgiLCJibG9ja1R5cGUiOiJwYXJhZ3JhcGgiLCJzdHlsZXMiOnsiYWxpZ24iOiJsZWZ0IiwiaW5kZW50IjowLCJ0ZXh0LWluZGVudCI6MCwibGluZS1oZWlnaHQiOjEuNzUsImJhY2stY29sb3IiOiIiLCJwYWRkaW5nIjoiIn0sInR5cGUiOiJwYXJhZ3JhcGgiLCJyaWNoVGV4dCI6eyJkYXRhIjpbXSwiaXNSaWNoVGV4dCI6dHJ1ZSwia2VlcExpbmVCcmVhayI6dHJ1ZX19LHsiYmxvY2tJZCI6IjkzNTgtMTU1MDY1Nzk1Mjc0OCIsImJsb2NrVHlwZSI6InBhcmFncmFwaCIsInN0eWxlcyI6eyJhbGlnbiI6ImxlZnQiLCJpbmRlbnQiOjAsInRleHQtaW5kZW50IjowLCJsaW5lLWhlaWdodCI6MS43NSwiYmFjay1jb2xvciI6IiIsInBhZGRpbmciOiIifSwidHlwZSI6InBhcmFncmFwaCIsInJpY2hUZXh0Ijp7ImRhdGEiOlt7ImNoYXIiOiJvIn0seyJjaGFyIjoiayJ9LHsiY2hhciI6IiwifSx7ImNoYXIiOiIgIn0seyJjaGFyIjoiVyJ9LHsiY2hhciI6ImEifSx7ImNoYXIiOiJ0In0seyJjaGFyIjoiYyJ9LHsiY2hhciI6ImgifSx7ImNoYXIiOiJlIn0seyJjaGFyIjoiciJ9LHsiY2hhciI6IuS5nyJ9LHsiY2hhciI6IuW3siJ9LHsiY2hhciI6Iue7jyJ9LHsiY2hhciI6IuWuniJ9LHsiY2hhciI6IueOsCJ9LHsiY2hhciI6IuS6hiJ9LHsiY2hhciI6Iu+8jCJ9LHsiY2hhciI6IuWujCJ9LHsiY2hhciI6IuaVtCJ9LHsiY2hhciI6IuS7oyJ9LHsiY2hhciI6IueggSJ9XSwiaXNSaWNoVGV4dCI6dHJ1ZSwia2VlcExpbmVCcmVhayI6dHJ1ZX19XQ==
5f39ae17-8c62-4a45-bc43-b32064c9388a:W3siYmxvY2tJZCI6Ijk5NTMtMTU1MDY1Nzg0NDQ2NyIsImJsb2NrVHlwZSI6InBhcmFncmFwaCIsInN0eWxlcyI6eyJsaW5lLWhlaWdodCI6MS4yLCJhbGlnbiI6ImxlZnQiLCJpbmRlbnQiOjAsInRleHQtaW5kZW50IjowLCJiYWNrLWNvbG9yIjoiIiwicGFkZGluZyI6IiJ9LCJ0eXBlIjoicGFyYWdyYXBoIiwicmljaFRleHQiOnsiZGF0YSI6W3siY2hhciI6IjIiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoyMSwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi44CBIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MjEsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWuniIsInN0eWxlcyI6eyJmb250LXNpemUiOjIxLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLnjrAiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoyMSwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoiQyIsInN0eWxlcyI6eyJmb250LXNpemUiOjIxLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJvIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MjEsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Im0iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoyMSwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoicCIsInN0eWxlcyI6eyJmb250LXNpemUiOjIxLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJpIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MjEsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6ImwiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoyMSwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoiZSIsInN0eWxlcyI6eyJmb250LXNpemUiOjIxLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fV0sImlzUmljaFRleHQiOnRydWUsImtlZXBMaW5lQnJlYWsiOnRydWV9fSx7ImJsb2NrSWQiOiIyOTQzLTE1NTA2NTc4NDQ3NTMiLCJibG9ja1R5cGUiOiJwYXJhZ3JhcGgiLCJzdHlsZXMiOnsibGluZS1oZWlnaHQiOjEuNjI1LCJhbGlnbiI6ImxlZnQiLCJpbmRlbnQiOjAsInRleHQtaW5kZW50IjowLCJiYWNrLWNvbG9yIjoiIiwicGFkZGluZyI6IiJ9LCJ0eXBlIjoicGFyYWdyYXBoIiwicmljaFRleHQiOnsiZGF0YSI6W3siY2hhciI6ImMiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoibyIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJtIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6InAiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoiaSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJsIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6ImUiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5Li7Iiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuimgSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlgZoiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi55qEIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuS6iyIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmg4UiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5pivIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuinoyIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmnpAiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5qihIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuadvyIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmjIciLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5LukIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Iu+8jCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlsIYiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5qihIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuadvyIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLkuK0iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi55qEIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWPmCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLph48iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5pu/Iiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaNoiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmiJAiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5pWwIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaNriIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLvvIwiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi54S2Iiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWQjiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLliJ0iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5aeLIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWMliIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmuLIiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5p+TIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IumhtSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLpnaIiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6KeGIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWbviIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLvvIwiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5bm2Iiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWwhiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmr48iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5LiqIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaMhyIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLku6QiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5a+5Iiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuW6lCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLnmoQiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6IqCIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IueCuSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLnu5EiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5a6aIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuabtCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmlrAiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5Ye9Iiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaVsCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLvvIwiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5re7Iiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWKoCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLnm5EiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5ZCsIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaVsCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmja4iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi55qEIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuiuoiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLpmIUiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6ICFIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Iu+8jCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLkuIAiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5pemIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaVsCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmja4iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5pyJIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWPmCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLliqgiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi77yMIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaUtiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLliLAiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6YCaIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuefpSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLvvIwiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5pu0Iiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaWsCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLop4YiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5Zu+Iiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Iu+8jCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlpoIiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5Zu+Iiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaJgCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLnpLoiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi77yaIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19XSwiaXNSaWNoVGV4dCI6dHJ1ZSwia2VlcExpbmVCcmVhayI6dHJ1ZX19LHsiYmxvY2tJZCI6IjgwMTEtMTU1MDY1Nzg2NDI0NyIsImJsb2NrVHlwZSI6InBhcmFncmFwaCIsInN0eWxlcyI6eyJsaW5lLWhlaWdodCI6MS42MjUsImFsaWduIjoibGVmdCIsImluZGVudCI6MCwidGV4dC1pbmRlbnQiOjAsImJhY2stY29sb3IiOiIiLCJwYWRkaW5nIjoiIn0sInR5cGUiOiJwYXJhZ3JhcGgiLCJyaWNoVGV4dCI6eyJkYXRhIjpbXSwiaXNSaWNoVGV4dCI6dHJ1ZSwia2VlcExpbmVCcmVhayI6dHJ1ZX19LHsiYmxvY2tJZCI6IjUwMzItMTU1MDY1Nzg2NTE5OCIsImJsb2NrVHlwZSI6InBhcmFncmFwaCIsInN0eWxlcyI6eyJsaW5lLWhlaWdodCI6MS42MjUsImFsaWduIjoibGVmdCIsImluZGVudCI6MCwidGV4dC1pbmRlbnQiOjAsImJhY2stY29sb3IiOiIiLCJwYWRkaW5nIjoiIn0sInR5cGUiOiJwYXJhZ3JhcGgiLCJyaWNoVGV4dCI6eyJkYXRhIjpbeyJjaGFyIjoi5ZugIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuS4uiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLpgY0iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5Y6GIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuinoyIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmnpAiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi55qEIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Iui/hyIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLnqIsiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5pyJIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWkmiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmrKEiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5pONIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuS9nCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJkIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Im8iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoibSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLoioIiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi54K5Iiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Iu+8jCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLkuLoiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5o+QIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IumrmCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmgKciLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6IO9Iiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWSjCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmlYgiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi546HIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Iu+8jCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLkvJoiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5YWIIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWwhiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLot58iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6IqCIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IueCuSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJlIiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJmb250LXNpemUiOjEzLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJsIiwic3R5bGVzIjp7ImZvbnQtZmFtaWx5IjoiQ291cmllciBOZXciLCJmb250LXNpemUiOjEzLCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLovawiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5o2iIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaIkCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmlociLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5qGjIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IueijiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLniYciLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoiZiIsInN0eWxlcyI6eyJmb250LWZhbWlseSI6IkNvdXJpZXIgTmV3IiwiZm9udC1zaXplIjoxMywiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoiciIsInN0eWxlcyI6eyJmb250LWZhbWlseSI6IkNvdXJpZXIgTmV3IiwiZm9udC1zaXplIjoxMywiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoiYSIsInN0eWxlcyI6eyJmb250LWZhbWlseSI6IkNvdXJpZXIgTmV3IiwiZm9udC1zaXplIjoxMywiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoiZyIsInN0eWxlcyI6eyJmb250LWZhbWlseSI6IkNvdXJpZXIgTmV3IiwiZm9udC1zaXplIjoxMywiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoibSIsInN0eWxlcyI6eyJmb250LWZhbWlseSI6IkNvdXJpZXIgTmV3IiwiZm9udC1zaXplIjoxMywiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoiZSIsInN0eWxlcyI6eyJmb250LWZhbWlseSI6IkNvdXJpZXIgTmV3IiwiZm9udC1zaXplIjoxMywiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoibiIsInN0eWxlcyI6eyJmb250LWZhbWlseSI6IkNvdXJpZXIgTmV3IiwiZm9udC1zaXplIjoxMywiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoidCIsInN0eWxlcyI6eyJmb250LWZhbWlseSI6IkNvdXJpZXIgTmV3IiwiZm9udC1zaXplIjoxMywiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6L+bIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuihjCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLop6MiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5p6QIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Iue8liIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLor5EiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5pONIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuS9nCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLvvIwiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6KejIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaekCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlrowiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5oiQIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Iu+8jCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlho0iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5bCGIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6ImYiLCJzdHlsZXMiOnsiZm9udC1mYW1pbHkiOiJDb3VyaWVyIE5ldyIsImZvbnQtc2l6ZSI6MTMsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6InIiLCJzdHlsZXMiOnsiZm9udC1mYW1pbHkiOiJDb3VyaWVyIE5ldyIsImZvbnQtc2l6ZSI6MTMsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6ImEiLCJzdHlsZXMiOnsiZm9udC1mYW1pbHkiOiJDb3VyaWVyIE5ldyIsImZvbnQtc2l6ZSI6MTMsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6ImciLCJzdHlsZXMiOnsiZm9udC1mYW1pbHkiOiJDb3VyaWVyIE5ldyIsImZvbnQtc2l6ZSI6MTMsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Im0iLCJzdHlsZXMiOnsiZm9udC1mYW1pbHkiOiJDb3VyaWVyIE5ldyIsImZvbnQtc2l6ZSI6MTMsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6ImUiLCJzdHlsZXMiOnsiZm9udC1mYW1pbHkiOiJDb3VyaWVyIE5ldyIsImZvbnQtc2l6ZSI6MTMsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Im4iLCJzdHlsZXMiOnsiZm9udC1mYW1pbHkiOiJDb3VyaWVyIE5ldyIsImZvbnQtc2l6ZSI6MTMsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6InQiLCJzdHlsZXMiOnsiZm9udC1mYW1pbHkiOiJDb3VyaWVyIE5ldyIsImZvbnQtc2l6ZSI6MTMsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Iua3uyIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLliqAiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5ZueIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWOnyIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmnaUiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi55qEIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuecnyIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlrp4iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoiZCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJvIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Im0iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6IqCIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IueCuSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLkuK0iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX1dLCJpc1JpY2hUZXh0Ijp0cnVlLCJrZWVwTGluZUJyZWFrIjp0cnVlfX1d
5f39ae17-8c62-4a45-bc43-b32064c9388a:W3siYmxvY2tJZCI6IjQ1MjgtMTU1MDY1NzY4MDMzNCIsImJsb2NrVHlwZSI6InBhcmFncmFwaCIsInN0eWxlcyI6eyJhbGlnbiI6ImxlZnQiLCJpbmRlbnQiOjAsInRleHQtaW5kZW50IjowLCJsaW5lLWhlaWdodCI6MS43NSwiYmFjay1jb2xvciI6IiIsInBhZGRpbmciOiIifSwidHlwZSI6InBhcmFncmFwaCIsInJpY2hUZXh0Ijp7ImRhdGEiOlt7ImNoYXIiOiLov5kiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6YeMIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuW3siIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLnu48iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5a6eIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IueOsCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLkuoYiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5LiAIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuS4qiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJPIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6ImIiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoicyIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJlIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6InIiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoidiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJlIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6InIiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5LqGIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Iu+8jCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlt7IiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi57uPIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWFtyIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlpIciLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5LqGIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuebkSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlkKwiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5pWwIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaNriIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlkowiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5pWwIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaNriIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlj5giLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5YyWIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IumAmiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLnn6UiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6K6iIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IumYhSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLogIUiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi55qEIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWKnyIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLog70iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi77yMIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWujCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiMwMDlhNjEiLCJocmVmIjoiaHR0cHM6Ly9naXRodWIuY29tL0RNUS9tdnZtL2Jsb2IvbWFzdGVyL2pzL29ic2VydmVyLmpzIn19LHsiY2hhciI6IuaVtCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiMwMDlhNjEiLCJocmVmIjoiaHR0cHM6Ly9naXRodWIuY29tL0RNUS9tdnZtL2Jsb2IvbWFzdGVyL2pzL29ic2VydmVyLmpzIn19LHsiY2hhciI6IuS7oyIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiMwMDlhNjEiLCJocmVmIjoiaHR0cHM6Ly9naXRodWIuY29tL0RNUS9tdnZtL2Jsb2IvbWFzdGVyL2pzL29ic2VydmVyLmpzIn19LHsiY2hhciI6IueggSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiMwMDlhNjEiLCJocmVmIjoiaHR0cHM6Ly9naXRodWIuY29tL0RNUS9tdnZtL2Jsb2IvbWFzdGVyL2pzL29ic2VydmVyLmpzIn19LHsiY2hhciI6IuOAgiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLpgqMiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5LmIIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaOpSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLkuIsiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5p2lIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWwsSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmmK8iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5a6eIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IueOsCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJDIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Im8iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoibSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJwIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6ImkiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoibCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJlIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuS6hiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fV0sImlzUmljaFRleHQiOnRydWUsImtlZXBMaW5lQnJlYWsiOnRydWV9fV0=
5f39ae17-8c62-4a45-bc43-b32064c9388a:W3siYmxvY2tJZCI6Ijk2MzMtMTU1MDY1NzY0MjEwMyIsImJsb2NrVHlwZSI6InBhcmFncmFwaCIsInN0eWxlcyI6eyJhbGlnbiI6ImxlZnQiLCJpbmRlbnQiOjAsInRleHQtaW5kZW50IjowLCJsaW5lLWhlaWdodCI6MS43NSwiYmFjay1jb2xvciI6IiIsInBhZGRpbmciOiIifSwidHlwZSI6InBhcmFncmFwaCIsInJpY2hUZXh0Ijp7ImRhdGEiOlt7ImNoYXIiOiLov5kiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5qC3Iiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaIkSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLku6wiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5beyIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Iue7jyIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlj68iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5LulIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuebkSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlkKwiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5q+PIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuS4qiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmlbAiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5o2uIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IueahCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlj5giLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5YyWIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuS6hiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLvvIwiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6YKjIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuS5iCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLnm5EiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5ZCsIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWIsCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlj5giLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5YyWIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuS5iyIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlkI4iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5bCxIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaYryIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmgI4iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5LmIIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IumAmiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLnn6UiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6K6iIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IumYhSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLogIUiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5LqGIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Iu+8jCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmiYAiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5LulIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaOpSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLkuIsiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5p2lIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaIkSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLku6wiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6ZyAIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuimgSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlrp4iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi546wIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuS4gCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLkuKoiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5raIIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaBryIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLorqIiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6ZiFIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWZqCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLvvIwiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5b6IIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IueugCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLljZUiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi77yMIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Iue7tCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmiqQiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5LiAIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuS4qiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmlbAiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi57uEIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Iu+8jCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLnlKgiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5p2lIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaUtiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLpm4YiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6K6iIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IumYhSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLogIUiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi77yMIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaVsCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmja4iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5Y+YIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWKqCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLop6YiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5Y+RIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Im4iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoibyIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJ0Iiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6ImkiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoiZiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJ5Iiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Iu+8jCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlho0iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6LCDIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IueUqCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLorqIiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6ZiFIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuiAhSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLnmoQiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoidSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJwIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6ImQiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoiYSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJ0Iiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6ImUiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5pa5Iiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuazlSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLvvIwiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5LujIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IueggSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmlLkiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5ZaEIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuS5iyIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlkI4iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5pivIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Iui/mSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmoLciLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi77yaIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19XSwiaXNSaWNoVGV4dCI6dHJ1ZSwia2VlcExpbmVCcmVhayI6dHJ1ZX19XQ==
5f39ae17-8c62-4a45-bc43-b32064c9388a:W3siYmxvY2tJZCI6IjM4NzctMTU1MDY1NzIyMDA3MSIsImJsb2NrVHlwZSI6InBhcmFncmFwaCIsInN0eWxlcyI6eyJhbGlnbiI6ImxlZnQiLCJpbmRlbnQiOjAsInRleHQtaW5kZW50IjowLCJsaW5lLWhlaWdodCI6MS43NSwiYmFjay1jb2xvciI6IiIsInBhZGRpbmciOiIifSwidHlwZSI6InBhcmFncmFwaCIsInJpY2hUZXh0Ijp7ImRhdGEiOlt7ImNoYXIiOiIyIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuOAgSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlrp4iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi546wIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuS4gCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLkuKoiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5oyHIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuS7pCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLop6MiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5p6QIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWZqCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJDIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Im8iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoibSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJwIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6ImkiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoibCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJlIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Iu+8jCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlr7kiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5q+PIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuS4qiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlhYMiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi57SgIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuiKgiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLngrkiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi55qEIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaMhyIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLku6QiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6L+bIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuihjCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmiasiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5o+PIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWSjCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLop6MiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5p6QIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Iu+8jCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmoLkiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5o2uIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaMhyIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLku6QiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5qihIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuadvyIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmm78iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5o2iIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaVsCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmja4iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi77yMIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuS7pSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlj4oiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi57uRIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWumiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLnm7giLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5bqUIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IueahCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmm7QiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5pawIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWHvSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmlbAiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX1dLCJpc1JpY2hUZXh0Ijp0cnVlLCJrZWVwTGluZUJyZWFrIjp0cnVlfX0seyJibG9ja0lkIjoiNDA1My0xNTUwNjU3MjIwMDczIiwiYmxvY2tUeXBlIjoicGFyYWdyYXBoIiwic3R5bGVzIjp7ImFsaWduIjoibGVmdCIsImluZGVudCI6MCwidGV4dC1pbmRlbnQiOjAsImxpbmUtaGVpZ2h0IjoxLjc1LCJiYWNrLWNvbG9yIjoiIiwicGFkZGluZyI6IiJ9LCJ0eXBlIjoicGFyYWdyYXBoIiwicmljaFRleHQiOnsiZGF0YSI6W3siY2hhciI6IjMiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi44CBIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWuniIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLnjrAiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5LiAIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuS4qiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJXIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6ImEiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoidCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJjIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6ImgiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoiZSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJyIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Iu+8jCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLkvZwiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5Li6Iiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Iui/niIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmjqUiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoiTyIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJiIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6InMiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoiZSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJyIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6InYiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoiZSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJyIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWSjCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJDIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Im8iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoibSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJwIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6ImkiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoibCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJlIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IueahCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmoaUiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5qKBIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Iu+8jCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLog70iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5aSfIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuiuoiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLpmIUiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5bm2Iiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaUtiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLliLAiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5q+PIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuS4qiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlsZ4iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5oCnIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWPmCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLliqgiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi55qEIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IumAmiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLnn6UiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi77yMIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaJpyIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLooYwiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5oyHIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuS7pCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLnu5EiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5a6aIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IueahCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLnm7giLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5bqUIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWbniIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLosIMiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5Ye9Iiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaVsCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLvvIwiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5LuOIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuiAjCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmm7QiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5pawIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuinhiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlm74iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX1dLCJpc1JpY2hUZXh0Ijp0cnVlLCJrZWVwTGluZUJyZWFrIjp0cnVlfX0seyJibG9ja0lkIjoiMTQ1MS0xNTUwNjU3MjIwMDc1IiwiYmxvY2tUeXBlIjoicGFyYWdyYXBoIiwic3R5bGVzIjp7ImFsaWduIjoibGVmdCIsImluZGVudCI6MCwidGV4dC1pbmRlbnQiOjAsImxpbmUtaGVpZ2h0IjoxLjc1LCJiYWNrLWNvbG9yIjoiIiwicGFkZGluZyI6IiJ9LCJ0eXBlIjoicGFyYWdyYXBoIiwicmljaFRleHQiOnsiZGF0YSI6W3siY2hhciI6IjQiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi44CBIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Im0iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoidiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJ2Iiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Im0iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5YWlIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWPoyIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlh70iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5pWwIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Iu+8jCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmlbQiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5ZCIIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuS7pSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLkuIoiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5LiJIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuiAhSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fV0sImlzUmljaFRleHQiOnRydWUsImtlZXBMaW5lQnJlYWsiOnRydWV9fV0=
5f39ae17-8c62-4a45-bc43-b32064c9388a:W3siYmxvY2tJZCI6IjEyODEtMTU1MDY1NzIyMDA2OSIsImJsb2NrVHlwZSI6InBhcmFncmFwaCIsInN0eWxlcyI6eyJhbGlnbiI6ImxlZnQiLCJpbmRlbnQiOjAsInRleHQtaW5kZW50IjowLCJsaW5lLWhlaWdodCI6MS43NSwiYmFjay1jb2xvciI6IiIsInBhZGRpbmciOiIifSwidHlwZSI6InBhcmFncmFwaCIsInJpY2hUZXh0Ijp7ImRhdGEiOlt7ImNoYXIiOiIxIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuOAgSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlrp4iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi546wIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuS4gCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLkuKoiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5pWwIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaNriIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLnm5EiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNjc5NWI1IiwiYmFjay1jb2xvciI6IiNmZmZmZmYiLCJocmVmIjoiaHR0cHM6Ly93d3cuYmFpZHUuY29tL3M/d2Q9JUU3JTlCJTkxJUU1JTkwJUFDJUU1JTk5JUE4JnRuPTI0MDA0NDY5X29lbV9kZyZyc3ZfZGw9Z2hfcGxfc2xfY3NkIn19LHsiY2hhciI6IuWQrCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM2Nzk1YjUiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiIsImhyZWYiOiJodHRwczovL3d3dy5iYWlkdS5jb20vcz93ZD0lRTclOUIlOTElRTUlOTAlQUMlRTUlOTklQTgmdG49MjQwMDQ0Njlfb2VtX2RnJnJzdl9kbD1naF9wbF9zbF9jc2QifX0seyJjaGFyIjoi5ZmoIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzY3OTViNSIsImJhY2stY29sb3IiOiIjZmZmZmZmIiwiaHJlZiI6Imh0dHBzOi8vd3d3LmJhaWR1LmNvbS9zP3dkPSVFNyU5QiU5MSVFNSU5MCVBQyVFNSU5OSVBOCZ0bj0yNDAwNDQ2OV9vZW1fZGcmcnN2X2RsPWdoX3BsX3NsX2NzZCJ9fSx7ImNoYXIiOiJPIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6ImIiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoicyIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJlIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6InIiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoidiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiJlIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6InIiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi77yMIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuiDvSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlpJ8iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5a+5Iiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaVsCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmja4iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5a+5Iiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuixoSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLnmoQiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5omAIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaciSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlsZ4iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5oCnIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6Iui/myIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLooYwiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi55uRIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWQrCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLvvIwiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5aaCIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuaciSIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLlj5giLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5YqoIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuWPryIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmi78iLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5YiwIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuacgCIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLmlrAiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi5YC8Iiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuW5tiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLpgJoiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi55+lIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19LHsiY2hhciI6IuiuoiIsInN0eWxlcyI6eyJmb250LXNpemUiOjE2LCJjb2xvciI6IiM0ZjRmNGYiLCJiYWNrLWNvbG9yIjoiI2ZmZmZmZiJ9fSx7ImNoYXIiOiLpmIUiLCJzdHlsZXMiOnsiZm9udC1zaXplIjoxNiwiY29sb3IiOiIjNGY0ZjRmIiwiYmFjay1jb2xvciI6IiNmZmZmZmYifX0seyJjaGFyIjoi6ICFIiwic3R5bGVzIjp7ImZvbnQtc2l6ZSI6MTYsImNvbG9yIjoiIzRmNGY0ZiIsImJhY2stY29sb3IiOiIjZmZmZmZmIn19XSwiaXNSaWNoVGV4dCI6dHJ1ZSwia2VlcExpbmVCcmVhayI6dHJ1ZX19XQ==







