[
  {
    "path": ".gitignore",
    "content": "# ---> Java\n*.class\n\n# Mobile Tools for Java (J2ME)\n.mtj.tmp/\n\n# Package Files #\n*.jar\n*.war\n*.ear\n\n# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml\nhs_err_pid*\n\n# ---> Eclipse\n*.pydevproject\n.metadata\n.gradle\nbin/\ntmp/\n*.tmp\n*.bak\n*.swp\n*~.nib\nlocal.properties\n.settings/\n.loadpath\n\n# Eclipse Core\n.project\n\n# External tool builders\n.externalToolBuilders/\n\n# Locally stored \"Eclipse launch configurations\"\n*.launch\n\n# CDT-specific\n.cproject\n\n# JDT-specific (Eclipse Java Development Tools)\n.classpath\n\n# Java annotation processor (APT)\n.factorypath\n\n# PDT-specific\n.buildpath\n\n# sbteclipse plugin\n.target\n\n# TeXlipse plugin\n.texlipse\n\n# ---> Maven\ntarget/\nout/\noverlays/\npom.xml.tag\npom.xml.releaseBackup\npom.xml.versionsBackup\npom.xml.next\nrelease.properties\ndependency-reduced-pom.xml\nbuildNumber.properties\n.mvn/timing.properties\n\n# ---> TortoiseGit\n# Project-level settings\n/.tgitconfig\n\n# ---> SVN\n.svn/\n\n# IDEA\n*.iml\n.idea/\n\n/*.iml\n"
  },
  {
    "path": "LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "README.md",
    "content": "[![Build Status](https://travis-ci.org/crossoverJie/JCSprout.svg?branch=master)](https://travis-ci.org/crossoverJie/taoshop)\n\n# 电子商务项目\n## 电商项目简介\n电子商务项目[taoshop](https://github.com/u014427391/taoshop)</br>\n\n代码已经捐赠给开源中国社区：https://www.oschina.net/p/taoshop\n\n项目releases链接:https://github.com/u014427391/taoshop/releases\n\n本开源电商项目，SpringBoot+Dubbo技术栈实现微服务，实现一款分布式集群的电商系统。(开发中...)\n\n## 开源协议\ntaoshop使用Apache2.0开源协议\n\n## 功能\n### [门户网站]\n- [ ] 商品搜索(Lucene)\n- [x] 最新上架\n- [ ] 购物车功能\n- [x] 品目商品搜索\n- [ ] 优惠券秒杀(高并发处理)\n- [ ] 商品详情\n- [x] 商品品类多级联动\n\n### [运营平台]\n- [ ] 会员中心\n- [ ] 订单系统\n- [ ] 店铺管理\n- [ ] 评论管理\n- [ ] 风控系统\n- [ ] 采购平台\n- [ ] 内容管理\n\n## 技术栈\n* 模板引擎：Thymeleaf\n* 搜索引擎：Lucene\n* 负载均衡：Nginx\n* 缓存处理：Redis\n* 后台主要框架：SpringBoot、Mybatis\n* 微服务搭建：Dubbo\n## 平台工程目录\n\n\n```\n├─taoshop----------------------------父项目，公共依赖\n│  │\n│  ├─taoshop-search--------------------------全局搜索\n│  │\n│  ├─taoshop-quartz-----------------------任务调度系统\n│  │\n│  ├─taoshop-sso-------------------------单点登录工程\n│  │\n│  ├─taoshop-portal--------------------------门户网站\n│  │\n│  ├─taoshop-cms--------------------------平台cms系统\n|  |\n|  |─taoshop-order--------------------------平台订单系统\n│  │\n│  ├─paascloud-provider\n│  │  │\n│  │  │\n│  │  ├─taoshop-provider-usc------------------用户信息服务中心\n|  |  |\n|  |  |-taoshop-provider-item------------------商品信息服务中心\n|  |  |\n|  |  |-taoshop-provider-shop------------------商铺信息服务中心\n│  │  │\n│  │  └─taoshop-provider-order------------------订单信息服务中心\n│  │\n│  ├─taoshop-provider-api\n│  │  │\n│  │  │-taoshop-provider-api-usc------------------用户信息服务API\n|  |  |\n|  |  |-taosho-provider-api-item------------------商品信息服务API\n|  |  |\n|  |  |-taoshop-provider-api-shop------------------商铺信息服务API\n|  |  |\n│  │  └─taoshop-provider-api-order------------------订单信息服务API\n│  │\n│  ├─taoshop-common\n│  │  │\n│  │  ├─taoshop-common-core------------------平台核心依赖服务\n│  │  │\n│  │  ├─taoshop-common-zk------------------zookeeper配置工程\n│  │  │\n│  │  ├─taoshop-common-quartz------------------任务调度服务\n│  │  │\n│  │  ├─taoshop-security-core------------------安全服务核心服务\n│  │  │\n│  │  └─taoshop-security-auth2------------------API认证授权服务\n│  │\n\n\n\n\n```\n\n\n\n## 架构设计\n\n![Image text](https://github.com/u014427391/taoshop/raw/master/screenshot/架构图20180409.png)\n\n\n## 平台功能演示\n\n\n运营系统登录\n![Image text](https://github.com/u014427391/taoshop/raw/master/screenshot/运营平台登录.png)\n\n\n订单管理页面\n![Image text](https://github.com/u014427391/taoshop/raw/master/screenshot/订单管理.png)\n\n## 附录\n\n### 一、分布式基本知识\n#### 1.1) 架构演变\n![在这里插入图片描述](https://img-blog.csdnimg.cn/20181103230911558.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTQ0MjczOTE=,size_16,color_FFFFFF,t_70)\n\n先给出dubbo官方的图，图片表示了架构的演变。然后我说一下自己的理解。\n\n应用最开始是单体应用，即一个应用包括了所有应用模块。\n\n随后就是垂直应用架构，也就是将系统拆分为多个应用模块。\n\n随后就是RPC架构，之前的垂直应用架构其实可以说是在一个进程内的通讯，而RPC就是一种进步，RPC是进程之间的通讯，远程过程调用就是这么来的。\n\n有了RPC之后，虽然可以实现进程之间的通讯，但是服务器集群后的服务器资源利用有些时候容易造成浪费，比如有个系统，一般情况都是不能很好地预估需要分配多少机器的，很容易造成一种情况就是业务访问很频繁的模块分配了不足的机器，而访问不是很频繁的模块分配了太多的机器，这种情况就不能实现资源的很好利用，所以针对这种情况就有了SOA(Service Oriented Architecture)的出现，SOA其实就是一个服务注册中心，可以实现资源调度，合理地分配资源，提高资源调度，是一个治理中心。\n\n#### 1.2)、分布式基本概念\n所以我们了解了架构演变之后，就可以更好的理解分布式，分布式其实就是一种可以实现不同进程之间通讯的架构，然后进程之间怎么通讯的？一般都是通过RPC框架实现。比如Java方面的，Dubbo框架或者Spring Cloud。\n\n### 二、RCP简介\n#### 2.1) RPC概念\nRPC：全称远程过程调用，是一种**进程间的通信的方式**，它所做的事情就是实现进程内的通信，允许调用另外一个地址空间，可以是共享网络里的另外一台机器。\n\n#### 2.2) RPC核心模块\nRPC有两个核心模块：通信和序列化\n\n### 三、Dubbo原理简介\n#### 3.1) Dubbo简介\nDubbo是阿里巴巴开源的一款Java RPC框架，现在已经捐赠给Apache\n官网：http://dubbo.apache.org/\n\n#### 3.2) 核心功能\na、智能容错和负载均衡\n\nb、服务注册和发现\n\nc、面向接口的远程方法调用\n\n#### 3.3) 原理简介\n\n![在这里插入图片描述](https://img-blog.csdnimg.cn/20181104105820112.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTQ0MjczOTE=,size_16,color_FFFFFF,t_70)\n\n上图是Dubbo官方的图\n\n**角色**\n\nProvider：暴露服务的服务提供者\n\nContainer：服务运行的容器\n\nConsumer：调用远程服务的消费者\n\nRegistry：服务注册和发现的注册中心\n\nMinitor：统计服务调用次数和时间的监控中心\n\n\n**调用**\n\n下面根据我的理解说明一下\n\n0：服务器容器负责启动、加载、运行服务提供者\n\n1：服务提供者在启动后就可以向注册中心暴露服务\n\n2：服务消费者在启动后就可以向注册中心订阅想要的服务\n\n3：注册中心向服务消费者返回服务调用列表\n\n4：服务消费者基于软负载均衡算法调用服务提供者的服务，这个服务提供者有可能是一个服务提供者列表，调用那个服务提供者就是根据负载均衡来调用了\n\n5：服务提供者和服务消费者定时将保存在内存中的服务调用次数和服务调用时间推送给监控中心\n\n\n## 博客记录\n为了帮助学习者更好地理解代码，下面给出自己写的一些博客链接\n### 单点登录\n* [CAS单点登录简单介绍](https://blog.csdn.net/u014427391/article/details/82083995)\n\n### 消息队列\n* [RocketMQ入门手册](https://blog.csdn.net/u014427391/article/details/79914331)\n\n### 搜索引擎\n* [Apache Lucene全局搜索引擎入门教程](https://blog.csdn.net/u014427391/article/details/80006401)\n\n### Dubbo\n* [Dubbo学习笔记](https://blog.csdn.net/u014427391/article/details/83716884)\n* [SpringBoot+Dubbo搭建微服务](https://blog.csdn.net/u014427391/article/details/84455282)\n\n### 分布式锁\n* [Redis学习笔记之分布式锁](https://blog.csdn.net/u014427391/article/details/84934045)\n\n### SpringBoot\n* [电商门户网站商品品类多级联动SpringBoot+Thymeleaf实现](https://blog.csdn.net/u014427391/article/details/83685901)\n\n### Mybatis\n* [Mybatis+Thymeleaf前端显示时间格式问题解决方法](https://blog.csdn.net/u014427391/article/details/83686014)\n* [Mybatis3.2不支持Ant通配符的TypeAliasesPackage扫描解决方案](https://blog.csdn.net/u014427391/article/details/84723292)\n\n### 缓存\n* [Redis学习笔记之基本数据结构](https://blog.csdn.net/u014427391/article/details/82860694)\n* [Redis学习笔记之位图](https://blog.csdn.net/u014427391/article/details/87923407)\n* [Redis学习笔记之延时队列](https://blog.csdn.net/u014427391/article/details/87905450)\n* [Redis学习笔记之分布式锁](https://blog.csdn.net/u014427391/article/details/84934045)\n* [SpringBoot集成Redis实现缓存处理(Spring AOP技术)](http://blog.csdn.net/u014427391/article/details/78799623)\n\n### 设计模式\n创建型\n* [设计模式之观察者模式(行为型)](https://blog.csdn.net/u014427391/article/details/81156661)\n* [设计模式之桥接模式(结构型)](https://blog.csdn.net/u014427391/article/details/88412075)\n* [设计模式之适配器模式(结构型)](https://blog.csdn.net/u014427391/article/details/88412105)\n* [设计模式之建造者模式(创建型)](https://blog.csdn.net/u014427391/article/details/80061566)\n* [设计模式之简单工厂模式(创建型)](https://blog.csdn.net/u014427391/article/details/85543283)\n* [设计模式之抽象工厂模式(创建型)](https://blog.csdn.net/u014427391/article/details/85543242)\n* [设计模式之单例模式(创建型)](https://blog.csdn.net/u014427391/article/details/80019048)\n* [设计模式之工厂方法模式(创建型)](https://blog.csdn.net/u014427391/article/details/85543251)\n* [设计模式之原型模式(创建型)](https://blog.csdn.net/u014427391/article/details/87539023)\n\n结构型\n* [设计模式之桥接模式(结构型)](https://blog.csdn.net/u014427391/article/details/88412075)\n* [设计模式之适配器模式(结构型)](https://blog.csdn.net/u014427391/article/details/88412105)\n\n行为型\n* [设计模式之观察者模式(行为型)](https://blog.csdn.net/u014427391/article/details/81156661)\n* [设计模式之命令模式(行为型)](https://blog.csdn.net/u014427391/article/details/89289375)\n* [设计模式之备忘录模式(行为型)](https://blog.csdn.net/u014427391/article/details/88598079)\n* [设计模式之访问者模式(行为型)](https://blog.csdn.net/u014427391/article/details/88562267)\n\n### Oracle知识\n* [Oracle知识整理笔录](https://blog.csdn.net/u014427391/article/details/82317376)\n* [Oracle笔记之锁表和解锁](https://blog.csdn.net/u014427391/article/details/83046148)\n* [Oracle递归查询start with connect by prior](https://blog.csdn.net/u014427391/article/details/84996259)\n* [Oracle列转行函数vm_concat使用](https://blog.csdn.net/u014427391/article/details/84981114)\n* [Oracle笔记之修改表字段类型](https://blog.csdn.net/u014427391/article/details/83046006)\n* [Oracle的nvl函数和nvl2函数](https://blog.csdn.net/u014427391/article/details/84996009)\n\n"
  },
  {
    "path": "docs/taoshop.sql",
    "content": "/*\r\nSQLyog v10.2 \r\nMySQL - 5.1.32-community : Database - taoshop\r\n*********************************************************************\r\n*/\r\r\n\r\n/*!40101 SET NAMES utf8 */;\r\n\r\n/*!40101 SET SQL_MODE=''*/;\r\n\r\n/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;\r\n/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;\r\n/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;\r\n/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;\r\nCREATE DATABASE /*!32312 IF NOT EXISTS*/`taoshop` /*!40100 DEFAULT CHARACTER SET utf8 */;\r\n\r\nUSE `taoshop`;\r\n\r\n/*Table structure for table `item_brand` */\r\n\r\nDROP TABLE IF EXISTS `item_brand`;\r\n\r\nCREATE TABLE `item_brand` (\r\n  `id` bigint(11) NOT NULL AUTO_INCREMENT,\r\n  `brand_name` varchar(20) DEFAULT NULL,\r\n  `last_modify_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,\r\n  `create_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',\r\n  PRIMARY KEY (`id`)\r\n) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;\r\n\r\n/*Data for the table `item_brand` */\r\n\r\ninsert  into `item_brand`(`id`,`brand_name`,`last_modify_time`,`create_time`) values (1,'荣耀','2018-07-24 23:21:20','2018-06-24 20:42:37');\r\n\r\n/*Table structure for table `item_category` */\r\n\r\nDROP TABLE IF EXISTS `item_category`;\r\n\r\nCREATE TABLE `item_category` (\r\n  `id` bigint(11) NOT NULL AUTO_INCREMENT,\r\n  `category_name` varchar(20) DEFAULT NULL,\r\n  `sjid` bigint(11) DEFAULT NULL,\r\n  `last_modify_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,\r\n  `create_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',\r\n  PRIMARY KEY (`id`)\r\n) ENGINE=InnoDB AUTO_INCREMENT=40 DEFAULT CHARSET=utf8;\r\n\r\n/*Data for the table `item_category` */\r\n\r\ninsert  into `item_category`(`id`,`category_name`,`sjid`,`last_modify_time`,`create_time`) values (1,'家用电器',0,'2018-06-24 18:59:07','2018-06-24 15:52:04'),(2,'手机数码',0,'2018-06-24 19:01:39','2018-06-24 16:27:48'),(3,'电脑办公',0,'2018-06-24 19:01:33','2018-06-24 16:27:50'),(4,'家居家具',0,'2018-06-24 19:01:24','2018-06-24 16:27:52'),(5,'品牌衣饰',0,'2018-06-24 19:02:18','2018-06-24 16:27:54'),(6,'美妆洗护',0,'2018-06-24 19:03:08','2018-06-24 16:27:56'),(7,'珠宝眼镜',0,'2018-06-24 19:03:23','2018-06-24 16:27:58'),(8,'学习书籍',0,'2018-06-24 19:03:46','2018-06-24 16:28:00'),(9,'电视',1,'2018-06-24 19:04:11','2018-06-24 17:35:18'),(10,'空调',1,'2018-06-24 19:04:20','2018-06-24 18:27:28'),(11,'洗衣机',1,'2018-06-24 19:04:19','2018-06-24 18:44:41'),(12,'冰箱',1,'2018-06-24 19:06:05','2018-06-24 19:06:04'),(13,'手机通讯',2,'2018-06-24 19:06:07','2018-06-24 19:06:06'),(14,'手机配件',2,'2018-06-24 19:06:09','2018-06-24 19:06:07'),(15,'电脑整机',3,'2018-06-24 19:06:12','2018-06-24 19:06:09'),(16,'曲面电视',9,'2018-06-24 19:08:07','2018-06-24 19:08:05'),(17,'超薄电视',9,'2018-06-24 19:08:08','2018-06-24 19:08:07'),(18,'HDR电视',9,'2018-06-24 19:08:26','2018-06-24 19:08:09'),(19,'人工智能电视',9,'2018-06-24 19:08:36','2018-06-24 19:08:10'),(20,'柜式空调',10,'2018-07-24 22:42:34','2018-07-24 22:42:30'),(21,'中央空调',10,'2018-07-24 22:42:36','2018-07-24 22:42:35'),(22,'变频空调',10,'2018-07-24 22:42:39','2018-07-24 22:42:37'),(23,'滚筒洗衣机',11,'2018-07-24 22:43:40','2018-07-24 22:43:42'),(24,'迷你洗衣机',11,'2018-07-24 22:43:54','2018-07-24 22:43:56'),(25,'洗衣机配件',11,'2018-07-24 22:44:14','2018-07-24 22:44:15'),(26,'酒柜',12,'2018-07-24 22:45:41','2018-07-24 22:45:00'),(27,'多门',12,'2018-07-24 22:45:49','2018-07-24 22:45:51'),(28,'冷柜',12,'2018-07-24 22:46:12','2018-07-24 22:46:14'),(29,'冰箱配件',12,'2018-07-24 22:46:38','2018-07-24 22:46:40'),(30,'手机',13,'2018-07-24 22:48:23','2018-07-24 22:48:25'),(31,'游戏手机',13,'2018-07-24 22:48:29','2018-07-24 22:48:27'),(32,'对讲机',13,'2018-07-24 22:49:24','2018-07-24 22:49:27'),(33,'手机壳',14,'2018-07-25 23:22:38','2018-07-25 23:22:43'),(34,'数据线',14,'2018-07-25 23:23:01','2018-07-25 23:23:03'),(35,'充电器',14,'2018-07-25 23:23:30','2018-07-25 23:23:32'),(36,'手机饰品',14,'2018-07-25 23:24:33','2018-07-25 23:24:35'),(37,'电脑办公',3,'2018-07-25 23:25:36','2018-07-25 23:25:38'),(38,'电脑配件',3,'2018-07-25 23:25:44','2018-07-25 23:25:40'),(39,'外设产品',3,'2018-07-25 23:26:16','2018-07-25 23:26:18');\r\n\r\n/*Table structure for table `item_sku` */\r\n\r\nDROP TABLE IF EXISTS `item_sku`;\r\n\r\nCREATE TABLE `item_sku` (\r\n  `id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT 'id，主键',\r\n  `sku_code` varchar(50) NOT NULL COMMENT 'sku编号，唯一',\r\n  `sku_name` varchar(50) DEFAULT NULL COMMENT 'sku名称，冗余spu_name',\r\n  `price` decimal(9,2) NOT NULL COMMENT '商城售价',\r\n  `promotion_price` decimal(9,2) DEFAULT NULL COMMENT '促销售价',\r\n  `stock` int(11) NOT NULL COMMENT '库存',\r\n  `shop_id` bigint(11) NOT NULL COMMENT '商铺id，为0表示自营',\r\n  `spu_id` bigint(11) NOT NULL COMMENT 'spu id，外键',\r\n  `img_path` varchar(50) DEFAULT NULL COMMENT '图片路径',\r\n  `last_modify_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,\r\n  `create_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',\r\n  PRIMARY KEY (`id`)\r\n) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;\r\n\r\n/*Data for the table `item_sku` */\r\n\r\ninsert  into `item_sku`(`id`,`sku_code`,`sku_name`,`price`,`promotion_price`,`stock`,`shop_id`,`spu_id`,`img_path`,`last_modify_time`,`create_time`) values (1,'112233','112233','1122.00','999.00',111,1,1,'/static/picture/img_small_350x350.jpg','2018-07-24 22:21:07','2018-06-30 15:50:10'),(2,'112234','test','1123.00','999.00',111,2,2,'/static/picture/img_small_350x350.jpg','2018-07-24 22:21:09','2018-06-30 15:55:27'),(3,'112235','112223','1234.00','999.00',123,3,2,'/static/picture/img_small_350x350.jpg','2018-07-24 22:21:13','2018-07-01 16:56:47');\r\n\r\n/*Table structure for table `item_sku_spec_value` */\r\n\r\nDROP TABLE IF EXISTS `item_sku_spec_value`;\r\n\r\nCREATE TABLE `item_sku_spec_value` (\r\n  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,\r\n  `sku_id` bigint(20) NOT NULL COMMENT 'sku_id',\r\n  `spec_value_id` bigint(20) NOT NULL COMMENT '规格值id',\r\n  `last_modify_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,\r\n  `create_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',\r\n  PRIMARY KEY (`id`)\r\n) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='sku规格值';\r\n\r\n/*Data for the table `item_sku_spec_value` */\r\n\r\ninsert  into `item_sku_spec_value`(`id`,`sku_id`,`spec_value_id`,`last_modify_time`,`create_time`) values (1,1,1,'2018-07-28 17:20:31','2018-07-28 17:20:34'),(2,1,2,'2018-07-28 17:20:42','2018-07-28 17:20:44');\r\n\r\n/*Table structure for table `item_spec` */\r\n\r\nDROP TABLE IF EXISTS `item_spec`;\r\n\r\nCREATE TABLE `item_spec` (\r\n  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,\r\n  `spec_no` varchar(50) NOT NULL COMMENT '规格编号',\r\n  `spec_name` varchar(50) NOT NULL COMMENT '规格名称',\r\n  `last_modify_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,\r\n  `create_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',\r\n  PRIMARY KEY (`id`)\r\n) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='规格表';\r\n\r\n/*Data for the table `item_spec` */\r\n\r\ninsert  into `item_spec`(`id`,`spec_no`,`spec_name`,`last_modify_time`,`create_time`) values (1,'test','系统','2018-07-28 13:56:14','2018-07-28 13:56:16'),(2,'test11','网络','2018-07-28 13:57:00','2018-07-28 13:57:02');\r\n\r\n/*Table structure for table `item_spec_value` */\r\n\r\nDROP TABLE IF EXISTS `item_spec_value`;\r\n\r\nCREATE TABLE `item_spec_value` (\r\n  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,\r\n  `spec_id` bigint(20) DEFAULT NULL COMMENT '外键',\r\n  `spec_value` varchar(50) NOT NULL COMMENT '规格值',\r\n  `last_modify_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,\r\n  `create_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',\r\n  PRIMARY KEY (`id`)\r\n) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='规格值表';\r\n\r\n/*Data for the table `item_spec_value` */\r\n\r\ninsert  into `item_spec_value`(`id`,`spec_id`,`spec_value`,`last_modify_time`,`create_time`) values (1,NULL,'苹果（IOS）','2018-07-28 17:19:12','2018-07-28 17:19:14'),(2,NULL,'联通4G','2018-07-28 17:19:59','2018-07-28 17:20:00');\r\n\r\n/*Table structure for table `item_spu` */\r\n\r\nDROP TABLE IF EXISTS `item_spu`;\r\n\r\nCREATE TABLE `item_spu` (\r\n  `id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT '商品id，主键',\r\n  `spu_code` varchar(50) NOT NULL COMMENT '商品编号，唯一',\r\n  `item_name` varchar(50) NOT NULL COMMENT '商品名称',\r\n  `category_id` bigint(11) NOT NULL COMMENT '分类id',\r\n  `brand_id` bigint(11) NOT NULL COMMENT '品牌id',\r\n  `shop_id` bigint(11) NOT NULL COMMENT '商铺id',\r\n  `last_modify_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,\r\n  `create_time` timestamp NOT NULL DEFAULT '1978-01-01 00:00:00',\r\n  PRIMARY KEY (`id`)\r\n) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;\r\n\r\n/*Data for the table `item_spu` */\r\n\r\ninsert  into `item_spu`(`id`,`spu_code`,`item_name`,`category_id`,`brand_id`,`shop_id`,`last_modify_time`,`create_time`) values (1,'112233','荣耀10 GT游戏加速 AIS手持夜景',1,1,1,'2018-07-24 23:31:29','2018-06-30 15:49:26'),(2,'112234','小米MIX2S 全面屏游戏手机',2,1,1,'2018-07-24 23:31:36','1978-01-01 00:00:00');\r\n\r\n/*Table structure for table `item_spu_spec` */\r\n\r\nDROP TABLE IF EXISTS `item_spu_spec`;\r\n\r\nCREATE TABLE `item_spu_spec` (\r\n  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,\r\n  `spu_id` bigint(20) NOT NULL COMMENT 'spu_id',\r\n  `spec_id` bigint(20) NOT NULL COMMENT 'spec_id',\r\n  `last_modify_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,\r\n  `create_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',\r\n  PRIMARY KEY (`id`)\r\n) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='spu规格表';\r\n\r\n/*Data for the table `item_spu_spec` */\r\n\r\ninsert  into `item_spu_spec`(`id`,`spu_id`,`spec_id`,`last_modify_time`,`create_time`) values (1,1,1,'2018-07-28 13:57:38','2018-07-28 13:57:40'),(2,1,2,'2018-07-28 13:57:44','2018-07-28 13:57:42');\r\n\r\n/*Table structure for table `shop_info` */\r\n\r\nDROP TABLE IF EXISTS `shop_info`;\r\n\r\nCREATE TABLE `shop_info` (\r\n  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,\r\n  `shop_name` varchar(50) NOT NULL COMMENT '店铺名称',\r\n  `last_modify_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,\r\n  `create_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',\r\n  PRIMARY KEY (`id`)\r\n) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='店铺表';\r\n\r\n/*Data for the table `shop_info` */\r\n\r\ninsert  into `shop_info`(`id`,`shop_name`,`last_modify_time`,`create_time`) values (1,'小米官方旗舰店','2018-07-24 23:31:02','2018-07-24 23:30:58');\r\n\r\n/*Table structure for table `sys_menu` */\r\n\r\nDROP TABLE IF EXISTS `sys_menu`;\r\n\r\nCREATE TABLE `sys_menu` (\r\n  `menuId` int(11) NOT NULL AUTO_INCREMENT COMMENT '菜单Id',\r\n  `parentId` int(11) DEFAULT NULL COMMENT '上级Id',\r\n  `menuName` varchar(100) DEFAULT NULL COMMENT '菜单名称',\r\n  `menuIcon` varchar(30) DEFAULT NULL COMMENT '菜单图标',\r\n  `menuUrl` varchar(100) DEFAULT NULL COMMENT '菜单链接',\r\n  `menuType` varchar(10) DEFAULT NULL COMMENT '菜单类型',\r\n  `menuOrder` varchar(10) DEFAULT NULL COMMENT '菜单排序',\r\n  `menuStatus` varchar(10) DEFAULT NULL COMMENT '菜单状态',\r\n  PRIMARY KEY (`menuId`)\r\n) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;\r\n\r\n/*Data for the table `sys_menu` */\r\n\r\ninsert  into `sys_menu`(`menuId`,`parentId`,`menuName`,`menuIcon`,`menuUrl`,`menuType`,`menuOrder`,`menuStatus`) values (1,0,'用户管理','&#xe610','#','1','1','1'),(2,1,'管理员管理','&#xe604','user/queryAll.do','2','2','1'),(3,1,'用户统计','&#xe604','test','2','3','1'),(4,0,'在线管理','&#xe610','#','1','4','1'),(5,4,'在线情况','&#xe604',NULL,'2','5','1'),(6,4,'在线聊天','&#xe604','article/list.do','2','6','1'),(7,0,'系统管理','&#xe610','#','1','7','1'),(8,7,'角色管理','&#xe604','role/queryAll.do','2','8','1'),(9,7,'权限管理','&#xe604','permission/queryAll.do','2','9','1'),(10,7,'菜单管理','&#xe604','menu/getMenus.do','2','10','1'),(11,0,'平台资料','&#xe610','#','1','11','1');\r\n\r\n/*Table structure for table `sys_operation` */\r\n\r\nDROP TABLE IF EXISTS `sys_operation`;\r\n\r\nCREATE TABLE `sys_operation` (\r\n  `id` int(11) NOT NULL COMMENT '操作Id，主键',\r\n  `desc` varchar(100) DEFAULT NULL COMMENT '操作描述',\r\n  `name` varchar(100) DEFAULT NULL COMMENT '操作名称',\r\n  `operation` varchar(100) DEFAULT NULL COMMENT '操作标志',\r\n  PRIMARY KEY (`id`),\r\n  UNIQUE KEY `uk_o_1` (`operation`)\r\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\r\n\r\n/*Data for the table `sys_operation` */\r\n\r\ninsert  into `sys_operation`(`id`,`desc`,`name`,`operation`) values (1,'创建操作','创建','create'),(2,'编辑权限','编辑','edit'),(3,'删除权限','删除','delete'),(4,'浏览权限','浏览','view');\r\n\r\n/*Table structure for table `sys_permission` */\r\n\r\nDROP TABLE IF EXISTS `sys_permission`;\r\n\r\nCREATE TABLE `sys_permission` (\r\n  `id` int(11) NOT NULL COMMENT '权限Id',\r\n  `pdesc` varchar(100) DEFAULT NULL COMMENT '权限描述',\r\n  `name` varchar(100) DEFAULT NULL COMMENT '权限名称',\r\n  `menuId` int(11) DEFAULT NULL COMMENT '菜单Id',\r\n  PRIMARY KEY (`id`),\r\n  KEY `p_fk_1` (`menuId`),\r\n  CONSTRAINT `p_fk_1` FOREIGN KEY (`menuId`) REFERENCES `sys_menu` (`menuId`)\r\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\r\n\r\n/*Data for the table `sys_permission` */\r\n\r\ninsert  into `sys_permission`(`id`,`pdesc`,`name`,`menuId`) values (1,'用户管理的权限','用户管理',1),(2,'管理员管理的权限','管理员管理',2),(3,'用户统计的权限','用户统计',3),(4,'在线管理的权限','在线管理',4),(5,'在线情况的权限','在线情况',5),(6,'在线聊天的权限','在线聊天',6),(7,'系统管理的权限','系统管理',7),(8,'角色管理的权限','角色管理',8),(9,'权限管理的权限','权限管理',9),(10,'菜单管理的权限','菜单管理',10),(11,'平台资料的权限','平台资料',11);\r\n\r\n/*Table structure for table `sys_permission_operation` */\r\n\r\nDROP TABLE IF EXISTS `sys_permission_operation`;\r\n\r\nCREATE TABLE `sys_permission_operation` (\r\n  `permissionId` int(11) NOT NULL,\r\n  `operationId` int(11) NOT NULL,\r\n  PRIMARY KEY (`permissionId`,`operationId`),\r\n  KEY `po_fk_1` (`operationId`),\r\n  CONSTRAINT `po_fk_1` FOREIGN KEY (`operationId`) REFERENCES `sys_operation` (`id`),\r\n  CONSTRAINT `po_fk_2` FOREIGN KEY (`permissionId`) REFERENCES `sys_permission` (`id`)\r\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\r\n\r\n/*Data for the table `sys_permission_operation` */\r\n\r\ninsert  into `sys_permission_operation`(`permissionId`,`operationId`) values (1,1),(2,2),(3,3);\r\n\r\n/*Table structure for table `sys_role` */\r\n\r\nDROP TABLE IF EXISTS `sys_role`;\r\n\r\nCREATE TABLE `sys_role` (\r\n  `roleId` int(11) NOT NULL AUTO_INCREMENT COMMENT '角色Id',\r\n  `roleName` varchar(100) DEFAULT NULL COMMENT '角色名称',\r\n  `roleDesc` varchar(100) DEFAULT NULL COMMENT '角色描述',\r\n  `role` varchar(100) DEFAULT NULL COMMENT '角色标志',\r\n  PRIMARY KEY (`roleId`)\r\n) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;\r\n\r\n/*Data for the table `sys_role` */\r\n\r\ninsert  into `sys_role`(`roleId`,`roleName`,`roleDesc`,`role`) values (1,'超级管理员','超级管理员拥有所有权限','role'),(2,'用户管理员','用户管理权限','role'),(3,'角色管理员','角色管理权限','role'),(4,'资源管理员','资源管理权限','role'),(6,'操作权限管理员','操作权限管理','role'),(7,'查看员','查看系统权限','role'),(9,'用户','可以查看','role');\r\n\r\n/*Table structure for table `sys_role_permission` */\r\n\r\nDROP TABLE IF EXISTS `sys_role_permission`;\r\n\r\nCREATE TABLE `sys_role_permission` (\r\n  `rpId` varchar(12) NOT NULL COMMENT '表Id',\r\n  `roleId` int(11) NOT NULL COMMENT '角色Id',\r\n  `permissionId` int(11) NOT NULL COMMENT '权限Id',\r\n  PRIMARY KEY (`rpId`),\r\n  KEY `rp_fk_2` (`permissionId`),\r\n  KEY `rp_fk_1` (`roleId`),\r\n  CONSTRAINT `rp_fk_1` FOREIGN KEY (`roleId`) REFERENCES `sys_role` (`roleId`),\r\n  CONSTRAINT `rp_fk_2` FOREIGN KEY (`permissionId`) REFERENCES `sys_permission` (`id`)\r\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\r\n\r\n/*Data for the table `sys_role_permission` */\r\n\r\ninsert  into `sys_role_permission`(`rpId`,`roleId`,`permissionId`) values ('02a97146f6f4',2,1),('0bc217ced57a',1,1),('1623edee1d80',1,2),('2897c5ff0aa8',1,3),('421ddf008a05',1,4),('4b76f155fd74',9,1),('4dcadb89531b',1,7),('55eb164457e2',9,2),('59084a9f6914',2,2),('5a2b34b2f1a7',1,10),('63a5d5a8dae6',1,9),('9ad0b2c3be28',1,8),('9fa9725142c1',2,3),('ba83ae853640',1,6),('d5aec431edf6',1,5);\r\n\r\n/*Table structure for table `sys_user` */\r\n\r\nDROP TABLE IF EXISTS `sys_user`;\r\n\r\nCREATE TABLE `sys_user` (\r\n  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户Id',\r\n  `username` varchar(100) NOT NULL COMMENT '用户名',\r\n  `password` varchar(100) NOT NULL COMMENT '密码',\r\n  `phone` varchar(11) DEFAULT NULL COMMENT '手机',\r\n  `sex` varchar(6) DEFAULT NULL COMMENT '性别',\r\n  `email` varchar(100) DEFAULT NULL COMMENT '邮箱',\r\n  `mark` varchar(100) DEFAULT NULL COMMENT '备注',\r\n  `rank` varchar(10) DEFAULT NULL COMMENT '账号等级',\r\n  `lastLogin` date DEFAULT NULL COMMENT '最后一次登录时间',\r\n  `loginIp` varchar(30) DEFAULT NULL COMMENT '登录ip',\r\n  `imageUrl` varchar(100) DEFAULT NULL COMMENT '头像图片路径',\r\n  `regTime` date NOT NULL COMMENT '注册时间',\r\n  `locked` tinyint(1) DEFAULT NULL COMMENT '账号是否被锁定',\r\n  `rights` varchar(100) DEFAULT NULL COMMENT '权限（没有使用）',\r\n  PRIMARY KEY (`id`),\r\n  UNIQUE KEY `uk_u_1` (`username`)\r\n) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;\r\n\r\n/*Data for the table `sys_user` */\r\n\r\ninsert  into `sys_user`(`id`,`username`,`password`,`phone`,`sex`,`email`,`mark`,`rank`,`lastLogin`,`loginIp`,`imageUrl`,`regTime`,`locked`,`rights`) values (1,'admin','28dca2a7b33b7413ad3bce1d58c26dd679c799f1','1552323312','男','313222@foxmail.com','超级管理员','admin','2017-08-12','127.0.0.1','/static/images/','2017-03-15',0,NULL),(2,'sys','e68feeafe796b666a2e21089eb7aae9c678bf82d','1552323312','男','313222@foxmail.com','系统管理员','sys','2017-08-25','127.0.0.1','/static/images/','2017-03-15',0,NULL),(3,'user','adf8e0d0828bde6e90c2bab72e7a2a763d88a0de','1552323312','男','313222@foxmail.com','用户','user','2017-08-18','127.0.0.1','/static/images/','2017-03-15',0,NULL),(9,'test','123','12332233212','保密','2312@qq.com','没有备注','user','2017-11-25','127.0.0.1',NULL,'2017-11-25',0,NULL);\r\n\r\n/*Table structure for table `sys_user_role` */\r\n\r\nDROP TABLE IF EXISTS `sys_user_role`;\r\n\r\nCREATE TABLE `sys_user_role` (\r\n  `userId` int(11) NOT NULL COMMENT '用户Id,联合主键',\r\n  `roleId` int(11) NOT NULL COMMENT '角色Id，联合主键',\r\n  PRIMARY KEY (`userId`,`roleId`),\r\n  KEY `ur_fk_2` (`roleId`),\r\n  CONSTRAINT `ur_fk_1` FOREIGN KEY (`userId`) REFERENCES `sys_user` (`id`),\r\n  CONSTRAINT `ur_fk_2` FOREIGN KEY (`roleId`) REFERENCES `sys_role` (`roleId`)\r\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\r\n\r\n/*Data for the table `sys_user_role` */\r\n\r\ninsert  into `sys_user_role`(`userId`,`roleId`) values (1,1),(1,2),(2,2),(1,3),(2,3),(3,3),(1,4),(3,4),(1,6),(1,7),(3,7),(9,9);\r\n\r\n/*Table structure for table `tb_user` */\r\n\r\nDROP TABLE IF EXISTS `tb_user`;\r\n\r\nCREATE TABLE `tb_user` (\r\n  `username` varchar(11) DEFAULT NULL,\r\n  `password` varchar(11) DEFAULT NULL\r\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\r\n\r\n/*Data for the table `tb_user` */\r\n\r\ninsert  into `tb_user`(`username`,`password`) values ('user','11');\r\n\r\n/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;\r\n/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;\r\n/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;\r\n/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;\r\n"
  },
  {
    "path": "docs/架构图.pos",
    "content": "{\"diagram\":{\"image\":{\"height\":841,\"pngdata\":\"iVBORw0KGgoAAAANSUhEUgAAA/0AAANJCAYAAABeZFwDAAAACXBIWXMAAAsTAAALEwEAmpwYAAAgAElEQVR4nOzdd3iUZb7/8c+U9N4JoQRCCzWA0lEUEFAsCxZEWV3XumsvRz2/9bhrWXUtq6Lr6lkVz2JDULGgIK4ovamU0EJPSEggvSdTfn9MMmRIAgkkmczk/bouLjNPvSeTeZzPPPf9vQ12u90uAAAAAADgdYzubgAAAAAAAGgdhH4AAAAAALwUoR8AAAAAAC9F6AcAAAAAwEsR+gEAAAAA8FKEfgAAAAAAvBShHwAAAAAAL0XoBwAAAADASxH6AQAAAADwUoR+AAAAAAC8FKEfAAAAAAAvRegHAAAAAMBLEfoBAAAAAPBShH4AAAAAALwUoR8AAAAAAC9F6AcAAAAAwEsR+gEAAAAA8FKEfgAAAAAAvBShHwAAAAAAL0XoBwAAAADASxH6AQAAAADwUoR+AAAAAAC8FKEfAAAAAAAvRegHAAAAAMBLEfoBAAAAAPBShH4AAAAAALwUoR8AAAAAAC9F6AcAAAAAwEsR+gEAAAAA8FKEfgAAAAAAvBShHwAAAAAAL0XoBwAAAADASxH6AQAAAADwUoR+AAAAAAC8FKEfAAAAAAAvRegHAAAAAMBLEfoBAAAAAPBShH4AAAAAALwUoR8AAAAAAC9F6AcAAAAAwEsR+gEAAAAA8FKEfgAAAAAAvBShHwAAAAAAL0XoBwAAAADASxH6AQAAAADwUoR+AAAAAAC8lNndDQDO2o4d0qpVUu/e0gUXuLs1AAAAANBucKcfnq028EtSWprjMQAAAABAEqEfnqxu4K+1ahXBHwAAAABqEPrhmRoK/LUI/gAAAAAgidAPT3SqwF+L4A8AAAAAhH54mKYE/loEfwAAAAAdHKEfnqM5gb8WwR8AAABAB0boh2c4k8Bfi+APAAAAoIMi9KP9O5vAX4vgDwAAAKADIvSjfWuJwF+L4A8AAACggyH0o/1qycBfi+APAAAAoAMh9KN9ao3AX4vgDwAAAKCDIPSj/WnNwF+L4A8AAACgAyD0o31pi8Bfi+APAAAAwMsR+tF+7NzZdoG/1qpVjvMCAAAAgBci9KP92LChY50XAAAAAFqZwW63293dCECSdOSIlJ4u+fg0vs3mzc07pq+vNGhQ4+urq6VOnaTExOYdFwAAAAA8AKEfnmXbNmnt2qZvP3r0qUM/2i+7XUpfLWWsk0qypKoSd7cIwMkMJik4TgrvIfW9TPIPP7Pj8H4HvEtLXRsAtAizuxsAAPXY7dKmf0jZW93dEgCnYrdKxZmOf1mbpdH3S2Hdm3kM3u+A13G5NmySRt3n+AIAgFswph9A+5O+mgAAeBpLhbTl/yS7rXn78X4HvJulsubaYHV3S4AOi9APoP3JWOfuFgA4E0UZUvGR5u3D+x3wfsWZjusDALcg9ANof0qy3N0CAGeqOLN52/N+BzqG5l4bALQYQj+A9ociXoDnau77l/c70DFUFru7BUCHRegHAAAAAMBLEfoBAAAAAPBShH4AAAAAALwUoR8AAAAAAC9F6AcAAAAAwEsR+gEAAAAA8FKEfgAAAAAAvBShHwAAAAAAL0XoBwAAAADASxH6AQAAAADwUoR+AAAAAAC8FKEfAAAAAAAvRegHAAAAAMBLEfoBAAAAAPBShH4AAAAAALwUoR8AAAAAAC9F6AcAAAAAwEsR+gEAAAAA8FKEfgAAAAAAvBShHwAAAAAAL0XoBwAAAADASxH6AQAAAADwUoR+AAAAAAC8FKEfAAAAAAAvRegHAAAAAMBLEfoBAAAAAPBShH4AAAAAALwUoR8AAAAAAC9ldncDAOBMVFTb9L8rMhUR5KMRPUPUp1Ogy/p9OeX6ZOMxJUb5a3SvUHWP9m/ysUsqrHrjP0dUbbXLx2TQnZO6KMD3zL4j/XZrnjYeKFJogFn3XNTFubzKYtfjnx2QJJ3fL1xTB0XqWHG1tqSXaFL/iDM6FwC0FK6DAOA9CP0APNLurDLNW3VUkvTCrKR6oX9NWqE+2ZAjSXr1+t5NDv1VFpvu+2Cvfj5ULEm6ekSssouqGtw22M+k6BCfUx5vS3qJPv/5uGJDfV0+7Nrsdi3bnidJ6hzuq/BAsx79ZJ9KKqwKntNHo5JCm9Texpz7l82y2exnvH/3aH99etfAs2pDc8z9LkMfb8jRyJ6hev6aJBmNhjY7t7u15Gs1/PFNzuUf3NFffU96X8B7HDxe0eDyAF+jLn5xa5OP06dToD68o7/LMm+5DgIAHAj9ADxKUblVeaXVWrO30LksMsjH5QNwYrS/Nh5wfFj19zHq3B4hTTp2RbVN93944oOuJC3YkKMFNV8enGza4Cg9NbNHveV1g1etnKKqBpdLkl1Sjxh/GQ0G2ezS/1u4Xx/e0V+xob6NHq8hm/9yTpO2a48+3pCj8iqbVuwqUGZBlbpE+rm7SS3CZpdufnuXtqSXOJd58uuE9mPm3O0NLh/XJ+ysjtter4ONHbOuWyd01m0XdG7Sti9f11vjz/J3BQCegtAPwKN89etxvfhtusuym97e5fJ45X8P1Yb9RZIcH2BHP/lzg8ea2D9Cf7smSZJUVG7R/R/u1S+HShrctiGmRnq6xoef+JBaWG5VWaVVRqNBcaEn7obZ7FJ2oePOmcVqV1yor/7nikTd/8FelVVZtXZvkS4fFt3ktkQGNXw5D/E3ad4tyU0+TmNBorVdOypOH6zN1uheYeoc4R2BX5I+WpftEvhPxVNeK7R/i07qpXMkv1J3z09rcJ2v+USvGk+/DgIAGkboB+B1fthVoGpr07tLH8qt0H3v79WhXEdvgfBAs969uZ+6RZ0YErBqT6EeXbhfZZVWSdLwxBDdPblLg8f76r7Bzp+f+/qwFmzIUXSwj8tySRrxl82y2uzOtp7fN1yPXNJNY/uEqXP4ieD76PTuDZ4nLbtMCzcekyRdPCSqwW0MBoPCA9v/pf6PExP0x4kJ7m5GizqSX6nXvz/S5O095bVC+7D5L+doe0apbvjfnZKkf97Y19mrqcpic9m27vWwc50wLkk+Nam9vV8HT/b78+JdegFIUv+EhoezNLRt77iARo8NAN6GTxcAPMrs0XEa2ydMM1513OV844Y+GtHTddznze847vz7+Rh1/5SuLuvsdrv+tuSwbHYp2N+kpdvy9NSXh5wfYoP8THptTh+XD7rz12TrlWXpstklg0G6cVy8/nBh5wbHnTfWpfRU3VrrdZ392vGf565J0qT+Ebry3JgG9/vTogPOny8b2vDdsKJyiyY+92uD69B67HbpycUHVVFtU0KEn47kV552H14rNFftMKcQf5OGdgt2Lm+sd1ND6xbdNVC7s8ra/XXwZBMHRDS5ZkVztgUAb0ToB+Bxarue+pgMWrevSHe8t0dJsQFa8McB2ptd7lw/oV+4encK0NbDjsdzxnZS6pFS1dZMG9otRF9vyXV+0JWk0kqrrn9zR6Pnttuld1dm6d2VWc5lbV30TpIKyiz6foejAFb/zkFKim29u1YnF4dLO1qu+WuO6lBuhUIDzLpkSJT+ODFBppM+/H/xy3F9vD5H+49VKMDXqAn9wjVtcJRun7fbuU3t+PaGCtA157xf/nJcf/78oHP7ebcka1CXIElSRl6lZszdLqvNLoNBevPGvhqe2LQ6D2fqs83HtPFAsUxGg26d0NlZodwd5i7P0LyVjqKXDRVte+ijffrPznxJ0sxzYvTflzp6lmw+WKwP1mZra0apCsssCvIzqnuUv24cH68J/cLb9kmgQd9udVwDxvQOU2G5RZKjsF5z2O3y2OsgAKBpCP0APM4vNQWmBnUJlp/ZdUBpbUV/Sbp4cJRW7SnUOz9lyWg0aM7YTs4Cf5I0IilEUwZF6A//t6dZY1hPZcWjQ50//+vHTC3ZmqcAH6PeuKGPQgNcL7kvfHNYX/2aK38fo759cIgkKfVIqXrHBcjXbFSAT+PTYy3++biqLI5vLy4b2nDXfkkKCzSf0QfxkwN8rflrsrVkS67z8fHiar236qgMku6q0833xW/T9cHabOfjKotNi38+rjVphToTpzvvpUOj9eWvudp80PH6/vM/R/T6b/s4fv4hU9aab3quPDe21QN/dlGVXl6WIUn63fhO6t2paV/ItPRrVWvqoChn6N9ztEzHiqsVU1Nt3WK1a31N/QtJmp7i+Fv6/OfjeuqLg7LXGSVTVG7VtoxSbUsvIfS3A+v3Fzm74i/dlqel2xxfADx2WaJzm0V3DVRitL8OHq9w1oA4+Ys2g8ExA4onXgeb6qddBdqZWaaYEB8N7RaswGZ+MQIAno7Q34GUlJTI19dXvr6+p98YaMfW73OElBE9Q3TyTGfn9gjRmr2FCvAxakzvMK2t6f4aWDO/dGpGqSSpW5S/4mrGeP59dm9d988dzi7Yf72yZ5Pa8d8L99dbdji3QrfV3MmurLbJZpeMBumaf6TW23Z8H0dwqqi2yddkULXVrocX7JOf2aj/d1l3nd+34WBls0uLNjnG8vuaDZoyqH7or50Czmx0jBNvbHqvxoQFNPy/h2+35urqEbGKD/fVx+tzdLSmCNeiTcf0x0ldZDRIGw8UuwT+sb3DNLpXqHZllemrX3MbPO7pNOW8/31pd836R6qqrXat21ekLeklCvYzaek2xzk7h/s1Ov64JT39xSGVVlrVMyZAN5/fWfuPlZ9y+9Z6rWr1jgtQUmyA9uU42rF6T6GuGO4YDvLr4RKV1tzh7Rblr8FdHV3E3/wh0xn4+3cO0tTBkbLa7NqZWSa/FghhOHtv/pB52m0aKvbYUPd6X7PR466D36fma1t6qcuyxoZC/bPO7yrY36T7pnTVFRQIBNCBEPo7kNtuu00pKSl66KGHGt2mqqpKo0ePbtZxN2/eLEkqLi7WhAkTzmhfoKn2HyvXseJqSVJ8uJ9Sjzg+9FVb7Tp4vEJDugXrozv6a/fRchkN0vESx7ZGg6NL6t+uSdL+Y+UqKLM4jxnib5LZdOJu6ZRBkc6f7/z3HmUWVMlkMOiTOwe4tKWhD7s2u1ReZTvtMkmKqFNx/1hxtZZszVVJhVWlBqviwxr/cm7t3kLnB/MJ/SIUGuB616pu0S6fmufV3Erv14+J030n1UOQpBvGxevOSY6CewMSgnTru44P9sUVVmUXVik+3FcL64zLHdcnTK9c19v5OMTfrA/XZau5mnLexGh/3TCuk/71o6PL8b9WZCnQz+gcg/w/VyQ6v/xpLV9vydXqtEIZDdLjVyQ6f/+Nac3Xqq6pgyKdRQVXpZ0I/avq9Ly4pE4xyIKyaufPt13Q2WUaOHvTa2SilXz1a662HD5xV/6TOwfohSXpLr02JCkhwk9mk0EWq915zege7Rinf+ikL5c87Tr49k9Z9ZY1FvrrKqmw6snFBxUZZNZ5jXyhAADehtDvhaxWq44fP15v+ezZs/XCCy9o5syZCgoKclkXHBzssuzjjz9WdPSJb8EnTpyoefPmqWvXEx8s09PTdeONN9Y7z48//qiAgFN3Z83JydH06dOb+pQAp/zSE2G97jjpw7knuq8ueWCwc/7l9FzHB92icqu2pJcopVtws8a/78+pUHZRlQKaGBYHdQnSd/+Vostf3qqyKpuen5WkC5PrF6GSpG+35enj9Y6A/OvhEr1XMzRh6qAo9TlF0alP6oTqhqazqqg+8cG6pe/Kntf3RPgbmOB6HSmpuWO8NePE3beT76ZdNDDijEJ/U84rOap0f7stTxl5lVq7r1AGgyPEzBge46xs3lrySqr1wjeO6SRnj47TwC5Bp9mjdV+ruqbUCf3r9xfJYrXLbDJo9R5H6DcYXEP/6KQw/bi7QJL06ML9umxolKYOitKgLkEynPp7DLSBaqtrePb3McrYwJ/Pq9f3rte9v3YIyenmsa+rPV4HT+er+wYrIsgsX7NRJRUWbdhfrOe/OazjNV8az1t5lNAPoMMg9Huh9PR0zZw5s9H1V111Vb1lt956q2677Tbn45CQEIWHu/7P8ORlBQUFDR7faDTKZDr1eDljQ59OgBZWVmXTvjpdqz/bfEwpdSpcn47Fanf2FIgNafqwmFeWpausyqZh3UN0YXKE88P1vRd10ZyxnZzb1b2L9cI3h1VRbVOAr1F3TW586rqsgiqtrrk7GxfqW2/mAslRBb5WkK/jvVg7jvds1Q2mJ4dUW80t4LzSE3eJO4W5Trl1psG2KeeVHN2U54zppGe+OiS73TFbg9S0O4Bn69mvD6uo3KJAP5NG9Ax11heo/eKp1uaDxc66Aq35WtWVEOGnwV2DtTW9RGWVVv1yuERdIvycQw+GdQ9xmVf9z79J1NNfHtL3O/JVVmnVR+ty9NG6HPWLD9QTM3q0auFInN60wVF66VvHdeZUmtq9/1Ta43VQOlHwszF1/55DA8yaNCBCdrtdj3zi6Jmw+2hZk58LAHg6Qr8Xc1fX+fHjx7vlvOgYhieGuISiN3/I1FsrMp3V++taubtAljrdp5duy9MfLkxQ3Cm6jNaVeqTUWQCub3zT7zjVhr1tGSUa9/SJ6bFe//6I3lzhGFsaH+anN2/s41xXXOG4W33HhQnOWgMNWbTpmLOOwfSUKDVUw632A7ok7cgsbfaH/FoN/U6bwqemO7HkGmol154araGi2qb5a47WW/7qdxl6bU6fBvZoOd/vcFTAL6u06u75aY1ud+u7u51/w235Wk0ZFKmt6Y4u4av2FKhr5Inp2GoL+NUKDTDruauTdCS/Uku35WnRpmM6WlilXVlluvf9vfr8noGnLSCI1uPvY9Rz1yTprn83/nfWUtrjdfBM1b328+cLoCMh9Hu5I0eOKCHB8W3522+/LaPRqN/97nfO9a+++qouueQSJSUluex38cUX1zvWqXoP1NWU7v3FxcWaO3duk44HnKyy2qaCcosKyizKqinollfq6Fp9vKRaM4ZH65zEEGc30VrVVrte+S6jyQWq5q850Q09u9Bxh31UUmiTw0611e4yZrvu4/JqqyKDfRQeaHbWF0jpFqxrR8Xp7vlpumVCZ+eUc3X3X/zzMefjS4c2XIjq5LG6ba1HdIB2ZDq6+H+9JVcjk070Rvhs87HGdmsRc5dnKD3PcWd9xjkx+ml3gY4XV2vt3iJ9uy1PU+uMU24P2vK1umhgpF78Nl02m10bDxQrq8Dx3vH3MdabB72gzKLwQLMSIvx003nxunRotKa+sEWSlFlQqYz8SnWvM4c72t7IBnr51Prd+Hh9vD5bL17bSyndgrVw4zG9+G26EiL8tLBmTP7oJ39udP+62tt1sCmOFVcrOtin3lCUuoVEe5/F0AEA8DSEfi928OBBXXXVVVqyZIliYmJkMpm0bNkyZ+jPyMjQe++9p0mTJtXb99NPP1VMzInusOPHj9f777+vbt26OZcdPnxY1113nfNxbTfa03XtlxxDBR577LEzfm7ouD5en6O/LTlcb3l+qcU5Vnz6kCi9s/Kos/vmmF5hMpsM+ml3gZZuy9P4PmGaNtj1zua5PULUNdLRFd1ms2vu8iPOucslaUt6ie6en6bwQLOmDIrU9JQo593R6Jrpz2p9dd9gl8eNdWvdnlHqMh79vildZbHatDqtUKvTCvX0zJ6aOvhESP1+R77yau6UD+0e7GzvyeoW8/r9efG6uGas9t7scj26cL9sNrviw3310rW95Gs26pdDxXrmq8OaMihSvz8v3rnv6YrQNWbywAiX0F9ttWtI12Bt2F/kHCfeGn4+VOwcG+zvY9RtEzqrT1yAnv3a8ffy4rfpGts7TCH+p79G5ZVUKzXT8ffTM8ZfCREN/67raqxb/u6jZZr9xo4Gt2vL1yoyyKwRPUK0bl+RDhyrUGFNyLogOaLeFGaXvLRV5/UNV//OgTKbDM4ZMyTHFIERga5/82hfNh0oUlmVTfd+sFf3T+nq7IVSOw2eJOe0i3WLW3rCdbApPt10TN9szdW4PuHqEumnymrH8Wp7H0jSrJGxzTomAHgyQr8XstvtMhgMSkxMVOfOnfX9999r1qxZGjp0qF577TUVFRUpNDRUa9asUWxsrJKTk537WiyOD4H+/v4KDHT9FvzkZf7+rnd5avf18fHRiBEjTtvOBQsW1OthAJxO3UrPdfmYDOodF6joEB9tyyhxVnY2GqQ/TEyQweCoVG6z2fXE4oMK9jc7i/1J0qPTu8titWvFrgJd9+ZO7an5wsBoNOjSlCj9sDNfReVWFZRZ9PH6HH28Pkc9YwJ0xfBoTa9TAO2HnfnakVkmi9Uui831DtcXv+Rq/f4iVVbbZbXZdbSwymX4wYb9RS7j1cNPeq4LN54o4HdZI3f5q612ralTkX1cnzAlRvsrt6Rar36XIZvNUcDtmauSnEWyXvo2XVabXUu25CrE36SHpnU7q2Jts0bGadn2PO2sCc3Ltudp2XbHHOIXJEfoh5oQ0ZIF4SqqbfrL5yfmlZ89Ok7RIT76zfAY/XtNto7kVyqvpFqvLMvQny7rftrjfb0lVy8vy5AkvfW7vk0K/c3ljtdq2uAordtXpCqLzTnt4aUp9ad8rKi2ubxudd04rlO9GSPgXpf+fZvL46ev7Klb3tmt7KIqPfPVIefysb1PXPNevLZXveN4wnWwqdLzKhstGvq78fG6aGD76vUDAK2J0O+Fqqur5ePj+MZ9woQJ+s9//qNZs2apf//+MplM2rJli8aPH6+VK1dqwoQJzurWklRZ6egWe7ru+Q0pKiqSv7+/zGYzU/Gh1QxICNJ/XdxNcWG+ig310Tdb8/TB2mx1i/LXv29L1vtrs/Xy0nRn+PvtuE5K7uwITL8b10lv/5SlKotd93+QpjljO2nSgAjtzCzTzweLtTqt0DmmVJLMJoMevzxRFw+J0kPTuunLX4/ro3U5OpTr6JK9/1i5Xvo2XXO/y9CkAZGaNTJWadnleqeBqaRqtz95znaT0SC73S6bXXpv9VFtPOC4E2UwyKVy9b6ccv1yyDEeO8DXqEkDGv7A+vWWXBWVO55DTIiPBnUJVnZhle78d5pzyq6bxscrNsRHh45XqKLapmtGxmpbRqmKyh0f5AvLLHpiRo8zHrPtazbonzf01T9/yNTy1DwVlFmUEOGna0fFqU+nAGfoD/ZrueA497sMZdR06w8NMOuGmjuJZpNBt1/QWY996pjp4fOfj2l6StRpCzpur5kKMjTA1Kzij83hjtfqwuRwPf2lUVUWRwG42FBfndtAN/FrR8Vpw/4iZeRXqtpqV3iAScmdgzTjnBjnHWK0XzEhPpqeElVvWrv//TFLadnlGtItWD2i/RUT4iNfH6MO51Z4xHWwqcb0DtOeo2XamVWmvJJq2SVFBfsopVuwrjo3VkO7t857GgDaK0K/FyooKFBYmOPb/DFjxujDDz903t1PTEzU9u3bNXz4cG3atEm//e1vXfYtKXGEigsuuKDecU83pj8rK0txcXGqrq52dvU/HaPRKLOZP0M0XUKEn66p0y1z5e4Td0q/35Gvl75Ndz6e0C9cf7zwRAXo2y7orP3HKvTDznzZ7FKFxabXlh9x6bpcq2dMgB6/ItE57VqAr1FXj4jVVefGanVaod5ZmeWcJ7vaatc3W3OVEOGrwV2DlRjtr0BfkwJ8jQryM+mnmi7tw7qHaHDXIJlNBn2wLkflVVb9z+WJ2nywWF/8clwlFVZtqOnuPSAhSJF17nAlxQY0qap7bcEtSbpqRKzKq226/s0dzmEBkvTWCkfxw8Z8uy1P5VU2PXt1knzNhlOet7F1wf4mPTitqx6c5jp//EfrTvRW6FZnTHhDx2nOeR+6uJseurhbg9tePCTK2W2+qVJrQv+YXmFnXbCub6fABp9LW79WkhToZ9Lax4adts0nv25o397+fT/Fhjq+7P9kwzFNeWGL8wulunKKqrRgQ44W1Jn2c2TPUMkgj7gONnVmi0FdghrsyQAAHRVpywulp6erc+fOkqSUlBSZTCatX79ekydPVr9+/VRQUKCffvpJwcHBGj58uMu+OTk5ioyM1OLFi12WN2VM/+7du9WrVy/dfPPN2r69/jRBDRkxYoTeeOONM32qgIuJ/SN09YhYLdiQoymDIvWX3/SQsU5gMxkNeuaqnnr2q0PaeKBYd0/qorJKq2a+luqsMt83PlDXjozVxUOiGgx7BoOjG/a4PmHasL9I/7siSz8fKnYUPBsfLz8fo0sXWunEWNbz+oY5x7L2TwhSfolF01OidEFyuA4er3BWVjcapNsvOPV0VY2ZeU6Misot+mBdjq4ZEatAX6MuSI7Qok0NF9AzGQ0K8jMq0NekQF+TKqptyiyo1IYDRdqVVarBXZt/R8xitetIQf1Cb0cLqzRv1Ym7f+11juy8kmpnkbvxfVqvje3htYLnMhgMzl4X3aL8neE4PtzXGfiNRoMuHhypW87vrFVphVqw/sQd+lqzR8epf+dAr7oOAgBcEfq90NatW9W/f39Jkp+fn2bMmCFfX8c0NY8//riMRqPuu+8+XXTRRTIaXee7TktLU7du3eqN55dOP6Z/3bp1mjBhgmbNmiVJKisr0+23367ExEQ9/vjjMplMWrhwoYYOHcpYfrSYc3qESOrs/MD70LSuSukWrCmNVGn3MRn02OWJyiu1yN/HKH8fo/7n8u46kl/lHFPdVCN6hjrnYzcaDI3OQV87djQx5sSwmfPrBN4gP5P+dVNf/bCzQAePV+jcHiEachZdyn83Pl4T+kUouKZg3Z2TEpQQ4afO4b7OStmhAWYF+znuwtVVZbHp2a8P65qRsaecA/tUqqx2Xflaqkb1DNXQ7sEK9DPpcG6FlmzJdXYbjgnx0dUj2mchrdqu/UajQWNOCi4tzd2vFTyX0dDwuPxLhkTps83HdX6/cF0xLFqdaqapmzUyVrNGxmr30TJtOlCsXVllKqu0amzvMBkM8rrrIADgBIO9qf2w4RHKy8s1bdo0Pfvssxo1alSD2+Tl5WnatGmaN2+eSxE/SbrrrrvUp08f3XXXXS7Lhw8frkWLFtP8Da0AACAASURBVCkxMdG57ODBg5o5c6Y2b96srKwsXX755friiy/UqVMnZWdn68EHH9SYMWN0++23O+sGbNq0SU8++aRuvfVWXXLJJc1/gtu2SWvXNn370aOlQYOafx6411e3ubsFOAtlVTaNf7rx6cDiQn3199m9mjXnNzzIgKulHhObvj3vd6BjSJ4pJV3k7lYAHRJ3+r3MW2+9pYiICI0YMaJe1/2TXX/99c6fJ06cqD/84Q9at26d7rzzzkb3KSoqUn5+vvz9/bVx40Znwb9//vOfGjt2rDp16qT169fr3nvvlcViUUZGhj7++GNZrVZZrVZZLBbZbDY9/vjjSktL0z333ONSSBCA5/MzGzRrZKzW7y9SZkGVqq12hfib1CPaX+f1DdfMc2Kcd7YBAADQugj9XiYqKkoPPvigjEajvvzyyybvFxAQoOXLl2vkyJHq27dvg+sNBoPS0tJ06623SpLMZrNuuOEGSdKwYcM0YMAASdKAAQP0/PPPKyYmRsHBwQoICHBW9ffx8ZHBYNDevXv12muvqbi4WKGh9StHA/BcJqOh0aJ6AAAAaFt074eL/Px8RUREnHIbu90ui8Uik8lUryZAq6N7f8dAd1/Ac9G9H0BD6N4PuA13+uHidIFfclQM9vHxaYPWAAAAAADORhvfpgUAAAAAAG2F0A8AAAAAgJci9AMAAAAA4KUI/QAAAAAAeClCPwAAAAAAXorQDwAAAACAlyL0AwAAAADgpQj9AAAAAAB4KUI/AAAAAABeitAPAAAAAICXIvQDAAAAAOClCP0AAAAAAHgpQj8AAAAAAF6K0A8AAAAAgJci9AMAAAAA4KUI/QAAAAAAeClCPwAAAAAAXorQDwAAAACAlyL0AwAAAADgpQj9AAAAAAB4KUI/AAAAAABeitAPAAAAAICXIvQDAAAAAOClCP0AAAAAAHgpQj8AAAAAAF6K0A8AAAAAgJci9ANof3yD3d0CAGeque9f3u9Ax+AX4u4WAB0WoR9A+xMc7+4WADhTIZ2btz3vd6BjaO61AUCLIfQDaH+6jHJ3CwCcidAuUkhC8/bh/Q54v5DOjusDALcg9ANof7qOleIGu7sVAJrD7C8N+a1kaOZHC97vgHcz+9VcG0zubgnQYRnsdrvd3Y0AJElHjkjp6ZKPT+PbbNsmVVU1/Zi+vtKgQY2vr66WunaVEpp5Zwqtz26X0tdIR9ZJxZlSVYm7WwTgZAaTFBwnRfSQ+lwm+Yef2XF4vwPepaWuDQBaBKEf7cd770mVlW1/XrNZuummtj8vAAAAALQyuvej/Rgxwj3nPVVPAAAAAADwYGZ3NwBwSk52dPFctartzjlunNS/f9udDwAAAADaEHf60b707+8I4m2BwA8AAADAyxH60f60RfAn8AMAAADoAAj9aJ9aM/gT+AEAAAB0EIR+tF+tEfwJ/AAAAAA6EEI/2reWDP4EfgAAAAAdDKEf7V9LBH8CPwAAAIAOiNAPz3A2wZ/ADwAAAKCDIvTDc5xJ8CfwAwAAAOjACP3wLM0J/gR+AAAAAB0coR+epynBn8APAAAAAIR+eKhTBX8CPwAAAABIIvTDkzUU/An8AAAAAOBksNvtdnc3AjgrO3dKGzZI555L4AcAAACAOgj9AAAAAAB4Kbr3AwAAAADgpczubkBbee655+ote/jhh1nHOtaxjnWsYx3rWMc61rGOdaxrtXXuRvd+AAAAAAC8FN374fkO/Sh9dZv0yzvubgkAAAAAtCuEfni2gyukbR84fj6y3vEYAAAAACCJ0A9PdnCFtP1D12XbPyT4AwAAAEANQj88U0OBvxbBHwAAAAAkEfrhiU4V+GsR/AEAAACA0A8P05TAX4vgDwAAAKCDM7u7AUCTNSfw16rdPnFCS7cGbclul3bvltLSpPx8qaLC3S0CAACn4+8vRURIvXtLfftKBoO7WwR0SAa73W53dyOA0zqTwF/XwGsJ/p7KbpeWLpUOH3Z3SwAAwJnq3l266KKzC/52m7T7CyltiZS/X6ooaLn2tRqDFBIvRfWRhv1eik52d4PQARH60f6dbeCvRfD3TLt2ST/95O5WAACAs3XeeVK/fme2r90mLX1AOryyZdvUlgxGafz/k/pd7u6WoIOhez/at5YK/BJd/T1VWpq7WwAAAFpCWtqZh/7dXzgCf2QvadzDUmQfyTeoZdvXGuw2R4+Ew6ukVc9Ka1+Uuo6WgmLd3TJ0IBTyQ/vVkoG/FsX9PE9+vrtbAAAAWsLZ/D89bYnjv+MeljoN9YzALznu7gdESn0vk5J/I1WXSYfowYi2xZ1+tE+tEfhrueGOv80ufbFbWpIm7c+XCjysDl1skJQUIV03WBrVpY1PTtE+AAC8w9n8Pz1/v+O/kX1api3uUNv2vL3ubQc6HEI/2p/WDPy12jD42+zSA0ullR5chy6n1PFvbYb0+2HSHee4u0UAAKBDqS3a5yl3+BviG+z4b3mee9uBDofQj/alLQJ/rTYK/l/sdgT+XpHSw+OkPpFSkG+rnrJF2SUVVUi/HJX+ulJ69xfp/O5S/xh3twwAAADA6TCmH+3HoZ/aLvDX2v5hq1eBXVJTh+7hcdLQTp4V+CXJICnMX5qQKN001NFzYek+d7cKAAAAQFMQ+tF+7PrcPefd+VmrHn5/Tc2aPpGtepo20SfK8d+99EoDAAAAPALd+9F+DL9FOrZDMp3iVvier+XocN5E5gCp58TG11urpIheTT/eGagt2udpd/gbElzzHPLL3dsOAAAAAE1D6Ef7EZ3s+HcqPoFS6oKmH7PvpVKPU4R+AAAAAPBidO8HAAAAAMBLcacfAIAOZPXhwyqpqpIkTenVq9FlTZFTWqqX1q6VzW5Xp+Bg3T96dMs3+AxkFRcrMiBAfuaGP+ZYbDalFxbKarerV6QXFFwB0GQPPPBAk7edM2eOUlJSWrE1QNsg9AMA0IG8uHatDhU45ruuDfgNLTudCotFDy1bpu05OTIaDHpj+vRmt+VgQYGqrVbZJNntdtnsdlXbbKqyWFRltarSalWFxaLSqiqVVleruLJSJVVVKqioUF55ufLKy9UvOlpPT3QdxvXwd9/pcGGhLu7TR/eOGiVfk8m57o2NGzXv119lsdkUFRior2bPdlkPwLutWLGiydtedNFFrdcQoA0R+gEAQLOUVlXpnm+/1facHEmSzW7XbV9+2aR9V950kwJ9fCRJf1mxQluzs8+qLWXV1S6PVx8+rNRjx5ztNBoMOljzhYYk9YqMlMVmkyTllpXpo+3bdV737i7HiAsOVkAjvQQAeLYRI0a4PD5w4ICOHTum/v37Kzg4WJJ05MgRHTlyxB3NA1oF/0cDAMCL5ZWXy2w0KtTPr9n72ux2GQ0Gl2X78vL00HffOXsGnI0+UVHO0G80GORnMslqt6vKanVu0zUsTEkREQr29VWwr69C/fwU6uencH9/hfv7KyIgwLmt1WbTK+vWSZKiAwP1wJgxyiou1syPP260Da+sW+fcp9bciy/WmK5dz/r5AWh/3njjDZfHjz32mJYsWaIHHnjA2ZX/zTff1FtvveWO5gGtgtAPAIAXKrdY9NKaNfpqzx7dkJKi2885p1n7W202zVywQMPj4zUjOVl9o6M1f+tWvbV5syotFud2oX5+um/0aA2Oi3Pd327XwtRUfZKa6pxo9ZqBAxVQc5dfku4fPVr3jBolf7NZJVVVeu/XX/XBtm2SpKjAQN02fLh+k5zs8sXDwYICvbRmjcZ3765pvXu7nPPfW7dqX36+jAaDnrrwQoX6+amwoqJZzxtAx7Fp0yZnd//jx487lxcWFkqSTAz9gZcg9AMeYu7cufrggw8aXb969WqVlpae8hg+Pj7y9/dv6aYBaIf8zWatP3JEVVarFu3Yod8PGyYfY9Mn7Vlx8KDSCwuVXlioA/n5unvUKL2+YYNsdrt8TSZdlJSkJWlpKqqs1JM//qgr+vXTjUOHqlNQkP5z4ID+d/Nm7cvPlyQFmM16aOxYXd6vn8s5/MxmZRQVaeGOHfp0506VVlUpJihIswYO1LTevWW323W4sFDl1dUqt1j0/f79+mTHDlltNq1OT5ePyaQrao65JzdXb27aJEm6dfhwpcTH67lVq5RTWqp/XHKJRnbpok937tTTP/0kSZqQmKjnL7pIeeXlWrZvn7qFhWlct24t8asH0M4VFBTo1Vdf1RdffCG73S4fHx+9+uqr8vf3V0VFhb755htJUlRUlJtbCrQMQj/gAdLT02WxWFRVU127IUePHtWll156yuNMmzZNTz31VEs3D0A7ZJA0IzlZc9evdwTbvXt1SZ8+Td7/o+3bnT/PHjxYKZ066d5Ro/T5rl168sIL1S86Whf16qU///CD8srL9enOnVq8e7fC/PyUV17u3Hds1656eNw4JYSGNnieh5Yt057cXOfjY6Wlmrt+veauX99o24J8fTVn8GBdlJTkXDZ/61bnsIC3Nm/WP2u+AJCkS/v21f78fP197VpJUr/oaD01caKMBoO+27dPL65ZozB/f31y1VWKCgxs8u8IgOdZuHChXn/9dRUVFUmSZsyYIYPBoEWLFumee+5xbhcYGKjk5GR3NRNoUYR+oJ1LTU3V7bffrsTEREnSrFmzZLPZNHr0aAUHB+uWW25xbwMBtFuX9umjf2zcKKvNpo9TU5sc+nfn5urnrCxJUkJoqC7s0UOSdN3gwbp64EBVWSzakp2tzKIiJcfEaPXhw5IcQwLqBv5wf391Cw/XuowMJYSGKjowUCF+fgrx9XUW8zuve3eX0C9JZqNRviZTvSJ9Qb6+urJ/f80ZMkQRJ/VaGt2li77es0eSoxZBrfO6d1dydLRu+fJLlVVXKykiQq9dcomzUN81Awfqqz17tOv4cf115Uq9OGVKk35HADzTM888I0kKCAjQnXfeqVmzZqmoqEi7du1SamqqJEe3/gcffJDekfAahH6gnfv+++9VVlamHTt2SJKMRqMWLFigr776SnfeeWe97ePi4nTbbbfpiSeeUEJCgm644Qb99a9/VWRkpGbOnNnWzQfgRlGBgRrfrZtWHDyo1JwcpZ0Urhvz3q+/On+eM3iwjAaDvti9Wwt37FBWcbFLsD/5fD5Go46WlEiSCioq9GHNGP267h01SnOGDJEkXdGvn3pGRKhTcLCiAwPlZzbrqz179H9btkg1oT8yIEDXDByo6X366JmVK/W3Vav05IUXylxnuML5iYl6bvJkJYSE6M8rVmhvXp4CzGbdds45uv7TT5VXXi6jwaDx3bvr0x07VFYzZKCsutpZc2DFwYNavn+/JvXs2aTfEwDPNHbsWD366KOKj4+XJIWGhmrevHn69ddfVVhYqOTkZHXq1MnNrQRaDqEfaOcuv/xypaWlac2aNZKk2NhYzZ8/X88//7xzapm6wsLCNH36dD3xxBOKiIjQtGnT9Ne//lWBgYEaOnRoWzcfgJtd2revVhw8KElatHPnabdPLyzUd/v2SXKE7dpx+MnR0UqtmaKvltFgUHJ0tLqGhWlgbKwGx8WpV2Sk9ublaU16ujZnZSk1J8fljr2vyaTL+vZ1Po4PCVF8SIgKKyr0cWqqPty2TUWVlZKkvlFRunbQIE3p1Uu+JpNeXb9eq2p6FZRbLPrb5MnyrSm0Fejjo0k9e+rzXbu0Ny9PkvTHESPUJypKFTWFB212u+bV+UKjIc+vXq0xXbs6eyIA8C5PP/20pk6dKknKysrSjh07VFJSovDwcA0aNEiRkZFubiHQ8gj9QDvXvXt3zZ07V08++aQ+//xzffLJJ1q5cqWMRqM+++wzdzcPQDs3rls3hfv7q6CiQt+kpSnI1/eU27+5ebOze/ycIUOcobp3VJR+k5wsu92upMhIJUdHKzkmRv5ms+5eskQv1HwxuXTOHA2IjdWA2FjdIskuKbO4WAfz85VVUiIfo1FhdbrM7snN1Sepqfo6LU2VFosCzGZd2revfpOcrCFxcbJLKquqUl55uaYkJWldRoZ2Hz+ulYcO6cGlS/XClCnONmYWF+ulmnH7g+LidM3AgTIaDBoQG6uNdebcNhuNCvTxkdVuV2lNrZSRCQnacOSI8srLtSY9nbv9gJeaOnWqsrOz9fTTT2v16tUu6wwGgyZPnqz/+q//UkREhJtaCLQ8Qj/gIWrv6h85ckRH6nx4BYBTMRuNmpyUpE9SU1VSVaWSUxQElaSle/dKcozHv7J/f+dyu6RhNV1hJSmrpERZNd34d9UMGzAZjdpwiutToI+Pzu/e3fn4l6ws3fzFFy7bxAYHa1t2ttZnZKi0ulrl1dUuY/TrWp2ergeWLnWOw39k+XKVVlXJIOnyvn31nwMHZDQYdN/o0aq2WvX7xYtlsdl0y/DhunnYML25aZPe2rxZkvSP6dP1xe7dGhIXp+7h4af8HQHwXMePH9eNN96onJN6LkmS3W7XsmXLtG3bNs2bN0/R0dFuaCHQ8gj9gAdIS0vT2pq7V1OnTtXYsWOVmZmp4OBgPf/8825uHYD27uLevbUhI0NXDxyo97duVWZxcaPbvjJtmt7fulXnJiS4dHG32Wx67D//OeV5rE3Y5pvrr3f2NhgQGys/s1mVNd3vJelQQUG9fQySQvz85G82K8Bslr/ZrAqLRYcKC7UmPV3v/vKLfpOcrB01H+Ltkp6qmZpvbNeuevXii1VWXS2LzSZJCmmkt0PdYQcAvNPcuXOdgX/ChAmaOXOm4uPjVVBQoOXLl2vBggXKysrSn//8Z7322mtubi3QMgj9QDv32Wef6ZlnnpG1Ziqqrl27aufOnfrkk0903XXXubl1ADzB4Lg4LZo1SwZJC2qqUzdmTNeuGtO1a6u1JbxO135fk0n3jBypCotFRoNB8SEhigkKUrCvr4J9fXXx/PmSpG7h4fr0mmskSVnFxSqpqlJiRITu/eYbhfr56aZhw+RjNGpSUpJsdru6hoYqJihIkQEB6lozVeCB/HzneeMaqIciScv371d0YKBSKOAFeKXq6motX75cknT11Vfr4Ycfdlk/dOhQpaSk6JFHHtHatWu1d+9e9erVyx1NBVoUoR9o53x9fZ2BX3JU71+6dKlGjBihcePGad68eS7bp6enO6fx279/v/74xz9KknJycvSvf/1LN998c5u1HUD7YTjL/U1GozbfdpvLsoMFBbp+0SKV14T2xddeq84hIS7b2Ox2nfvWW5KkALPZOf6+1jUDB+pgQYHu/uYbRQcG6u9TpriM+a8rp7RUt331lY6VluqPI0boxSlT5Gc2O5/bs5MmuWxfbbMps7hYFptNK2sKAEpSz0bG6m48ckQLd+zQFf366bHzzz/t7wSAZ8nMzFRFRYWMRqNuv/32BreZPHmy/v3vfys1NVU///wzoR9egdAPtHMXXnih9uzZo4qKCi1cuFCrVq1S//79FRUVpcWLF9fbvry8XFu2bJEklZWVaevWrZKkqqoqHayp4A0AZ2vnsWO6f+lSldd0zb+iX796gV9yTNtXKzwgoN76pXv36qmfflJZdbWOFBXprc2b9dDYsQ2e81BBgYorK1Vlterva9dqbXq6npo4URH+/vo5K0urDx9WTmmpjpaUKLO4WDmlpbLZ7fp81ix9UtPDITYoSN3Cwho8/vGyMkmStZEaAgA8W0XN9Sg8PFxhjVwHJCk5OVmpqanKbeI0p0B7R+gH2rmAgADdd999+vvf/y5JSm2ka66/v79Gjx59ymP16dOnxdsHoH1aeeiQ7v3221NuM/zNN5u0TJLzLn92SYn+b8sWfbJjh6w1Y+STIiN13+jROlpSIl+TSUE+PvI1m1VaVaX3a754lKROdbrVZ5eW6qU1a7R8/37nsiv799ddI0fKLulIUVG9NpybkKD3Z87UQ8uWadfx41qXkaFrFy7UMxMnasvRo41Ox/fAsmXOLx/qjts3GE70f1h56JBSjx2TJCVSyA/wSuE17+2ysjLZ7XaXa0BdlTXThvowdSe8BKEf8BBDhw5V1SmqbkdGRjoLzmRmZio7O1t2u129e/dWSAN33wCgOdamp+u9LVu0OTPTpZr+4Lg4vTR1qgJ9fPTsqlX6es+eRo8xrls358/bsrP1fU3g9zOb9dCYMeoXHa2xb79dbz9TnQ/mnUNC9O4VV+ipn37S13v26Fhpqfbk5rrUCgjz91dcUJB8jEalHjumfXl5kqSE0FDdkJLi3K5uQb+6X5DUnaUAgPeIjY1VZGSk8vLylJqaqoEDBza43bZt2yRJXbp0acvmAa2G0A94iAkTJmjChAmSpHfffVcrVqyQJL3xxhsKDAx02Xbfvn269957JUl33XWXbrzxxjZsKYD2INDHp0WnnkuOiVFWcbEz8If4+up3Q4fq+sGDZTIaJUnD4+MbDf0X9uih2YMGOR9P6tlTd5x7rr4/cEB/nThRieHhstpsMhuNzir7tYZ37uzy2Ndk0hMXXKBekZGy2+26ZuBA5ZaV6cMrr1SX0FDnrAN2SY//8IO+3rNHkQEBernmy4laE3v21Lu//qrcmm79tcsGx8Wd+S8KQLtlMBj05JNPKiMjo9G7/KWlpbr22mslSWPGjGnL5gGthtAPtHMbNmzQDz/84LJs06ZN2l9zh+yll16q1/2sbo+Ab775htAPdEDDO3d2VrxvKS9OmaKX1q7VxB49NK13b5cALUmjunbV7eec4wzt/mazIgIClBwdrb4NzHd907BhuiElReaaLw1MRqN+N3SoiiorZTQY5GsyqVdkpKYkJTXYnt8OGeL8OSowUFEnfQFqkPT4+ecrPjhYM/r3V1xQkMv62KAgLb72Wu3JzZXFZlOkv796NFLkD4B3GDVq1CnXBwUF6corr2yj1gBtg9APtHO7d+/WggULGl3/2WefnXL/vXv3Ki0tTb17927ppgHoYHpFRuofl1zS6Pq4oCDdMnx4k49nkJyBv9bt55xzps1rkMlo1B3nntvo+gCzWUO4sw8A8GKEfqCdM5lM8q0z7lSSLBaLbDV30k5eV8tms8lSU1V7yZIluueee1q3oQAAAO3cAw880ORt58yZo5Q6dUAAT0XoB9q52bNna/bs2S7LnnzySX3++eeSpGXLljVYqO/o0aO6pOaO3DfffKO77rpLxpPuqAEAAHQktTWRmuKiiy5qvYYAbYjQD3igyy67zPnNs3+ditV1derUSddff70iIyPVq1cvWa1WQj8AAOjQRowY4fzZarVq8+bNCgwMdKnkn56erqysLHc0D2gVhH7Ag9hsNr3//vuSHBVlkxopblXrvvvua4tmAQAAeIQ33njD+XNZWZnGjx+vLl26uCyfO3eu5s2b54bWAa2D0A94EIvFopdfflmSFB4eftrQDwAAgIbV1kXKz893WV772GwmKsE70NcXZ8V20lzKAAAAgCcwm81KSEjQsWPH9K9//UtHjx7V6tWr9d1330mSYmJi3NxCoGUQ+t1o3759qq6ubvTxqfbbsmVLazbNRV5enm699VaVlpa6LF+0aJFuvvnmJrUZAAAAaG9mzJghydHt/5JLLtHdd9+tsrIyhYeHKzk52c2tA1oGfVbc6Oqrr9aiRYuUmJjY4OOG2Gw2PfHEE0pJSdGQIUOafc7q6mqVlpaqtLRUJSUlKiwsdP7Ly8tTbm6uxo8fr3Hjxjn3WbJkiSwWi4KCglyONXnyZL399ttasWKFJk+eXO9cxcXFmjBhQrPat3nz5mY/p46gqqpKy5cv1+LFi93dFAAAAK8xZ84c7dy5U8uXL3cu8/X11Z/+9Cf5+Pi4sWVAyyH0e5i3335b27dv1549e7RgwYJ6661Wq7MSaa1rr71WWVlZKi8vl8Vikclkkt1uV3R0tKKjoxUaGqrw8HCFh4crJiZGwcHBzn3tdrsWLVqku+++W5I0fPjweud85JFH9MgjjzgfX3HFFXrsscecj3/88UcFBASc8nnl5ORo+vTpTf9FdDCvv/665s+f7+5mAAAAeBWTyaTnnntOW7Zs0a5duxQQEKCRI0cqLi7O3U0DWgyhvw2VlpbKYDAoMDCwSduXl5e7hOWlS5fqo48+UlJSki644ALdcccdLtsfPnxYd911l8477zyX5c8995wkKSgoSH5+fvrwww81f/583X///S536Pft21evMNzKlStlMBh0/vnna9++fVq5cqUkafHixfr444/17rvvys/Pz2Wfk4ueGI1GmUymUz5XppI7tUGDBrm7CQAAAF5ryJAhZ9SLFvAEhP429Mgjj2jkyJG6/vrrT7ttQUGBLr30Ur322msaMmSIlixZomeeeUavvPKKOnfurJtvvll5eXl68MEH5evrqy+//FIvvviirrjiCt17770ux+rWrZskafv27Xr22WcVExOjDz/8UJ07d5YkVVRU6PXXX9eiRYv06quv6pxzznHu+8477+imm25SXl6err/+en3++eeKiorSBx98oAsvvFARERGSpBUrViglJUXh4eH1nsv48ePP+HcGh5SUFI0ZM0aXXXaZS68KtBCDQYqKkiIjpYAAiWq9zVddLVVUSMeOSSdVQW43eJ3Pnie8zhKvdUvwlNda4vVuaxaL42/j+HEpN9fdrWmyW2+9VdnZ2U3e/uWXX1aPHj1asUVA2+Gq2IYmTpyoDz74oEmh/+uvv1ZAQIAGDBigqqoqffTRR3rhhRc0bNgwSdK8efP0yCOPaObMmQoLC1NOTo4ee+wxTZo0qd6xdu7cqfnz52vNmjWaPXu2+vfvr61bt2rlypUqLCzU119/7fwioHv37s79li9froKCAk2dOlXvvfeefvOb3yguLk7z58+Xj4+P/vCHP0hyTCP3/PPPKz4+Xm+88Ua98U9N6d5fXFysuXPnnvb30lFFR0dr7ty5qqqqcndTvI/BICUlSWFh7m6JZ/PxcfwLCXGEhMOH3d0iV7zOLaO9v84Sr3VL8YTXWuL1dgezWQoOdvwLC5P273d3i5okMzNTUK6Z4gAAIABJREFUWVlZTd6ez1zwJoT+NjRp0iQ999xzSk1N1YABA0657eLFizVjxgxnV/n33ntPkqML/9atW7Vx40YdPHhQAQEBqqiokNVq1dq1a2Wz2TRgwADFx8c7u8zv3r1bv/zyi7p166YdO3YoMzNTxcXF+vHHHxUdHa177rlHEydOrBfWf/nlF2VkZGjcuHEKCwvTokWLlJWVpXfeeUdz5851duu3Wq2688479ac//UkvvPCCHn30UUmOegCSTtu1X5JCQkJc6gDg9L788ktt27bN+dhgMMhsNsvf318RERFKSEhQr1691LVrVze20gNERfFhsaXFxEj/n707j4u6Wh84/hkYYBj2XQRkEdwX1Nw1zS23zMo0K7NfmtZNU7O05dqiZVnmrbTytquZ5VKapFfNzMRdzA1NERcUERSQfRtmfn8MjAyLosIs8Lx79WLmu80zHMB5vuec52Rk6P+3FNLONc8S2xmkrWuDpbY1SHubm4eH/n9LHw0CfPnll2g0GsPzq1evsn37dh566CGj49544w2TrpIlhClI0m9Czs7O9OzZkw0bNtww6d+3bx8JCQmMGDECgAMHDrBw4ULOnj2Lra0trVq1okOHDqSlpfHcc8/RrFkz4uLi2Lt3L1u2bGHRokWkpqbStWtX3n//fYYPH87w4cMBSE5O5ptvvuHw4cNMnjyZUaNGce3aNYYNG8abb75J586dDXFMmTKFKVOm8OabbzJgwACcnZ1Zvnw5gwcPZurUqeTm5lJQUIBOp8PR0REXFxdWr15Nr1696Natm+EPq52dHZ06dbrp92flypUVagqIqsXExFRrtQNPT0+6devGkCFDqtUO9Y6np7kjqJs8PS0rQZB2rh2W1s4gbV1bLLGtQdrbEnh5WUXS7+/vb3ick5PD888/z8WLF+nYsSPdu3c37Ctfq0qIukCSfhPr06cPH374IdOnT6/ymGXLljFw4EC8vb0BaNOmDePGjaNRo0aGefgA3377LTk5ORQWFhIcHExwcDAjR44E9L2+xcXFht7++Ph4Vq5cSXR0NA8//DBr167FycmJwsJCVCoVY8aM4fnnn2fatGk88sgjgH65ki+//BI7OzsiIyM5cOAAY8aMQaVSsWLFCr766isiIiLo1asXK1euxNfXl+3bt9OlSxcAMjMzUalUKJVKWYrPjNLS0oiKiiIqKoqIiAhefPFFo7oN9d5Npp6I22Rp31dLi6eusMTvqyXGVBdY6vfVUuOqT6ywDZycnGjdujUJCQm8+OKLTJs2jREjRkhhaVFnSdJvYnfffTdvv/02cXFxle5PTExkz549Rsvx2dvb4+DgUGH4EeiLkpTn5eXF5s2bDcP1P/jgA3788UcAfH19WbFiBd9++y25ubkolUrUajVOTk4EBwfz6aefcuHCBaZPn87+/ftZvHgxarWaqKgoHB0d2bRpExkld/pDQ0ONlvdTKpX07dvX8DwpKQk/Pz+KiooMQ/1vxsbGpkL1f3Gdvb09mzZt4vz584D+rrWLiwvZ2dmcPXuW3Nxc/P39SU9P559//mHv3r0cOnQIrVYL6KeH3Ky+Qr0jP2+1oxrTekxK2rl2WFo7g7R1bbHEtgZpb0tgpW0wa9YscnJy+PPPP5k3bx5Lly6lW7duJCYmAvraVidOnCAiIuKm03KFsHTW+VtqxdRqNb/99htuVcw/CwgIYO3atQQEBBht79y5s1Fv+bp161i6dClr1qwxOu7cuXMVRhGMGDGCyMhInJ2d8fLywtnZGScnJ/r06cPKlSsJCgoiPz8flUrF8ePHWbRoEXl5eQQFBfHss88SHh5OREQEDRs2RKFQEB8fj4ODQ6WV+nU6HQqFAtDXEggPD2f8+PEcO3asWt+fTp068fnnn1fr2PoqNTXVcLNn7ty53HvvvWRkZDB58mQA3nrrLYYOHUqPHj0YP348KSkprFmzhhUrVvDCCy/IP1xCCCGEqPfs7Oz44IMPmD59On/99RdJSUlGn6u/+eYbAB5//HH57CSsniT9ZlBVwl+qfMJfXl5eHt9++22lPf9ZWVkVrh8aGoqbmxuTJk1iwIABPPnkk0b7T58+zYQJE3j55ZcZMGAAn332GaAf+jR+/HhAX+xk06ZNREZGsm/fPiIiIiqNbf369cTExPDWW2+xZ88eevfubZgukJubyzPPPENISAhvvPEGtra2rF69mnbt2slc/pu4evWqoeJsQpkKyhcuXDAU8/Pw8CA9PZ0NGzYYrcIA+mUTe/ToQatWrUwXtBBCCCGEBcnLy0OpVBpGw0ZHRxMdHY2bmxuzZ8/m6tWrLFmyhISEBO6//37c3NwMK2cJYc0k6TeRgoIC8vLyKmzPysri2rVrVT4HjHrUc3NzmTlzJmq1mlGjRlW4XkpKCh4eHkbb4uPjmTZtGhEREYwePbrCOeHh4bz88svMmTOH3bt38/LLL+Pg4MDOnTvZunUrhw4d4vz58wQFBfHOO+/w008/MWbMmErfZ0ZGBhcvXiQpKYmDBw/y5ptvAvoCgi+++CLdunXjmWeeMYwGCAkJ4YUXXmDChAkMGTKkiu+e2LhxIx999FGF7Z9//nmFkRF79+5l7969lV6nefPmfPnllzLEXwghhBD1yhtvvMHGjRtZv349fn5+xMTEMHPmTHQ6HXPmzDEU89u0aRMJCQmMGjWKpk2bmjlqIWqGJP0msmLFikrXoS/f617+OWAY1r9z507mz5+Po6Mjn3zyCfb29iQnJ5ORkYGLiwsajYY1a9bQtm1bw7kbN25k7ty5jBgxgsmTJ5OcnIytrS2pqakAqFQqAAYMGEB4eDjTpk1j7NixLFy4kLi4ODIyMhgzZgxdunRBrVbzwgsv4OrqaigYCODo6MiFCxfw8PDg0KFDBAcHs3jxYrp3706DBg3Yu3cvU6dORaPRcPHiRX766SeKi4spLi5Go9Gg1Wp54403iIuLY8qUKYYbAqLmnThxgh07djBgwABzhyKEEEIIYTIXLlyguLgYe3t7AL7++msKCwsZP368UfV+IeoiSfpN5Mknn6w0oa+OwsJCxo0bx9mzZ3nssccYN26c4Q/WkSNHePXVV9FqtdjY2NCpUyej3vzk5GRee+01Bg4cCMDSpUtZuXIltra2DBgwAB8fH8OxYWFhLFu2jOXLl+Pp6WkUr0ajYcSIETg5OfHZZ58ZbhYAjBkzhqlTp1JYWIiXlxcffvghZ86cMcx/atmyJR988AE+Pj44Ozvj6OhoqOpvZ2eHQqHg9OnTLFq0iKysLFxdXW/r+1SXdezY0VCrISUlhWXLlgEwdOhQw11onU7HRx99hFarpXHjxoZlGkE/JWDVqlUAhiKAQgghhBD1RemQ/r///puWLVvy0ksvsXTpUh588EGSk5MNxxUWFporRCFqjST9VsDe3p6ZM2cSHByMi4uL0b7+/fvTv39/tFotCoWiQi95+RsNM2fOZMaMGQCV9qi7urry7LPPVtiuVCpZsGABwcHB2Jar4Dtx4kQmTpxotK1169aGx87OzvTo0eOG7zE8PLzS4etCr1mzZjRr1gzQF0gsTfq7devGvffeazhu06ZNxMbGcvXqVR555BHD0jPZ2dmGpD87O9vE0QshhBBCmFdISAgHDhzgpZdeMtr+66+/mikiIUxHkn4rcbMCbLeyrujtDp8PCwu7rfNEzfLy8jLczCnfJqUrNQQHB1NQUGCYu29jY8OUKVPo2LEjTZo0MXXIQgghhBBmNWHCBFJTU/nnn38oLi6+6fGlIwOEqAsk6RfCynh7exuW5ytv2LBhlW5Xq9U88cQTtRmWEEIIIYTF8vLyYv78+eYOQwizkKRfCCvzr3/9i/z8/Gofr1AocHFxITIyklGjRknlfiGEEELUO/n5+RQVFVXYrlar+emnn9i1axcfffQRSqWSHTt2kJeXJ4WPRZ0hSb8QVubIkSOVLv94Mzt27OCPP/7gu+++u6XpIEIIIYQQ1u7tt99m48aNFbYvXLiQ+Ph4du/eTXR0NHv37uXkyZOkpKRI0i/qDEn6hbBSlRVurIxWqzU8jo2NZf/+/XTu3Lk2QxNCCCGEsChBQUGoVCp0Oh0RERFcu3aNixcvGh0zffp0FAoFPj4+hsLVOp1OlpMWVk+6+4SwUh07dmT//v03/X/z5s1ERkYazpMl+4QQQghR30ycOJFGjRoRGBjIkiVLKqw8BTBgwADmzZuHv78/GRkZjB07lgMHDpghWiFqlvT0C2Hl9uzZU2Ui7+DgwPDhwxk5ciSHDh0CoKCgwJThCSui1emwkd6MOk/auf6Qthbi1kycOJGQkBCWL19Obm4ux44dIz4+no4dO5o7NCHuiPT0C2Hl1q1bx/vvv1/p/5988gkAbm5uhuOrs0yNuD0JKSl8v2XLTY8r0mjYuHcvOp2u0v1ro6PJvo26DdWRlpXFhA8/JKdcMcg1f/3F+Pffp0ijqZXXFXqa4mKuXLtW668j7Xx73vj2W/ILCyvdN/2zz8i9hSKqAGPffZek1NSaCK1K0tZCVE/Z6Y7FxcVGz0uNHj2aTz75hNzcXBwdHXn22Wfp1auXKcMUolZIT78Q9UDZ5LKyf+REzdAUF/PxmjVEBATQuUWLGx73/o8/olap6NW2bYX9c5YuJTI8HOebrLRQpNGQk59PTl4e2Xl5ZOTmkpGdTUZODmmZmaRmZtKzTRt6tG5tOGfDnj1oiotxUqmMrtW/Qwe+3rCBPw8dov9dd93iO69ZSVlZ+Lu4GG3LKhmh4uLgYNJYCouK6Prcc7d0TswXX1S578uoKP44eJDv//1vHKq5BnRdbWeo2NYarZa0vDx8nZzMEk/U7t28OGoUKnt7w7bD8fH8dfgwfx46RKFGg/oWrnfs7FkKKqkWXpW62taV/U6XupydTQNnZxNHJOqjBQsWcOrUKQA6depU5XFLly7Fx8cHd3d3xo8fb6rwhKhVkvQLUUc0aNCAd955B4Dly5fzxx9/GPaVDun38fGhYcOGZomvPgjz9+fhXr1ISku74XGODg48dPfdLNu8udKk/0ZGz55NUloaeQUFaIqLsbWxQQd4u7ri7eaGq5MT7s7OuDs74+PubnTjQKfTsWb7dp5/6CEAOkyYUOH6L3/xBS+XSVqH9+jBrCeeuKUYb8eFjAy2nj3LH2fOEHvlCjHl5lqeSkvjX1FRdA4IoG9YGL1DQ3Ez4Q2An954A+8yI2b6vvAC3738MkG+vtffQ0oKT773ntF5ueWm04y65x6idu/mj4MH6VWm1gaAo729oVhUXW1nuHFb5xUVMej772nr50ffsDD6hIZWmSzWtsKiIu5/7TXUKhUdmjQB4OiZM/z7668ByM7LY8fChagdHJj08cfsjo2t9DoPvf56pdtLbw7V1ba+2e90qUdXr6aBiwt9QkPpGxpKqIdHrccm6icvLy+Cg4MrbFerr9/KW7JkCZs3b+bgwYOkpKSYMjwhapUk/UJYgcOHD7Nv3z769etX5TEODg6Ggn2bNm0y2tesWTN+/vnnSv+xE7ensg/XZc1ZurTCtj8/+giVvT06nY6hXbsS6u9PYUkvoJ1SaVQdODUzE8cySa2niwt2SiXznnkGACeVCgc7O1Zs3cr3W7bwwsiRRr158Zcu0bjcDZ4dR46gsLGhV2Qk8YmJ7Fi4EIB10dH8tG0b386ciUOZHk4AZUn14tpwJj2drWfOsPXsWeKqMQRao9Wy88IFdl64wNt//cVdDRvSNyyMe0JD8brJqIg75aJW416uN7L8tmvZ2RXO6zl5cqXXK00cy1ozezYhDRoA1Kl2hltv68PJyRxOTmbB7t208PEx3ABoVObGS0367/r1fLF+PQC9p04FYMfChaRcu2ZIztf89Retw8LY/vHHgPHfgEVTplR63Q4TJhi1a2XqUlvfajsDZBQUkFFQwMmrV/l8/37CPDz0NwDCwojw9JSq6aLGjB07liequOGVlpaGl5cXISEhPPvssyQmJqLRaNBqtbLMsagTJOkXwgocPXqUxYsXs3jx4ts6v8ENPnCK27P+3Xcr3X7fK6/w+QsvEOjjU2Gfk6MjD/z731y8csWw7fVvvgFg5Rtv0DggwLB9wvz5Rud+PWMGkeHhNCrpWT529izv/fADPu7urHj9dRp6eQGQX1jIp2vXsmb7dj55/nnuatrUcI1vNm7kqUGDSMvM5PF33mHt22/j5ebGD7//Tp/27fEo6VH989AhIsPDKyS5d0qn03EyNZWtZ87wx9mznLuDue1anY59iYnsS0zkvehoIhs0oG9oKPeEhlrcUOHybVuZ8jeRrLmdoWbb+viVKxy/coWFe/cS7ulJ37Aw+oaFEebuXmMJ4fghQ/i/gQPp+txzbJk/H2dHRzQlU6F6lUnotVqt0XOAi1eu8MCsWVVe++E336x0+y9z5hDo42PVbV0T7exkZ0dOmSkQZ9LTOZOezlcHDxLo6mpo7xbe3nIDQNyRzp0733SK49flbsh26NCBL24wZUsIayFJvxBWICEh4abH5Ofns2vXLgAuX74MgEajYdeuXXTs2BG7as4fFtVT+oG8Mr7u7lXuX/fOO2iKiw29bclpaTiqVLiqjWcKV9U7eOL8eb7fsoVdx47xaL9+tAgJ4Uh8PDuOHCEjO5vf9uzRJw2zZhFc5vzfY2K4lp3NwE6dWLJpEw/07Imfpyffb9mCnVLJv4YPB/T1Bj748Uf8vbz4fNo07JR39s+EVqcjNiWF38+cYdu5cyRmZt7R9Sqj0+n4OymJv5OSmL9rFy1Leob7hoUR6OpaI68xeObMCtuqGrZdE6ytncE0bX06LY3TaWn898ABgt3dDUPCm91hQmhrY4NtSW+enVKJvZ0dmpKpGWV79m1sbCr09Ot0OrRarVEth1937uTHbdv48Nln8ffyIjUzExdHR+xL/g53mDDBUGvF2tq6pttZeYNe1IuZmSw5dIglhw7h5+REn7Aw+oaG0rZBA1mVQNyyoKCgWypmfOnSpVqMRgjTkqRfCCswaNAg1Go1+/bt4+TJk5Uek5yczORyQ4lzcnKYPHkymzdvxusGSaownSNnzvDe8uX8UNIzuHj9ehzs7Hj50Uerdf7JCxf4+/RpGvn5cfz8eS6lppKVm8v2w4fxdnVlyogR9G3fvsIH+7/j4rh45Qo9Jk/GzcmJNbNnk5SayjcbNrBwyhRDUblirZZJDzzAv7/+mvk//cQrjz12y+9Rq9Nx6PRpnv7vf2/53FId7uDc2CtXiL1yhU/27gWgoYsLnzRsSKi//21f8+fZs/EpM9e45+TJLP/3v2nk52fYlpCczGNvv33br1GWNbQz6Nu64x20Fdx+W5+/do1v//6bb//+27DN0c6Ov9q1u+PhuOWn19yIWqWid8nUqtz8fD5cuZKrGRl8MX06zo6O/JOQwAuffca4wYN56O67AegdGYm6pPCeNbS1Vqej46RJt3xeWXfyOw2QnJPDiqNHWXH0qNH2TR98YFRvQ4iq/PzzzyQnJ7NgwQJyc3NZWDIdBmDNmjWsWLGC++67jyFDhuDt7S1V+0WdIkm/EFagXbt2tGvXDoAePXqQV0vLuYlbc6mKOasp164ZevRKKQB/Ly+aBQVx7vJlrmZk4O3mxvFz53h66FAAw/x+0FfxLvu89HrDe/RgeI8eACSnp/PNhg0cjo9n8gMPMKpPH65lZTHs1Vd588knjVYQmPLQQ0x56CHe/O47BnTsiLOjI8t//53BXbowddEicvPzKSgqQqfT4ejggItazert2+kVGUm3li1v+XtTV4bhlg7xVjk4oC6XBKrs7Y22qcrNnS7tyR351lu3/LrW0s51SWHJ0nZTFi3izKVLbJg3DzAe3j/s1Vcr/Gx7ubry4b/+BcC499/n9KVLtA4N5dkFC8jJz8dOqeSdceNo2qiR4ZzS40Ha+k7Vlb81wjQKCgr4/fffUavV7Ny5k+zsbNauXcu+fftQKpV88sknLFq0iA4dOlBYxfKdQlgjSfqFsHIjRoygW7duNzzG2cLmONcV973ySqXbn12woMI2e6WS3Z99hr2dHW0aN2bviRP0jozkbFISHZs1Izk93WgI+SOzZxudX3bocPylS6zcto3oo0d5uHdv1r79Nk4qFYUaDSoHB8YMGMDzCxcy7eGHeaRPH/3r29nxZVQUdkolkeHhHDh5kjEDBqCyt2fF1q189dJLRAQG0mvKFFa++Sa+7u5sP3yYLjdYerAqNgoF7Ro3JmbiRLQ6HcevXOH3kjm/1R0KXL7Sd0xSEhN+/bVa57by9TUUfjMM77/NXv6Ckg99juUS+uooXe/9l7ffvmlP5Lh58yrcKLL0dgZ9W5e2VU20dVZBAb2/+65a5wW7uRmmcTT18rqe/N1GL3/00aPM++EHANo2bswbTzyBna0tTw4cyOQHHwT0Q/J/nTvXMC9+4c8/Y1euKN5bTz2FvVLJmUuX+HrDBvq0b8+EoUP558IF7n/tNd57+mk6lJmTX8rS29pGoSBm0SI4erTGfqdL9fnuOzLKrXJRGT8nJ0N7t/Hzuz68v4am8Ij6ITAwEF9fX1JSUnj++ecN24cPH8706dP5888/+fnnn9m/f78ZoxSi5knSL4SV0mq1FBYW0rp1a1qXWbO5KqV3rJVKpVSirSGVrcdenWrdbRs3JubkSVzVapoEBeHm5GRIEMtfs/zNgA9+/JEfS5Zj9HV3Z8XWrXy7cSO5BQUobW1ROzjgpFIR3KABn/7yCxdSUpg+ahT7T5xg8a+/olapiNq9G0cHBzZ98AEZJRXnQ/39jZYCU9ra0rd9+9v/5pSwUSho5etLK19fpnTuzKm0NH117zNn7qi4W1kKhYJ2DRoYKvn71eAa79klo2rumTatwr6bzem/kpGBjY0Ngd7eN/2dW1HuWtbWzmCato7w8qJvaCh9QkMJ8/CosV5ed2dnvnjxRYa+8gpPDRqEi1pt6OFfvX274biyPf3r5841GnKv1enIzMlhyf/+R7FWy5xx4wjz90dTXEywnx8P9uzJM//5D9NGjODRMiuxWFtb13Q7F92gsFqQm5uhvVv4+EivvrhjNjY2LFy4kKVLl5KamkpQUBBDhgwxfI4aPHgwgwcP5vz58+zYsQNvb28zRyxEzZCkXwgrdeDAAbp27XrL582aNYvhJQWehHn0bNOGY2fPsvfECbre4jDbEb16ERkejrOjI15ubjg7OuKkUtFn2jRWzp5NkK8v+YWFqOztOX7+PIt+/pm8ggKC/Px49v77CQ8IICIwkIYlPaPxly7hYGdXaVVvnU5Xox+yFQoFTb28aOrlxb86duRMejp/nD3L1jNnOFXN5b1K2SgUdAwIMFTs96ylJftS0tPxdHVl3TvvGG2vzpz+0xcvEuLnd1s32ay5naFm27qlr6+hYF9QLc3dbhUaWmHb9o8/RqvT8dicOUwcNswwb//3mBh+2LoV13I3l95Ztoy10dHY2Njg5+HBxPnzyc7Lw0WtxtnREZWDA61DQ1n0yy+cT042zK235rauiXbOLTONCaCxp6ehvcNlyT5RC0JCQnjxxRdxLTdK5M033yQhIYGPPvqI4OBggoKCSExMNFOUQtQsSfqFEMLEWoWG4unqyr/+8x8iAgOZumgRM0ePrta5of7+uDk5MemTTxhw1108OXCg0f7TiYlMmD+flx99lAEdO/JZSQ+1k0rF+CFDALiakcGm/fuJDA9n34kTRAQGVvpa63ftIubUKd76v/+7g3dbtTAPD8I8PBjfvj0XMzMNvYWxZZY0LMvO1pbOAQH0DQujV0gIbtUstHYn4hITaeTrW2E+P9x8Tv/u48dp36TJbb1uXWpnuLW2VigUtPXzM0zRMOcSjDYKBW88+SRvffcdHZs1Y8uBA3y8ejXfvvxyhWOfGjyYe9q1IyE5mWHdu+OkUnHXxIl8PWMGPu7uxJ47R4cmTfg7Lo6CMoluXWrrW/2dBnBzcKCBs7Nh6H6Iu3utxGZq55OTeWfZMhZOmcLltLQaeewgq/DcsbS0NKZOnUpcXBw+5UaPJCcnU1RURFFRESdPnmTu3LlkZGSwatUqWQFJWD1J+oWwMu3ataOgGvMfqyJD1e6cVqdDU1L0qzLli/CVPW/yxx9z6uJFijQamgQF4eXqSvPgYLQlRd9uJv7SJaYtWkREYCCj+/atsD88IICXH32UOUuXsvv4cV5+9FEc7OzYeewYW2NiOBQfz/nLlwny9eWdceP4ads2xvTvX+lrZeTkcPEGH9ZrUqCrK2MjIxkbGUlSVlaF/U08Pfn9iSdwvo259Xdi59GjRIaH3/J5mTk5/G/fPhaWmTN6K+pqO8ON29rRzo6Njz2GTw1O0bhTzRo1YsJ99/HQ66+TmpnJx5MnVzp9J+7iRd5dvpy2jRvzSN++RsnEyQsXmPXNN/i4uTFh6FC6l5mSVVfb+ma/06V+GDHCrDd2akteQQFnL19GU1xcY48l6b9zLi4utG/fntjY2Cp78TMzMxk3bhx5eXm0bduWnJwc3OvIzShRf0nSL4SVKbvEjDCPnUePMnXRoir3ly/CV9b8Z5+lobc34QEBhnXBQT93H66v/V2ZjXv3Mvf77xnRuzeTH3yQ5LQ0bG1tSc3IAK73NA/o2JHwwECmLVrE2HffZeHzzxN38SIZOTmM6d+fLi1aoFapeOHTT3FVqxl5zz2G13B0cOBCcjIezs4cOn2a4DLD103F38WlwjYXE/Tql3fu8mX2HD/OpJJCbpXJzM0lPSsLlZ0d+//5x7DM28dr1hDm739bNwzqSztDxbZW2tiYJeHPyMkhITlZH0NJcb6MnByOnT3LvhMn+PPQIQJ9fEjPymL+Tz/Rr3172oaHE+rvT3pmJgtWreJ8cjIvPPwwnZo3JzUjg4SUFEDfIx/k68u6t99mbXQ0by5ZQoC3Ny+NGkVCSkq9aOvKfqdL1cWEH/Q3i7bMn1+jj8WdOXbsGK+88grjxo3jiSdn9J66AAAgAElEQVSeYNmyZXTo0IEFCxbgVO7vzlNPPUVxcTFPPfUUtuUKdgphjSTpF8JKRUVFcfbsWUaNGoWvr+9Njz9w4ABBQUH4menDfV3SvVUrdtzmzZfKhomDfkizjY0NO8td98q1awyfNQvQ3xh4bcwYBnbqBMDSzZtZuW0btjY2DOjYEZ8yPRFh/v4se/VVlv/+O56urkZDhjXFxYx44w2cVCo+mzrVaFj6mAEDmPrppxQWFRktRVYf7f/nHzq3aEHToKAK+xwdHFAoFMRdvMiEkg/kSltbxt57LwD9OnQwVFm/VdLOpnfszBmmf/45vSMjcXRwYO733/Pzjh2EBwTQq21bPp06lUAfH1IzM/k9JoZ9J04QtXs3XVu25IGePWkZEsJHkybholbz3f/+x8Kff0Zpa8v93bvjWTJv2E6p5OHevRnStSvfbNhAflGRtLUQJqLT6Xjvvfe4dOkSc+bMwcbGhoYNG2JnZ8fs2bOrrL0yb948Xn31VRNHK0TNU+h01RxTKoQlOLsVYldW//iWIyG04nBJU7qrpBj7gao7cKtt6NChJCcns3fvXqZNm0Z0dDTLli1j3759nDx5stJz3NzcmDFjBg899BCpqam8/vrr9CtTOfpWnEqFR9dAEy/44aE7eSe3oJIK+TWqQ4favX4tK/0TfqvFrs4kJRHs52c02qBGFRbC0aO1c+3bcZvtnJ6VhccNeilB3waa4mJsbW2vLyNWw6Sdb0EN/E7nFhSg0+lwUqlu6/zbba87ObdetjVY/d/wOkGrhb//rv7xNxjRdkNf3FVy/oHbOv3ixYusX7+e/fv3ExcXR25u7k3P8fT0ZMuWLbf1epU6sxV+nwmhfaD/+zV3XSFuQnr6hbAixcXFaLVayt+rO3DgALt37670HF9fXzp06EBCQgKALNdXx9xuZeuw21y3vr65WcIP+jYou3RbbZB2Nq2qRuRU151UnJe2FqJ2BAYG8vTTT9OjRw8A0tPTyczMRKVSERcXR3p6Oj179uTcuXN06NCBV155pVo3BoSwBpL0C2EFFi9eTFRUFFevXgXg/vvvJy0trcJx/fr149ixY2RnZ9OtWzeio6MBWLZsGQAtW7akz20OORZCCCGEsGYZGRk8+eSTRtsGDRqEg4MDp0+fpnXr1nz00UfExMTg4OAgSb+oM6TLTwgrkJGRQVJSElqtFoCkpKRKK/jPmTOHNm3a4Ofnx7vvvounpydXr14lNjYWgGeeecakcQshhBBCWApnZ2eGDRsGwKxZswgNDTXsS0hIYOVK/RTSOXPmmCU+IWqLJP1CWIH+/fszY8YMXEqGGr/00ks0btwYgCNHjnDt2jUA9uzZQ2pqKrm5uezatYv8/Hzc3d158sknadu2Ld26dTPbexBCCCGEMCeFQkH79u0BGDBgAJ6enoZ9mZmZHD9+HIC//vrLLPEJUVsk6RfCCrRv355Ro0bh6OgIwMMPP4x/yfzNDz74gBMnTgAwbdo0YmJiSEpKYvLkyVy9ehWlUsnkyZNZvHix2eIXQgghhDCn559/nl69ehnqIvXs2ZOYmBjD/qZNm/LCCy8AsGLFCrPEKERtkTn9QtQDhYWF7N+/n+7du5s7FCGEEEIIkzt16hQajYbg4GBGjx5t2N6iRQtiY2Nxd3cnIiKCHj164O3tbcZIhah50tMvhBX49ddfeeWVV8jIyADgtddeMyzR980339C5c2cAtm/fTr9+/QgLC2P37t0EBASQm5vL2LFjmTFjBunp6WZ7D0IIIYQQ5uLm5oZWq2Xu3LmcOnXK8P/atWuJi4tDo9Hw1VdfkZeXx4QJE0hMTDR3yELUGOnpF8IKnDhxgs2bNxuel10z1s7OzrAMn729PTY2NigUCuzt7VEoFOh0Os6fP09BQQHLly9n0qRJJo9fCCGEEMKcHnvsMd59911Onz5d7XPUanUtRiSE6UjSL4QVaNmyJYMGDWLbtm3k5+czcOBADh48SEpKitFxQ4YMITs7m+LiYvr378+1a9fw9vbm7rvvZvXq1axZs4bx48ejUqnM9E6EEEIIIUxv2LBhDB48mMzMTMO8/psp7VQRwtrJT7IQVmDo0KG8/fbbuLq6AjB79myaNGlS4bi0tDQKCwspLi4mLS3NsMRf6dy1zMxMfvvtN9MFLoQQQghhAYqKivj9999xc3PDy8urWv97eHiYO2whaoT09AthRe666y7S09NRKBTY2toahvKPHj2aDh06EBsbS5cuXYzOUavVhISE0LZtW06dOiV3rYUQQghR73z33XcsXryYefPm0a5dO4KDg3F3d8fOzq7Kczw8PBg0aJAJoxSidkjSL4QVmTNnDleuXOG5554DYMGCBTRv3hyAdevW8eeffxIcHMxzzz1XIbmfNGkSDRs2pEGDBiaPWwghhBDCnJKSklAqlWRmZrJ9+/ZqndOkSRNJ+kWdIEm/EFagsLAQjUYDwLVr19i3bx8Ad999N7m5uWzevJmtW7cCcPXqVfLz8ytco1mzZoZr2dvbmyhyK6DTgUJh7ijqnmrOlzQZaefaYWntDNLWtcUS2xqkvS2Bpf5slPP6668zdepUjh49ytmzZ9m6dStHjhyhXbt2BAQEsH37drKyshg4cCBFRUWGz1VC1AWS9AvLkZUIafGguMHw84ToW7tmQjTYOlS9X6cFz8bgEnBr1zWx+fPns2bNmkq3z58/32hbVFQUUVFRVV5r+PDhzJo1q8ZjtFoFBSCFDWteQYG5IzAm7Vw7LK2dQdq6tlhiW4O0tyWopKPBUrm6utK9e3e6d+9Oeno6R44c4cEHH2Tw4MGMHDmSrKwsXn75ZbKysiTpF3WKJP3CcuyaD0W5NXvNrEtwZNmNj1E6wMBPavZ1hfXIyZEPjLUhJ8fcERiTdq4dltbOIG1dWyyxrUHa2xLk1vBnNyFEjZOkX1iOsH5w8lfTv67/XaZ/zVs0fPhwOnToAOgr9Jf27nfs2JH09HSjNWeVSiUDBw6kW7dulV4rMDCw9gO2JpcugYcHSIHDmlNUBMnJ5o7CmLRzzbPEdgZp69pgqW0N0t7mVlwMSUnmjqJa4uLiuHLliuF5YmKiYfuuXbvILbl5sW/fPvLy8swSoxC1RZJ+YTkiBoNWA3EbAB1Qm3P0Sq4fMRiaDqvF16kZLVq0oEWLFgBcuHDBkPT369ePESNGcOLECX788Uc2btyIRqMhKiqKuLg4pkyZQufOnc0ZuuUrLIS4OAgJAYcbTAUR1ZOTA+fP6z8IWhJp55plqe0M0tY1zZLbGqS9zSkvT/+zUVRk7kiqZcmSJWzcuLHC9qVLl7J06VLD8xkzZpgyLCFMQpJ+YUEU1xPwWk38yyf81lUAyMnJiaFDhwIQEhICQPPmzXnrrbd4+umn+fLLL1EqlTRp0gRbW1s0Gg1Kpfyq31B2Nhw/Dmq1fpjoDZbvEVUoLNTP67TUIcAg7VwTrKGdQdq6JlhLW4O0t6kVFV3/2bCSIn4AAQEBhhWPAFJSUkhNTSUgIABXV1fi4+MpLCykadOmFBcXG42iFMLaSSYgLExtJ/7WnfADeHp68tZbb1W6LzAwsMp94ia0Wv0Hx+xsc0ciapO0c/0hbV2/SHuLm+jTpw8ODg506dKFFi1asHDhQr777jueeeYZQyG/+Ph4/vvf/5KVlcV9991n7pCFqDGS9AsLVFuJv/Un/EIIIYQQ4tbNmTOHEydO0KZNG3OHIoTJSdIvLFRNJ/6S8AshhBBC1Fd2JdM+9u/fj7e3NxkZGQBcvXqVc+fOUVRSmyAhIYEca5jWIsQtkKRfWLCaSvwl4RdCCCGEqM8CAgI4cuQIX331FV999ZVh+8cff8zHH39seP7EE0+YIzwhapUk/cLC3WniLwm/EEIIIUR9N2HCBK5evUpCQgK6ahYg9PT0rOWohDANSfqFFbjdxF8SfiGEEEIIAY0aNWLx4sXmDkMIs7AxdwBCVE9J4h8xWP+Ym92hlYRfCCGEEEIIISTpF1akuom/ZSX8jiXjaQo0Zg2jRuSXvAe1LIEshBBCCCGEVZCkX1iZmyX+lpXwA4R66L8mZpk3jppwMVP/tbFMcRNCCCGEEMIqSNIvrFBVib/lJfwA3YL0Xxftg+xC88ZyJy5nw9LD+sfdAs0bixBCCCGEEKJ6pJCfsFLli/uVbLOwhB/g/yJhczz8dR7u/R78ncHZ3txRVZ8OyMiHpGwo1sLdwXB3iLmjEkIIIYQQQlSHJP3CipUk/gobOBVlkQk/gIMSvhsOn+yFDXFw7pq5I7o9zvbweBsYG2ni77BKBfn5pnxFIYQQQtQGlcrcEQhRL0nSL6ycAprcB2H9QWm5/5C4OsC/74ZXe8KlLEi3shzWzwl8nMx0O8XDA5KSzPHKQgghhKhJHh63f67KHfKvQWEO2DvVXEymVJit/+ooxZGEaUnSL+oGC074y7JRQKCr/n9RTRERkvQLIYQQdUFExO2f6xEGSQch7RQ0aFdzMZlS2in9V89w88Yh6h0p5CeEsGxNm0KjRuaOQgghhBB3IjgYmjW7/fMjBuu/Rs/TJ/+lveaWTqeF3FQ4+Suc+AXs1BB8t7mjEvWMQqfTVbXYuRBCWAadDk6ehLg4SE+XOf5CCCGENVCp9EP6IyL0N/EVdzBRUKeFTdMhYUfNxWdqChu4+9/Xi1ELYSKS9AshhBBCCCEsn04LJ9dD3G+QfkY/x9/iKcC1IXhGQPvx4H0Hox2EuE2S9AshhBBCCCGEEHWUzOkXQgghhBBCCCHqKEn6hRBCCCGEEEKIOkqSfiGEEEIIIYQQoo6SpF8IIYQQQgghhKijJOkXQgghhBBCCCHqKEn6hRBCCCGEEEKIOkpp7gBMZd68eRW2zZw5U/bJPtkn+2Sf7JN9sk/2yT7ZJ/tkn+yrtX3mptDpdDpzByGEEEIIIYQQQoiaJ8P7hRBCCCGEEEKIOqreDO8XdddxjhNNNBFEcA/3mDscIYQQQgghhLAY0tMvrFppwg8QRxzHOW7miIQQQgghhBDCckhPv7BaZRP+UqXPW9DCHCFVSauDX0/Chjg4kw7X8s0dUfUpgIauEOEJT7eHpt6mj0GHjpOcJI440kknHyv6BgohhBD1lAoVHngQQQRNaYoChblDEqJekkJ+wipVlvCX1YMeFpP4a3UwfRPsSDB3JHfORgGv94KhTUz3mjp0bGITCdSBb6AQQghRTwUTzAAGSOIvhBlIT7+wOjdL+MGyevx/PalP+MM9YWYPaOIJTvbmjqr6tDpIz9O/h/d3wvxd0CUQvNWmef2TnJSEXwghhLBy5znPSU7SjGbmDkWIekeSfmFVqpPwl7KUxH9DnP7rzB7QroFZQ7ktNgrwUsPwZvDPVVh9XH8D4AET/ZsdR5xpXkgIIYQQtSqOuNtL+nVaOPkrxG2A9DOQf63mg6txCnDxB68m0H4ceDc3d0CiHpOkX1iNW0n4S1lC4n8mXf+1iafZQqgxTbz0X0+nme4100k33YsJIYQQotbc1r/pOi1smg4JO2o+oFqlg6xL+v/P/wU9X4Nm95s7KFFPSdIvrMLtJPylzJ34lxbts6Yh/VVxLnkP6Xmme00p2ieEEELUDbf1b/rJX/UJv2c49JgJnk3A3qnmg6tpOq1+REJCNES/B7s/hKCu4ORr7shEPSRL9gmLdycJf6loomU5PyGEEEIIaxO3Qf+1x0xo0M46En4AhQ04ekLTYdD8ASjK1ff4C2EGkvQLi1YTCX8pSfyFEEIIIaxM+hn9V08TLh1U00pjTztt3jhEvSVJv7BYNZnwl5LEXwghhBDCipQW7bOWHv7K2Dvrv+aZsCiSEGVI0i8sUm0k/KUk8RdCCCGEEELUF5L0C4tTmwl/KUn8hRBCCCGEEPWBJP3Copgi4S8lib8QQgghhBCirpOkX1iME5wwWcJfKppoTnDCpK8phBBCCCEsy5IlS5g+fTpZWVnmDkWIGqc0dwBClNrHPrO9bnOam+W1hRDCKukARfUOLcwpxM7RDoVNNU8QQohadvToURITE9FqtYZtW7duJTY2lo0bN+Lp6Um/fv3MGKEQNUuSfmEx+tGPC1zADrsqj4kh5pauaY89rWld5f4iimhAg1u6phBC1Hcbp24kpHcIzR/Q3zDNT89n5ciVAIxcORKVh8pw7J7/7CFuQxwe4R4M/Xwo9k72JoszJyWH3Qt2o9PqcG7gTNcXuprstYUQlumVV15h8+bNVe6fN28eAL/99hsNGshnRFE3SNIvLEZAyX83Yo89u9ld7Wt2oMMNk35rsnDhQn744Ycq9+/cuZOcnJwbXsPOzg6VSnXDY4QQ4kaO/XiMhOgEEqITKC4oxjPCE/cQd/LS8gDQarVcirmErZ0tfm38SDudhqZAQ0FGQYWEP+N8BqseWVXp6zz222Ms7b+0WjFNjJlYYZsmX8PmlzaTciwFhY2CoZ8PvcV3KoSoa5KSkm6Y8Je1c+dOHnrooVqOSAjTkKRfCCtw4cIFNBoNhYWFVR5z+fJl7rvvvhteZ9CgQbz99ts1HZ4Qop5IPpLM7o/0N1792vgR82UM+dfyGbN5jNFx6yesx8nXiUejHiX1VCoAQV2DKlxPp9NRXFhc6WvpdLpqxWSjrFieqDCnkP9N+R8px1L019LqWD9xfbWu99SOp7BTVz3iTAhhvTIzMwFo1qwZn3/+Oa6uroZ9M2bMYOvWrWzevBkvLy9zhShErZCkXwgLFxsbyzPPPENISAgAjzzyCFqtlq5du+Ls7MzTTz9t3gCFEPVCZmImm6ZvQlukxcHVgX7v9uPnMT/f8JzUU6loCjQAeIZ7cu3cNQBs7GxwDXA1Orbjvzri4OpA9HsVC7q2HNmSVqNaGW2L+lcUOck52NrbGm1Pi09jy0tbuHb+2i2/RyFE3RYYGEhYWBgtWrQwSvgBfHx8CA4OxtbWtoqzhbBekvQLYeG2bt1Kbm4ux4/rlxe0sbFh5cqVREVFMWnSpArH+/n5MXHiRGbPnk1AQABjx45l7ty5eHp6yjA1IcRt2zRtE3lpeShsFNwz+x6cGzjf9JzEfYmGxzve3WF47Broyuh1o42ODekdgrOvc6VJv8pdhZOvE8VFxdir7clIyCAvVT+dwNHDEQCtRsuR748Q80WM4UYDgIOrA12ndcWvjZ/RNXXFOmJXxxK7KlZfmBBoNaoVdo7Syy9EXeXk5MSqVZVPKXrppZdMHI0QpiNL9glh4e6//366detmeO7r68v3339P06ZNcXau+KHbzc2NoUP1c1c9PDwYNGgQAGq1mnbt2pkmaCFEndNqtL6nvesLXbFT25F7Ndew79dxv1b6+MKuCzX2+kkHk1jSZwlfdvmSlSNXotXoq243aKcvtJVyLIV9n+5DU6DB1t6WJkOboLBRUJBZwPY52zmy/Ai2dra4BrmSGpfKlle2ELtSn/ArHZX0er0X3Wd0r/aqBEIIIYS1kJ5+ISxccHAwCxcuZM6cOaxdu5ZVq1axY8cObGxs+OWXX8wdnhCinmj+QHOUDkoa39uYlQ+vRFukRZOv71HPuJBhOK70cWF2IUkHk7C1t2X87vHotDq+6PQF6GDYF8MqXH/VyMp730r5tPCpsM0lwIW7Jt4FQIPIBnSZ2oV/1v5Dnzl98G7mTfiAcLa9uY28tDxO/HyCk+tO4uDmYCg6CBDUPYgeM3tUmG4ghKjbTp48SVxcHEqlkpYtWxIUVLHuiBB1hST9QliJ0l79xMREEhMTb3K0EELUvIjBERz78RgZ5zNAAaPXjsY1sGKynJOcw/eDvweguLAYTb5GP+S+ZBi9o6fjLb+2o6cjw74YhlarxcbWBnsnezzCPbCxvT5osc1jbWg1shWaQg3Jh5PJvJSJT3MfEnYmAKAt1hol/Cp3Fe6N3Lm45yKuAa6ovdU4uDhg72IvxfyEqKNyc3N55ZVXiI42nko0aNAgXn/9deztTbesqBCmIkm/EFYgLi6O3bv1FbMHDhxI9+7duXTpEs7OznzwwQdmjk4IUV/kpeWxf/F+AALuCqg04Qdw8nMirG8YZ7aeASArMYui/CJAn2jb2OkT9bIV+gd+NBC1p5qfn6hYHDDmixhivoipMq7+8/pTlFvE8dXHyUrKMkrsy1J7qbGxsyH7cjYA+dfyObriaIXjukztQtsxbat8PSGE9Zo3b16FhB9g48aNqNVqXn31VTNEJUTtkqRfCAv3yy+/8O6771JcrF/WKigoiBMnTrBq1Soee+wxM0cnhKhPdszdQWGWfunQFiNasKTPEvIz8is9dvS60Vw6eIn89HxS41IpzNGf5x7sfv0g7fWHrgGuOPk43XZs3s29SYlNMdqmsFHg3dwbtyA3fFv54tfGD89wT9JOp3Fh1wWSYpJIiU2hKLfIcI6tvS1NhzW97TiEEJYrNzeXjRs3AvD8888zcuRIFAoFa9euZf78+axdu5ZJkyZVqOwvhLWTpF8IC2dvb29I+EFfvX/Tpk106tSJHj168N133xkdf+HCBcMyfmfOnOG5554DICUlha+++orx48ebLHYhRN1xKuoUZ7edNTz3DPfE3tkebbG20uNdA13p924/op6J4tKBS4bE2iPMw3CM0bk3KKDXcmRLmg5tSvyWeJoNbwbAwa8OErcxDtDP7feK8KL5A83R6XR4NvbEu7k3Ps19UKqUbHh+A7vm7wJgzKYx+Lb0xbelLzwN6CDrUhbp59LJTsrGxs4GlZvqdr5FQggLl5iYSHFxMe3atWPs2LGG7Y888ggHDhxg27ZtxMXF0aFDBzNGKUTNk6RfCAvXp08fTp06RX5+PqtXryY6OpoWLVrg5eXFunXrKhyfl5fH4cOHAf0d7SNHjgBQWFjIuXPnTBm6EKKO0BZr2fnBzgrbR/86upKjr/Nu6g3Aue3nDEX//NpeXzqvuOj6Dc2VI1ZWeZ2CjAI2TN5AfkY+je9tjFcTL8NygC7+Lvg09wEd+Lf3N5yTnZRNdpJ+GH/qP6kA2NjaGC0jWJ6d2o7gXsE3fE9CCOtlZ6ev1eHn51dhX2khv8LCQpPGJIQpSNIvhIVzdHRk2rRp/Oc//wEgNja20uNUKhVdu3a94bWaNGlS4/EJIeo+G1sb/Nr6kbg30bBUHsDx1cfZ8e6OCseH9Q2j//v9cXB1wMnPiZzkHMO+hu0bGh6XHVZ/I65BrtgesoUMOLD4AKH3hJKbql8ysHQovlar5Y9Zf9zwOtrimx/z+MbHsXeSQl5C1EWBgYE4OTlx5MgRfVFQm+uFQEs7SQICAswVnhC1RpJ+IaxEu3btbnj32dPTk0WLFgFw6dIlkpOT0el0RERE4OLiYqowhRB1VMTACP0SeG9sM2zTaUsK8SlAqdJ/pNDkaYzOa9CmAfFb4gHwauKFS8D1v0cFmQWGxw9+/yBoqbSQn8JGQetHWrPn4z0kRCeQdDAJ0L9my4db1swbLKFyl6H9QtRVSqWSVatWkZeXR3FxsSHp12q1zJo1C4VCQaNGjcwcpRA1T5J+IaxE79696d27NwDffvstf/75JwCff/45arXa6Nj4+HimTp0KwOTJk3nyySdNGKkQoi6KGBQBCoyS/tLh+U6+Tjy+4XHyr+WzpO8So/M8GnvAFv1jnxY+RvuyErOAkoJ7Tb0pyqm657/VI62IXR2rXwmgZIRAm8fboPLQJ+k2tjZMjJlodM61c9dY8/gaNHkaFDYKRq8bjUtD45ugOq2OLzp+AYDSUYmtvW21vh9CCOtU2dB+GxsbQkJCTB+MECYiSb8QFm7fvn1s27bNaNuBAwc4c0a/FNaCBQsMc9RKlR0RsHHjRkn6hRB3rpJCe/np+sr9ju6ORts1BRoOfnUQe2d7TvxywrD9VNQpmt7XlAaRDQC4evIqAGofNQqbG1TyQ19V36+1n+FGAYBXhFeVx185cYVNL2wyjDxoNrxZhYQf9Mv2lSr/PoQQ1u+ll14iJqbqJT/LW716NZ6enrUYkRCmJ0m/EBbu5MmTrFxZdYGrX3755Ybnnz59mri4OCIiImo6NCFEPVc6zN6rqXHynRCdQEJ0Ag6uDkZD+LUaLRunbmTQx4Pwa+1nKKrnGuiKtkhL8pHkSl+nIKOALTO2cGbrGaPtW2ZuIWJQBB2e7oBbsBsA2cnZHF56mOOrjhtWB/Bs7EnXaV3JvpyNrb0tdk52KO2VFOYUcmT5EcP1nBs43+F3RAhhabKzs8nIyKj28TqdrhajEcI8JOkXwsLZ2tpib29cVEqj0aDV6j/Mlt9XSqvVotHoe7g2bNjAlClTajdQIUS9cinmEpcPXwYgrF8YAKknU68foLg+Zz+sbxhqbzXHfjpGYVYhf3/zN+3HtycvLQ8AtyA3vuzypdH1lfbXP6LEroq9Xj8AcA9x59q5awDEbYzDwc2BRj0acXjJYS7FXDI61q+NHwMXDMRObUf0e9Gc+u1Ule+pUQ+ZyytEXfPwww/Ts2dPw/NTp06xfv16evToYSiAvHPnTvbs2cPjjz+Ok5OTuUIVotZI0i+EhXv00Ud59NFHjbbNmTOHtWvXArB58+ZKC/VdvnyZIUOGAPoh/pMnTzaqUiuEEHci80ImAP7t/GnUTZ8s2zvbo1Qp8Qj1oOdrPYl6Ngo7tR09X+2JvYs9WZeyOL/jPK1GtcKvlR+NBzQmfnM8rR5pRfLRZNLj0wH9yAF7l+s3NBsPaMyZ38+gLdbS/aXuNH+gOdve2Eb85nhc/F3oPKkzmgINWUlZhoTf3sWedv/XjjaPt8HGVv+3z7+Df5VJf2ifUFo/2rrWvl9CCPPo06eP4bFGo+G+++6jbdu2fPzxx4btjzzyCJMnT2bnzp1MnjzZHGEKUask6RfCCg0bNozIyEhAv1RfZRo0aMDjjz+Op6cn4eHhRlVqhRDidrkGugLQ4uEW2DnZ0eKhFob5/j4tfbjvi/vwDPdE6aCk/VPtCb472FARf8CHAziw+ACBXQJBAb1m9cJObYdXhCbPfnkAACAASURBVBdNhjTh6j9X8QjzoNnwZgC4B7sD+t56tbca//b+hPQKAaDfu/0I6BSA2kuN0lGJ0lHJvR/ey+4FuwntG0rEoAjs1Mb1ToK6BHHXM3cZlh1UqpQ4ejji3dwb76betf2tE0KY2fnz50lJSaFZs2YV9oWGhrJr1y6OHz9Oq1atzBCdELVHkn4hrIhWq2X58uUAdOvWjcaNG9/w+GnTppkiLCFEPTJ63WjD4w5Pd6iw37elr+Fx2yfaGu2zsbWh03OdDM/t1Hb0mtULgMixkRWuNernUTeMpfkDzY2ee4Z7MuSzIVUe7+TnVGnMQoj6oXRkZHR0NCtWrGDAgAE4OjoSGxvLxo0bASgoKLjRJYSwSpL0C2FFNBoNH330EQDu7u43TfqFEEIIIYSer68v3bp1Y9euXcyfP5/58+cb7Xd1daV58+ZVnC2E9ZKxvkIIIYQQQoh64Z133uHuu++usN3Ly4v3338ftVpthqiEqF3S0y+EEEIIIYSoF1xdXfnPf/5DYmIiJ06cID8/H19fXyIjI6tcEUkIaydJvxBWoLCwkN9//51169aZOxQhhBBCCKsXEBBAQECAucMQwiRkeL8QVuDTTz9l1qxZHDhwwNyhCCGEEELUCT/99BNDhw7l/Pnz5g5FiFolSb8QVqB1a1k7WgghhBCiJmVlZZGUlIRGozF3KELUKkn6hbACkZGRdOvWjffee8/coQghhBBCCCGsiMzpF8IKeHt7s3DhQgoLC80dihBCCCGEEMKKSNIvhJVav349R48eNTxXKBQolUpUKhUeHh4EBAQQHh5OUFCQGaMUQgghhLBMnTt3xsHBAW9vb3OHIkStkqRfCCsVExNDTEzMTY/z9PSkW7duDBkyhE6dOpkgMiGEEEIIy9e6dWupmyTqBUn6hajj0tLSiIqKIioqioiICF588UXuuusuc4dlkRQo8CIITwJxxAUlsl7vrSoin3yyucI50kkydzhGpH3vnLSvKK/0ZyKFM1wj2dzh3JT8nNw5S/47UB19+vSp9rG2trZs2bKlFqMRwjQk6RfCitjb27Np0ybD0jL+/v64uLiQnZ3N2bNnyc3Nxd/fn/T0dP755x/27t3LoUOH0Gq1ACQkJODo6GjOt2CxFChoTEfc8DN3KFbNDhV2qHDBmyucI4GjNz/JBKR9a4a0ryiv7M9ECme5wDFzh1Ql+TmpGZb6d6C6MjIyqn2sjY3UPBd1gyT9QliZ1NRUJkyYAMDcuXO59957ycjIYPLkyQC89dZbDB06lB49ejB+/HhSUlL+n707j4uq3v84/pphk1UFBXfALZQUldTENVPb9Ga5ZNpV7y9v2i0zW/RamXXLVm3Tm2aZWplmWm5pbmUuKK5pKhdxQ1MEE1BQWWd+f0yMjoCiATMD72cPHsx8z/ec8xnOcZrPnO/3c1i0aBHz5s3jmWeeITw83J7hO6wA6v75QTAHOAfkAib7BuWUDIA7UIXqhHCOJM6RbO+gdHxLjI6vXM2I5ZyoTCChpHGadP6wd1CF0nlSUhzzfaC4nn32WZvnJpOJ/fv3s3btWgYOHEhQ0OUvhZT0S3mhpF/ECfzxxx8kJlqG0B0/ftzafuLECWsxv6pVq5KamsqKFSsIDg62Wb9jx4506NCBW2+9teyCdjL+1Pnz0TlAd0m4eWYgCzgPVMWfOg7xYVDHt6To+MrVTEAmluS/Cv7UdtikX+dJSXHM94HiGjhwYKHtRqORTZs2sWDBAlxcXMo4KpHSpaTfSaWkpLBy5UoGDRpkbRs9ejTvv/++9fnChQu5cOECQ4YMsbalp6fbbMfX1/em9n/48GEyMjKIiIi4qfXlxqxcuZIPPvigQPu0adOYNm2aTVtMTAwxMTGFbqdJkyZ8+umnGuJfCE/y/y3k2jWO8sPyd7z8d7UvHd+SpuMrV8sBHOecKIzOk5LmWO8Df5XJZOLYsWPs27dPn2+l3FHS76Q++ugj6tWrR0ZGBj4+PgBs3boVgPPnz+Pn50dsbCxhYWE263Xp0oXAwEAAkpOT2bhxIx07dixyPytXrrT2z2cymfjPf/5DixYtiv2mmJ6eTpcuXYr78gCKVZlebkxsbCwbN26kR48e9g7F4Vwu5qShniXD8nd0cZAiWTq+JU3HV65m+ds7cmE8nSclzbHeB4prwoQJBdpOnDjBnj17AKx1kETKEyX9TmjdunX8+uuvjBs3jh49evDLL7/YLO/Vqxe//PIL8fHxPPjggwXWX7JkCe7u7kRGRlrbli9fbpPcZ2Vl0bFjR/z8/AqsP3PmTPbt28fBgwdZsGBBgeV5eXnk5eUVmrT/8ssv173KnJycTM+ePa/Zp6Jp3bq1dQ5acnIyX375JQA9e/bklltuAcBsNvPBBx9gMplo0KABvXv3tq5//Phxvv32WwBrEUARERGRimb58uVFLqtbt65qH0m5pKTfyRw4cIDXXnuNDz74AA8PjyL7ZWdnc/ToUcaPH09mZiZms9lm6P/VjEYjOTk5ZGVl4ePjw/r16/H396dSpUo2/VatWsX8+fNp0KABd9xxB48//rjN8uPHjzNy5Eg6depU5H6uN09KRVMKCgsLs47aiIuLsyb9UVFR3HXXXdZ+q1atYv/+/fzxxx8MGDDA+rfMyMiwJv0ZGRllHL2IiIiIY2jTpk2BNg8PDxo3bsyAAQNwd3eukQsixaGk38ns3buXESNGEBoaykcffQRgc8U+MjISHx8fdu7cSePGjZk5cyYff/wxXl5eBYb6X+3o0aM88sgjAHh7ezN27Fib5StWrODNN9/kww8/pFatWgwbNoyUlBSee+453N3dWbZsGZMnT6Z37948/fTThe7jWlMJpHgCAgIYOnQoAPXr17dZ1rdvX1q0aEFwcDBZWVnWURVGo5FRo0bRunVrGjduXNYhi4iIiDiE9957j+XLl5Oamkrbtm01f18qBCX9TuaBBx7Aw8ODTz/9lAsXLhQY2g/QuXNn1q9fz6VLlwA4c+aMzRcD9913X6HbbtKkCdu2bSMnJwd3d3ebK+7Z2dnMnz+fSZMm0apVKwBmz57Nv//9b/r06UPlypVJTk5m/PjxdOvWrcj4izO8Pz09nSlTplyzT0VWrVo16+35rva3v/2t0HYvLy8GDx5cmmGJiIiIOLyRI0eye/duAGbMmME777xDVFQUL730ErVr12b06NF2jlCk5CnpdzIeHh6cP3+er776ijfffBOwJORXWrFiBf369SMnx1JJ9+TJkzbJ4A8//FBgTn8+FxeXQoffu7u7M2fOHMAyhH/v3r1s376dY8eO4enpSWZmJnl5eWzZsgWTyUR4eDg1a9a0fnFgNput278eX19fxo8fX5w/R4X0r3/9i8zMzGL3NxgM+Pr60qJFCx566CFV7hcREZEK6fjx4+zevRtXV1dat27Nzp07mTNnDl27dqVy5cp8/fXXDB8+HC8vL3uHKlKilPQ7oSlTppCRkUHr1q0BaNeunc3yHj16MGHCBJ599lkyMjI4evQooaGh19xm7969yc3NtakTcOnSJb766iuaNGnCjh07mDJlCkePHsXFxYVbb72VyMhIUlJSeOKJJwgLCyM+Pp6YmBjWrFnD1KlTOXv2LO3ateOdd94hN9dyWxc3N7dC51JdbcGCBTRo0OBG/zQVwt69e62jOG7Exo0b+emnn5g9e7bqJoiIiEiFk//5p0+fPowZM4bZs2czffp0TCYTLVq0YPHixRw6dIjmzZvbOVKRkqWk38ls3ryZFStWAJYEGoq+tV3jxo1Zt24dXl5eVKlS5Zrb/fzzz3nqqadYvXo1BoOBU6dO0adPH+uXBc2bN+fRRx+lXr161KpVy7rerFmzuHDhAtnZ2QQHBxMcHEz//v0ByxXmvLw8jEYj58+fp1KlSri6uupWfCXEYDBgMBiu2+/KW8/s37+f7du307Zt29IMTURERMTh1KlThxYtWpCcnAxAeHg4OTk5JCcnc/HiRQDrb5HyREm/k4mNjWX8+PG8+OKL1rYrh+kbjUa2b98OQPv27Zk+fXqB4nmFzen39/cnKCiIbdu20bZtW5YsWcIdd9xhrd7v7u6Oh4cHffr0KbDuY489VqAtICCA1atXW7+YSExMJCgoiJycHOtQ/+sxGo24uuoULUrr1q2ZNm3adfudPXuWMWPG8OuvvwKWW/Yp6RcREZGKqGHDhnz//fc88cQT1gtZ77//Ptu2bQOwubglUl4oo3IyQ4cOxdXV1Zr0m0wmXF1diYmJASyJ4Pnz59mwYQM9e/Zk2rRpdO/eHYCsrCzAcls3o9FYYE5///79mT59OsHBwcyfP59PP/3UZnnbtm1trtIvWbKEL774gkWLFtn0O3bsmPWe8vni4uJo2LAhw4YNY9++fcV6rW3atClWUlvRbd26lYSEhEKXeXh40Lt3b/r3729N+vPPAxEREZGKZuHChYDl81O+tWvXApa7TNWrV88ucYmUJiX9TubqK99nzpyxDt3PH8b96KOP8uCDDxITE4PZbGbXrl20bt2alJQUPD09i5zP3bNnT7799lsGDRpE3759r3lrt0uXLjFr1qxCr/ynp6dTuXJlm7atW7fSpUsXBgwYAFiGTo0YMYKQkBAmTJiAi4sLCxcupGXLlprLf4OWLFnC6tWrC11WuXJlevfubXM88vLyyio0EREREYdydS0sg8GAp6cnLVu2LPRzrUh5oKTfyS1fvtxa0C8jIwNXV1eGDBlCs2bNGDp0KG+//TYTJ060jgC41reXFy9exMvLi3PnzpGbm0teXl6h1fYvXrzI2LFj8fLy4qGHHiqwPDk5mapVq1qfJyYmsmvXLl555RUAkpKSeO6554iKimLEiBHWeekhISE888wzPPbYY0XeVlBuzpVTKq6c4y8iIiJSkUydOtXeIYiUOSX9TmzPnj3Mnz+f2bNnA+Dn58fcuXPx9fXl0UcfZciQIXTr1o309HRGjx5Nq1ataNu2LQkJCVy4cAGDwYC7uzsAW7Zs4fPPPyc8PJyvvvqK559/npiYGIYPH07nzp2towM2b97MpEmT8PT05KOPPsLd3Z2kpCTOnTuHr68vubm5LFq0iIiICGuc06dPp3379tSoUYOYmBiefvppcnNz+f333/nmm2/Iy8sjLy+P3NxcTCYTEyZMID4+nlGjRhWrUJ1Y1KhRg4kTJwIwd+5cfvrpJ+uy/CH91atX11w1EREREZEKREm/k2rTpg1Nmzbliy++oGbNmtb2+vXrk5KSQrdu3Rg6dCgADzzwAHl5eezbt4++ffvyzTffsG3bNv7xj39YpwscPXqUoUOH8uCDDwIwb948/vvf/7Jw4UI6depEdnY2jz76KEePHmXQoEE8+uij1i8M9u7dywsvvIDJZMJoNNKmTRsefvhha0ytWrUiPDwcsFRJfffdd6levTo+Pj54enpaq/q7ublhMBg4dOgQU6dOJT09HT8/v7L4czq8PXv2sG3bNrp161ZkHw8PD1q0aAFY6jZcKSwsjO+++47g4OBSjVNERETEkTz//PM3dOeohQsX4u/vX4oRiZQ9Jf1OKr/A3ZUJfz5/f3+eeuopm7a+ffvSt29fAJ555hmbZYW9Efr4+DB27FjrcxcXF8aOHUtwcDC+vr42fbt370737t0xmUyF3kbu/vvvt9luhw4drvnaGjZsyAcffHDNPhXNb7/9xvTp05k+ffpNrV+jRo0SjkhERETE8WVkZHDu3Lli9y/uXaZEnImSfim2W2+99ZrLiyoQKH/d8ePHr9snMzOT6OhoAE6fPg1Abm4u0dHRtG7d2nr7RBGxn6P7j/Lhkx/y5rI38fTxtHc44uB2rt3JJ2M/4fXFrxNYN9De4Yg4pX79+tncvvrgwYMsW7aMDh06WIv6bd68ma1bt/LII4/g7e1tr1BFSo2SfhEncM899+Dl5cW2bduIi4srtE9SUhIjR460abtw4QIjR45k9erVBAQElEWoInINoeGhvLboNSX8IiJlpGvXrtbHubm59OrVi4iICD788ENr+4ABAxg5ciSbN28u8FlKpDxQ0i/iBFq2bEnLli0B6NChA5cuXbJzRCJys3z9fa/fSURESlxCQgLJycmEhYUVWBYaGkp0dDQHDhy47uhWEWejpF/EyfXt25eoqKhr9vHx8SmjaEREREQcU35dqk2bNjFv3jx69OiBp6cn+/fvZ+XKlcDlOx6JlCdK+kWclMlkIjs7m2bNmtGsWbPr9s/OzgbA1dVV9RccyJ4Ne1g+YzknD53EvZI77Xq246HnHgIuz+cdNWUUK2ev5OhvR6kZWpOhrw4l80Im89+Zz6mjpwisG8jg8YOp36z+dbcp9nX1HO2bPcZif/nHbsznY1g7dy37o/fj6uZK23vb0vfpvri6uRY6J//qtuL8ez176ixfvv4lh/ceplrNagx+eTD+Nf0Z13McDzzxAHcPvdvaN/FoIhP6TuCpj57i1va6WilypcDAQKKiooiOjmbSpElMmjTJZrmfnx9NmjSxU3QipUdJv4iT2rFjh7UAzY0YP348vXv3LoWI5EadPnaaac9Oo0v/Lgx9dSiXMi6RlJBUoN/S6Uvp+7Tl7huzXpnF9DHTcXVzZcBzA3DzcGPOq3P4/OXPef3714u9TXEsN3KMxbHMnTiX7n/vzv2P38/BnQf5ZtI3GAyGYn3RVtx/r99N/Y4HnnwA90rufD7+c2ZNmMXEJRNpentTdqzeYZP0b/1hK/5B/oS3Cy/R1ylSXkycOJEJEyawYcMGm/aAgAAmTpyIl5eXnSITKT1K+kVE7CTldAomk4nmHZtTu0FtABpGNCzQ766hd9GoVSMAug3sxvx35/PPN/5JWBvLnMQu/bsw/935pKekF3ub4lhu5BirJoBj6fpwV6J6WaZY1QytSVJCEhu/30i/0f2uu26x3wMG30XTtk0t+3uoKwveW0B6Sjode3dk+pjpJCUkERQchNlsZtuP24j6WxQGo6HAdkTEcjX//fff5+TJk8TGxpKZmUlgYCAtWrTA3d3d3uGJlAol/SJOpmXLln9pvlm1atVKMBr5KxpHNqZhi4ZMHT2Vtve0pUvfLgQ3DS7QLz8ZAKhcrTIA9cLqFWjLvJhZ7G2KY7mRY6yk37E0atnI5nlIeAhrv15L2pm0665b3H+vdRvXtT6uGlQVsJwLEZ0j8K3qy441O7hv2H0c2n2IlKQU2t/f/i++KpHyr3bt2tSuXfv6HUXKASX9Ik5mypQp9g5BSoirmyvPf/Y8ezfsZcOiDbwx+A26DuhaYFhwYVfsCmszm83F3qY4lhs5xuJYrq6Rkp1pqZ/i5uGGwXDtq+1/5T3AbDbj4urC7ffdzvbV27lv2H3ErIyhSZsmBNTULVpFinLlLfwKs3DhQvz9/csoGpGyoWpeIk5q+fLlTJkyheTk5GL137FjB0lJmtvtaAwGAxGdIxj50Ujuf/x+1s1bR3pqusNtU0QK93v87zbP90Xvo3rt6vhW9cXTxxOAjNQM6/I/Tv1h0/+v/nvt+EBHTh0+RUJsAjvW7qDjAx3/wqsRKf/OnTt3zR99uSrlka70iziRnj17kpSURExMDGvWrGHTpk3ceeedrFixgri4uELXqVy5MmPGjGHixImcPXuWl19+mW7dupVx5FKYuB1xHP/fccJah2HGzLEDx/Cu7E0l70oOtU0RKdqijxZhMBoIqhfEjjU72LVuF0MmDAEsQ/3dK7mzbv466jWpR8rpFDYsulw8rCT+vdYIqUGDiAbMe3seLi4uRHSOKPHXKCUrKSGJLyd+yagpo0g5nXLTj9083Oz9UpzSs88+a/M8LS2NH3/8kbS0NPr164e3t7edIhMpPUr6RZxIXl4eJpOpwLfQO3bsYMuWLYWuExgYSGRkJMePHwcKDkUV+/H09SRmRQyLP16M0WgktFkoT//3adzcb/6DXGlsU0SK1mdUH1bOWsnvB3+nalBVHnnxEdr/zTKn3tPHk/977f/49r1vGX3HaEJvDaVLvy58+/63luUl9O+1Q+8OzHl1Dt0f6Y6rmz7aObqsS1mcPnqavNy8v/RYSf/NGThwYIG2wYMH06tXL9asWcPw4cPtEJVI6TKYNYZFnMhv/MYWCk9uC9OOdjTj+vewL023zbD83vHYzW9j+vTpLF++nKSkJEwmEzVr1iQlJYWsrCy+/PJLPv74Y7Zs2UK3bt3Yt28fGRkZREVFsWnTJnx8fKhevTr79+8nPDycL7744qbjWH0YXlgHPRrAG3fe/Ou5ETOYUSb7iaTXn49Olcn+yj8XIIhsMvmNNfYORse3xOn47ly7k0/GfsLri18nsG5gme23MHE74pg8fDKvLnyVmqE17RSF5ZzI4gL7+MlOMVyb3gdK2s29DzzGDX4gmnHbnyvuuLH1blCfPn04duwYX331FU2aNCnZjR9ZB2vHQmhX6P5OyW5bpBh0yU/ECZw7d47ExERMJhMAiYmJhVbwf+2112jevDlBQUG8+eab+Pv788cff7B//34ARowYUaZxi4hI6ftl4S80atnIjgm/iPN7+eWXmTlzJqGhofYORaTEaQyYiBPo3r07ISEhTJs2jfT0dJ5//nm+++47Dh8+zN69e0lLs9waauvWrZw9e5aLFy8SHR1NZmYmVapU4W9/+xu7d+8mKirKzq9ERERKypHfjnD8f8fZtW4Xo6ePtnc4Ik7lyJEj/O9//8NsNnPLLbcQEaF6GFJ+KekXcQKtWrWiVatWzJ49m/T0dPr168eWLVs4fPgw7777rrXf6NGXP/SNHDkSsMzpHzlyJNnZ2WUet4iIlJ7Jwyfj6ePJ4JcHc0vkLfYOR8QpZGZmMn78eH76yXYaSvv27XnzzTdVyE/KJSX9IhVAdnY227dvp3379vYORUSkXIjsFsmMnWVTc6Qo/43+r133L+KMJk+eXCDhB9i8eTNvvPEGEydOtENUIqVLc/pFnMDSpUsZN24c586dA+DFF1+03qLv888/p23btgD88ssvdOvWjfr167NlyxZq167NxYsXGTJkCGPGjCE1NdVur0FERETEnjIzM1m2bBlubm688cYbbNmyhS1btjBp0iS8vLxYtWoVKSkp9g5TpMQp6RdxArGxsaxevdpavG/NmjWcOXMGADc3N+tt+Nzd3TEajRgMBtzd3TEYDJjNZhISEsjMzGTu3Ll2ew0iIiIi9nTy5ElycnJo3749d911F+7u7ri7u3PHHXdw7733YjabOXLkiL3DFClxSvpFnEB4eDj33HMPlSpVAuDuu+8mMLDgLaLuu+8+1q9fz7Fjx+jevTunTp3C29ubXr0stylatGgRmZmZZRq7iIiIiCNwcXEBICcnp8CyvLw8AHQ3cymPlPSLOIGePXvy+uuv4+fnB8B//vMfGjduXKBfSkoK2dnZ5OXlkZKSYr3F38MPPwzA+fPn+eGHH8oucBEREREHUbduXXx9fdmyZQufffYZBw8e5MiRI3z77bf88MMPGI1GGjRoYO8wRUqcCvmJOJHbbruN1NRUDAYDLi4u1qH8Dz/8MJGRkezfv5/bb7/dZh0vLy9CQkKIiIjg4MGD1qkAIiIiIhWJi4sLQ4YMYerUqUybNo1p06bZLO/Zsyf+/v52ik6k9CjpF3Eir732GmfOnOGJJ54A4L333qNJkyYALFmyhPXr1xMcHMwTTzxRILl/8sknqVWrFjVq1CjzuEVEREQcwdChQ8nJyWHOnDnWKY9Go5F7772XcePG2Tk6kdKhpF/ECWRnZ5ObmwtAWloa27ZtA6BTp05cvHiR1atXs27dOgD++OOPQufth4WFWbfl7u5eRpGLiIiIOA6DwcBjjz3GkCFDOHToENnZ2YSGhlKlShV7hyZSapT0iziBSZMmsWjRokLbJ02aZNO2fPlyli9fXuS2evfuzfjx40s8RhERERFH9/bbbzNq1CgqVapEeHi4td1sNrNkyRK6du1qraEkUl5ocq+IiIiIiFQICxYsYMCAAezZs8falpCQwPDhw3nttdcKrewv4ux0pV/ECfTu3ZvIyEjAUqE//+p+69atSU1N5dChQ9a+rq6u3H333URFRRW6rTp16pR+wCIiIiIOyMPDgxMnTjBs2DAGDRqEj48PM2fOJDs7G7AM/xcpb5T0iziBpk2b0rRpUwBOnDhhTfq7detG3759iY2NZf78+axcuZLc3FyWL19OfHw8o0aNom3btvYM3WmYMWHACBgA3aO3pJgx2TsEQMe3tOj4ymWWRMnswH9/nSelw1HeB4pr8eLFfPLJJyxdupQvv/zS2h4eHs7jjz+u6v1SLinpF4dxmtOc5CQuuBTZ5zd+u6Ft/sqv5JFX5PI88qhNbWrgPBXtvb296dmzJwAhISEANGnShFdffZV//vOffPrpp7i6utK4cWNcXFzIzc3F1VX/1K8ni4tUwgfLrKeizxkpLsu/4ywu2DkOCx3fkqbjK1dzrHOiMDpPSprjH/PCBAYGMm7cOLy8vPj6668BeOSRRxg9erSdIxMpPcoExGGsYhVZZJXoNi9xiW1su2afPezh//i/Et1vafL39+fVV18tdFmdOnWKXCbXdoHUPz8MegHp9g6nHPAC4AJpdo7DQse3pOn4ytU8Acc5Jwqj86SkOdb7QHGtXbuWqVOncuLECWvbV199RVxcHCNHjrQp7idSXijpF4fRilZsYUuZ77cpTct8n+J4ThFHVWphxBdwB3LByYYs2p/hzx83wJ0cMknisJ1jstDxLQk6vnK1/HPCHXAji4skc8TOMRVN50lJcNz3geIaO3YsAF5eXjz55JM0bNiQV199le3btzN48GDWrl1L1apV7RylSMlS0i8OoxnNMGEihpgy22db2hJBRJntTxxXNpeIZyshtMADb8DD3iE5tQukkcCv5OEYVZB1fEuWjq9c7QKpJLCHPHLtHUqRdJ6ULEd7H7gRHTp04IUXXiAoKAiA+fPn89577/H9dv0ePQAAIABJREFU999jMumLICl/lPSLQ8lPwMsi8VfCL1fLIIUDrMeLKlTCFzd9ILxh2Vwik4w/h3s6VqEsHd+/TsdXrpbDJS6RwUXSHLqIXz6dJ3+dI78PFMfEiRO5++67bdq8vLx46aWXuOOOO/Dw0Dkh5Y+SfnE4ZZH4K+GXopgwkUEKGaTYOxQpBTq+5ZuOrxSHzpOKZdGiRcTFxTF8+HACAgIKJPwA2dnZrF69mkWLFjF58mQ7RClSupT0i0MqzcRfCb+IiIhIxbB8+XL27t3L008/XWBZQkICixYtYtmyZZw/fx4As9n5Ri+IXI+SfnFYpZH4K+EXERERqTj8/PwAmDlzJsOHD8doNPLzzz+zcOFCduzYYdO3SZMmGt4v5ZKSfnFoJZn4K+EXERERqVgGDBjA5s2bmT17NosXL8ZoNJKSYpna4erqSmRkJF26dKFz587Wwn4i5Y2SfnF4JZH42zPhNxrAZLb8GA12CaHE5P054s3FyV+HiIiIVAzt2rXjrbfe4q233iI1NdXa3qpVK5566imaNWtmx+hEyobR3gGIFEcEEbSl7U2ta+8r/HUrW37/cdFuIZSY/NcQXMW+cYiIiIgUV7du3Vi2bBnjx4+3Jvm7du1i6NCh9O3bl48//pj//e9/do5SpPQo6RencTOJv70TfoCwapbfPx6yaxh/mckMaw5bHjepZt9YRERERG6Ep6cnvXv3Zvbs2SxatIghQ4ZQrVo1jh49ysyZMxk0aBC9evUiPT3d3qGKlDgN7xenciND/R0h4QcYcRv8fBQ+ioFfT0OjAPBxt3dUxWc2w9lLEH0cjqZBq5oQVc/eUYmIiIjcnJCQEJ566imefPJJoqOjWbp0KRs2bODUqVNkZ2fbOzyREqekX5xOcRJ/R0n4Aer6waQe8MZG2JBg+XFW7evBix1BU/pFRETE2RmNRjp06ECHDh04d+4cK1euVPV+KZeU9ItTulbi70gJf76ourCgn+VK/6EUSLlk74iKz2iAOn7QOADCA5Xwi4iISPlTuXJlBgwYYO8wREqFkn5xWoUl/o6Y8OfzcrMk/1F17R2Jc6lEJTLJtHcYIiIi8hdVopK9QxCpkFTIT5xaBBHczu244srt3O6wCb/cvKpUtXcIIiIiUgL0/3QR+9CVfnF6zWlOM5ph0MDzcqkRjUgk0d5hiIiIyF/UiEb2DkGkQtKVfikXlPCXX7dwC/XQ7QJEREScWTDBhBF24ytWqmL5nX2hZAMqS9kZlt+e/vaNQyosJf0i4tAMGLiLu+hEJ2pSU/MBRUREnEQlKlGTmnSiEz3ocXMbqVrf8jvlYMkFVtbyY/dvaN84pMIymM1ms72DEBERERERKeB/i2HD65aEuf0YCGgM7j72jur6zCa4lAonNsOmt8DoCv0XgnegvSOTCkhJv4iIiIiIOCazCVY9C8c32juSm2cwQqeX4Ja/2TsSqaCU9IuIiIiIiOMymyBuGcT/AKlHIDPN3hEVgwH8aoF/I2g1DKrdRD0DkRKipF9ERERERESknFIhPxEREREREZFySkm/iIiIiIiISDnlau8ASsvbb79doG3s2LFapmVapmVapmVapmVapmVapmVapmWltszRaE6/iIiIiIiISDml4f0iIiIiIiIi5ZSSfhEREREREZFySkm/iIiIiIiISDlVbgv5ScVxgANsYhONaMQd3GHvcERERERERByGrvSLU8tP+AHiiecAB+wckYiIiIiIiONQ0i9O68qEP98mNinxFxERERER+ZOSfnFKhSX8+ZT4i4iIiIiIWCjpF6dzrYQ/nxJ/ERERERERJf3iZIqT8OdT4i8iIiIiIhWdkn5xGjeS8OdT4i8iIiIiIhWZkn5xCjeT8OdT4i8iIiIiIhWVkn5xeH8l4c+nxF9ERERERCoiV3sHIHItJZHw58vfTlOalsj2pOyYMRNHHPHEk0oqmWTaOyQRERG5jkpUoipVaUQjbuEWDBjsHZJIhWQwm81mewchUpiSTPiv1IEOSvydiBkzq1jFcY7bOxQRERG5ScEE04MeSvxF7EDD+8UhlVbCDxrq72ziiFPCLyIi4uQSSCCOOHuHIVIhaXi/OJzSTPjzaai/84gn3t4hiIiISAmIJ54wwm58RbMJ4pZC/ApIPQKZaSUfXIkzgG9NCGgMrR6Fak3sHZBUYEr6xaGURcKfT4m/c0gl1d4hiIiISAm4qf+nm02w6lk4vrHkAypVZkg/ZflJ2AAdX4Sw++0dlFRQSvrFYcQSW2YJf75NbMKAgSbo21dHpaJ9IiIi5cNN/T89bqkl4fdvCB3Ggn9jcPcu+eBKmtlkGZFwfBNsegu2TIa67cA70N6RSQWkOf3iMLaxrULtV0RERESuI36F5XeHsVCjpXMk/AAGI3j6wy1/gyYPQM5FyxV/ETvQlX5xGN3oxglO4IZbkX12svOGtumOO81oVuTyHHKoQY0b2ubNMJlhaRysiIcjqZDmRBevDUAtP2jkD/9sBbdUs3dEIiIiUmGkHrH89m9s3zj+ivzYUw7ZNw6psJT0i8Oo/ed/1+KOO1vYUuxtRhJ5zaS/LJjM8Owq2OikBejNwMnzlp8NCfByZ+jpxP/fFRERESeSX7TPWa7wF8bdx/L7Uop945AKS0m/SClbGmdJ+Bv6w9gO0NgfvN3tHVXxmcyQesnyGt7ZDJOi4fY6UM3L3pGJiIiIlIw5c+awd+9eXnnlFXx9fe0djkiJUtIvUspW/HnHubEdoGXpzyQocUYDBHhB7zD43x+w8IDlC4AHbuKOOyIiIiL29ttvv3Hy5ElMJpO1bd26dezfv5+VK1fi7+9Pt27d7BihSMlS0i9Syo78eXeaxv72jaMkNA6w/D6k0WkiIiLihMaNG8fq1auLXP72228D8MMPP1CjhhNerREphKr3i5Sy/KJ9zjSkvyg+f76G1Ev2jUNERETkRiUmJl4z4b/S5s2bSzkakbKjK/0iIiIiIlLunT9/HoCwsDCmTZuGn5+fddmYMWNYt24dq1evJiAgwF4hipQKXekXERERsjOyOXPgDGcOnCEvO6/wTmZIP5lOyuGbn+NzbP0x1r+yHrPJfMPrHlh0gNXPrSZhY8JNrX+17PRsss5nXbPPyZiTnIw5SdLepL+8PxGxrzp16lC/fn2aNm1qk/ADVK9eneDgYFxcXOwUnUjp0ZV+ERERIXF3Ij8+/SMA/Rb0w7+BbSGS9FPpfPvQt+RczMHDz4NBPwzCzcvthvaxbeo2ds/aDYBfHT9aDWtV7HVNuSZ2f76bjNMZJO5OZMD3A/Dw8+CbB78hLSHtuutXCa7CQ989ZNO29+u97Px0JwGNAmg7si11o+qSeykXV8/LH4+W/2t5keuLiHPx9vbm22+/LXTZ888/X8bRiJQdXekXERGRQqUdS7P+5GXnWb8IyDqfxa9zfrVZnnYsjZyLOdfcXqP7GuHibrmKtuOTHZzec7rYscQtjSPjdAYAbZ5sg4efx02+qsuOrDsCZkg5lEKVkCpc/OMin3f6nIUDF3Jk7ZG/vH0RERFHoCv9IiIiUqhv+nxT5LJdn+1i12e7bNrumnwXIV1CilynamhVbht+GzFTYjCbzPw0/if6ze933REDuVm57PxsJwCB4YGE3R9G1vmsAol/q0cLjhzYNXNXgTaA1MOppB623F4luFMwvrV8OfrTUcwmM2fjzl4zHhFxfnFxccTHx+Pq6kp4eDh169a1d0gipUZJv4iISAX284SfObj8oE3bt/0LH/56s7ZP226dOx/1XBQHVxwk9XAq6SfTiZ4cTefxna+5/p45e7iQdAGD0UDHFztyes9pfvjXD4T1DiMn8/Logtb/al1g3aKS/v8t/Z/1cYvBLQA4tfOUte3UjlOcPXg5+c9My2T7x9ttthHx9wjcfcvBrVlEKpCLFy8ybtw4Nm3aZNN+zz338PLLL+Purn/TUv4o6RcREZFCDVw2EN9avmx8cyMHFh4AIOz+MDq/3Jn0U+nsnrWbNv9qQ6WqlQqsm56Yjm9NX8AyNP9C8gUAOoztQIexHVj22DKMLkY8fD3ADBgKj+HMgTPs+tySuDcf1Jwq9aqw+B+LycvO4/eY33Fxu1x063rTC/KZck3Er4i3Pg+KCALg5PaT1rb93+63WSfzXGaBLxDCeocp6RdxMm+//XaBhB9g5cqVeHl58cILL9ghKpHSpaRfRESkAqvXvh6VqlQicXciZ/afAeCWXrfgUdkDdx93zh48S+x3sQD41vSl3bPtAIieHM2x9cc4vOYwvWf1pmpoVes2z588z7y/zcOrmhfNH2leYJ+1Imtx2/DbCL0z1KZOQNzSOE7tOMXd799t/RJg96zdmHJMAOydu5c9X+6xbqfNE23Y/t/LV98/7/h5sV7z4TWHuZRyyaYt/VS6dbi/iJRPFy9eZOXKlQA89dRT9O/fH4PBwOLFi5k0aRKLFy/mySefLFDZX8TZKekXERGpwBr0aECDHg1Y8n9LrG3N/94c/wb+5GXn8fOEnzGbzBiMBu74zx24e7sTtzSOY+uPAeBf35+qIVVttpl/e7uLf1y0JuxXi3ws0ub5qudWkbgzEYCEjQkEdwoGIPSOUI7+dBTA5jZ9QRFB1L+zvk3SX1y/zfutQFv+PgB6zehFrchaAHwS+Qmg6v0i5cHJkyfJy8ujZcuWDBkyxNo+YMAAduzYwc8//0x8fDyRkZHX2IqI81HSLyIiUsGln0zn9N7LlfT3L9hPx393ZO24tTbz2leOWkluZq41+Xb1dKXLK10KDM1P2nP5nvbVmlQrVgxN+zS1Jv17vthjTfpDuoTQ/e3uVK5bmU1vb7JU/DdA1DNRBbZRWG2AX177xeb571t/t45ouNLBFZa6Bh5+HtRoUaNYMYuIc3FzsxQNDQoKKrAsv5BfdnZ2mcYkUhZ0yz4REZEK7sB3Byzz6vOfLzzAL6//YjNH3mwyk3Mxx+Zqe8dxHTG6Glkzdg3pp9Kt7ad2WQriGYwGgpoV/HBdmPrd6uMd5A1gmWoQa0nM3bzcqN+tPhfOXLDe4q/xfY0JvDWwwDbCeocV+Lnazk93Fmgz5ZkIDA/E6Gok9I5QjC76eCRSHtWpUwdvb2/27t2LyWQ7Cmnv3r0A1K5d2x6hiZQqXekXERGpwLLTs61F+q50cPlBbhtxG14BXnj6e5J5LtOmyn+LIS1o0L0BS/+5lOR9yRzfdJy+X/fFw8+D1COWufH+Df1x9yleoTuji5HwvuFs++82AGK/i6X6i9UtMWZks/GNjQC4e7vT9qm2N/16zXl/fmlhwPpFh9HFSKcXOxHx94gipyOIiPNzdXXl22+/5dKlS+Tl5WE0Wr7gM5lMjB8/HoPBQL169ewcpUjJU9IvIiJSge2evZvsjGybJLh6eHUa3d2IZgObAZYK+itHrbSuE9Y7jDZPtuHnl38meV8yYKkNUDm4Mod+PGTdTu3WN3bFrHHPxmyfth2zycyhHw8R9UwULh4urH91PRlJGZb93NWApD1JnD95Hv/6/jbr/zr71+vuI+CWANIS0qgRUYOEjQnW9vy5+0VJS0gr0Kf+nfXp/k734r48EXEAhQ3tNxqNhISElH0wImVESb+IiEgFlj8sP7hjMAkbLElw5xc7E3BLAADxK+LZ8PoGcrNyAQjvH07759uz6e1NxK+03PbOv6E/HcZ2AODElhPWbde5vU6xYji85jAhnUPwDvSmdpva/L71dzyrenL+5HnSEtJsiuzFfhdrvZtAu9HtbLYTMyXmuvsKaBSAfwN/kvcnFys2EXFuzz//PDt3FpzWU5SFCxfi7+9//Y4iTkRJv4iISAUW0CiAUztO0fi+xtak3+BqIOt8FtGTojn4g2VIv8FooO3ItjQb1Iz1r663DvX3qeHDvVPuxbWSK2aTmRPRlqTfzcuNWrfVuu7+cy7msPbfa/Hw86BBjwa0erQVzR5uRt2ouhiMBvxq++Hu424ZjfAno6sR7+re+NW58dtqhXQJwSvAq0DS3+rRVoX23zVzFwCVKleiad+mNsuqNqha2Coi4kAyMjI4d+5csfubzebrdxJxMkr6RUREKrCq9avSalgrXDxcbNrXjF3DyW0nAfCu7s0d/7mDgEYB/PCvHzi1w1Koz8Xdhfs+vg/vQEsBPoPRQPe3ulu+KDBYll9PeqJlpEHW+SxObT9Fx3EdbZa7errS4d8dyMvKo3JwZfxq++FVzQuD0XLLgJiPLl/dH75zeIHtXz0k36uaV6FxtP5X60LbrUl/lUpF9hERx9WvXz86drz8vnLw4EGWLVtGhw4daNfOMlpo8+bNbN26lUceeQRvb297hSpSapT0i4iIVGA1Imrg7utuMywfoN0z7fh+8Pc06NGAqGej+CP2DxYOXMiF5AvWPnnZeeycsZMuE7pYE/yakTWpGVnTdidX3NIv9WgqVUMvXyE//evlWwUGNitYkR+g0T2NMJvMXEq5RPqpdBJ3JXL+5HnqdVDBLRG5tq5du1of5+bm0qtXLyIiIvjwww+t7QMGDGDkyJFs3ryZkSNH2iNMkVKlpF9ERKQCq1S1UqHtAY0CeHjxw7h6uhIzJYbY72NtCv2lHU0j52IOh348RHpiOvd8cA8efh6F76NyJS4kWb4s+OGJHwjpFIKLhwsX/7hoM1+/VmTB6QAxU2I4vPowF5IvYMq1rax/Nu4sl1Iv2fQtyqXUSxz68RAN725YZB8RKd8SEhJITk4mLKzg7TxDQ0OJjo7mwIED3HrrrXaITqT0KOkXERGRAkw5Jo78dIRdn+0iMy0TsAzfbzGkBbc9fhtn486y4skVZJ7LJGlPEkuHLaXn9J54+nsW2FZI5xDOHjwLwIWkC+z/dn+BPu7e7oR0CSk0lvxig1cyGA0cWXfEpu1a1fuzzmdx7JdjSvpFKjBfX18ANm3axLx58+jRoweenp7s37+flSstdyjJysqyZ4gipUJJv4iIiBRwKfUSOz7ZQXa6pYBe9abV6TiuI9WbVrc+7/lJT5Y9toys81m4erri5ulW6LZaPdqK7AvZHPrxkOXKfH6dLIMl2Q9qFkTrx1sXOlKgRkQNakXWonJwZSrXu+KnTmU+vf3TUnntIlI+BQYGEhUVRXR0NJMmTWLSpEk2y/38/GjSpImdohMpPUr6RUREpADvQG/aP9ee3Z/vptU/W9Ho7kY2c/PBMgXgno/uIfrdaEsFf8/CP1YY3YxEPRtF1LNRNxxHcKdggjsFF7qssMJ9xWV0NRar0KCIlC8TJ05kwoQJbNiwwaY9ICCAiRMn4uVVeLFPEWempF9EREQI7hhcIIlu3LMxje5tZK2UX5igZkE8MOeBAl8IOLrO4zvTeXzn6/b7K18siIjj8fPz4/333+fkyZPExsaSmZlJYGAgLVq0wN3d3d7hiZQKJf0iIiJSpGsl/Jc7lX4cIiIlqXbt2tSuXdveYYiUCaO9AxARERERESlr33zzDT179iQhIcHeoYiUKiX9IiIiIiJS4aSnp5OYmEhubq69QxEpVUr6RURERERERMopJf0iIiIiIiIi5ZQK+Yk4ic2bN9OuXTvS09NZunQpAH369MHLy4v4+HhOnz5NQEAATZs2BeDxxx8H4IknnuDWW2+1W9wiIiIijqht27Z4eHhQrVo1e4ciUqqU9Is4gSNHjvD000/TpEkT/vGPf/DBBx8A0KNHD7y8vJg/fz6LFy+mS5cuTJ48GYBt27YBMHDgQLvFLSIiIuKomjVrRrNmzewdhkipU9Iv4gSWLl2KyWRi//79jBkzxt7hiIiIiDilrl27Fruvi4sLa9asKcVoRMqGkn4RJzBq1CgaN27MRx99xJkzZ6zt6enpeHh4kJ2dDUBOTg5paWk26164cMGmzd3dHS8vr7IJXERERMSBnDt3rth9jUaVP5PyQUm/iBMwGAzce++91uH7ixcvBuChhx6y6bd582buvPNOm7YXX3zR5nnPnj159dVXSzdgEREREQf07LPP2jzPH0m5du1aBg4cSFBQkHWZkn4pL5T0iziR+Ph4unbtak36pWQYMBBAXfypgye+uOJu75DKFRN5XCKd85zhNPGYyLNLHDrOf10OmWSSwRmOkUqivcOxoeNrH/nnRDJHSCPJ3uFcl86Tv86R3weKo6haR0ajkU2bNrFgwQJcXFzKOCqR0qWkX8RJzJ07lw8//JAaNWpY2wYPHoy3tzfr168nNjaW0NBQ7r77bgCmTZsGwL333ktwcLB1ncaNG5dt4A7OgIEGtKYyQdfvLDfFiAveVMGbKgRQm1g2kkt2mcag41wy3KiEG5XwpRpnOMZxfrN3SICOrz1deU4kc5QT7LN3SEXSeVIyHPV94K8ymUwcO3aMffv2ERERYe9wREqUkn4RJ/DZZ59Zk/gr5/QPGDCAoKAgEhMTiY2NJTg4mGHDhgGXk/4ePXrQsWPHsg/aSQRQ988PgDnAOSAXMNk3qHLHALgAfrjjRR2acoxfyzQCHeeSYgDcgSpUJ4RzJHGOZHsHpeNrV0Ys50RlAgkljdOk84e9gyqUzpOS4pjvA8U1YcKEAm0nTpxgz549gCX5FylvlPSLOIG7776bWbNm0b59e/r168eIESPsHVK54U+dPx+dgzK++lxxmLF8uE4DgvCnDgnsxVyGH7Z1nEuKGcgCzgNV8aeOQ3zY1/G1JxOQiSX5r4I/tR026dd5UlIc832guJYvX17ksrp16xIeHl6G0YiUDSX95VBiYiJTpkzhpZdeuqkq7cnJyQQGBhZoj46OpmXLlnh6epZEmHID6tSpw9y5cwkJCeHMmTN07dqVn376iVWrVjF48GC6d+9OSEgIdevWta5TuXJlANzc3OwVtlPwxPfPR7l2jaNiMAG5GHDDAy8yySizPes4lzTL3/Hy39W+dHwdQQ7gOOdEYXSelDTHeh8orjZt2hRo8/DwoHHjxgwYMAB3d9V5kPJHSX859N1335GammpN+JOSkrj33nuL7L9z507r48TERP7+97+zZs0aDAYDBw8epFGjRhgMBkaOHMmiRYsICQkpsI309HS6dOlyQ3FeuV+5vn379rF+/XoA67z+qVOn2gxD8/T0JDs7m1mzZlkr++/Zs8c6ZA0gIiKC22+/vewCd3CXizhpOF/ZMAOUefEsHeeSZvk7ujhIETQdX0dg+ds7cmE8nSclzbHeB4rrvffeY/ny5aSmptK2bVvN35cKQUl/OZOZmcl3333HBx98wPnz54mJibEOU9q4caNN3zNnzvDggw/atP3888/cdtttGAwGjh49yqBBg1izZg1VqlQp1v5/+eWX644ESE5OpmfPnjfwqgRg/vz5xMbG2rTl5eUxZcoU6/P+/fvTtGlTZsyYUeR2HnnkESX9IiIiUiGNHDmS3bt3AzBjxgzeeecdoqKieOmll6hduzajR4+2c4QiJU83nyxnFi5cSMuWLWnWrBlff/0177zzDhcvXgTAy8vL5qdSpUoF1l+2bBmdOnUCYOvWrTRr1qzYCT9Ybnfi4uJyzR/d8/Svad68Oa1btwYsf+8uXboQGhpaaN9WrVoRGRlJtWrVAKhZs6bNFAARERGRiuL48ePs3r0bV1dX2rVrh5ubG3PmzKFSpUpUrlyZr7/+2vq5WaQ80ZX+ciQlJYU5c+Ywc+ZMMjIymD9/PmPHjsXXt3hzrfbt28fBgwdp0qQJAGvXrmXPnj1ERkZa+/Tp08f6uE2bNtYK8flUJb70/fOf/yQoKIj+/fvj6urK5MmTbar7X2n69Om4uLjwxhtvsGjRInr16kXfvn3tELWIiIiIfeVfeOrTpw9jxoxh9uzZTJ8+HZPJRIsWLVi8eDGHDh2iefPmdo5UpGQp6S9HoqOjSUtLY+jQoeTk5NCsWTPuuecekpKSAMuw7ivl5toWspk1axaAdWj/vn37WLVqFVWrVgUsSf6CBQusc/oNBkOBGIozvD89Pd1mSLrcmPT0dLy9ve0dhoiIiIhTqVOnDi1atCA52XK3gfDwcHJyckhOTrZe4deVfimPlPSXI3fddRedOnXizJkzjBgxgvHjx9ssHzt2rM3z1NRU67yl2NhYoqOjrcvmzJlDx44drcPC8+UP0b+a2Wy2Lr8eX1/fArFJ8b3wwgvWx9nZ2fTs2dP6909OTiYj43JF9Hnz5mE0Gjl06BAAv/32G9u3b7dODxARkbKzc+1OPhn7Ca8vfp3AugXvkiMipa9hw4Z8//33PPHEE9SqVQuA999/n23btgFY20TKEyX95Uj+rdkmTJjAM888Q82aNW2WN2vWzOZ5/ggAk8nEW2+9Rf/+/fnqq68Ay/z/Bx54oNj7zh814ObmVuitUK62YMECGjRoUOztS9ESExOtj9evX8+mTZusz99//32bvlu2bKFWrVpK+kVERKRCWrhwIWCpXZVv7dq1gGWaar169ewSl0hpUtJfjphMJsaPH09eXh4mk4mZM2fi7+9PVFTUNdfLy8sjJyeHYcOGWZP+Z5991rrs6r5XtuVf2T9//jyVKlXC1dVVt+IrZf/5z3+oWrUqI0eOxM3NjQ8++IBFixbx008/YTAYCkzbaNSokfX2jYAK+YmIiEiF1a5dO5vnBoMBT09PWrZsaVO7SqQ8UdJfzsTGxhIQEEBMTAy1atWy+bbyyoJ8V3Jzc2P69Ok2Bf+Kulrfv39/m+czZ86kRYsWJCYmEhQURE5OjnWo+fUYjUZcXXUKFpeXlxc+Pj5Ur16dgIAAwPI/qttvv519+/bx008/0adPH1q3bs2MGTM4fPgwYJmb9vLLL9O0aVN7hi8iIiJid1OnTrV3CCJlThlXOWI0GlmyZEmB9vxh/PlzlfIlJyfTs2dPAPz8/GyWFXa1PjIykkWLFlkL+V0pLi6Ohg0bMmzYMPbt21eseAur/i9FmzFjhvXx6dOn6dKli/VLk27duhESEkLdunW55ZZbuOOOO/jyyy+Jjo6mRYsWpKam2itsERGWP9LdAAAgAElEQVSH9VjkYwXaqlSvwjs/vmN9vn3VdtbNW8fv8b9jNpmp06gOPQb3ILKb7Rfpxe13pdSkVN7+x9tUCarC6I9H4+HpAcDmpZtZ89Uako8n413Zm9Z3teaBJx/Azd3Nuu71+uTXDxjz+RjWzl3L/uj9uLq50vbetvR9ui+ubq7F3paIiDg3Jf3lTGZmJnFxcRw4cIB9+/aRkZFhLfx2dZG9/NuWlIStW7fSpUsXBgwYAFiuLo8YMYKQkBAmTJiAi4sLCxcupGXLlprLXwJq1KjB5MmTrc9DQkJsvoxxcXHB39+fjh07MmjQILKyspg3bx4PPfRQiR53ERFn9vri162P43fH88V/vmDoK0OtbStnrWTJtCXc9+h9DBo3CLPZzLYft/HJ2E8YPH4wHXp3uKF+V7qYfpGPRn6ETxUfRk0ZZU34f5z9I6u+WEW/0f0IvTWUpIQk5r45l0vplxgyYUix++SbO3Eu3f/enfsfv5+DOw/yzaRvMBgMPPTcQze8LRFn9Pzzz9/Q1NOFCxfi7+9fihGJlD0l/eXInj17GDZsGFWqVKF58+bceuuttGrVqtT3m5iYyK5du3jllVcAy8iC5557jqioKEaMGGG9tV9ISAjPPPMMjz32GPfdd1+px1UeTZs2jYyMDJ5//vlClw8cOBAfHx9mzJjB7NmzSUhI4KGHHiI2NpZJkyaxZMkS3nvvPVWmFREBawX9tOQ0vp/yPV36d6Hp7ZapUBfOX2DZjGXc84976DW8l3WdemH1SDuTxpJpS+jQu0Ox+10pJzuH/47+LyaTiWc/fhZPH8/L+/xkGY++/iit7rT8/7tmaE3SzqTxzaRvGPjvgWRnZV+3j5vH5Sv0XR/uSlSvKGu/pIQkNn6/kX6j+3HpwqUb2paIM8rIyODcuXPF7l/caaoizkRJfznStGlTFi5cSHBwMACnTp2iV6/LH0CKmtMfGRn5l4rvTZ8+nfbt21OjRg1iYmJ4+umnyc3N5ffff+ebb76xFv/Lzc3FZDIxYcIE4uPjGTVqlPULASmezZs3c/bsWYYPH06vXr0YNmwYAJ999hnLli0jNTW1QCE/gF27dgFw+PBhm6J+IiIVXW5OLtPHTMfLz4u+o/pa24/tP0Zudi4tu7YssE54u3C2/biNtDNpnDx0slj9qlSvYm3/4tUvSPsjjXFzxuFTxcdmnznZOXz24mfw0uXtmE1m8nLzOPfHOZKOJ123T7Xal2+326hlI5uYQsJDWPv1WtLOpJF4NPGGtiXijPr160fHjh2tzw8ePMiyZcvo0KGDtajf5s2b2bp1K4888gje3t72ClWk1CjpL0fc3NysCT9AzZo12bhxY6nvt1WrVoSHhwMQHh7Ou+++S/Xq1fHx8cHT09Na1d/NzQ2DwcChQ4eYOnUq6enpBWoJSPGYTCYyMjLIysoCLN9im0ymIvvnnwetW7emSpUqRfYTEalo5r87n2MHjjFu9jibq9r576lGQ9FToowuxmL3u1JgvUBOHDzB7wd/t/kywJRn2dbwt4cTFBxUYDtVg6qSeDTxun1s9n3VlK7szGwA3DzcirU/EWfXtWtX6+Pc3Fx69epFREQEH374obV9wIABjBw5ks2bNzNy5Eh7hClSqpT0l2MGg+GGr+pu27atwNz/fEWNBrj//vutj318fOjQoeDcxSs1bNiQDz744IbikpuXkJBgLa74wAMP2DkaEblR+QXZXl/8OhfOX+DDJz/kzWVvWoeEy83bvGQzGxZt4P7H7ye4abDNsuCwYIwuRn795VfqNK5jsyw2JpbAeoH4+fsVu9+Veg3vhZuHG9Oen8aoKaNoHNkYgNqNamMwGDibeJaIzhGFxlycPlf6Pf53AusFWp/vi95H9drV8a3qe8PbEnF2CQkJJCcnExYWVmBZaGgo0dHRHDhwgFtvvdUO0YmUHiX9YqOohF+c19y5cwGoU6cOd955p52jEZG/IjQ8lNcWvaaEvwQkHEhg7ltzCawXSGT3SJJPJFuXBdb9f/buOzyKav/j+DubnhBIQu+hdykBpROKgAhIE0GleFHAjiAqNi4KlotcUfCC/LAhICgoIh2kCQIKIiBCqAmQQCghhfRk9/fHJmM2BRJIsimf1/PwMDtzZuZMtn7nnPM9FShdtjQ9R/Rkzf+tAaBFlxaYLWb2b9rPbxt/46lZTwHkuFxGj772KNHh0cyZMIeJ8yZSq2ktfCv60vb+tnw/53vMZjON7mlEcmIyx38/DhboNapXjsqkt/LjlTiYHKhYoyL7N+/nj5//MBL05fZYIkVd2vTUu3bt4ptvvqFnz564u7tz9OhR1q9fD2D0ohQpThT0ixRz69atA+D5559X5n6RYsDL18veVSgW5k2eR3JiMpfPXebNQW/abFtwwDpF6qBnB1Guajm2f7uddZ+vw9HJkVpNazFx3kSjdT435dIzmUyMfW8ss8bP4qNnP+LFT1+kWv1qjHh9BL6VfPl56c+s+HAFbp5u+DX2o//4/sa+OSmTZvDzg1n/xXounLiAT0UfHn3tUTr073BbxxIp6ipUqED79u359ddf+eCDD/jggw9stpcuXZpGjRrZqXYi+UdBv0gRkZCQQGxsLCkpKVy9ehWAmJgYY/vVq1dJSUnJtF9KSgq9evWyGdMmIgXHYrEoaWkh9N7a93JUrvOgznQe1DlPyvn38DduKIB1XP0rX7xiU8bJ2YkHnnyAB558IOPuuSqTplq9ary66NU8OZZIcTBjxgymTp3Kzp07bdaXLVuWGTNmKOGxFEsK+kWKgHXr1vHhhx8SHh4OwEMPWedXXrRokVEmbZ23tzeBgYHEx8cD4OPjQ8+ePdm3bx9gvctdq1atgqy+5ELa+O3n5zzP+i/Xc/bIWSrXqszoaaOJj4ln2X+WEXo2lArVKzDyjZHUblYbsCYd++nTn9i9ejc3Im5Q56463NXpLr778Dumr5puTE0m+S/tOXxm9jOs+mQVIadC+Hjnx7h6uLJ79W42L97M5XOX8SzjSZtebRj4zECcXawJ5MxmM2v/by2/rPrF5nnMeOy05/TQzkOsWbCGkFMhuLi50K5vO2P+dRERyax06dJ8+OGHhISEcOzYMeLj46lQoQItWrTAxcXF3tUTyRcK+kWKgAMHDhgBf07Mnj2bsLAwAK5fv86kSZOMbQMGDOCNN97I8zpK3lo9fzVDJlinD/vi318w/6X5ODk7MezFYTi7OvPVtK/4/M3Pmf7DdAC+nfUtu3/czUMvPkSdu+pw8s+TfP/x9/a8hBJv7f+tZfBzg/Eo44GzqzMbvtzAxkUbefCFB6nVtBZhwWEseXcJcdFxxhjrFR+u4JcffjGex9OHT7PioxVZHv9S0CXmTZpHwNAARk8bTdyNOMKCwwryEkVEiqyqVatStWpVe1dDpEAo6BcpAurVq0f9+vW5du0a8fHxDB8+nIULF9K2bVsA9u7dy+OPP84333xj55pKXuk1uhf1Wlnn1+7xcA+WzVzGE+88QcO7rRmHA4YGsGzmMqLDo3EwObD9u+0MfGYgHQdYZ8+oXLsyEZcjjORiUvA6DepEk/bW6UxjomL46dOfGDN9DK26twKgcq3KRFyJYPkHy3n4lYdJiEtg27fbGPDUANvn8UoEq+evznT88EvhmM1m7up0F1XrWH+41m1et4CuTkSkaLrVcMcVK1bg6+tbQLURKRgK+kWKgP79+/PQQw8xYsQIrl27ZgT9LVu2BKxB//Dhw1m92hoYjB8/nqCgIC5fvoyrqyuvvvoqpUqVAqBy5cp2uw7JubQgDqBMuTIA1GhYI9O6+Nh4rly4gjnFmnnb5hh11YJhT2lDLwCCjgaRlJjEwtcWwuv/lLGYLaQkpxB5NZLL5y+TkpxC47aNbY5TuVbW79n6/vWp26Iuc1+Yyz333UPAkIBM085JyZUxf4CIWEVGRt50u8ViKaCaiBQcBf0iRUBuk8o0b94cd3frlF4JCQn88ssvvP/++/lRNcknDqbMid+yWmexWEhKSALA2dnZZps5xZw/lZMccXL55ys27bkY9/44KtasmKmsT0UfQk6FAODoZDt1akpy5gSdYE3ANnnhZA7vPMzOlTt5Z+Q7dBvWTWP6RURuIv2QR4CIiAg2bNhAREQEDz74IJ6ennaqmUj+UdAvUgRcunSJJUuWEBcXl+t9HR0d2bJlC9u3bycgICDvKyd2V6GGNUnf6cOnqVz7n1bhU3+esleVJIOq9ari4ODAtYvXaN6leZZl0m4GnDx4kip1qhjrTx48me1xHRwcaN6lOc27NGfdZ+tY9b9V9BnTBy8fTesnIpKVhx9+ONO6kSNH0q9fPzZv3sy4cePsUCuR/KVJu0WKgCNHjrB06VKCgoKwWCxG8J+UlERSkrWVNy4uDovFgtlsNtYB9OvXD4BZs2aRnJxc8JWXfFe5VmXq+9fn+znfc2DLAS6eucimrzdxaMche1dNUvlW9KXt/W35fs73bFm6hZDTIQQfC2bjoo1s/GojAJX8KtGgdQN++OQHft/0OxfPXGTjVxs5/MvhLI8ZuD+QzYs3cz7wPOcCzxH0dxCeZTxx83QryEsTkVwKCw7jg7EfkJSQdEfLkndKlSqFr68vISEhnD592t7VEclzaukXKQKOHz9uLF+5coW+ffsCsHDhQmN92rorV64wf/58Y/2IESNYvXo1oaGhbNiwwSgnxcv4/4xn6XtL+XLal5hMJlp1b0X/J/vz5b+/tHfVJNWI10fgW8mXn5f+zIoPV+Dm6YZfYz/6j+9vlBn/n/EseXcJi95ahMnRhH8PfwY8NYAvpn6R6XjuXu7sW7ePVf9bhclkolazWkz4ZIIx/Z+IFE4JcQlcOnuJlOSUO1p2dtV7PS+9+eabWCwWTWssxZKDRdkqpAg5whH2sCfH5dvRjmY0y8ca3Vrr1DxK+8fe/jHi4uJYsGABixcvxmy+9Tjt0aNHs23bNoKDg9mzZw8TJ05kz5491KtXj2XLlt12PTadhld/hp514J3ut32YXFlA/iai8qdf6lJovp7HHjLO6V44lANcCGQ3N8j5NJR3qjg/z/bhCFQkkXiOsNneldHzWyhYXxMJxPAXW+1dmSzpdZLXbu9zYCy5/EG0oHXqjvtzt98tnDlzhuPHj2OxWGjQoAF16+bj7CdnfoYtL0OtbnDvf/LvPCLZUEu/SBHg7u7O888/T4cOHZg8eTJRUVEAmEwmBg8enCnpjL+/P9u2bTMe9+rViz179nDy5EmOHTtGo0a2Wd5FRKRwsFgsODhkTtopInkjPj6eN954g61bbW9OdejQgXfffVeJ/KRYUtAvUoS0bt2ahQsXMn78eMLDw7FYLJQpU4Ynn3zypvt17NgRBwcHypcvT2xsbAHVVkREbiWtR84zs59h1SerCDkVwsc7P8bVw9XeVRMplmbNmpUp4AfYvXs377zzDjNmzLBDrUTyl4J+kSKmTp06zJ49mx07djBo0CAqVaqUZbnXXnuN2NhYnJyc8PHx4cUXX6R///65nv5PRETy39r/W8vg5wbjUcZDY7VF8kl8fDw//fQTzs7OTJs2ja5duwLWgP/NN99k48aNTJo0CV9fXzvXVCRvKegXKYKaNGlCkyZNblrG39/f5vGwYcPys0pSCPn38GfBgfzNiSAieaPToE40aX/zz3URuTMhISEkJSUREBBAr169jPVdu3alT58+rFixgjNnzijol2JHU/aJiIiI2FntZrXtXQWRYs/R0RHAZmrjNCkpKYA1r4ZIcaOWfhERERE7c3LRTzKR/Fa9enW8vLzYs2cPCxcupHPnzjg5OXHgwAHWrl2LyWSiTp069q6mSJ7TN4yIiIiIiBR7jo6OjBo1irlz5zJv3jzmzZtns71v377q2i/FkoJ+EREREREpEUaPHk1SUhJfffUV8fHxgHUK5D59+jBlyhQ7104kfyjoFxERERGREsHBwYGxY8cyatQoTp06RWJiIrVq1cLb29veVRPJN0rkJyIiImInabNsVKhewd5VESkR3n//feLj43F1daVJkya0bNkSb29vLBYLq1atIioqyt5VFMlzCvpFRERERKRE+Pbbbxk2bBiHDh0y1gUHBzNu3DjefvvtLDP7ixR16t4vIiIiIiIlgqurK+fPn+fxxx/nkUceoVSpUnz22WckJiYC1u7/IsWNgn4RERERESkRVq1axaeffsrq1av5+uuvjfVNmjThySefVPZ+KZYU9IuIiIiISIlQoUIFpkyZgoeHB0uXLgXg0Ucf5YUXXrBzzUTyj8b0i4iIiIhIibBlyxaGDBliBPwAixcvZvz48Rw9etSONRPJPwr6RaREs2BOXdIYvoJkwVLA59PznB/++bval57fwsD6ty/o93Zu6HWSPwrL50BOvfzyy5w/fx4PDw9eeuklFixYQNWqVfn9998ZOXIk169ft3cVRfKcgn4RKdESiE1d0sdhwXAEIJ4bBXpWPc95zfo8JhBj53pY6fktDArXayIrep3ktcL/nGenY8eOrFixgoceegh/f3+WLVvGwIEDATCbi9ZNDJGc0Jh+ESnRYriOG6UADyDa3tUp5lwBRxKIIYWCnRJJz3Ne8wAghgg718NKz29h4A4UntdEVvQ6yWuF63Mgp2bMmEHv3r1t1nl4ePD666/TtWtXXF1d7VQzkfyjoF9ESrRQAvGhCia8ABcgGYpYV8XCzwFri5AbABco+DGTep7zgkPqP2fAhSTiCeO0netkpefXXtJeEy6AMwnEcpkzdq5T9vQ6yQuF93MgOytXriQwMJBx48ZRtmzZTAE/QGJiIps2bWLlypXMmjXLDrUUyV8K+kWkREskjpPsxY8WuOKJtTVa8kMKyZznLyIIK/Bz63nOWzFEEMyfBd5jIzt6fu0vhusEc4gUku1dlWzpdZK3CtvnQHbWrFnD4cOHmTBhQqZtwcHBrFy5kp9++omoqCgALJbCm5dC5HYp6BeREu8G4fzNdjzwxg0vnPVDME+ZSSaOaGKIsOuPQz3Pdy6ROOK5kdqdt3D9MNbzax9JxBHHDWKJKNRJ/NLodXLnCvPnQFZKly4NwGeffca4ceMwmUxs27aNFStWsH//fpuyjRo1Uvd+KZYU9IuIAGbM3CCcG4TbuyqSj/Q8F296fiUn9DopWYYNG8bu3bv58ssvWbVqFSaTifBw63Pv5OSEv78/AQEBdOnShYoVK9q5tiL5Q0G/iIiIiIgUS+3ateO9997jvffes5mOr1WrVjz33HM0a9bMjrUTKRgK+kVEREREpNjq0aMHHTp0YOPGjaxatYojR47wxx9/MHr0aGrVqkW3bt3o1q0bDRs2tHdVRfKFJioVEREREZFizd3dnQEDBvDll1+ycuVKRo0aRbly5Th79iyfffYZjzzyCP369SM6WtM5SvGjoF9EREREREoMPz8/nnvuOdavX89HH31E9+7dcXZ2JjQ0lMTERHtXTyTPqXu/iIiIiIiUOCaTiY4dO9KxY0ciIyNZv369svdLsaSgX0RERERESrQyZcowbNgwe1dDJF8o6JdC4wAHOMxhylIWBxyyLHORi7k65h72EERQltssWLjGNe7iLvzxz211RURERERECj0F/VJoBBJIEklc4lKeHvdWNwqOcERBv4iIiIiIFEtK5CeFRne62+W8Xelql/OKiIiIiIjkNwX9UmhUpCIP8ADOOBfI+Zxx5gEeoCY1C+R8cnvccLN3FURERCQP6DtdxD4U9EuhUpGK9KFPvgf+zjjThz5UpGK+nic9S4GdKf+Y7XARPvgU/ElFREQkz+k7XcQ+FPRLoZPfgX9BB/yVS1n/j4gvkNPlq7RrqOpVcOesR72CO5mIiIjkG32ni9iHgn4plPIr8LdHC38dX+v/v10osFPmm99CrP/XK1tw52xAA2pQo+BOKCIiInmuJjVpSMPc7+jmbf0/MSZvK1SQEm9Y/3f3tW89pMRS9n4ptNIC/3WsI4mkOz6ePQJ+gMdawK5z8M4uOBsB9ctCKZcCrcIdMVsgPM56DTuDoaY3BPgV3PkdcKAXvQgkkJOc5DrXiacYdJsQEREp5txwwwcf6lGPBjS4vYP41IaLf0D4CajUMm8rWFDCT1j/961r33pIieVgsViKw1BjKcbCCLvjwN9eAX+apUdgzj5IMtvl9Hmmihe81wMal7d3TURERKREOL4Kdk63BswdXoKy9cGllL1rdWsWM8Rdh/O7Ydd7YHKCoSvAs4K9ayYlkIJ+KRLuJPC3d8CfJjgCtpyB09eL1vh+BwfrGP56ZaFffXBT/yAREREpKBYzbJwE536xd01un4MJOr8ODfrbuyZSQinolyLjdgL/whLwi4iIiMhtspgh8Cc4uRaun4H4CHvXKAccoHQV8K0HrR6HcreRz0AkjyjolyIlN4G/An4RERERESnplL1fipScZvVXwC8iIiIiIqKgX4qgWwX+CvhFRERERESsFPRLkZRd4K+AX0RERERE5B8K+qXISgv8TakvYxMmBfwiIiIiIiLpKJGfFHmXucyf/ElzmivgFxERERERSUdBv4iIiIiIiEgxpe79IiIiIiIiIsWUgn4RERERERGRYkpBv4iIiIiIiEgxpaBfREREREREpJhS0C8iIiIiIiJSTCnoFxERERERESmmFPSLiIiIiIiIFFMK+kVERERERESKKSd7V6CgvP/++5nWvfzyy9qmbdqmbdqmbdqmbdqmbdqmbdqmbfm2zd4cLBaLxd6VEBEREREREZG8p+79IiIiIiIiIsWUgn4RERERERGRYkpBv4iIiIiIiEgxpaBfREREREREpJhS0C8iIiIiIiJSTCnoFxERERERESmmnOxdAZE79TewC6gHdLVzXURERERERAoTtfRLkZYW8AOcTH0sIiIiIiIiVgr6pchKH/Cn2YUCfxERERERkTQK+qVIyirgT6PAX0RERERExEpBvxQ5Nwv40yjwFxERERERUdAvRUxOAv40CvxFRERERKSkU9AvRUZuAv40CvxFRERERKQkU9AvRcLtBPxpFPiLiIiIiEhJ5WTvCojcyp0E/GnS9m98h8cR+7AAgVinZbwOxNu3OpJLboAPUA9oADgU4Ln12hHJG6Wwvo+bA1UK8Lx6Dxdt9vz8F5F/OFgsFou9KyGSnbwI+NPriAL/osYCbATO2bsikidqAj0pmB9+eu2I5I+7gRYFcB69h4uXgvz8FxFb6t4vhVZeB/ygrv5FUSD6wVecBGN9TguCXjsiec8B2A+EF8C59B4uXgry819EbCnol0IpPwL+NAr8i5aT9q6A5LmCek712hHJexbADJwugHPpPVz86DkVsQ8F/VLo5GfAn0aBf9Fx3d4VkDxXUM+pXjsi+acg3l96Dxc/ek5F7ENBvxQqBRHwp1HgXzQoaVPxU1DPqV47IvmnIN5feg8XP3pORexDQb8UGscouIA/za7U84qIiIiIiBRHCvql0PithJ1XREREREQkvznZuwIiaXoA5wHnm5Q5kMtjugDNbrI9CaiUy2OKiIiIiIgUFQr6pdComvrvZlyAPbk4pj83D/pFRERERESKM3XvFxERERERESmm1NIvIiIixd6n/v7G8pClSynboIEdayMiIlJw1NIvIiIiIiIiUkwp6BcREREREREpphT0i4iIiIiIiBRTCvpFREREREREiikl8hMREREbGZPeRZw7x59ffEH46dN4lC1Lo0GDaDVmDIk3bvDbJ58QtH07cREReNeoQZunnsIvIACAUxs28PNrrxnHenTdOjwrVjQen//1V9Y9+ywAZRs0YMjSpYQeOMCRpUsJO3yYhMhInD098a5ZkxajRxvHTRP4008cXb6c62fO4OjqSs3Onal///2sefJJo8y4Awfy4S8kIiJSdCjoFxERkWz9uWgRpzZsMB7fCAvj93nzSElMJGj7dsJPnza2hZ8+zabJkxm4aBHlGzWiVrduuJUpQ3xkJABBO3fS5MEHjfJnt20zlhv068fxVavYMX06WCzG+oSoKMKOHCHsyBGboH/Pf//L4SVLjMfJCQmcWLOGkH378vT6RUREijp17xcREZFsndm8meYjRtDmqadwLV3aWP/HZ59x49Il2jz5JM1HjMDBZP1JYTGbOb5qFQCOLi7U79fP2Cdo+/Z/DmyxELxjBwAmJyfq3Xcf+z/91Aj4yzduTLuJE2n7/PPU6dkTJ1dXY9eQ336zCfirt2tH+xdfpF6fPsRcuZLnfwMREZGiTC39IiIikq0Wjz1Gm9Tu8u4+PuycMcPY1unVV6nbuzcAiTExHPv+ewCup2v9bzxoEIcXLwYg9MABEmNicPH0JOzwYWKvXQOgRseOuHl7Ex8RYezXetw4anTs+E9F0rX+/71ihbFcvX17+nz8MTg4AOBaujR/LVuWJ9cuIiJSHKilX0RERLJVo317Y7lcw4Y22/y6dDGWyzdqZCwnxsYay2Vq1qRKao4Ac1IS53fvBuBsulb/Bqm9Aaq3a2es2zJlCrtnziTsyBHritSgHiDs8GFjudGgQTbb6vbsmfOLExERKQEU9IuIiEi2nNzcjGWTo6PtNnf3f7Y5O/+zIV2rPKQG5qmCUrv0p3X1d/PxMVr0A/79b2r36AEODiTFxvLXsmWsGj2alY88YtN7IC483FguValStvUVERERBf0iIiKSz2p164abtzcA53bt4lpgIJHnzgFQ7777MDlZRxu6li7Nve+/z/Aff+Tup582Avqrx4+zfsIEzCkpADimG9+fEBVlc664dEMEREREREG/iIiI5DNHFxfq9+0LQOKNG/zx+efGtgb9+xvLaWP6S1etSst//YsBX35pbIsODSX6wgUAvGvWNNafXLfO5lxpSQRFRETESon8REREJN+lT+gXlDpVX7kGDShbr55RZsn991Ozc2fKN26MycnJZvo9k6Mjbj4+ANTu0YMrx44BcGLNGsxJSVS86y5Cfv/ddoYAEYbt0hAAACAASURBVBERUdAvIiIi+S8toV/ogQNGN/30rfwAyfHxnN60idObNmXav8Xo0caUgU2HD+f0pk1cDQwE4NTGjZzauBGwJgM8v2dPfl6KiIhIkaLu/SIiIlIg0if0Mzk5GdP9pWk2fDi+derg5OqKg8mEu68vNTp0oNesWbR56imjnJOrK/0WLKDZ8OF4VqyIydmZMjVq0G7iRO5+9tkCux4REZGiQC39IiIiYmPcgQNZri/boEG22xr062dMvZed2GvXjOWanToZyf3StH/xxRzX0aVUKdq/+GKmfa6ltv5nlF29RUREiju19IuIiEi+S0lM5Ojy5cbjxg8+aMfaiIiIlBxq6RcREZF888s771C6enXObttGVEgIAJVbtqTaPffYuWYiIiIlg4J+ERERyTd/r1xp89jd15eu06bZqTYiIiIlj7r3i4iISL7xqlIFB5MJl1KlqNOzJwMXLcKralV7V0tERKTEUEu/iIiI5JuHf/qpQM93s2SDIiIiJZFa+kVERESkxDm1cSMRQUE3LbPykUf4rGNHPuvYsWAqdRO/z5tHyG+/2ayLj4hg//z5JMXG3tYxLWYzx3/8kUOLFvH7vHlgseRFVUWkkFFLv4iIiIiUGOaUFLZPncrJ9esp17AhA7/8EpOzMxazGXNysk3ZpLg4kuPiAOsMFBk5urgA8Km//x3Xy7tmTR76/vsstwVt384fCxfyx8KFVGndmn6ffsrZrVvZNnUqSbGxxEdG0vHll3N9TgeTieOrVhF2+DAA1dq2pXLLlnd0HSJS+CjoFxHB+mPuamAgV48do8EDD+Dk6prrYwRt387V48cpVakS1dq1o1TFinlWv4Xt2hk/OPOi63LQ9u0Ebd9OlzffxMGkTl8iUnKYHB1xTP2Mv3r8OPsXLODup5/m8JIl7J09O9v9FrZrl2ldQQwlib9+nV/efdd4XK9PHwAqNG1qrDv63Xf4BQRkOStGbm5IrH788Ztu7zRlCo2HDMnx8USkcFDQLyIlXkJUFF/36mUE1S5eXtS7775cHePCvn1sfvllzMnJlK5WDb+uXbNsFcoorZWoIP02dy4Hv/gCgNLVqtHqFj/yRIqra4GBrHj4YeNxWgCXPkgasnQpZRs0KPC6Sf7qMHkyFw8eJDI4mENffUWdHj3y5LhuPj60GDUqV/vc7EaDOSWFLa+9RuzVqwBUatGCBv36AeBZoQJ3P/00u2fOBIuFLa+8wsAvv6RMzZo2x3Byd8/dRVgs4OCQ5SaTk0IHkaJI71wRKTFOrl9PQlRUltvcfXy4ERYGwJElS7ItB9D0oYdsHgfv3GkE/ABRFy7wVbdut6yPu68vIzdvzmn180y9++/n8JIlpCQmsv/TT6nSpg2Vmjcv8HqIiNiLk5sbXV5/nTVPPolfQAAOjo40GjSI2t2725RbM348USEhQM6TUlpSUgBoPHgwLl5etyyfbdBvsfDLjBmE7NsHgIunJ92mT7fpndX0oYc4t2sX5/fsISEqinXPPUe/BQtsepqN2bULgMToaAAcXV0J3b+f3+fPp9nw4dS5914jmL/y99/snDGDJg8+SMMBA2z2scdNahHJGwr6RaTE+OP//o+I4OBblrty7BhXjh3Ldnv6oP/w4sXs+/hjzKk/8nLDIZuWlPzmU6sWrceNY9+cOVjMZra+8QYPLluGs4eHXeojImIPlVu1YuTmzbiWLs2Vv//mi86db1p+aWoLe3qeFSrw6Pr1PPjttwAc/vpr9s2ZA1hb/Z3c3G5Zj1ZjxlC9QwfcfXyMdRazmZ0zZnD8xx8B69j7bjNm4FW5su3ODg50mz6d70eMIDo0lKgLF1j9+OP0nT+f0hmmxvwiIAAA/7FjsZjNXAsMZOvrr7N39mwaDx7M9bNnOb15M1gsnNq4kYYPPGCzT+tx4255LSJSOCnoFxG5DTfCwvjlnXc4l9qCkqZ0tWp0nTaNSi1a2Ky//Ndf7Pv4Y0JTuw+7lCpFp1dftSmz+L77iLl8+Zbnzm585s2SQIE183NaD4b2L77IiXXruH76NNEhIfw6axZd3njjlucWESnqTm3YYHNjt0KTJpSuVu2Ojulbpw5gTfyXZsdbb+V4/zq9elGmRg3rMWJj+fm11wjeudPY3mHyZGp26pTlvm7e3vSePZvVjz9OQlQU0aGh/DBiBN2mT6d6+/ZZ7tPmySep2qYN26dNIzo0lP2ffmpsu+uRR2g7YUK2XfxFpOhR0C8iJVLG5EsxV65gTkoCwKtKlUzllw8aZNNL4ODnnxsBf7V77qHxkCHseu89oi5c4McxY/ALCKDp0KFEhYYS+NNPhB06ZOxbq2tXOkyejGceJvrLTvTFi0bLUODq1cZNhY4vv0zHl1/mp7FjMTk64urlddNxnCIixcW5Xbs4uX698bh+3750fu01Hlq5kjM//8zfK1fSbPhwanTsmG2PrHXPPEP0xYuZErZGnT9/R3VLio1l5aOPEpn2fePgQIfJk2kydOhN9/OtU4c+c+ey9sknSYyJIT4yknXPPceDy5cbNyTSpCQm8s0DDxB14QIAHmXLUrd3b66fOcP5vXs5vGQJZ7ZsoefMmXd0LSJSeCjoF5ESw+smLTlrxo0jIjgYB5OJsb//fst9O02ZgruvL95+ftTt1QuAis2bs+GFF7hy9KiRHd/mGFWr0uW116iaRXbljLwzJGKKOHfOmD85/TYL/PPjMIOokBC+6d8fj3LluOvRRzNtr+LvT+tx46jVvbvxozAhKorA1asJ3b+f3h9+qJsARUjG5HMR587x5xdfEH76NB5ly9Jo0CBajRlD4o0b/PbJJwRt305cRATeNWrQ5qmn8Evtxpve5aNHObJ0KRcPHiTu2jWc3N0pV78+DQcMsCa7TPf6yHj+aydPcnjxYiKCg3EtXZr6999Pm6efxuToaHOOwNWr+Wv5cq6fOYOzuzt+AQHUve8+1owfb5TJeJMuN/VKc2LtWut5Tp3C0dWVGh07GgnRbuXUhg0cWrSI62fP4lKqFDU7deLuZ57B3dc3R/tL4efo4oK3nx/nd+8mJiyMvbNnc3LdOjq+/DK/zZ1LVEgIDiYTj6xdS0RwMNEXLwJQOUPPq7RA2i8gIFe9p1xLlwbA2cODWl278ueXX1o3WCzs/s9/2P2f/+T4WCZnZ8xJSTQaODBTwJ92rX4BASRGR1O7Rw+qtW1r5AmICAriyNKlnN22jTJ+fjk+p4gUbgr6RaTE6PPxx8RHRrJ//nySYmNtxrAnpCYrcvP2zrRfYnQ0dXv2pP799xvBRPTFi1Ru1YqIoCB2vfceV0+c4FpgIMnx8dmePzokhDVPP41n+fKUqlQJd19f3Ly9KVuvHk2HDbMpm7Gbfvop+9JvS4qN5fNsunymzbsce/Wq0YshI/+xY20eb3zxRS6mBljBv/xCzVuMcZXC6c9Fizi1YYPx+EZYGL/Pm0dKYiJB27cTfvq0sS389Gk2TZ7MwEWLKN+okbH+yNKl7PnwQyxms7EuMTqa0AMHCD1wgKAdO+jx7rtZTvl4aPFiTq5bZzyOvXqVP7/6ChwcuOfZZ431v86axZGlS43HKYmJHP/xR87/+mu213Y79do7ezaHvv7aeJyckMDJdeu4dPBgtudJc3jJEk6sXWs8jgsP5/iPP3Lxzz8ZvHixcmEUQd2mT6fb9OmZhkolREXR4733OLluHX99+y3XTpzAYrFwIyyMmMuXjalcw0+exLNiRWIuX6ZKumPER0SQGBMDWF+TpzZuzFW96vfpg4uXF22eeorIc+ewmM2Zbh7nRO///pdDX39N+0mTstx+YMECYzktZ0BWbpXjQESKDgX9xVRKSgpBQUHUyXCHNygoCFdXVypnTAST6vTp0/j5+eGYoSVGpDiICA5m3bPPEh0SwvUzZ+gzZw6OLi6YU1KIj4gAMgf9KYmJbHjhBS4ePMiJtWsJmDqVUpUqsfGFF7h28mSW5ylTowY1O3WiZufORJ47R9COHVw6eND6Y9BiIebyZZux+51fey1frjf9kIJy6YK5m2k8eLAR9B9atEhBfxF1ZvNmmo8YgYuXF4cXLzZyOfzx2We4eHrS5sknSbxxg8NLlmAxm7GYzRxftcoI+i8ePMiv//2v0bukZufOVLvnHiLPn+fY99+TkpjImS1bONS4cZbTk53asIEmQ4fiVbkyfy1fzo1LlwD4e+VK7n76aRxMJkJ+/90m4K/eoQPV27Xj6vHjnFizJsvrup16he7fbxPw1+jYkert2nHl779tgvnsnFi71jjP1ePHCUzN4B4ZHMzhJUvwf+KJWx5Dioa9H33E2a1bqd29O93ffpv4qCgqt2xJUmog71KqFAC1e/Sgdo8eJMfFYUqX0T6tlR8wbkLlRs3OnXHx8sLk6EjPmTM59sMPRJw9C1iHoCXFxgJQqlIl4wZEmsjz540bYRWbNaPvvHmZju9WpkyW5028cQNzSgomZ2dcsrmJlZOEhCJSeCnoL0aOHj3KihUrmDx5MnFxcQwdOpQDBw6wePFiGjVqhL+/P++88w533303j2czL/fQoUPZtGkTZcuWpUuXLiTeYp7xrVu34u7uTnR0NAFZdA29mQO5/DIUuVMevr7Gj7bQ/fvZ+sYb9Hj3XaJDQowfS1EXLpCSmGi9GZCczJYpU7iY2hoYGRxstPQ3e+QRtv/735icnPCpU4cKjRtTsXlzqvj72+QEqNK6NY0GDcJiNhN++jRXjx/n+unTRJ47R/SlSyTHxlK/b998ud7QP/4ArFmfKzZrlqN9avfowd6PPiImLIyLBw9y5dgxm9ZfKRpaPPYYbZ58ErBOR7lzxgxjW6dXX6Vu794AJMbEcCy158j1dK3/hxcvNgLr2t27c2+6rsXefn7seu89AP765pssg/4Wo0Zx9zPPAFC+SRN+Su1RkhgdzY2wMLwqV+bvFSuM8jU6duS+jz4yHrt6eXHkm28yHfd26nX0u++MMjU7daJ3uunRXMuUsbnxkJW6vXvTPd3fz8nNzTjm2W3bFPQXIzGXL5MQFcWxH37g2A8/0GL0aGp26kR86k0zj/Llbco7ubvbPE4f9N8O5wyBdaOBA2k0cCAAqx9/3Pguuu+jj/CtW9em7BedOxu9DJyyCdxHbd2aaV3MlSssGzgQc1wcAVOnWofHiEixo6C/GGnQoAHh4eHMmDGDiRMnAtYbAT/++CODBw8mMTGRY8eOMXXq1BwdLzExkTVr1lC2bNkst/v7+2NJ/fGVZseOHbhn+BLM6PLly/TNpyBH5GZcvLy4f+5cfvzXv4g8f54zW7bwa7lyNnPUpyQmEvLbb1S75x42v/KK0bXSrUwZ+nzyiZG0qW6vXpRv1IhNL71E+MmThJ88edNuklnxCwjIt0RJ8devc/3MGQB869Y1bnbcisnRkSZDhvDbJ58AcOz77ymfTz0RJP/USJexu1zDhjbb/Lp0MZbLN2pEWg7zxNRWRPhnaAhAg/79bfav06OHEVzHXLlCTFhYpqSU6XuIVGja1GZb4o0bmc7RcMAA23P07Jll0H879Urf4yXTee6995ZBf1rQlaZ2jx5G0B957txN95Wipf2kSUQMHszR777jwr59lK1Xj5DffzduNLn7+hIRFGSzj5ObG6UqVQKsN4jSbqjl1LdDhxo33BwztN6nlz6RrGeFCpm2JyckWI/h4pIpbwZkP+tLeltff52tr7+e7fb6ffvSddq0Wx5HRAofBf3FiJOTEzNnzsRkMhEZGQlAo0aNmDt3Lu7u7uzYsYPY2Fj6Z/ih5O/vT7NmzfgyNWlMz549AXBJ12Utp0wm0y2HBpiyGP8pUlDcfX3pM3cuP4waRXxEBJHBwSSmjudP89e335IYE0PQjh2ANcFSn08+wadWLaOMo4sLvnXr4gA2Y4tz42b73ewHWk5+vF3Yt8/4oVq1TZtc1at+3778Pm8eFrOZUxs20H7ixEwtWlK4pe+KmzEASP9cmpyd/9mQ7iZuQup3CIB7hhu/rhm6CCfGxOCZ8fzpgpeM3ZBJfd3HhYcbq9KCpmz3uYN6pT9PxpsT2Z3H5rheXjaP04/hzy5XhhQ9yQkJLB882GbdzxlueJ7/9VeWZ8g3Udnfnzr33ntb3wNNH3qIlNRgHbLvQn/l6FHjdexZvryR9C+NOTkZc3IyAM6eGd+NthxdXIybwEmxsSTHx2NycjKOmRAdDRaLzTnSv4dEpGhS0F+MtGvXzlhOTv3w79ChAwBz5sxhxYoVTJw4kUceeQSAmTNncunSJWbNmkViYiKjR48mICCA77//Hl9fX3r27JnrFvlO2SQUEylMSlerRq9Zszj63Xd0eOklvslwI+z87t00GzaM3v/9L7vef59es2Zlai3NSvoM4/vmzDGyL2fMPJ6ToP1Ond+zx1iu1rZtjvY5vXkzfl264FmhAlXvvpsLe/fi7uNDVEhIpq6kUry5eHkZeS7S/k+TMQBw9/G5rXOYnJ2NQCUt54BxjuvX86xejq6umFN7MSRmOE/stWu3rGdyhmFu0aGh/5wjm55wUrTEhIXx47/+ddv77/7Pf2476E9L/mpyds4yKWZKYiK70/UIy2r2l/Q3rl1v0aurTs+edJ02jctHj7L+2WdJSUzk3v/8B78uXYgJC+P7ESOIj4ig3cSJRlf/gvjOEpH8paC/GNmT+iP/t99+47XXXiM8PJy33nqLe++9l7/++otff/2VRunG5l66dIkqqWOPXVxcjJb9UqVK4ZXaspG+e39SUhJr165lQGr3yF9//RW3DHelc9K9Pzo6mjlz5uTBFYvcvkotWlCpRQv2fPih0d3YLyDA2rpvsbBt6lQGfPklw1evzrKrZH67kyn7LGazkf3c2cODKq1b3/J8SbGxbHnlFVxLl6ZOz560GjOGZsOHU719+yx/iErxVrFZM4J/+QWwJuWrnu6m8ulNm4xlbz8/3G4z6PepVYsrf/8NwMm1a6mWLpg59sMPeVYvbz8/4zynNm60CZqOZZglIytnt279JyeGxWIzjCenuTKkcAtJnaa167Rp/+RYsVg4tHgxez/6yPjs9QsIoPmIEVRq0cJm/wW57E2VxmI2Gze8nLP47RQTFsaWV18l7MgR6woHB5oOG4bFbLb5XL6ebshBxl4AWbl89Cg//utfmJOTMTk6su3NN0mKjbW5cbHtzTcxJyVlGkYjIkWTgv5iJC4ujs8//5yffvqJl156iVdeeYUffviBwMBAjh07hq+vL6fTJWo6deqU0RMgJ+Lj43n77beNoL99ujGjaWP7c5L138vLizdyMXetSH45+u23HF6yBLB2q+z48su4eXtzfNUq4sLD+emJJ+j94YeUbdAgR8fLrjXkdlpJ7mTKPgeTiXvfe8+amdzBAcccDNVJm3M6ISqK0N9/p9OUKbmusxQfTYcPN4LrE2vWkBwfT+WWLYk8f56/V640yjUfOfK2z1Hn3nuNYPzE2rWkJCVRqXlzQn77zRhakxf1Sn+e4z/+SHJCAhWbNePCvn0E79x5y3oe+vprEiIjKVu/Pud277aZTrDJgw/m/sKlUEhLepfGwWTC2cODxJgYgnfs4MjSpVw5dsymTND27QRt3065hg2565FHqNOzJyYnJ8am3jS4mbSAOi1YN6ekcOjrr43P9fRDXOIjIvhr+XIOL15sZOwHaDFyJOUbNWLzyy9zbvduXL28cHJzI/bqVaNMxiEsWSlbrx5O7u4kRkdjTkkh8cYNXDw9cfPxsQ5nMZm4cvQoO6dPt5mSUESKLgX9xURsbCxDhw6lSZMmLF261AjCZ8+ezZQpUxg5ciTh4eHMmjULs9lMZGQkFy5coFm6VoqY1C/AadOm4e/vT3JysjG+Pz3/dF8AU6ZMYciQIcZwAmdnZ+6+++5b1vfbb7/NNJ2gSEGJv36dPR9+aDNd1z3PPotnhQq0mziRS3/+SURQEDfCwvhh9GiajxxJi1Gjbjkfd/oW+Ljr140WnEyt9hla5tP0/7//M7o755SzuzsjUls40/dIqOzvT+WMP9ZSZx4AuH72rE2Ogkt//mksV1DrZYlX7Z57aD1+PPvnzwfgzJYtnNmyxaZMkwcfpOEDD9z2OZoOG8bpTZuMwOr0pk1Ga32trl05u22btWC61+3t1KvpsGGc3LCBa4GBgLWHwKkNGwCo3KoVF1NnuciOZ7lyWSbpbDZ8eI560UjhdGHvXmPZzdubxoMHc/CLL9jyyiuYU1KMbWXr1aP7u+9yZssWjixdSkJUFFePH2frG2+wb84cmj38MM1HjLjl+c5u3crml1/GwWTC5OSEJSXF5jzV0zWkBK5ezYEFC2z2bzRwoDEjRulq1UiOiyM5Li7TeWp163bLuji6uHDPs89icnKifMOGlK5e3eb7LTkujm8feojW48aRlDr8ADLnBxGRokNBfzHh4eHBvHnzqF69On/++SdvvvkmW7duxcXFhVmzZgEQERFBZGQkhw4d4ty5c5QrV84IvBcuXMjnn38OQNWqVWnTpg1ms5lffvkFj9QvgrRp+bKaai8qKgo3NzecnJw0FZ8UWlEhIfz93Xf8vXKlTetJ4yFDaDpsGAAunp70mTuXNePHG9P3/bFwIX998w31+vShVteuVGrZMsvW8/Qt8OnH9Gdstc+u5b90tWq5vygHBzxyOK7YrUwZYsLCAFj79NP4de6Mo6srsVevcjbdVE5q2REA/yeeoFLz5vy1bBlhR46QEBmJS6lSlG/ShMZDhtjMAnA7HF1c6Dt/Pvvnz+fMli3ERURQumpVmg0fTtn69Y2gP+PME7mtl6OLC/0//ZTf58/n7M8/E3f9Ol6VK9Nw4ECq3n033z/66E3r2W36dE6uX0/Qtm0kxcXhXasWTYcOzTQTgBQtNTp0wKd2bbBYuO/jj/EoV45TGzYYgbijiwtNhw2j9fjxOLm64v/EE9z1yCP8vWIFfy5aRPz168RcvmzTyn4zlVq2BKwt/ikZ8kR4+/nRcvRo43HzkSO5evw4pzZuxLV0adpOmGBzI6tM9eo4mEw23fHdfX1p9vDDOZ5yr3GGpIXpHVi4kOiQELa9+abN+tv6jhKRQsHBknHONSmy2rVrh8ViITk52SaLfkpKCrt27cLFxYUJEybg5uZGSEgILVq0YNKkSQCsWrWKsmXLMmHCBDZt2kRiYiKDBw/m13TdGG8W9O/Zs4eZM2eyfPnyTNP4ZcdkMuHklLv7TkeAPbcs9Y92gNosi7YFty6SIxHBwXw3dKhNS7qDyUTrceNoNWaMTWsiWHsDbH3jDZuEeGAdIz946VLKVK8OwPJBg7Jtub8Vv4AAeqXelLuV9N37MyYGzKn98+dz4P/+76ZlXDw9eXjNmhyNC70TY/P16FZ59dqRgvfXsmVG8rLyTZowaNEiO9dIMqoE5Pdo7/x+D0cEB+Pu42N83p35+Wf2z59P3V69aDhgAB7lymW5X3JcHEeWLePCnj30mTs3R0OoAHa8/TaJN25YW/sdHXF0daVsvXo06N8/U0+ypNhYjn3/PQ0feACXDDNIpLGYzZiTk43eAzeTdrM5J9Pund+9mw2TJoHFgsnRESd3d6q0bk2XN97I8fSvN1MQn/8iYkst/cXInj17mDp1KqGhoXz66aeYTCYCAwOZMWOGkaTvscceY8yYMTg6OvL+++8b+w7I0GJx9uxZqlWrZgT6afu7uLjYzBKQljwwMDCQunXr8vjjj/PXX3/lqL5333038+bNu6NrFskp75o1afX440a34ApNm9LxpZco36RJluXdfHzoM3cuJ9evZ/+8eUSFhADWeZzTAv6McvrDL2MrT0FpNWYMiTExnNqwwZodPe0GnYMDLp6eVGzWjDZPPpnvAb8IWKcZiw4JoUyG4S83Ll0yeskA+HXuXMA1k5Ii49Cr2t27U7t791vu5+TuTsvHHqPlY4/l6nxdcpHPyNnDg7tu0QvFwWTK8fdO2jCwnExTWb1DB55IN/xBRIo+Bf3FSGRkJNeuXSM0NJQvvviC++67j7feeotx48YZZcqUKYOzszOlSpXC9SYf/AcPHrTJ9L8nQ2vntWvXbKbz27t3LwEBAQxL7SIdGxvL+PHj8fPzY+rUqTg6OrJixQpatmypsfxiNy1GjSI6NJQ6995rM37yZurddx91e/UieOdOwo4cydSlt92kSUb2/7q9euXomKc2bgSgVA4SLqUJmDr1tqaESs/k7Ez7SZNon9rDR8SeUhITWT5kCNXatqVyy5Y4e3gQee4cJ9atM6Yg8yxfniZDh9q5piJFX06HgYlI8aSgvxgpU6YMc+fOJSgoiHfffZf//e9/1KxZk+bNmwMQGhrKM888wz333ENoaChjx47l448/pmrVqjbHsVgsbN682eZmwc1cvHiRP/74g3//+98AhIWF8eKLL9K+fXvGjx+PQ2q3aT8/PyZOnMjYsWO5//778+7CRXLI0cWFgKlTc72fg8mEX0AAfgEBmbbVyMUMGGlyenPAZp/evXO9j0hhlza9ZPqM+Gk8K1ak94cfqueJiIjIHVLQX4xcv36dvXv3sn79es6cOcPEiRP5+++/efbZZ3nhhRd46aWXaNWqFW+//TbR0dE8/fTTPPzww7zwwgu0adOGsNQEX1u2bCEiIoKAgAAjK3/Hjh1tzpV+3P78+fPp0KEDlSpVYt++fUyYMIHk5GQuXLjA8uXLSUlJISUlheTkZMxmM1OnTuXkyZM8//zzxg0BEREpWRxdXWk6bBgh+/YRHRpKSlISrl5eeNeqRc3OnWk8eHCejB8WEREp6RT0FxMRERH069eP5s2b07t3b2bOnGl0379y5QpjxozhkUceYdSoUTg4OFC2bFm++OILPvjgAy5dusSOHTtYsGABffv2xc3NjdGjR+Pu7k50ahfLXbt22Zwvfff+Vq1a0SR1XHSTJk2YOXMm5cuXp1SpUri7uxtZ/Z2dnXFwcODUqVPMnTuX6OhoSqsFR0SkRDI5OtJh37k4RwAAIABJREFU8mR7V0NERKTYU/b+YiQpKQlnZ+cstyUmJhrJ+HLCbDZjMpnyqmp5Rtn7Sx5lYC+elL1fpGgrDtn7xT6UvV+k4BW+qE5uW3YBP5CrgB8olAG/iIiIiIiI5I6694uIiEixFH3xIr/NmYPFYqFCkyZZToEWERxsTOXpVbky9zz3XEFXU0REJF8p6BcRESkhPvX3N5aHLF1K2QYN8rR8YbPr3Xc5t3s3ODhkO+f5wc8/53TqHOa5mUddRESkqFDQLyIiIsXOkW++sQb8ABYLP4wcmalM9xkzOLV+vfF4x9tvs+Ptt23KPLZ9Oy5eXvlaVxERkfykoF9ERESKlQt797L3ww8BcPH0xM3Hh+jQUNy8vXH28LAWsljYN2cO5pQUHEwmvKpUIebyZVISEyldtSqkTinr4Ohor8sQERHJEwr6RUREpNgwJyezc8YMI5i//3//I+S33/jtk0/wqlyZBz77DJOzM+GnTxut/02GDqVur16s+te/AKjVrRttJ0yw52WIiIjkGaVoFxERkWLD5OTEfbNn41amDK3HjaNC06ZUa9sWk6MjVwMDuXz0KNunTePXDz7Ao1w5KjZrRpvx46l4113U7t4dgKDt20mIirLzlYiIiOQNtfSLiIiUUMd//JHDixcTef48Hr6+1O/Xj9bjxuGQzbStpzZs4NCiRVw/exaXUqWo2akTdz/zDO6+vjblrp85w4k1a7h48CDXz54lOS4Od19fqvj70+rxx/H287MpH3rgAEeWLiXs8GESIiNx9vTEu2ZNWowejV9AgE3ZK0ePcvDLL7n4xx8kxsTgWb48NTt3xv/xx3Hz8QHAp04d+s6fT6lKlUiMjqZM9eo0HzmS8k2a4FunDpf+/JPIc+cAGPT11wAkRkfTdsIEHJ2dafP00zikdu8XEREp6hwsFovF3pUQyakjwJ5clG8HNMunukjBWGDvCki+GFsA59BrJ7P02fjr3HsvpzdvzlSm1ZgxtHnqqUzl699/PyfWrs1UvkzNmgxevPifsfLA8sGDiQgKyrIOzh4eDPzqK3xq1wbg+KpV7Jg+HbL4OdJi9GjuefZZ43HgTz+x8+23MaekZCrrVbkyAxctMm5A/P6///HHZ59lWYecGnfgwB3tX5xVAvrn8zn0Hi6eCuLzX0RsqXu/iIhICXTm559p+tBDtHvhBWviulRHv/sOi9mcqfyJtWup2bkzHSZPpkG/fsb6yOBgDi9ZYlvYYsG3Th3uevRROkyejP8TTxjBeFJsLAcW/BPO7f/0UyPgL9+4Me0mTqTt889Tp2dPnFxdjXLXTpxg5/TpmFNScPbwoPmIEbSdMIFyqdMIRl+8yJ7U5H0iIiLyD3XvFxERKYFaPvaY0aJfsVkzI4ldQlQUNy5dwqtKFZvydXv3pvuMGcZjJzc3jn73HQBnt23D/4knjG3d33mHcg0b2uxftn59Nk2eDFi786eJj4gwlluPG0eNjh3/2Sld6/+hr7/GnJwMQNe33qJW167WevXqxeL77rPW4+efMb/5JokxMTR7+GGaPfxwlte+avRoIs+fB2DUzz9n/QdKrZtLqVKYnPRzSUREii59i4mIiJRA6YPr8o0b22xLjInJVL7RwIE2j2v36GEE/Wnj49OUa9CAS3/+yaVDh4g8d47o0FCbMukD/ert2hG0YwcAW6ZMoUH//tTt3ZuKzZoZ0+YBhO7fbyxvevHFLK8pOSGB6EuXWDZgQNYXnYWvUpP3Zafv//5H1XvuyfHxREREChsF/SIiIiVQ+q7zJmdn241ZdO939fKyeZx+DL85KclYjrlyhY2TJnHl6FFjnVuZMrh6exuP0w8fCPj3v9k5YwZnfv6ZpNhY/lq2jL+WLaNcw4Z0e+stfOrUASDu2rUcXVdyXFyOyomIiJQUCvpFRETklpITE20eR4eGGsvuZcsay7+8844R8Nfv25d2L7yAm7c3V44d4/tHH810XNfSpbn3/feJCgnh9MaN/L1yJTcuXeLq8eOsnzCBYatWYXJ0xMnDg8ToaMCa4M+rcuUs6+lZsSLjDhwgJiwsx9e2euxYoi5cAODRdeuM9Q6OjniUK5fj44iIiBRGCvpFRETkls5u3Wrtcg9gsXD8xx+NbcZ6IGTfPmO54QMP4Jbawn9h794sjxsfEYGbtzelq1al5b/+Rf1+/VjcuzdgvbEQfeECZWrWpFz9+kYuABdPTxoPGWJzHIvZjMVsNsbfL+7T57auM/1+bmXKMGrr1ts6joiISGGhoF9ERERu6dDXX5MQGUnZ+vU5t3s353/91djW5MEHjWVHV1eSExIA2D1zJg369SPy/Hn+XrEiy+Muuf9+anbuTPnGjTE5OdncNDA5OuLm4wNAw4EDjaD/93nzCD91igpNm+JgMhF14QLBv/xCr//+F9/U4QAiIiJipaBfREREbsmzXDmb1v00zYYPp0rr1sbjevfdx1/LlwPWafZ+nTULsCb+O7NlS6b9k+PjOb1pE6c3bcq0rcXo0biWLm0c98LevZxYswaL2cypjRs5tXFjtvUdl3qDIPzUKVY+/DDmlBRKV6vGg8uW4eTublN2+aBBRAQH2+wnIiJSXJjsXQEREREp/LpNn07DAQNwK1MGRxcXyjZoQJc33qB9hkz67V54gRajR+NZoQImJye8a9ak05QptEqdEjCjZsOH41unDk6urjiYTLj7+lKjQwd6zZplTCmYpuu0aXSbPp0q/v64eHnhYDLhWro0lVq0oP2kSZSpXj3T8X3r1uWuESMAiLpwgT2zZ2NOSTGmA4wLD+fG5ct58ScSEREplBwslnST4IoUckeAPbko3w5odstSUpgtsHcFJF+MLYBz6LUjaZLj4lg2aBAODg50efNNokND2TljBo4uLpiTk43ZBJxcXRmTbtiCZK8S0D+fz6H3cPFUEJ//ImJL3ftFRESkWHNyd6fnzJl4+/nhUqoU106cACAlw4wE1dq1s0f1RERE8pWCfhERESn2KjRtaiz71KlD7R49cHBw+P/27j086urO4/hnbsnM5H6DhIQkQAARUe5LuBW1ahW3LWip1uLuIyyl3aqsuLjdXVe366N12227lVrbfRR1XasstLtqvQGiIogiCBphw00ugZAQbklIQjIzv/1jyMAwuV/m8pv363l4zJxzfr/zTSIzfGbO7/xksdlktduVWlCgMbffHsEKAQDoH4R+AAAQV6w2m657/PFIlwEAQFgQ+hE1jkg6LMnRwZjPu3nOrZKaO+hvkTRYUn43zwsAAAAAsYDQj6ixVtK5Pj5ns/zBvyM7JbW9pzQAAAAAxDZu2YeoMTlC87K7PwAAAACz4pN+RI1RkgxJH4RxzumSLg/jfAAAAAAQTnzSj6hyufxBPBwI/LHBGekC0OfC9TvlXW2g/4Tj7xfP/+bD7xSIDEI/ok44gj+BP3ZkRLoA9Llw/U7TwzQPEI/C8feY53/z4XcKRAahH1GpP4M/gT+2DI90Aehz4fqdFoRpHiAeheOuNzz/mw+/UyAyCP2IWv0R/An8sWekpMJIF4E+UyTpsjDNNU5ScpjmAuKBcf6/QxSe52We/80lnM//AIJZDMMwOh8GRM5O9c3mfgT+2GVIKpe0R9IpSU2RLQfd5JR/Sedw+f8Rbwnj3E2SPpS0T5IvjPMCZmSXNFbSVZJsYZqT5//YFsnnfwAXEPoRE3ob/An8QHzzSTojqTHShQAxyCL/qplkEdoAIBYR+hEzehr8CfwAAAAA4hXX9CNm9OQafwI/AAAAgHhG6EdM6U7wJ/ADAAAAiHeEfsScrgR/Aj8AAAAAEPoRozoK/gR+AAAAAPAj9CNmtRX8CfwAAAAAcIE90gUAvXG5/LcP+ljSJBH4AQAAAOBi3LIPAAAAAACTYnk/AAAAAAAmFTfL+x9//PGQtgceeIA++uijjz766KOPPvroo48++vqtL9JY3g8AAAAAgEmxvB8AAAAAAJMi9AMAAAAAYFKEfsS89V9K33tVem57pCsBAAAAgOhC6EdMW/+l9FKZ/+tNh6UNByNbDwAAAABEE0I/YtbFgb/VC58R/AEAAACgFaEfMamtwN+K4A8AAAAAfoR+xJyOAn8rgj8AAAAAEPoRY7oS+FsR/AEAAADEO0I/YkZ3An8rgj8AAACAeEboR0zoSeBvRfAHAAAAEK8I/Yh6vQn8rQj+AAAAAOIRoR9RrS8CfyuCPwAAAIB4Q+hH1OrLwN+K4A8AAAAgnhD6EZX6I/C3IvgDAAAAiBeEfkSd/gz8rQj+AAAAAOIBoR9RJRyBvxXBHwAAAIDZEfoRNd49EL7A3+qFz6SNh8I7JwAAAACEC6EfUeN//y8y875SHpl5AQAAAKC/WQzDMCJdBCBJ5TXSrhopwdb+mNd2S15f18+Z7pS+Utx+f7NXGp4ljc7p+jkBAAAAIFbYI10A0Gpktv9PRxJt0sovun7O2SOkmUW9qwsAAAAAYhWhH0DUMwxp42Fpc4VUWSfVN0e6IgAA0JnkBCkvRZpSIE0bLFkska4IiE+EfgBRzTCkJ7dIn1VFuhIAANAd9c3SnhP+PzuOST+YRPAHIoGN/ABEtY2HCfwAAMS6z6qkTYcjXQUQnwj9AKLa5opIVwAAAPoCr+lAZBD6AUS1yrpIVwAAAPrCUV7TgYgg9AOIamzaBwCAOfCaDkQGoR8AAAAAAJMi9AMAAAAAYFKEfgAAAAAATIrQDwAAAACASRH6AQAAAAAwKUI/AAAAAAAmRegHAAAAAMCkCP0AAAAAAJgUoR8AAAAAAJMi9AMAAAAAYFKEfgAAAAAATIrQDwAAAACASRH6AQAAAAAwKUI/AAAAAAAmRegHAAAAAMCkCP0AAAAAAJgUoR8AAAAAAJMi9AMAAAAAYFKEfgAAAAAATIrQDwAAAACASRH6AQAAAAAwKUI/AAAAAAAmRegHAAAAAMCkCP0AAAAAAJgUoR8AAAAAAJOyR7oAAACA/tRcW6WDrzwiw+cJtOXNXKiU4gkRrAoAgPAg9KNT1dXVGjBgQEj7pk2bNG7cOLlcrghUBQDoKp+nuV/Oa7FYZbGF/lOi/NlFnR6bM/FWZV5xvT55uOfBe8y9rygxI7/DMT5Ps/a+tFQNR3cF2lKHTlZK0fgezwsAQCwh9MehRYsWaevWrR2Oae2vrKzU/PnztWbNGlksFu3evVvDhw+XxWLR3XffrdWrV6u4uDjk+Lq6Os2aNatbdXVWEwCgZ7Y9Utov500dOlkj7vxNSHvdgc6fz9NGzOh9ARZLh92Gt0X7V/0oKPBbbHZlj/+m6g5u69GUyYOvavONDgAAohWvWiZWXV2t2bNnS5J8Pp+sVv8WDlu2bAmMOXHihK6//vp2A/f69es1ceJEWSwWffnll7rjjju0Zs0apaend6mG9957r9OVANXV1br55pu7dD4AAFpZrO3/M8bXck57X16q2r0fBrUbXo/2r/r7Hs85dtk62d1dew0EACAaEPpNbMCAAdqyZYs+/PBD3XPPPXrzzTeVlZXVrXO8+uqrmj9/viRp8+bNGjNmTJcDvyRZrVbZbLZOxwAAkJiRr5xJ32q70zBUsebfg5qs9sQ2h547fVT7Vz6gs0d39nWJAADEHEJ/HNiyZYsmTZoUCPytS+9dLpcMw5AkTZ8+XZLU2NioDRs2yO12q6ysTLt379aoUaMkSWvXrtWOHTs0YcKF6y9vueWWwNeTJ0/Wb34TvMxzxow+WL4JAIhZeTMXKP+aH0hSp9fvJ6TlKnfq/Db7vI21IaHflpgUMu7M7g3a/8d/krextocVd8LCG9UAgNhC6I8D69at07Jly0LaP/jgg8Dy/g8++ECSggL9ihUrJCmwtL+srExvvfWWMjIyJPlD/sqVKwPX9FvauLayK8v76+rq9MQTT/ToewMAdG7iw7G1Z4rP0yyrzR4UsGu2vxI0xu5OC7q23nP2pA6/9XOd+OyNNs9psVo1cModGnT1Ylkdznbn9jTW6sg7v1bN1j/I8PkuOt6mwpsekN2V2tNvCwCAiCD0m9z27dtVUVGh+++/P9D29ttvS5Lmzp0r3/l/0MydOzfouF27dmnTpk2Bx88995xmzJih7OzsoHE2m63N5futKwg6W9ovSSkpKXrwwQe7+B0BAMyuevOLqli3XFaHU1aHU76Wc/I1NwSNSSoYE/ja03BaZb/+ljwNp4PGWOwJMs7fucDw+XRs03/q1K53VHjj34ZsJOhrOaeabX/U0Xd/K88lqwQcKdkaOvcRpQyZ1JffJgAAYUHoN7kXX3xRkvThh/6NjC7+JP+ZZ57RiRMn9O1vf1vPPPOMJOnaa6+Vz+fTT37yE82bN08vvPCCJMntdmvOnDldntfj8d8L2eFwaPLkyZ2OX7lypYYNG9bl8wMAYkPdwW06+u5vu3VMctE4yTDka26Ur7mxzTE54y+8Jtnd6cqbuUCH3/y3QFvKkEkaOvcRHT8f5HX+zehzp45oz4tL5M4dodxpf6HkwnE6/skqHd+6Wp6GMyHzZIy6RkU3/0j2pMxufQ8AAEQLQr+J7dq1S5s3b263Pz09XU1NTXI4HEGb83m9XrW0tGjhwoWB0L906dJA38W8Xm9QW+sn+7W1tXI6nbLb7dyKDwDiWP3BT1V/8NNuHePOHelf2m/42uzPnXan0i+bFdQ2cMp31Fi1RyfL3lL+1T/QwNLvSBarBn3lr5SUd5kOvPqIWupqAuMbju3W/tX/0G4NiZmDNfiGv1H6yK90q3YAAKINod/ETp8+rQULFuhXv/pVULvFYpHL5dL06dPl8/nU0tIS2MhP8n86/9RTTyklJSXQ1t6n9fPmzQt6/PTTT2vs2LGqrKzUwIED1dLSEljq3xmr1Sq7nf8lAaAvXLocvr9ZHS6pjb1denYupwbfcJ+8TXWS/NfjW2wJsrtSlVw0Ts6sojaPK5z9I+XNXKjEjPyg9pTiCSq8cZkOvPJjeZvqO53fNWCYCr56j1wDS/wrBPro+wIAIBJIWCZWWlqq0tLSkNCfnJysxx57TC6XS3V1dVqxYoWef/55SdJdd90lm80mt9sddExbn9ZPmDBBq1evDmzkd7Hy8nKVlJRo4cKFKisr61K9be3+DwDomW2PhvfuKWOWvKrE9EG9Ooen4bRO/9+7kqTE9DxJeSFjmo5/qabjX0qSnFlFcuYM8XcYhrxN9fI0nNbZis/VdPKwGqv3qrFqr5pOHGp31UBbGqv3ac+L90qSrAkuObMKZU/KlN2ZItv5PxmjrlFS/uhefb8AAIQDoT9ONTQ0aPny5Zo8ebLGjLmwGVLrtf29tXnzZs2aNUu33XZbYL7FixeruLhYDz30kGw2m1atWqVx48ZxLT8AmMjFO95LUt7Mhcq/5vuSOr9lX2P1Pu19aWmX52q9HeDp8ve0b+UyGV5Pt2pNSBsoq8OlppoD7Y7xNTeqobI8uNFiVc6EuW0fAABAlCH0x4nS0lJJUkJCgiTphhtu0MaNG/X73/9ejz76aJ/OVVlZqW3btunhhx+WJFVVVen+++/X1KlTtXjx4sCt/YqLi3Xfffdp0aJFmj17dp/WAACIkEs/UQ/Dyvi0kmlyJGWpubaq44EWq9x5I5VWMlXpl81S0qDLJflXD5za9Y5q923W2SNl8p3f8b/9+UpDLiEAACBaEfrjQGlpqZYvXy5J8vl82rlzp9avX69PP/1Ud955p5YvX66nn35aV111lYYOHarc3FxNnz69x9fXP/XUU5o2bZpyc3P10UcfacmSJfJ4PKqoqNDLL78c2PzP4/HI5/PpoYce0p49e3TvvfcG3hAAAMSoS0K/xWLt9yktNrsGTJ6nirVPBLVbE1xy512mpPzRSikcp5Si8dq36u9Uf2i76g9tlyQVzv47uXKGKi9ngfJmLpDhadbZozt19sgXgcsDGmsOBO2RkDPx1n7/ngAA6CuE/jjQGvgl6bHHHtPGjRt144036tlnn1VWVpZ++MMf6uOPP9aGDRv0pz/9SVOnTtWsWbN6PN/48eM1erT/OsfRo0frpz/9qXJycpScnCyXyxXY1d/hcMhisWjv3r1avny56urqlJqa2ttvFwAgaeLDHd855dzpo9r51O0hG9sVXL9EuVPnB7UZPp8s1q6Fd5+3JbjBMDr95LxVUsEYDZv3uAyvR6d3rZcjJdt/+77zjr77O9Vs+5/A48TMwYGvs8d/Uw3HyuXMHiJnzhC5BgyTK7vYfxeA81rqalS776OgOW2JSUGPLfYEJReOVXLh2KB2T8MZNZ85pubaKqUNny4AAGIFoT/OLFu2TA6HI6jNarVqypQpmjJlSsj4jz/+OHAbvku1dyu+b3zjG4Gvk5OTg+4M0JaSkhL98pe/7Kx0AEAfMXxe7V/19yGBP33kTOWWfjfw2NtUryPrf6Pa/R/psruekd3V+Ruzl15Xf/S9/9DR9/6jS3VZ7Qmq+fQVHd/y32qpP6GU4gnKHPO18zX7dGb3hsBYi9Wq9BEXNiu0u9M19NbHOjx/Q9Xu4PkS3EpIGdCl2uzuNNndaXLnjezSeAAAogWhP85cGvg7017gBwDEriPrlutsxedBbc7sIg2Z8y/+29MZhmp2vKaKNb+S5+xJSdK+l+/XiPm/lsXW8euIr6WxV7U1Vu1VS/0JSVLdga1qqCyXO2+kzux+P9AuSSlDJsnuTg88rlj7hI598Gy35vI1N+iTf57YrWNG/dXz7NoPAIgp/X+hHQAAiBondrymYxufD2qzuVJVcvsvZHMmB9rOlL8fCPySP4AfeOWRTs/vPXe2V/UNLP1O0ONDb/yrDJ9XR955Mqg9e9w3ezVPT9ldaRGZFwCAniL0AwAQJ+oPfhoS3C02h0q+/TM5s4ouarRoyJwfy507ImjsiR2vqXLDig7n8DbVBT3OuvImFVy/RAXXL+lSjcmDrwr6JL3+0Hbt+a971Fi9L9CWkDpQGaOu7tL5+prdTegHAMQWlvcDABAHzh75Qnt+v0TGxRvtWSwq/sY/KaV4Qsh4a4JLJbf/Qjt/Nz/oE/8j7zwp14ChSh/5lTbnuXgJvuQP/akl/tvGVrzdtf1bCq67V+XPLgo8rt23Oag/d/pfhFxmkFI0XoYveD+Bi5387I2g2mzOZGWP73i1wNmKssAu/5J/HwFbYnIHRwAAEH0I/QAAmNzZozu1+z//OnSn/q/eo6wrb2r3uIS0XJXc9jOVP/u9C28WGD7tX/2PGrVghVwDS0KOufgTeUmy9eCT8dYN/E5+/mZInzOrSDkT5oa0pw2fprTh09o836mda1W16YWgtuxx39Tg6/+mwzqOrFseFPptzlT/ngcAAMQQlvcDAGBitfs/1u7nvx+y7H5g6XeVO+3O0AMMQ76WJnnOnlLz6UrZnanKmXhL0BBfc4P2vrxU3sbakMMbjpUHPXYkZfWo7rwZd7XZnjPpW51uJnixUzvXav8fHgxqsyW6Q25L2JaWs6eCHrO0HwAQi/ikHwAAk6r59H918LVHQ26jJ0mnvlijk2VvyvB6ZPi8Mnwe/9cXL//vwLmTFdq/+h80/I5/lyznP0MwDJ09UhYYY0tMUkKq/5Z4vpZzXa678fh+7X1paZt9FW//Qt5z9cqbcZcs1vbvMOM9d1ZH1v1a1VtWSoYR1Fdw3b1ypGR3XkfVnqDHdld6OyMBAIhehH4AAEzq5Odvthn4Jam5tqrX5z+zd5OOvPtb5V/9fUlS3YFP1FJXE+h3ZhfL03BK1oQk1Wz7Y6fnM7weVW5Yocr3fiefp7ntMT6vjq5/Sic/e115Mxcoc8xNslgvLFz0NJzW8a1/UNWHL8jTcCbk+JwJc5Uz8VZ5zzWosXqP7M5U2VxpsiU4ZbElSBarWuqqdfyTVTp75IugY505Q7r0cwEAIJoQ+gEAMKn8a3+o2v1tLOHvQ5XvP6OUwnFKHTZFNTteC+pLLhyrz5+YE7KXgCTZnSkhbfWHd6j+8I6Qdqs9IeRNgKYTh3TojZ8pdeifSRabzux+X6fL39OZvZvafaNjwOR5KrxxmST/pfnlzy5qd2xb0oaVdnksAADRgmv6AQAwqaT80cq4/NpuH2exWmVNcMuRnKnEjHy5BgxT0qDLlVI0XqnDplxYzi9Jhk+H3/w3yfApfeSsoL7MK25oNyi7Bg4PaXPmDJHNmRzSdsXdf1Tu9L8MGT/4hvvkSMmRr7lBFWuf0Ony99sM8bZEt4bM+WcV3vRAYCM+a4JbyQVXduGn4ZdUMKZHP0sAACKNT/oBADCx/Gv+Wo1Ve5SYUaCEtIGyJ2XJkZQhmytVdleabAluWROTZEtM8n+d4JbVkdjhOY+886Qq339akpQ+cqaK/vxByWJVxqirVfi1pTr0xk/lzC5SUv5oJReO1ckv1gQdnzZiupLyR4ec15GUqQGTvqVDr/+rJP9KgZLbfi67O00FX71bruwhOvj64/I1NyilaLyyx31dkpSYWaCS23+u8ucWy7hoRYDFZlf22K9r0NWL5UgO3VAwafCVqju4rdOfYfrImRoy58fs3A8AiEmEfgAATMyZXaQr7u78evruGDTre6o/tF2ZY25UzoQ5QX0D/uw21R3YqswrbpAkJReNk3vQKNmdKUrMyFdy0Xhljr6u3XPnTLxVx7esUsbo65Q3c2HQ9fpZY29WSvEEHXz9Jyr46j1BxyUPvkqFX7tfB197VImZBcoac6NyJt4iR0pOu3OllUxVw7FyGZ5mGT6vZLHIanPImuCW3Z0uZ+ZgpQ6bInfeZT35MQEAEBUshnHJlrZAFFu3X1r5RefjWt1xpTSzqP/qQf/73quRrgBAd3nPNciW6O7x8b6WJlkdzh4d21RzUM5snviBaPXbP490BUD84Zp+AADQp3oT+CX1OPBLIvADAHAJQj8AAAAAACZF6AcAAAAAwKQI/QAAAAAAmBShHwAAAAAAkyL0AwAAAABgUoR+AAAAAABMitAPAAAAAIBJEfoBAAAAADApQj/4z1Z6AAADMElEQVQAAAAAACZF6AcAAAAAwKQI/QAAAAAAmBShHwAAAAAAkyL0AwAAAABgUoR+AAAAAABMitAPAAAAAIBJEfoBAAAAADApQj8AAAAAACZF6AcAAAAAwKQI/QAAAAAAmBShHwAAAAAAkyL0AwAAAABgUoR+AFEtOSHSFQAAgL7AazoQGYR+AFEtLyXSFQAAgL4wiNd0ICLskS4AaFVeI+2qkRJs7Y9Zu7975/zTbqm+uf3+Zq80eoA0PLN750X4TCmQ9pyIdBUAAKC3phREugIgPlkMwzAiXQQgSXe/7g/h4ZbkkH7+tfDPi64xDOnJLdJnVZGuBAAA9NSVA6UfTJYskS4EiEOEfkSN9V9KL5WFf96vj5Rmjwj/vOg6w5A2HZY2V0hH6zpevQEAAKJDcoJ/Sf+UAmnqYMlC4gcigtCPqBLu4P/dK6UZReGbDwAAAADCiY38EFWuHiLddkV45iLwAwAAADA7Qj+iTjiCP4EfAAAAQDwg9CMq9WfwJ/ADAAAAiBeEfkSt/gj+BH4AAAAA8YTQj6jWl8GfwA8AAAAg3hD6EfX6IvgT+AEAAADEI0I/YkJvgj+BHwAAAEC8IvQjZvQk+BP4AQAAAMQzQj9iSneCP4EfAAAAQLwj9CPmdCX4E/gBAAAAgNCPGNVR8CfwAwAAAIAfoR8xq63gT+AHAAAAgAsshmEYkS4C6I13D0hv7JG+PlKaVhjpagAAAAAgehD6AQAAAAAwKZb3AwAAAABgUoR+AAAAAABMitAPAAAAAIBJEfoBAAAAADApQj8AAAAAACZF6AcAAAAAwKQI/QAAAAAAmBShHwAAAAAAkyL0AwAAAABgUoR+AAAAAABMitAPAAAAAIBJEfoBAAAAADApQj8AAAAAACZF6AcAAAAAwKQI/QAAAAAAmBShHwAAAAAAkyL0AwAAAABgUoR+AAAAAABMitAPAAAAAIBJEfoBAAAAADApQj8AAAAAACZF6AcAAAAAwKQI/QAAAAAAmBShHwAAAAAAkyL0AwAAAABgUoR+AAAAAABMitAPAAAAAIBJEfoBAAAAADApQj8AAAAAACZF6AcAAAAAwKT+HwX2sQCd0yM1AAAAAElFTkSuQmCC\",\"width\":1021,\"y\":373,\"x\":12},\"elements\":{\"page\":{\"showGrid\":true,\"gridSize\":15,\"orientation\":\"portrait\",\"height\":1500,\"backgroundColor\":\"255,255,255\",\"width\":1050,\"padding\":60},\"elements\":{\"1562bc6ba340d1\":{\"textBlock\":[{\"position\":{\"w\":\"w-20\",\"y\":0,\"h\":\"h\",\"x\":10},\"text\":\"\"}],\"lineStyle\":{\"lineColor\":\"51,153,255\"},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":true,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{},\"dataAttributes\":[{\"id\":\"1562bc6dfdc6b3\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"1562bc6dfdc5f8\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"1562bc6dfdc05d\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"1562bc6dfdc099\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"1562bc6dfdc131\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"1562bc6ba340d1\",\"anchors\":[{\"y\":\"0\",\"x\":\"w/2\"},{\"y\":\"h\",\"x\":\"w/2\"},{\"y\":\"h/2\",\"x\":\"0\"},{\"y\":\"h/2\",\"x\":\"w\"}],\"title\":\"圆角矩形\",\"category\":\"basic\",\"name\":\"roundRectangle\",\"path\":[{\"actions\":[{\"action\":\"move\",\"y\":\"4\",\"x\":\"0\"},{\"y1\":\"0\",\"action\":\"quadraticCurve\",\"y\":\"0\",\"x1\":\"0\",\"x\":\"4\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w-4\"},{\"y1\":\"0\",\"action\":\"quadraticCurve\",\"y\":\"4\",\"x1\":\"w\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h-4\",\"x\":\"w\"},{\"y1\":\"h\",\"action\":\"quadraticCurve\",\"y\":\"h\",\"x1\":\"w\",\"x\":\"w-4\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"4\"},{\"y1\":\"h\",\"action\":\"quadraticCurve\",\"y\":\"h-4\",\"x1\":\"0\",\"x\":\"0\"},{\"action\":\"close\"}]}],\"fillStyle\":{\"color\":\"255,255,255\",\"type\":\"solid\"},\"locked\":false,\"group\":\"\",\"props\":{\"w\":51.65032372043129,\"y\":672.2098765432096,\"h\":105.54179121117159,\"angle\":0,\"zindex\":63,\"x\":223}},\"14b0a4eb0f2775\":{\"textBlock\":[{\"position\":{\"w\":\"w\",\"h\":\"h\",\"y\":0,\"x\":0},\"text\":\"集群\"}],\"lineStyle\":{},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":false,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{\"bold\":true,\"size\":20},\"dataAttributes\":[{\"id\":\"14b0a4eb1bd3aa\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"14b0a4eb1bd057\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a4eb1bd655\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a4eb1bd8a6\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"14b0a4eb1bdc2a\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"14b0a4eb0f2775\",\"anchors\":[],\"category\":\"basic\",\"title\":\"文本\",\"name\":\"text\",\"fillStyle\":{},\"path\":[{\"lineStyle\":{\"lineWidth\":0},\"fillStyle\":{\"type\":\"none\"},\"actions\":[{\"action\":\"move\",\"y\":\"0\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"0\"},{\"action\":\"close\"}]}],\"locked\":false,\"group\":\"\",\"props\":{\"w\":122.35240224323547,\"angle\":4.71238898038469,\"h\":46.07544607414468,\"y\":840.5009907044904,\"x\":187.8375189387583,\"zindex\":18}},\"14b0a584a934d9\":{\"textBlock\":[{\"position\":{\"w\":\"w-20\",\"h\":\"h\",\"y\":0,\"x\":10},\"text\":\"......\"}],\"lineStyle\":{\"lineColor\":\"204,255,230\"},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":true,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{\"size\":15},\"dataAttributes\":[{\"id\":\"14b0a584b6e8f1\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"14b0a584b6e548\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a584b6e546\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a584b6e5e2\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"14b0a584b6e26a\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"14b0a584a934d9\",\"anchors\":[{\"y\":\"0\",\"x\":\"w/2\"},{\"y\":\"h\",\"x\":\"w/2\"},{\"y\":\"h/2\",\"x\":\"0\"},{\"y\":\"h/2\",\"x\":\"w\"}],\"category\":\"basic\",\"title\":\"圆角矩形\",\"name\":\"roundRectangle\",\"fillStyle\":{\"color\":\"204,255,204\",\"type\":\"solid\"},\"path\":[{\"actions\":[{\"action\":\"move\",\"y\":\"4\",\"x\":\"0\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"0\",\"x\":\"4\",\"x1\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w-4\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"4\",\"x\":\"w\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h-4\",\"x\":\"w\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h\",\"x\":\"w-4\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"4\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h-4\",\"x\":\"0\",\"x1\":\"0\"},{\"action\":\"close\"}]}],\"locked\":false,\"group\":\"\",\"props\":{\"w\":84.88964346349745,\"angle\":0,\"h\":50.49180327868852,\"y\":849.7377049180329,\"x\":707.0747028862479,\"zindex\":35}},\"155de392891e64\":{\"id\":\"155de392891e64\",\"to\":{\"id\":\"14b0a37e265e7e\",\"y\":615.0823719894753,\"angle\":0,\"x\":571.4380305602718},\"text\":\"\",\"linkerType\":\"broken\",\"name\":\"linker\",\"lineStyle\":{},\"points\":[{\"y\":615.0823719894753,\"x\":552.6689303904925},{\"y\":615.0823719894753,\"x\":552.6689303904925}],\"locked\":false,\"dataAttributes\":[],\"from\":{\"id\":\"14b0a37e17b76d\",\"y\":615.0823719894753,\"angle\":3.141592653589793,\"x\":533.8998302207132},\"group\":\"\",\"props\":{\"zindex\":47}},\"14b0a584a9346b\":{\"textBlock\":[{\"position\":{\"w\":\"w-20\",\"h\":\"h\",\"y\":0,\"x\":10},\"text\":\"redis\"}],\"lineStyle\":{\"lineColor\":\"204,255,230\"},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":true,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{\"size\":15},\"dataAttributes\":[{\"id\":\"14b0a584b6e84a\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"14b0a584b6eca2\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a584b6e1d\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a584b6ee25\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"14b0a584b6e624\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"14b0a584a9346b\",\"anchors\":[{\"y\":\"0\",\"x\":\"w/2\"},{\"y\":\"h\",\"x\":\"w/2\"},{\"y\":\"h/2\",\"x\":\"0\"},{\"y\":\"h/2\",\"x\":\"w\"}],\"category\":\"basic\",\"title\":\"圆角矩形\",\"name\":\"roundRectangle\",\"fillStyle\":{\"color\":\"204,255,204\",\"type\":\"solid\"},\"path\":[{\"actions\":[{\"action\":\"move\",\"y\":\"4\",\"x\":\"0\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"0\",\"x\":\"4\",\"x1\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w-4\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"4\",\"x\":\"w\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h-4\",\"x\":\"w\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h\",\"x\":\"w-4\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"4\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h-4\",\"x\":\"0\",\"x1\":\"0\"},{\"action\":\"close\"}]}],\"locked\":false,\"group\":\"\",\"props\":{\"w\":84.88964346349745,\"angle\":0,\"h\":50.49180327868852,\"y\":849.7377049180329,\"x\":449.0101867572157,\"zindex\":33}},\"1562bc6ba34463\":{\"textBlock\":[{\"position\":{\"w\":\"w-20\",\"h\":\"h\",\"y\":0,\"x\":10},\"text\":\"im\"}],\"lineStyle\":{\"lineColor\":\"204,255,230\"},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":true,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{\"size\":15},\"dataAttributes\":[{\"id\":\"1562bc6dfdc502\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"1562bc6dfdcda\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"1562bc6dfdcbce\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"1562bc6dfdc88f\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"1562bc6dfdc6f5\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"1562bc6ba34463\",\"anchors\":[{\"y\":\"0\",\"x\":\"w/2\"},{\"y\":\"h\",\"x\":\"w/2\"},{\"y\":\"h/2\",\"x\":\"0\"},{\"y\":\"h/2\",\"x\":\"w\"}],\"category\":\"basic\",\"title\":\"圆角矩形\",\"name\":\"roundRectangle\",\"fillStyle\":{\"color\":\"204,255,204\",\"type\":\"solid\"},\"path\":[{\"actions\":[{\"action\":\"move\",\"y\":\"4\",\"x\":\"0\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"0\",\"x\":\"4\",\"x1\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w-4\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"4\",\"x\":\"w\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h-4\",\"x\":\"w\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h\",\"x\":\"w-4\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"4\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h-4\",\"x\":\"0\",\"x1\":\"0\"},{\"action\":\"close\"}]}],\"locked\":false,\"group\":\"\",\"props\":{\"w\":84.88964346349745,\"angle\":0,\"h\":50.49180327868852,\"y\":716.9475814612425,\"x\":449.0101867572157,\"zindex\":66}},\"14b0a5b4bb9a02\":{\"textBlock\":[],\"lineStyle\":{\"lineColor\":\"136,136,136\",\"lineStyle\":\"dashed\",\"lineWidth\":1},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":false,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"l\",\"r\"],\"fontStyle\":{},\"dataAttributes\":[],\"shapeStyle\":{\"alpha\":1},\"id\":\"14b0a5b4bb9a02\",\"anchors\":[],\"title\":\"水平线\",\"category\":\"ui\",\"name\":\"uiHLine\",\"path\":[{\"fillStyle\":{\"type\":\"none\"},\"actions\":[{\"action\":\"move\",\"y\":\"lineWidth%2==0 ? Math.round(h/2) : h/2\",\"x\":0},{\"action\":\"line\",\"y\":\"lineWidth%2==0 ? Math.round(h/2) : h/2\",\"x\":\"w\"}]},{\"lineStyle\":{\"lineWidth\":0},\"fillStyle\":{\"type\":\"none\"},\"actions\":[{\"action\":\"move\",\"y\":\"0\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"0\"},{\"action\":\"close\"}]}],\"fillStyle\":{},\"locked\":false,\"group\":\"\",\"props\":{\"w\":931,\"y\":656,\"h\":21,\"angle\":0,\"zindex\":-2,\"x\":63}},\"14b0a9d19da23f\":{\"textBlock\":[{\"position\":{\"w\":\"w*1.4\",\"y\":\"h*0.38\",\"h\":\"h*0.24\",\"x\":\"-w*0.2\"},\"text\":\"\"}],\"lineStyle\":{\"lineColor\":\"153,255,153\"},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":true,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{},\"dataAttributes\":[{\"id\":\"14b0a9d1b8e60d\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"14b0a9d1b8e3ab\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a9d1b8eaac\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a9d1b8ec45\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"14b0a9d1b8e25a\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"14b0a9d19da23f\",\"anchors\":[{\"y\":\"0\",\"x\":\"w*0.5\"},{\"y\":\"h\",\"x\":\"w*0.5\"}],\"title\":\"上下箭头\",\"category\":\"basic\",\"name\":\"doubleVerticalArrow\",\"path\":[{\"actions\":[{\"action\":\"move\",\"y\":\"0\",\"x\":\"w*0.5\"},{\"action\":\"line\",\"y\":\"Math.min(w*0.5,h*0.45)\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"Math.min(w*0.5,h*0.45)\",\"x\":\"w*0.67\"},{\"action\":\"line\",\"y\":\"h-Math.min(w*0.5,h*0.45)\",\"x\":\"w*0.67\"},{\"action\":\"line\",\"y\":\"h-Math.min(w*0.5,h*0.45)\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"w*0.5\"},{\"action\":\"line\",\"y\":\"h-Math.min(w*0.5,h*0.45)\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"h-Math.min(w*0.5,h*0.45)\",\"x\":\"w*0.33\"},{\"action\":\"line\",\"y\":\"Math.min(w*0.5,h*0.45)\",\"x\":\"w*0.33\"},{\"action\":\"line\",\"y\":\"Math.min(w*0.5,h*0.45)\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w*0.5\"},{\"action\":\"close\"}]}],\"fillStyle\":{\"color\":\"153,255,153\",\"type\":\"solid\"},\"locked\":false,\"group\":\"\",\"props\":{\"w\":29,\"y\":796.1234567901226,\"h\":128.7550678287355,\"angle\":0,\"zindex\":44,\"x\":169}},\"1562bc9635d9ef\":{\"textBlock\":[{\"position\":{\"w\":\"w\",\"y\":0,\"h\":\"h\",\"x\":0},\"text\":\"横向扩增\"}],\"lineStyle\":{},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":false,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{\"bold\":true,\"size\":20},\"dataAttributes\":[{\"id\":\"1562bc966ddf64\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"1562bc966dd906\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"1562bc966ddfd3\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"1562bc966dd0fc\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"1562bc966ddc3f\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"1562bc9635d9ef\",\"anchors\":[],\"title\":\"文本\",\"category\":\"basic\",\"name\":\"text\",\"path\":[{\"lineStyle\":{\"lineWidth\":0},\"fillStyle\":{\"type\":\"none\"},\"actions\":[{\"action\":\"move\",\"y\":\"0\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"0\"},{\"action\":\"close\"}]}],\"fillStyle\":{},\"locked\":false,\"group\":\"\",\"props\":{\"w\":160,\"y\":704.9807721487954,\"h\":40,\"angle\":4.71238898038469,\"zindex\":75,\"x\":169.01372006037604}},\"14b0a52268da0c\":{\"textBlock\":[{\"position\":{\"w\":\"w\",\"y\":0,\"h\":\"h\",\"x\":0},\"text\":\"mysql\\nmongodb\\nhbase等\"}],\"lineStyle\":{},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":false,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{\"bold\":true,\"size\":20},\"dataAttributes\":[{\"id\":\"14b0a522979f53\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"14b0a522979568\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a52297939b\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a522979882\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"14b0a5229793a7\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"14b0a52268da0c\",\"anchors\":[],\"title\":\"文本\",\"category\":\"basic\",\"name\":\"text\",\"path\":[{\"lineStyle\":{\"lineWidth\":0},\"fillStyle\":{\"type\":\"none\"},\"actions\":[{\"action\":\"move\",\"y\":\"0\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"0\"},{\"action\":\"close\"}]}],\"fillStyle\":{},\"locked\":false,\"group\":\"\",\"props\":{\"w\":135.82342954159594,\"y\":981.5737704918033,\"h\":28.85245901639344,\"angle\":0,\"zindex\":20,\"x\":485.08822772465936}},\"14b0a584a93271\":{\"textBlock\":[{\"position\":{\"w\":\"w-20\",\"y\":0,\"h\":\"h\",\"x\":10},\"text\":\"mq\"}],\"lineStyle\":{\"lineColor\":\"204,255,230\"},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":true,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{\"size\":15},\"dataAttributes\":[{\"id\":\"14b0a584b6eb52\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"14b0a584b6ea4b\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a584b6e0ce\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a584b6ea01\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"14b0a584b6ec9b\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"14b0a584a93271\",\"anchors\":[{\"y\":\"0\",\"x\":\"w/2\"},{\"y\":\"h\",\"x\":\"w/2\"},{\"y\":\"h/2\",\"x\":\"0\"},{\"y\":\"h/2\",\"x\":\"w\"}],\"title\":\"圆角矩形\",\"category\":\"basic\",\"name\":\"roundRectangle\",\"path\":[{\"actions\":[{\"action\":\"move\",\"y\":\"4\",\"x\":\"0\"},{\"y1\":\"0\",\"action\":\"quadraticCurve\",\"y\":\"0\",\"x1\":\"0\",\"x\":\"4\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w-4\"},{\"y1\":\"0\",\"action\":\"quadraticCurve\",\"y\":\"4\",\"x1\":\"w\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h-4\",\"x\":\"w\"},{\"y1\":\"h\",\"action\":\"quadraticCurve\",\"y\":\"h\",\"x1\":\"w\",\"x\":\"w-4\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"4\"},{\"y1\":\"h\",\"action\":\"quadraticCurve\",\"y\":\"h-4\",\"x1\":\"0\",\"x\":\"0\"},{\"action\":\"close\"}]}],\"fillStyle\":{\"color\":\"204,255,204\",\"type\":\"solid\"},\"locked\":false,\"group\":\"\",\"props\":{\"w\":92.23089983022061,\"y\":849.737704918033,\"h\":50.491803278688394,\"angle\":0,\"zindex\":32,\"x\":326.7691001697794}},\"155de395248aa1\":{\"id\":\"155de395248aa1\",\"to\":{\"id\":\"14b0a37e17b76d\",\"y\":615.0823719894753,\"angle\":0,\"x\":449.0101867572157},\"text\":\"\",\"linkerType\":\"broken\",\"name\":\"linker\",\"lineStyle\":{},\"points\":[{\"y\":615.0823719894753,\"x\":430.33446519524625},{\"y\":615.0823719894753,\"x\":430.33446519524625}],\"locked\":false,\"dataAttributes\":[],\"from\":{\"id\":\"14b0a37b6c3e8a\",\"y\":615.0823719894753,\"angle\":3.141592653589793,\"x\":411.65874363327686},\"group\":\"\",\"props\":{\"zindex\":50}},\"14b0a5291fc8ec\":{\"textBlock\":[{\"position\":{\"w\":\"w-20\",\"h\":\"h\",\"y\":0,\"x\":10},\"text\":\"\"}],\"lineStyle\":{\"lineColor\":\"153,255,255\"},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":true,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{},\"dataAttributes\":[{\"id\":\"14b0a5292b789\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"14b0a5292b76d2\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a5292b7731\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a5292b7edb\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"14b0a5292b7f2e\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"14b0a5291fc8ec\",\"anchors\":[{\"y\":\"0\",\"x\":\"w/2\"},{\"y\":\"h\",\"x\":\"w/2\"},{\"y\":\"h/2\",\"x\":\"0\"},{\"y\":\"h/2\",\"x\":\"w\"}],\"category\":\"basic\",\"title\":\"圆角矩形\",\"name\":\"roundRectangle\",\"fillStyle\":{\"color\":\"153,255,255\",\"type\":\"solid\"},\"path\":[{\"actions\":[{\"action\":\"move\",\"y\":\"4\",\"x\":\"0\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"0\",\"x\":\"4\",\"x1\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w-4\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"4\",\"x\":\"w\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h-4\",\"x\":\"w\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h\",\"x\":\"w-4\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"4\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h-4\",\"x\":\"0\",\"x1\":\"0\"},{\"action\":\"close\"}]}],\"locked\":false,\"group\":\"\",\"props\":{\"w\":116,\"angle\":0,\"h\":88.00000000000011,\"y\":952,\"x\":303,\"zindex\":21}},\"14b0a584a93a8d\":{\"textBlock\":[{\"position\":{\"w\":\"w\",\"h\":\"h\",\"y\":0,\"x\":0},\"text\":\"核心组件\"}],\"lineStyle\":{},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":false,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{\"bold\":true,\"size\":20},\"dataAttributes\":[{\"id\":\"14b0a584b6e9ff\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"14b0a584b6e673\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a584b6eafb\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a584b6eb71\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"14b0a584b6ed74\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"14b0a584a93a8d\",\"anchors\":[],\"category\":\"basic\",\"title\":\"文本\",\"name\":\"text\",\"fillStyle\":{},\"path\":[{\"lineStyle\":{\"lineWidth\":0},\"fillStyle\":{\"type\":\"none\"},\"actions\":[{\"action\":\"move\",\"y\":\"0\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"0\"},{\"action\":\"close\"}]}],\"locked\":false,\"group\":\"\",\"props\":{\"w\":135.82342954159594,\"angle\":0,\"h\":36.393442622950815,\"y\":810,\"x\":491.87945670628187,\"zindex\":36}},\"1562bc6ba3448c\":{\"textBlock\":[{\"position\":{\"w\":\"w-20\",\"y\":0,\"h\":\"h\",\"x\":10},\"text\":\"\"}],\"lineStyle\":{\"lineColor\":\"255,153,51\"},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":true,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{},\"dataAttributes\":[{\"id\":\"1562bc6dfdd305\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"1562bc6dfdd3cc\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"1562bc6dfdd41b\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"1562bc6dfddc41\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"1562bc6dfdd662\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"1562bc6ba3448c\",\"anchors\":[{\"y\":\"0\",\"x\":\"w/2\"},{\"y\":\"h\",\"x\":\"w/2\"},{\"y\":\"h/2\",\"x\":\"0\"},{\"y\":\"h/2\",\"x\":\"w\"}],\"title\":\"圆角矩形\",\"category\":\"basic\",\"name\":\"roundRectangle\",\"path\":[{\"actions\":[{\"action\":\"move\",\"y\":\"4\",\"x\":\"0\"},{\"y1\":\"0\",\"action\":\"quadraticCurve\",\"y\":\"0\",\"x1\":\"0\",\"x\":\"4\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w-4\"},{\"y1\":\"0\",\"action\":\"quadraticCurve\",\"y\":\"4\",\"x1\":\"w\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h-4\",\"x\":\"w\"},{\"y1\":\"h\",\"action\":\"quadraticCurve\",\"y\":\"h\",\"x1\":\"w\",\"x\":\"w-4\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"4\"},{\"y1\":\"h\",\"action\":\"quadraticCurve\",\"y\":\"h-4\",\"x1\":\"0\",\"x\":\"0\"},{\"action\":\"close\"}]}],\"fillStyle\":{\"color\":\"255,255,255\",\"type\":\"solid\"},\"locked\":false,\"group\":\"\",\"props\":{\"w\":49.66666666666663,\"y\":675.2716049382709,\"h\":111,\"angle\":0,\"zindex\":72,\"x\":816.9994324770992}},\"14b0a37ec25377\":{\"textBlock\":[{\"position\":{\"w\":\"w-20\",\"y\":0,\"h\":\"h\",\"x\":10},\"text\":\".......\"}],\"lineStyle\":{\"lineColor\":\"255,204,204\"},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":true,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{\"size\":15},\"dataAttributes\":[{\"id\":\"14b0a37f5498b8\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"14b0a37f549443\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a37f549d79\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a37f54908a\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"14b0a37f5495e5\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"14b0a37ec25377\",\"anchors\":[{\"y\":\"0\",\"x\":\"w/2\"},{\"y\":\"h\",\"x\":\"w/2\"},{\"y\":\"h/2\",\"x\":\"0\"},{\"y\":\"h/2\",\"x\":\"w\"}],\"title\":\"圆角矩形\",\"category\":\"basic\",\"name\":\"roundRectangle\",\"path\":[{\"actions\":[{\"action\":\"move\",\"y\":\"4\",\"x\":\"0\"},{\"y1\":\"0\",\"action\":\"quadraticCurve\",\"y\":\"0\",\"x1\":\"0\",\"x\":\"4\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w-4\"},{\"y1\":\"0\",\"action\":\"quadraticCurve\",\"y\":\"4\",\"x1\":\"w\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h-4\",\"x\":\"w\"},{\"y1\":\"h\",\"action\":\"quadraticCurve\",\"y\":\"h\",\"x1\":\"w\",\"x\":\"w-4\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"4\"},{\"y1\":\"h\",\"action\":\"quadraticCurve\",\"y\":\"h-4\",\"x1\":\"0\",\"x\":\"0\"},{\"action\":\"close\"}]}],\"fillStyle\":{\"color\":\"255,204,204\",\"type\":\"solid\"},\"locked\":false,\"group\":\"\",\"props\":{\"w\":95.96434634974537,\"y\":589.8364703501311,\"h\":50.49180327868851,\"angle\":0,\"zindex\":5,\"x\":696.0000000000001}},\"14b0a9d8910683\":{\"textBlock\":[{\"position\":{\"w\":\"w*1.4\",\"y\":\"h*0.38\",\"h\":\"h*0.24\",\"x\":\"-w*0.2\"},\"text\":\"\"}],\"lineStyle\":{\"lineColor\":\"102,178,255\"},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":true,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{},\"dataAttributes\":[{\"id\":\"14b0a9d89db29e\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"14b0a9d89db4af\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a9d89db5b1\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a9d89dbc08\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"14b0a9d89db478\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"14b0a9d8910683\",\"anchors\":[{\"y\":\"0\",\"x\":\"w*0.5\"},{\"y\":\"h\",\"x\":\"w*0.5\"}],\"title\":\"上下箭头\",\"category\":\"basic\",\"name\":\"doubleVerticalArrow\",\"path\":[{\"actions\":[{\"action\":\"move\",\"y\":\"0\",\"x\":\"w*0.5\"},{\"action\":\"line\",\"y\":\"Math.min(w*0.5,h*0.45)\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"Math.min(w*0.5,h*0.45)\",\"x\":\"w*0.67\"},{\"action\":\"line\",\"y\":\"h-Math.min(w*0.5,h*0.45)\",\"x\":\"w*0.67\"},{\"action\":\"line\",\"y\":\"h-Math.min(w*0.5,h*0.45)\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"w*0.5\"},{\"action\":\"line\",\"y\":\"h-Math.min(w*0.5,h*0.45)\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"h-Math.min(w*0.5,h*0.45)\",\"x\":\"w*0.33\"},{\"action\":\"line\",\"y\":\"Math.min(w*0.5,h*0.45)\",\"x\":\"w*0.33\"},{\"action\":\"line\",\"y\":\"Math.min(w*0.5,h*0.45)\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w*0.5\"},{\"action\":\"close\"}]}],\"fillStyle\":{\"color\":\"102,178,255\",\"type\":\"solid\"},\"locked\":false,\"group\":\"\",\"props\":{\"w\":28.969510976942104,\"y\":1056,\"h\":118,\"angle\":0,\"zindex\":46,\"x\":169.01524451152895}},\"1562bc6ba34bbc\":{\"textBlock\":[{\"position\":{\"w\":\"w\",\"h\":\"h\",\"y\":0,\"x\":0},\"text\":\"微服务\"}],\"lineStyle\":{},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":false,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{\"bold\":true,\"size\":20},\"dataAttributes\":[{\"id\":\"1562bc6dfddc1f\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"1562bc6dfdd6b1\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"1562bc6dfddfd1\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"1562bc6dfddfb3\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"1562bc6dfdde6d\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"1562bc6ba34bbc\",\"anchors\":[],\"category\":\"basic\",\"title\":\"文本\",\"name\":\"text\",\"fillStyle\":{},\"path\":[{\"lineStyle\":{\"lineWidth\":0},\"fillStyle\":{\"type\":\"none\"},\"actions\":[{\"action\":\"move\",\"y\":\"0\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"0\"},{\"action\":\"close\"}]}],\"locked\":false,\"group\":\"\",\"props\":{\"w\":135.82342954159594,\"angle\":0,\"h\":36.393442622950815,\"y\":677.2098765432096,\"x\":491.87945670628187,\"zindex\":69}},\"14b0a52e0f5957\":{\"textBlock\":[{\"position\":{\"w\":\"w\",\"y\":0,\"h\":\"h\",\"x\":0},\"text\":\"灾备中心\"}],\"lineStyle\":{},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":false,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{\"bold\":true,\"size\":20},\"dataAttributes\":[{\"id\":\"14b0a52e1d0acd\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"14b0a52e1d098c\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a52e1d0719\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a52e1d0241\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"14b0a52e1d057f\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"14b0a52e0f5957\",\"anchors\":[],\"title\":\"文本\",\"category\":\"basic\",\"name\":\"text\",\"path\":[{\"lineStyle\":{\"lineWidth\":0},\"fillStyle\":{\"type\":\"none\"},\"actions\":[{\"action\":\"move\",\"y\":\"0\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"0\"},{\"action\":\"close\"}]}],\"fillStyle\":{},\"locked\":false,\"group\":\"\",\"props\":{\"w\":135.82342954159594,\"y\":981.436596280555,\"h\":28.85245901639344,\"angle\":0,\"zindex\":22,\"x\":293.08828522920203}},\"1562bc9e4be1cf\":{\"textBlock\":[{\"position\":{\"w\":\"w\",\"h\":\"h\",\"y\":0,\"x\":0},\"text\":\"tcp-haproxy\"}],\"lineStyle\":{},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":false,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{\"bold\":true,\"size\":15},\"dataAttributes\":[{\"id\":\"1562bc9eb2400d\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"1562bc9eb24f63\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"1562bc9eb24cac\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"1562bc9eb2401b\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"1562bc9eb24d8\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"1562bc9e4be1cf\",\"anchors\":[],\"category\":\"basic\",\"title\":\"文本\",\"name\":\"text\",\"fillStyle\":{},\"path\":[{\"lineStyle\":{\"lineWidth\":0},\"fillStyle\":{\"type\":\"none\"},\"actions\":[{\"action\":\"move\",\"y\":\"0\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"0\"},{\"action\":\"close\"}]}],\"locked\":false,\"group\":\"\",\"props\":{\"w\":160,\"angle\":1.5707963267948966,\"h\":40,\"y\":710.7716049382709,\"x\":761.8323885130817,\"zindex\":76}},\"1562bc808ac2ed\":{\"textBlock\":[],\"lineStyle\":{\"lineColor\":\"136,136,136\",\"lineStyle\":\"dashed\",\"lineWidth\":1},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":false,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"l\",\"r\"],\"fontStyle\":{},\"dataAttributes\":[],\"shapeStyle\":{\"alpha\":1},\"id\":\"1562bc808ac2ed\",\"anchors\":[],\"category\":\"ui\",\"title\":\"水平线\",\"name\":\"uiHLine\",\"fillStyle\":{},\"path\":[{\"fillStyle\":{\"type\":\"none\"},\"actions\":[{\"action\":\"move\",\"y\":\"lineWidth%2==0 ? Math.round(h/2) : h/2\",\"x\":0},{\"action\":\"line\",\"y\":\"lineWidth%2==0 ? Math.round(h/2) : h/2\",\"x\":\"w\"}]},{\"lineStyle\":{\"lineWidth\":0},\"fillStyle\":{\"type\":\"none\"},\"actions\":[{\"action\":\"move\",\"y\":\"0\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"0\"},{\"action\":\"close\"}]}],\"locked\":false,\"group\":\"\",\"props\":{\"w\":931,\"angle\":0,\"h\":21,\"y\":780,\"x\":59,\"zindex\":73}},\"155de39844bc1a\":{\"id\":\"155de39844bc1a\",\"to\":{\"id\":\"14b0a37ec25377\",\"y\":615.0823719894753,\"angle\":0,\"x\":696.0000000000001},\"text\":\"\",\"linkerType\":\"broken\",\"name\":\"linker\",\"lineStyle\":{},\"points\":[{\"y\":615.0823719894753,\"x\":676.1638370118847},{\"y\":615.0823719894753,\"x\":676.1638370118847}],\"locked\":false,\"dataAttributes\":[],\"from\":{\"id\":\"14b0a37e265e7e\",\"y\":615.0823719894753,\"angle\":3.141592653589793,\"x\":656.3276740237693},\"group\":\"\",\"props\":{\"zindex\":52}},\"155de45d709d5e\":{\"textBlock\":[{\"position\":{\"w\":\"w-20\",\"h\":\"h\",\"y\":0,\"x\":10},\"text\":\"\"}],\"lineStyle\":{\"lineColor\":\"255,153,51\"},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":true,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{},\"dataAttributes\":[{\"id\":\"155de45d935ae4\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"155de45d935eca\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"155de45d935fba\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"155de45d9358f1\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"155de45d935c2c\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"155de45d709d5e\",\"anchors\":[{\"y\":\"0\",\"x\":\"w/2\"},{\"y\":\"h\",\"x\":\"w/2\"},{\"y\":\"h/2\",\"x\":\"0\"},{\"y\":\"h/2\",\"x\":\"w\"}],\"category\":\"basic\",\"title\":\"圆角矩形\",\"name\":\"roundRectangle\",\"fillStyle\":{\"color\":\"255,255,255\",\"type\":\"solid\"},\"path\":[{\"actions\":[{\"action\":\"move\",\"y\":\"4\",\"x\":\"0\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"0\",\"x\":\"4\",\"x1\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w-4\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"4\",\"x\":\"w\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h-4\",\"x\":\"w\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h\",\"x\":\"w-4\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"4\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h-4\",\"x\":\"0\",\"x1\":\"0\"},{\"action\":\"close\"}]}],\"locked\":false,\"group\":\"\",\"props\":{\"w\":49.66666666666663,\"angle\":0,\"h\":111,\"y\":808.0617283950613,\"x\":816.9994324770992,\"zindex\":55}},\"14b0a548ba4f98\":{\"textBlock\":[{\"position\":{\"w\":\"w-20\",\"h\":\"h\",\"y\":0,\"x\":10},\"text\":\"云服务\"}],\"lineStyle\":{\"lineColor\":\"102,178,255\"},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":true,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{\"bold\":true,\"size\":30},\"dataAttributes\":[{\"id\":\"14b0a548c5f624\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"14b0a548c5f9d6\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a548c5f956\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a548c5f85e\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"14b0a548c5f0cd\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"14b0a548ba4f98\",\"anchors\":[{\"y\":\"0\",\"x\":\"w/2\"},{\"y\":\"h\",\"x\":\"w/2\"},{\"y\":\"h/2\",\"x\":\"0\"},{\"y\":\"h/2\",\"x\":\"w\"}],\"category\":\"basic\",\"title\":\"圆角矩形\",\"name\":\"roundRectangle\",\"fillStyle\":{\"color\":\"102,178,255\",\"type\":\"solid\"},\"path\":[{\"actions\":[{\"action\":\"move\",\"y\":\"4\",\"x\":\"0\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"0\",\"x\":\"4\",\"x1\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w-4\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"4\",\"x\":\"w\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h-4\",\"x\":\"w\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h\",\"x\":\"w-4\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"4\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h-4\",\"x\":\"0\",\"x1\":\"0\"},{\"action\":\"close\"}]}],\"locked\":false,\"group\":\"\",\"props\":{\"w\":500,\"angle\":0,\"h\":86,\"y\":1074.0000000000002,\"x\":303.00701112618987,\"zindex\":25}},\"14b0a3c2513d8c\":{\"textBlock\":[{\"position\":{\"w\":\"w-20\",\"h\":\"h\",\"y\":0,\"x\":10},\"text\":\"\"}],\"lineStyle\":{\"lineColor\":\"51,153,255\"},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":true,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{},\"dataAttributes\":[{\"id\":\"14b0a3c262c453\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"14b0a3c262c189\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a3c262cfed\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a3c262cd14\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"14b0a3c262c5b7\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"14b0a3c2513d8c\",\"anchors\":[{\"y\":\"0\",\"x\":\"w/2\"},{\"y\":\"h\",\"x\":\"w/2\"},{\"y\":\"h/2\",\"x\":\"0\"},{\"y\":\"h/2\",\"x\":\"w\"}],\"category\":\"basic\",\"title\":\"圆角矩形\",\"name\":\"roundRectangle\",\"fillStyle\":{\"color\":\"255,255,255\",\"type\":\"solid\"},\"path\":[{\"actions\":[{\"action\":\"move\",\"y\":\"4\",\"x\":\"0\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"0\",\"x\":\"4\",\"x1\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w-4\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"4\",\"x\":\"w\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h-4\",\"x\":\"w\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h\",\"x\":\"w-4\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"4\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h-4\",\"x\":\"0\",\"x1\":\"0\"},{\"action\":\"close\"}]}],\"locked\":false,\"group\":\"\",\"props\":{\"w\":51.65032372043123,\"angle\":0,\"h\":105.73560996273523,\"y\":812.1158015760096,\"x\":223.1885582001604,\"zindex\":16}},\"14b0a521054425\":{\"textBlock\":[{\"position\":{\"w\":\"w-20\",\"h\":\"h\",\"y\":0,\"x\":10},\"text\":\"\"}],\"lineStyle\":{\"lineColor\":\"153,255,255\"},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":true,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{},\"dataAttributes\":[{\"id\":\"14b0a52110f32\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"14b0a52110fc8c\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a52110f926\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a52110f935\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"14b0a52110f6e7\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"14b0a521054425\",\"anchors\":[{\"y\":\"0\",\"x\":\"w/2\"},{\"y\":\"h\",\"x\":\"w/2\"},{\"y\":\"h/2\",\"x\":\"0\"},{\"y\":\"h/2\",\"x\":\"w\"}],\"category\":\"basic\",\"title\":\"圆角矩形\",\"name\":\"roundRectangle\",\"fillStyle\":{\"color\":\"153,255,255\",\"type\":\"solid\"},\"path\":[{\"actions\":[{\"action\":\"move\",\"y\":\"4\",\"x\":\"0\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"0\",\"x\":\"4\",\"x1\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w-4\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"4\",\"x\":\"w\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h-4\",\"x\":\"w\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h\",\"x\":\"w-4\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"4\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h-4\",\"x\":\"0\",\"x1\":\"0\"},{\"action\":\"close\"}]}],\"locked\":false,\"group\":\"\",\"props\":{\"w\":214.77079796264798,\"angle\":0,\"h\":88.24691358024711,\"y\":951.8902606310014,\"x\":445.62161214502873,\"zindex\":19}},\"155de3970fa6ae\":{\"id\":\"155de3970fa6ae\",\"to\":{\"id\":\"14b0a37b6c3e8a\",\"y\":615.0823719894753,\"angle\":3.141592653589793,\"x\":411.65874363327686},\"text\":\"\",\"linkerType\":\"broken\",\"name\":\"linker\",\"lineStyle\":{},\"points\":[{\"y\":615.0823719894753,\"x\":430.33446519524625},{\"y\":615.0823719894753,\"x\":430.33446519524625}],\"locked\":false,\"dataAttributes\":[],\"from\":{\"id\":\"14b0a37e17b76d\",\"y\":615.0823719894753,\"angle\":0,\"x\":449.0101867572157},\"group\":\"\",\"props\":{\"zindex\":51}},\"1562bc6ba34ff8\":{\"textBlock\":[{\"position\":{\"w\":\"w\",\"y\":0,\"h\":\"h\",\"x\":0},\"text\":\"微服务层\"}],\"lineStyle\":{},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":false,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{\"bold\":false,\"size\":15},\"dataAttributes\":[{\"id\":\"1562bc6dfdddf4\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"1562bc6dfdd6e6\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"1562bc6dfddab6\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"1562bc6dfdd754\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"1562bc6dfddf8a\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"1562bc6ba34ff8\",\"anchors\":[],\"title\":\"文本\",\"category\":\"basic\",\"name\":\"text\",\"path\":[{\"lineStyle\":{\"lineWidth\":0},\"fillStyle\":{\"type\":\"none\"},\"actions\":[{\"action\":\"move\",\"y\":\"0\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"0\"},{\"action\":\"close\"}]}],\"fillStyle\":{},\"locked\":false,\"group\":\"\",\"props\":{\"w\":160,\"y\":707.7098765432096,\"h\":40,\"angle\":0,\"zindex\":70,\"x\":63}},\"155de4992de8fb\":{\"textBlock\":[{\"position\":{\"w\":\"w\",\"h\":\"h\",\"y\":0,\"x\":0},\"text\":\"读写分离\"}],\"lineStyle\":{},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":false,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{\"bold\":true,\"size\":20},\"dataAttributes\":[{\"id\":\"155de49960a75c\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"155de49960ab7b\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"155de49960a8cb\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"155de49960a8a6\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"155de49960a1a4\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"155de4992de8fb\",\"anchors\":[],\"category\":\"basic\",\"title\":\"文本\",\"name\":\"text\",\"fillStyle\":{},\"path\":[{\"lineStyle\":{\"lineWidth\":0},\"fillStyle\":{\"type\":\"none\"},\"actions\":[{\"action\":\"move\",\"y\":\"0\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"0\"},{\"action\":\"close\"}]}],\"locked\":false,\"group\":\"\",\"props\":{\"w\":135.82342954159594,\"angle\":0,\"h\":28.85245901639344,\"y\":979.3820314276365,\"x\":681.1779522510583,\"zindex\":62}},\"14b0a3aa7c2f3e\":{\"textBlock\":[{\"position\":{\"w\":\"w\",\"h\":\"h\",\"y\":0,\"x\":0},\"text\":\"软负载7层nginx，4层lvs\"}],\"lineStyle\":{},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":false,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{\"bold\":true,\"size\":20},\"dataAttributes\":[{\"id\":\"14b0a3aa88d1e8\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"14b0a3aa88dac6\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a3aa88defa\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a3aa88d48a\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"14b0a3aa88df32\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"14b0a3aa7c2f3e\",\"anchors\":[],\"category\":\"basic\",\"title\":\"文本\",\"name\":\"text\",\"fillStyle\":{},\"path\":[{\"lineStyle\":{\"lineWidth\":0},\"fillStyle\":{\"type\":\"none\"},\"actions\":[{\"action\":\"move\",\"y\":\"0\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"0\"},{\"action\":\"close\"}]}],\"locked\":false,\"group\":\"\",\"props\":{\"w\":263.22222222222223,\"angle\":0,\"h\":36.11111111111114,\"y\":455.44444444444446,\"x\":287.4016694963216,\"zindex\":10}},\"155de495432e8b\":{\"textBlock\":[{\"position\":{\"w\":\"w-20\",\"h\":\"h\",\"y\":0,\"x\":10},\"text\":\"\"}],\"lineStyle\":{\"lineColor\":\"153,255,255\"},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":true,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{},\"dataAttributes\":[{\"id\":\"155de4956c3b6a\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"155de4956c3ccf\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"155de4956c35e5\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"155de4956c38d2\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"155de4956c39e9\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"155de495432e8b\",\"anchors\":[{\"y\":\"0\",\"x\":\"w/2\"},{\"y\":\"h\",\"x\":\"w/2\"},{\"y\":\"h/2\",\"x\":\"0\"},{\"y\":\"h/2\",\"x\":\"w\"}],\"category\":\"basic\",\"title\":\"圆角矩形\",\"name\":\"roundRectangle\",\"fillStyle\":{\"color\":\"153,255,255\",\"type\":\"solid\"},\"path\":[{\"actions\":[{\"action\":\"move\",\"y\":\"4\",\"x\":\"0\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"0\",\"x\":\"4\",\"x1\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w-4\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"4\",\"x\":\"w\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h-4\",\"x\":\"w\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h\",\"x\":\"w-4\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"4\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h-4\",\"x\":\"0\",\"x1\":\"0\"},{\"action\":\"close\"}]}],\"locked\":false,\"group\":\"\",\"props\":{\"w\":116,\"angle\":0,\"h\":88.00000000000011,\"y\":952.013717421125,\"x\":687.0070111263527,\"zindex\":61}},\"14b0a5d59c035d\":{\"textBlock\":[{\"position\":{\"w\":\"w\",\"y\":0,\"h\":\"h\",\"x\":0},\"text\":\"硬件层\"}],\"lineStyle\":{},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":false,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{\"bold\":false,\"size\":15},\"dataAttributes\":[{\"id\":\"14b0a5d96163ef\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"14b0a5d96165ff\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a5d9616211\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a5d9616dc5\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"14b0a5d9616061\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"14b0a5d59c035d\",\"anchors\":[],\"title\":\"文本\",\"category\":\"basic\",\"name\":\"text\",\"path\":[{\"lineStyle\":{\"lineWidth\":0},\"fillStyle\":{\"type\":\"none\"},\"actions\":[{\"action\":\"move\",\"y\":\"0\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"0\"},{\"action\":\"close\"}]}],\"fillStyle\":{},\"locked\":false,\"group\":\"\",\"props\":{\"w\":160,\"y\":1092.8888888888896,\"h\":40,\"angle\":0,\"zindex\":41,\"x\":66.44002647727805}},\"155de39987581\":{\"id\":\"155de39987581\",\"to\":{\"id\":\"14b0a37e265e7e\",\"y\":615.0823719894753,\"angle\":3.141592653589793,\"x\":656.3276740237693},\"text\":\"\",\"linkerType\":\"broken\",\"name\":\"linker\",\"lineStyle\":{},\"points\":[{\"y\":615.0823719894753,\"x\":676.1638370118847},{\"y\":615.0823719894753,\"x\":676.1638370118847}],\"locked\":false,\"dataAttributes\":[],\"from\":{\"id\":\"14b0a37ec25377\",\"y\":615.0823719894753,\"angle\":0,\"x\":696.0000000000001},\"group\":\"\",\"props\":{\"zindex\":53}},\"14b0a348331073\":{\"textBlock\":[{\"position\":{\"w\":\"w-20\",\"y\":0,\"h\":\"h\",\"x\":10},\"text\":\"\"}],\"lineStyle\":{\"lineColor\":\"255,153,153\"},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":true,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{},\"dataAttributes\":[{\"id\":\"14b0a3483317e\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"14b0a348331d9f\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a348331285\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a3483314d8\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"14b0a348331851\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"14b0a348331073\",\"anchors\":[{\"y\":\"0\",\"x\":\"w/2\"},{\"y\":\"h\",\"x\":\"w/2\"},{\"y\":\"h/2\",\"x\":\"0\"},{\"y\":\"h/2\",\"x\":\"w\"}],\"title\":\"圆角矩形\",\"category\":\"basic\",\"name\":\"roundRectangle\",\"path\":[{\"actions\":[{\"action\":\"move\",\"y\":\"4\",\"x\":\"0\"},{\"y1\":\"0\",\"action\":\"quadraticCurve\",\"y\":\"0\",\"x1\":\"0\",\"x\":\"4\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w-4\"},{\"y1\":\"0\",\"action\":\"quadraticCurve\",\"y\":\"4\",\"x1\":\"w\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h-4\",\"x\":\"w\"},{\"y1\":\"h\",\"action\":\"quadraticCurve\",\"y\":\"h\",\"x1\":\"w\",\"x\":\"w-4\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"4\"},{\"y1\":\"h\",\"action\":\"quadraticCurve\",\"y\":\"h-4\",\"x1\":\"0\",\"x\":\"0\"},{\"action\":\"close\"}]}],\"fillStyle\":{\"color\":\"255,153,153\",\"type\":\"solid\"},\"locked\":false,\"group\":\"\",\"props\":{\"w\":500,\"y\":546.2098765432096,\"h\":111,\"angle\":0,\"zindex\":1,\"x\":303}},\"14b0a38678b86f\":{\"textBlock\":[{\"position\":{\"w\":\"w\",\"h\":\"h\",\"y\":0,\"x\":0},\"text\":\"业务系统\"}],\"lineStyle\":{},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":false,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{\"bold\":true,\"size\":20},\"dataAttributes\":[{\"id\":\"14b0a38678b813\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"14b0a38678b7dc\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a38678b826\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a38678ba34\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"14b0a38678b03e\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"14b0a38678b86f\",\"anchors\":[],\"category\":\"basic\",\"title\":\"文本\",\"name\":\"text\",\"fillStyle\":{},\"path\":[{\"lineStyle\":{\"lineWidth\":0},\"fillStyle\":{\"type\":\"none\"},\"actions\":[{\"action\":\"move\",\"y\":\"0\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"0\"},{\"action\":\"close\"}]}],\"locked\":false,\"group\":\"\",\"props\":{\"w\":135.82342954159594,\"angle\":0,\"h\":36.393442622950815,\"y\":550.0987654320986,\"x\":481.879456706282,\"zindex\":6}},\"1564fca6a2f58\":{\"textBlock\":[],\"lineStyle\":{\"lineColor\":\"136,136,136\",\"lineStyle\":\"dashed\",\"lineWidth\":1},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":false,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"l\",\"r\"],\"fontStyle\":{},\"dataAttributes\":[],\"shapeStyle\":{\"alpha\":1},\"id\":\"1564fca6a2f58\",\"anchors\":[],\"category\":\"ui\",\"title\":\"水平线\",\"name\":\"uiHLine\",\"fillStyle\":{},\"path\":[{\"fillStyle\":{\"type\":\"none\"},\"actions\":[{\"action\":\"move\",\"y\":\"lineWidth%2==0 ? Math.round(h/2) : h/2\",\"x\":0},{\"action\":\"line\",\"y\":\"lineWidth%2==0 ? Math.round(h/2) : h/2\",\"x\":\"w\"}]},{\"lineStyle\":{\"lineWidth\":0},\"fillStyle\":{\"type\":\"none\"},\"actions\":[{\"action\":\"move\",\"y\":\"0\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"0\"},{\"action\":\"close\"}]}],\"locked\":false,\"group\":\"\",\"props\":{\"w\":931,\"angle\":0,\"h\":21,\"y\":924.8785246188581,\"x\":63,\"zindex\":79}},\"14b0a5b96961d8\":{\"textBlock\":[],\"lineStyle\":{\"lineColor\":\"136,136,136\",\"lineStyle\":\"dashed\",\"lineWidth\":1},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":false,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"l\",\"r\"],\"fontStyle\":{},\"dataAttributes\":[],\"shapeStyle\":{\"alpha\":1},\"id\":\"14b0a5b96961d8\",\"anchors\":[],\"category\":\"ui\",\"title\":\"水平线\",\"name\":\"uiHLine\",\"fillStyle\":{},\"path\":[{\"fillStyle\":{\"type\":\"none\"},\"actions\":[{\"action\":\"move\",\"y\":\"lineWidth%2==0 ? Math.round(h/2) : h/2\",\"x\":0},{\"action\":\"line\",\"y\":\"lineWidth%2==0 ? Math.round(h/2) : h/2\",\"x\":\"w\"}]},{\"lineStyle\":{\"lineWidth\":0},\"fillStyle\":{\"type\":\"none\"},\"actions\":[{\"action\":\"move\",\"y\":\"0\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"0\"},{\"action\":\"close\"}]}],\"locked\":false,\"group\":\"\",\"props\":{\"w\":931,\"angle\":0,\"h\":21,\"y\":1041,\"x\":63,\"zindex\":-3}},\"155de45f6c225e\":{\"textBlock\":[{\"position\":{\"w\":\"w\",\"y\":0,\"h\":\"h\",\"x\":0},\"text\":\"tcp-haproxy\"}],\"lineStyle\":{},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":false,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{\"bold\":true,\"size\":15},\"dataAttributes\":[{\"id\":\"155de45f8331d2\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"155de45f833ce8\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"155de45f833ef3\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"155de45f833413\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"155de45f83323a\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"155de45f6c225e\",\"anchors\":[],\"title\":\"文本\",\"category\":\"basic\",\"name\":\"text\",\"path\":[{\"lineStyle\":{\"lineWidth\":0},\"fillStyle\":{\"type\":\"none\"},\"actions\":[{\"action\":\"move\",\"y\":\"0\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"0\"},{\"action\":\"close\"}]}],\"fillStyle\":{},\"locked\":false,\"group\":\"\",\"props\":{\"w\":160,\"y\":840.5009907044904,\"h\":40,\"angle\":1.5707963267948966,\"zindex\":56,\"x\":761.8323885130817}},\"14b0a37e17b76d\":{\"textBlock\":[{\"position\":{\"w\":\"w-20\",\"h\":\"h\",\"y\":0,\"x\":10},\"text\":\"用户系统\"}],\"lineStyle\":{\"lineColor\":\"255,204,204\"},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":true,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{\"size\":15},\"dataAttributes\":[{\"id\":\"14b0a37e26535e\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"14b0a37e265462\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a37e265ee2\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a37e265fd2\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"14b0a37e265c2f\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"14b0a37e17b76d\",\"anchors\":[{\"y\":\"0\",\"x\":\"w/2\"},{\"y\":\"h\",\"x\":\"w/2\"},{\"y\":\"h/2\",\"x\":\"0\"},{\"y\":\"h/2\",\"x\":\"w\"}],\"category\":\"basic\",\"title\":\"圆角矩形\",\"name\":\"roundRectangle\",\"fillStyle\":{\"color\":\"255,204,204\",\"type\":\"solid\"},\"path\":[{\"actions\":[{\"action\":\"move\",\"y\":\"4\",\"x\":\"0\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"0\",\"x\":\"4\",\"x1\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w-4\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"4\",\"x\":\"w\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h-4\",\"x\":\"w\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h\",\"x\":\"w-4\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"4\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h-4\",\"x\":\"0\",\"x1\":\"0\"},{\"action\":\"close\"}]}],\"locked\":false,\"group\":\"\",\"props\":{\"w\":84.88964346349745,\"angle\":0,\"h\":50.49180327868852,\"y\":589.8364703501311,\"x\":449.0101867572157,\"zindex\":3}},\"14b0a37b6c3e8a\":{\"textBlock\":[{\"position\":{\"w\":\"w-20\",\"h\":\"h\",\"y\":0,\"x\":10},\"text\":\"主站系统\"}],\"lineStyle\":{\"lineColor\":\"255,204,204\"},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":true,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{\"size\":15},\"dataAttributes\":[{\"id\":\"14b0a37b6c3732\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"14b0a37b6c320a\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a37b6c3cb9\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a37b6c3252\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"14b0a37b6c31e4\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"14b0a37b6c3e8a\",\"anchors\":[{\"y\":\"0\",\"x\":\"w/2\"},{\"y\":\"h\",\"x\":\"w/2\"},{\"y\":\"h/2\",\"x\":\"0\"},{\"y\":\"h/2\",\"x\":\"w\"}],\"category\":\"basic\",\"title\":\"圆角矩形\",\"name\":\"roundRectangle\",\"fillStyle\":{\"color\":\"255,204,204\",\"type\":\"solid\"},\"path\":[{\"actions\":[{\"action\":\"move\",\"y\":\"4\",\"x\":\"0\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"0\",\"x\":\"4\",\"x1\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w-4\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"4\",\"x\":\"w\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h-4\",\"x\":\"w\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h\",\"x\":\"w-4\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"4\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h-4\",\"x\":\"0\",\"x1\":\"0\"},{\"action\":\"close\"}]}],\"locked\":false,\"group\":\"\",\"props\":{\"w\":84.88964346349745,\"angle\":0,\"h\":50.49180327868852,\"y\":589.8364703501311,\"x\":326.7691001697794,\"zindex\":2}},\"14b0a9ce0343f3\":{\"textBlock\":[{\"position\":{\"w\":\"w*1.4\",\"y\":\"h*0.38\",\"h\":\"h*0.24\",\"x\":\"-w*0.2\"},\"text\":\"\"}],\"lineStyle\":{\"lineColor\":\"255,179,102\"},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":true,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{},\"dataAttributes\":[{\"id\":\"14b0a9ce0ff91a\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"14b0a9ce0ff492\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a9ce0ff18e\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a9ce0ff6c7\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"14b0a9ce0ff592\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"14b0a9ce0343f3\",\"anchors\":[{\"y\":\"0\",\"x\":\"w*0.5\"},{\"y\":\"h\",\"x\":\"w*0.5\"}],\"title\":\"上下箭头\",\"category\":\"basic\",\"name\":\"doubleVerticalArrow\",\"path\":[{\"actions\":[{\"action\":\"move\",\"y\":\"0\",\"x\":\"w*0.5\"},{\"action\":\"line\",\"y\":\"Math.min(w*0.5,h*0.45)\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"Math.min(w*0.5,h*0.45)\",\"x\":\"w*0.67\"},{\"action\":\"line\",\"y\":\"h-Math.min(w*0.5,h*0.45)\",\"x\":\"w*0.67\"},{\"action\":\"line\",\"y\":\"h-Math.min(w*0.5,h*0.45)\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"w*0.5\"},{\"action\":\"line\",\"y\":\"h-Math.min(w*0.5,h*0.45)\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"h-Math.min(w*0.5,h*0.45)\",\"x\":\"w*0.33\"},{\"action\":\"line\",\"y\":\"Math.min(w*0.5,h*0.45)\",\"x\":\"w*0.33\"},{\"action\":\"line\",\"y\":\"Math.min(w*0.5,h*0.45)\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w*0.5\"},{\"action\":\"close\"}]}],\"fillStyle\":{\"color\":\"255,179,102\",\"type\":\"solid\"},\"locked\":false,\"group\":\"\",\"props\":{\"w\":29,\"y\":540,\"h\":113.11111126124933,\"angle\":0,\"zindex\":43,\"x\":169}},\"1562bc6ba3451c\":{\"textBlock\":[{\"position\":{\"w\":\"w*1.4\",\"y\":\"h*0.38\",\"h\":\"h*0.24\",\"x\":\"-w*0.2\"},\"text\":\"\"}],\"lineStyle\":{\"lineColor\":\"153,255,153\"},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":true,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{},\"dataAttributes\":[{\"id\":\"1562bc6dfdd35d\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"1562bc6dfdd9bd\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"1562bc6dfdd82d\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"1562bc6dfdd0db\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"1562bc6dfdde5b\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"1562bc6ba3451c\",\"anchors\":[{\"y\":\"0\",\"x\":\"w*0.5\"},{\"y\":\"h\",\"x\":\"w*0.5\"}],\"title\":\"上下箭头\",\"category\":\"basic\",\"name\":\"doubleVerticalArrow\",\"path\":[{\"actions\":[{\"action\":\"move\",\"y\":\"0\",\"x\":\"w*0.5\"},{\"action\":\"line\",\"y\":\"Math.min(w*0.5,h*0.45)\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"Math.min(w*0.5,h*0.45)\",\"x\":\"w*0.67\"},{\"action\":\"line\",\"y\":\"h-Math.min(w*0.5,h*0.45)\",\"x\":\"w*0.67\"},{\"action\":\"line\",\"y\":\"h-Math.min(w*0.5,h*0.45)\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"w*0.5\"},{\"action\":\"line\",\"y\":\"h-Math.min(w*0.5,h*0.45)\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"h-Math.min(w*0.5,h*0.45)\",\"x\":\"w*0.33\"},{\"action\":\"line\",\"y\":\"Math.min(w*0.5,h*0.45)\",\"x\":\"w*0.33\"},{\"action\":\"line\",\"y\":\"Math.min(w*0.5,h*0.45)\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w*0.5\"},{\"action\":\"close\"}]}],\"fillStyle\":{\"color\":\"153,255,153\",\"type\":\"solid\"},\"locked\":false,\"group\":\"\",\"props\":{\"w\":29,\"y\":669.9615442975908,\"h\":110.03845570240924,\"angle\":0,\"zindex\":71,\"x\":169}},\"14b0a584a93e29\":{\"textBlock\":[{\"position\":{\"w\":\"w-20\",\"h\":\"h\",\"y\":0,\"x\":10},\"text\":\"\"}],\"lineStyle\":{\"lineColor\":\"153,255,153\",\"lineWidth\":2},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":true,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{},\"dataAttributes\":[{\"id\":\"14b0a584b5e547\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"14b0a584b5ed3a\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a584b5ee1\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a584b5e62d\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"14b0a584b5e083\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"14b0a584a93e29\",\"anchors\":[{\"y\":\"0\",\"x\":\"w/2\"},{\"y\":\"h\",\"x\":\"w/2\"},{\"y\":\"h/2\",\"x\":\"0\"},{\"y\":\"h/2\",\"x\":\"w\"}],\"category\":\"basic\",\"title\":\"圆角矩形\",\"name\":\"roundRectangle\",\"fillStyle\":{\"color\":\"153,255,153\",\"type\":\"solid\"},\"path\":[{\"actions\":[{\"action\":\"move\",\"y\":\"4\",\"x\":\"0\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"0\",\"x\":\"4\",\"x1\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w-4\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"4\",\"x\":\"w\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h-4\",\"x\":\"w\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h\",\"x\":\"w-4\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"4\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h-4\",\"x\":\"0\",\"x1\":\"0\"},{\"action\":\"close\"}]}],\"locked\":false,\"group\":\"\",\"props\":{\"w\":500,\"angle\":0,\"h\":111,\"y\":805.0009907044904,\"x\":303.0070111263527,\"zindex\":31}},\"1562bc6ba341e\":{\"textBlock\":[{\"position\":{\"w\":\"w-20\",\"h\":\"h\",\"y\":0,\"x\":10},\"text\":\"\"}],\"lineStyle\":{\"lineColor\":\"153,255,153\",\"lineWidth\":2},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":true,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{},\"dataAttributes\":[{\"id\":\"1562bc6dfdc64a\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"1562bc6dfdc4ce\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"1562bc6dfdc42\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"1562bc6dfdcee2\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"1562bc6dfdc456\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"1562bc6ba341e\",\"anchors\":[{\"y\":\"0\",\"x\":\"w/2\"},{\"y\":\"h\",\"x\":\"w/2\"},{\"y\":\"h/2\",\"x\":\"0\"},{\"y\":\"h/2\",\"x\":\"w\"}],\"category\":\"basic\",\"title\":\"圆角矩形\",\"name\":\"roundRectangle\",\"fillStyle\":{\"color\":\"153,255,153\",\"type\":\"solid\"},\"path\":[{\"actions\":[{\"action\":\"move\",\"y\":\"4\",\"x\":\"0\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"0\",\"x\":\"4\",\"x1\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w-4\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"4\",\"x\":\"w\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h-4\",\"x\":\"w\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h\",\"x\":\"w-4\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"4\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h-4\",\"x\":\"0\",\"x1\":\"0\"},{\"action\":\"close\"}]}],\"locked\":false,\"group\":\"\",\"props\":{\"w\":500,\"angle\":0,\"h\":111,\"y\":672.2098765432096,\"x\":303.0070111263527,\"zindex\":64}},\"1562bc6ba342aa\":{\"textBlock\":[{\"position\":{\"w\":\"w-20\",\"h\":\"h\",\"y\":0,\"x\":10},\"text\":\"pushy\"}],\"lineStyle\":{\"lineColor\":\"204,255,230\"},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":true,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{\"size\":15},\"dataAttributes\":[{\"id\":\"1562bc6dfdca4f\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"1562bc6dfdcc08\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"1562bc6dfdc998\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"1562bc6dfdc70e\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"1562bc6dfdc583\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"1562bc6ba342aa\",\"anchors\":[{\"y\":\"0\",\"x\":\"w/2\"},{\"y\":\"h\",\"x\":\"w/2\"},{\"y\":\"h/2\",\"x\":\"0\"},{\"y\":\"h/2\",\"x\":\"w\"}],\"category\":\"basic\",\"title\":\"圆角矩形\",\"name\":\"roundRectangle\",\"fillStyle\":{\"color\":\"204,255,204\",\"type\":\"solid\"},\"path\":[{\"actions\":[{\"action\":\"move\",\"y\":\"4\",\"x\":\"0\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"0\",\"x\":\"4\",\"x1\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w-4\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"4\",\"x\":\"w\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h-4\",\"x\":\"w\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h\",\"x\":\"w-4\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"4\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h-4\",\"x\":\"0\",\"x1\":\"0\"},{\"action\":\"close\"}]}],\"locked\":false,\"group\":\"\",\"props\":{\"w\":97.86323335219788,\"angle\":0,\"h\":50.491803278688394,\"y\":716.9475814612426,\"x\":568.8888888888889,\"zindex\":67}},\"14b0a584a93aaf\":{\"textBlock\":[{\"position\":{\"w\":\"w-20\",\"h\":\"h\",\"y\":0,\"x\":10},\"text\":\"zookeeper\"}],\"lineStyle\":{\"lineColor\":\"204,255,230\"},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":true,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{\"size\":15},\"dataAttributes\":[{\"id\":\"14b0a584b6e40c\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"14b0a584b6ee61\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a584b6e6bb\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a584b6e3e7\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"14b0a584b6e005\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"14b0a584a93aaf\",\"anchors\":[{\"y\":\"0\",\"x\":\"w/2\"},{\"y\":\"h\",\"x\":\"w/2\"},{\"y\":\"h/2\",\"x\":\"0\"},{\"y\":\"h/2\",\"x\":\"w\"}],\"category\":\"basic\",\"title\":\"圆角矩形\",\"name\":\"roundRectangle\",\"fillStyle\":{\"color\":\"204,255,204\",\"type\":\"solid\"},\"path\":[{\"actions\":[{\"action\":\"move\",\"y\":\"4\",\"x\":\"0\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"0\",\"x\":\"4\",\"x1\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w-4\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"4\",\"x\":\"w\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h-4\",\"x\":\"w\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h\",\"x\":\"w-4\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"4\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h-4\",\"x\":\"0\",\"x1\":\"0\"},{\"action\":\"close\"}]}],\"locked\":false,\"group\":\"\",\"props\":{\"w\":97.86323335219788,\"angle\":0,\"h\":50.491803278688394,\"y\":849.737704918033,\"x\":568.8888888888889,\"zindex\":34}},\"1562bc6ba3434\":{\"textBlock\":[{\"position\":{\"w\":\"w-20\",\"y\":0,\"h\":\"h\",\"x\":10},\"text\":\"......\"}],\"lineStyle\":{\"lineColor\":\"204,255,230\"},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":true,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{\"size\":15},\"dataAttributes\":[{\"id\":\"1562bc6dfdc7aa\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"1562bc6dfdc5fc\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"1562bc6dfdc572\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"1562bc6dfdce2e\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"1562bc6dfdcdfa\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"1562bc6ba3434\",\"anchors\":[{\"y\":\"0\",\"x\":\"w/2\"},{\"y\":\"h\",\"x\":\"w/2\"},{\"y\":\"h/2\",\"x\":\"0\"},{\"y\":\"h/2\",\"x\":\"w\"}],\"title\":\"圆角矩形\",\"category\":\"basic\",\"name\":\"roundRectangle\",\"path\":[{\"actions\":[{\"action\":\"move\",\"y\":\"4\",\"x\":\"0\"},{\"y1\":\"0\",\"action\":\"quadraticCurve\",\"y\":\"0\",\"x1\":\"0\",\"x\":\"4\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w-4\"},{\"y1\":\"0\",\"action\":\"quadraticCurve\",\"y\":\"4\",\"x1\":\"w\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h-4\",\"x\":\"w\"},{\"y1\":\"h\",\"action\":\"quadraticCurve\",\"y\":\"h\",\"x1\":\"w\",\"x\":\"w-4\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"4\"},{\"y1\":\"h\",\"action\":\"quadraticCurve\",\"y\":\"h-4\",\"x1\":\"0\",\"x\":\"0\"},{\"action\":\"close\"}]}],\"fillStyle\":{\"color\":\"204,255,204\",\"type\":\"solid\"},\"locked\":false,\"group\":\"\",\"props\":{\"w\":84.88964346349745,\"y\":716.9475814612425,\"h\":50.49180327868852,\"angle\":0,\"zindex\":68,\"x\":707.0747028862479}},\"155de480edb44\":{\"textBlock\":[{\"position\":{\"w\":\"w\",\"h\":\"h\",\"y\":0,\"x\":0},\"text\":\"横向扩增\"}],\"lineStyle\":{},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":false,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{\"bold\":true,\"size\":20},\"dataAttributes\":[{\"id\":\"155de480fec1c9\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"155de480fec67a\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"155de480fec114\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"155de480fecc7e\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"155de480fec53\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"155de480edb44\",\"anchors\":[],\"category\":\"basic\",\"title\":\"文本\",\"name\":\"text\",\"fillStyle\":{},\"path\":[{\"lineStyle\":{\"lineWidth\":0},\"fillStyle\":{\"type\":\"none\"},\"actions\":[{\"action\":\"move\",\"y\":\"0\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"0\"},{\"action\":\"close\"}]}],\"locked\":false,\"group\":\"\",\"props\":{\"w\":160,\"angle\":4.71238898038469,\"h\":40,\"y\":581.9952097989626,\"x\":169.01372006037604,\"zindex\":60}},\"14b0a5b044efeb\":{\"textBlock\":[],\"lineStyle\":{\"lineColor\":\"136,136,136\",\"lineStyle\":\"dashed\",\"lineWidth\":1},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":false,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"l\",\"r\"],\"fontStyle\":{},\"dataAttributes\":[],\"shapeStyle\":{\"alpha\":1},\"id\":\"14b0a5b044efeb\",\"anchors\":[],\"title\":\"水平线\",\"category\":\"ui\",\"name\":\"uiHLine\",\"path\":[{\"fillStyle\":{\"type\":\"none\"},\"actions\":[{\"action\":\"move\",\"y\":\"lineWidth%2==0 ? Math.round(h/2) : h/2\",\"x\":0},{\"action\":\"line\",\"y\":\"lineWidth%2==0 ? Math.round(h/2) : h/2\",\"x\":\"w\"}]},{\"lineStyle\":{\"lineWidth\":0},\"fillStyle\":{\"type\":\"none\"},\"actions\":[{\"action\":\"move\",\"y\":\"0\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"0\"},{\"action\":\"close\"}]}],\"fillStyle\":{},\"locked\":false,\"group\":\"\",\"props\":{\"w\":931,\"y\":527,\"h\":21,\"angle\":0,\"zindex\":0,\"x\":63}},\"14b0a5d4e0d048\":{\"textBlock\":[{\"position\":{\"w\":\"w\",\"y\":0,\"h\":\"h\",\"x\":0},\"text\":\"业务系统层\"}],\"lineStyle\":{},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":false,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{\"bold\":false,\"size\":15},\"dataAttributes\":[{\"id\":\"14b0a5d4eb892d\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"14b0a5d4eb8ea1\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a5d4eb86ad\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a5d4eb81e7\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"14b0a5d4eb8c29\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"14b0a5d4e0d048\",\"anchors\":[],\"title\":\"文本\",\"category\":\"basic\",\"name\":\"text\",\"path\":[{\"lineStyle\":{\"lineWidth\":0},\"fillStyle\":{\"type\":\"none\"},\"actions\":[{\"action\":\"move\",\"y\":\"0\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"0\"},{\"action\":\"close\"}]}],\"fillStyle\":{},\"locked\":false,\"group\":\"\",\"props\":{\"w\":160,\"y\":572,\"h\":40,\"angle\":0,\"zindex\":38,\"x\":52.888888888888886}},\"1562bccf45daf1\":{\"textBlock\":[{\"position\":{\"w\":\"w\",\"y\":0,\"h\":\"h\",\"x\":0},\"text\":\"硬负载F5\"}],\"lineStyle\":{},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":false,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{\"bold\":true,\"size\":20},\"dataAttributes\":[{\"id\":\"1562bccf689ee4\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"1562bccf68966f\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"1562bccf6896df\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"1562bccf6899ca\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"1562bccf6892aa\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"1562bccf45daf1\",\"anchors\":[],\"title\":\"文本\",\"category\":\"basic\",\"name\":\"text\",\"path\":[{\"lineStyle\":{\"lineWidth\":0},\"fillStyle\":{\"type\":\"none\"},\"actions\":[{\"action\":\"move\",\"y\":\"0\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"0\"},{\"action\":\"close\"}]}],\"fillStyle\":{},\"locked\":false,\"group\":\"\",\"props\":{\"w\":263.22222222222223,\"y\":455.44444444444446,\"h\":36.11111111111114,\"angle\":0,\"zindex\":78,\"x\":538.2343897377854}},\"14b0a3a623478b\":{\"textBlock\":[{\"position\":{\"w\":\"w-20\",\"h\":\"h\",\"y\":0,\"x\":10},\"text\":\"\"}],\"lineStyle\":{\"lineColor\":\"255,179,102\"},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":true,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{},\"dataAttributes\":[{\"id\":\"14b0a3a62df863\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"14b0a3a62df477\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a3a62dffb3\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a3a62dfa1c\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"14b0a3a62df79b\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"14b0a3a623478b\",\"anchors\":[{\"y\":\"0\",\"x\":\"w/2\"},{\"y\":\"h\",\"x\":\"w/2\"},{\"y\":\"h/2\",\"x\":\"0\"},{\"y\":\"h/2\",\"x\":\"w\"}],\"category\":\"basic\",\"title\":\"圆角矩形\",\"name\":\"roundRectangle\",\"fillStyle\":{\"color\":\"255,179,102\",\"type\":\"solid\"},\"path\":[{\"actions\":[{\"action\":\"move\",\"y\":\"4\",\"x\":\"0\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"0\",\"x\":\"4\",\"x1\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w-4\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"4\",\"x\":\"w\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h-4\",\"x\":\"w\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h\",\"x\":\"w-4\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"4\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h-4\",\"x\":\"0\",\"x1\":\"0\"},{\"action\":\"close\"}]}],\"locked\":false,\"group\":\"\",\"props\":{\"w\":238.4432182607054,\"angle\":0,\"h\":88,\"y\":429.5,\"x\":299.79117147707996,\"zindex\":8}},\"14b0a9d5d7eaa\":{\"textBlock\":[{\"position\":{\"w\":\"w*1.4\",\"y\":\"h*0.38\",\"h\":\"h*0.24\",\"x\":\"-w*0.2\"},\"text\":\"\"}],\"lineStyle\":{\"lineColor\":\"153,255,255\"},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":true,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{},\"dataAttributes\":[{\"id\":\"14b0a9d5e587d6\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"14b0a9d5e5840d\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a9d5e58692\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a9d5e58b69\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"14b0a9d5e584ed\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"14b0a9d5d7eaa\",\"anchors\":[{\"y\":\"0\",\"x\":\"w*0.5\"},{\"y\":\"h\",\"x\":\"w*0.5\"}],\"title\":\"上下箭头\",\"category\":\"basic\",\"name\":\"doubleVerticalArrow\",\"path\":[{\"actions\":[{\"action\":\"move\",\"y\":\"0\",\"x\":\"w*0.5\"},{\"action\":\"line\",\"y\":\"Math.min(w*0.5,h*0.45)\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"Math.min(w*0.5,h*0.45)\",\"x\":\"w*0.67\"},{\"action\":\"line\",\"y\":\"h-Math.min(w*0.5,h*0.45)\",\"x\":\"w*0.67\"},{\"action\":\"line\",\"y\":\"h-Math.min(w*0.5,h*0.45)\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"w*0.5\"},{\"action\":\"line\",\"y\":\"h-Math.min(w*0.5,h*0.45)\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"h-Math.min(w*0.5,h*0.45)\",\"x\":\"w*0.33\"},{\"action\":\"line\",\"y\":\"Math.min(w*0.5,h*0.45)\",\"x\":\"w*0.33\"},{\"action\":\"line\",\"y\":\"Math.min(w*0.5,h*0.45)\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w*0.5\"},{\"action\":\"close\"}]}],\"fillStyle\":{\"color\":\"153,255,255\",\"type\":\"solid\"},\"locked\":false,\"group\":\"\",\"props\":{\"w\":29,\"y\":944,\"h\":104.00000000000011,\"angle\":0,\"zindex\":45,\"x\":169}},\"155de47576368f\":{\"textBlock\":[{\"position\":{\"w\":\"w-20\",\"y\":0,\"h\":\"h\",\"x\":10},\"text\":\"\"}],\"lineStyle\":{\"lineColor\":\"51,153,255\"},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":true,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{},\"dataAttributes\":[{\"id\":\"155de475a5bd34\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"155de475a5bdf7\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"155de475a5bdc6\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"155de475a5b9d\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"155de475a5b128\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"155de47576368f\",\"anchors\":[{\"y\":\"0\",\"x\":\"w/2\"},{\"y\":\"h\",\"x\":\"w/2\"},{\"y\":\"h/2\",\"x\":\"0\"},{\"y\":\"h/2\",\"x\":\"w\"}],\"title\":\"圆角矩形\",\"category\":\"basic\",\"name\":\"roundRectangle\",\"path\":[{\"actions\":[{\"action\":\"move\",\"y\":\"4\",\"x\":\"0\"},{\"y1\":\"0\",\"action\":\"quadraticCurve\",\"y\":\"0\",\"x1\":\"0\",\"x\":\"4\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w-4\"},{\"y1\":\"0\",\"action\":\"quadraticCurve\",\"y\":\"4\",\"x1\":\"w\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h-4\",\"x\":\"w\"},{\"y1\":\"h\",\"action\":\"quadraticCurve\",\"y\":\"h\",\"x1\":\"w\",\"x\":\"w-4\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"4\"},{\"y1\":\"h\",\"action\":\"quadraticCurve\",\"y\":\"h-4\",\"x1\":\"0\",\"x\":\"0\"},{\"action\":\"close\"}]}],\"fillStyle\":{\"color\":\"255,255,255\",\"type\":\"solid\"},\"locked\":false,\"group\":\"\",\"props\":{\"w\":51.807957619401975,\"y\":550.8888860362604,\"h\":102.22222522498896,\"angle\":0,\"zindex\":59,\"x\":223.09602382955023}},\"14b0a3a210003d\":{\"textBlock\":[{\"position\":{\"w\":\"w-20\",\"h\":\"h\",\"y\":0,\"x\":10},\"text\":\"\"}],\"lineStyle\":{\"lineColor\":\"255,153,51\"},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":true,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{},\"dataAttributes\":[{\"id\":\"14b0a3a21f9586\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"14b0a3a21f9075\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a3a21f9f07\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a3a21f936f\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"14b0a3a21f96e7\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"14b0a3a210003d\",\"anchors\":[{\"y\":\"0\",\"x\":\"w/2\"},{\"y\":\"h\",\"x\":\"w/2\"},{\"y\":\"h/2\",\"x\":\"0\"},{\"y\":\"h/2\",\"x\":\"w\"}],\"category\":\"basic\",\"title\":\"圆角矩形\",\"name\":\"roundRectangle\",\"fillStyle\":{\"color\":\"255,255,255\",\"type\":\"solid\"},\"path\":[{\"actions\":[{\"action\":\"move\",\"y\":\"4\",\"x\":\"0\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"0\",\"x\":\"4\",\"x1\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w-4\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"4\",\"x\":\"w\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h-4\",\"x\":\"w\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h\",\"x\":\"w-4\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"4\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h-4\",\"x\":\"0\",\"x1\":\"0\"},{\"action\":\"close\"}]}],\"locked\":false,\"group\":\"\",\"props\":{\"w\":49.66666666666663,\"angle\":0,\"h\":111,\"y\":547.4444444444442,\"x\":819.2222222222224,\"zindex\":7}},\"155de393bda1c1\":{\"id\":\"155de393bda1c1\",\"to\":{\"id\":\"14b0a37e17b76d\",\"y\":615.0823719894753,\"angle\":3.141592653589793,\"x\":533.8998302207132},\"text\":\"\",\"linkerType\":\"broken\",\"name\":\"linker\",\"lineStyle\":{},\"points\":[{\"y\":615.0823719894753,\"x\":552.6689303904925},{\"y\":615.0823719894753,\"x\":552.6689303904925}],\"locked\":false,\"dataAttributes\":[],\"from\":{\"id\":\"14b0a37e265e7e\",\"y\":615.0823719894753,\"angle\":0,\"x\":571.4380305602718},\"group\":\"\",\"props\":{\"zindex\":48}},\"1562bccbf7b586\":{\"textBlock\":[{\"position\":{\"w\":\"w-20\",\"y\":0,\"h\":\"h\",\"x\":10},\"text\":\"\"}],\"lineStyle\":{\"lineColor\":\"255,179,102\"},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":true,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{},\"dataAttributes\":[{\"id\":\"1562bccc24d038\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"1562bccc24d9f4\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"1562bccc24d517\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"1562bccc24d312\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"1562bccc24d263\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"1562bccbf7b586\",\"anchors\":[{\"y\":\"0\",\"x\":\"w/2\"},{\"y\":\"h\",\"x\":\"w/2\"},{\"y\":\"h/2\",\"x\":\"0\"},{\"y\":\"h/2\",\"x\":\"w\"}],\"title\":\"圆角矩形\",\"category\":\"basic\",\"name\":\"roundRectangle\",\"path\":[{\"actions\":[{\"action\":\"move\",\"y\":\"4\",\"x\":\"0\"},{\"y1\":\"0\",\"action\":\"quadraticCurve\",\"y\":\"0\",\"x1\":\"0\",\"x\":\"4\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w-4\"},{\"y1\":\"0\",\"action\":\"quadraticCurve\",\"y\":\"4\",\"x1\":\"w\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h-4\",\"x\":\"w\"},{\"y1\":\"h\",\"action\":\"quadraticCurve\",\"y\":\"h\",\"x1\":\"w\",\"x\":\"w-4\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"4\"},{\"y1\":\"h\",\"action\":\"quadraticCurve\",\"y\":\"h-4\",\"x1\":\"0\",\"x\":\"0\"},{\"action\":\"close\"}]}],\"fillStyle\":{\"color\":\"255,179,102\",\"type\":\"solid\"},\"locked\":false,\"group\":\"\",\"props\":{\"w\":249.45661196000765,\"y\":429.5,\"h\":88,\"angle\":0,\"zindex\":77,\"x\":552}},\"1562bc86c97986\":{\"textBlock\":[{\"position\":{\"w\":\"w-20\",\"y\":0,\"h\":\"h\",\"x\":10},\"text\":\"sms\"}],\"lineStyle\":{\"lineColor\":\"204,255,230\"},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":true,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{\"size\":15},\"dataAttributes\":[{\"id\":\"1562bc870de709\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"1562bc870de057\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"1562bc870ded98\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"1562bc870de4f8\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"1562bc870de117\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"1562bc86c97986\",\"anchors\":[{\"y\":\"0\",\"x\":\"w/2\"},{\"y\":\"h\",\"x\":\"w/2\"},{\"y\":\"h/2\",\"x\":\"0\"},{\"y\":\"h/2\",\"x\":\"w\"}],\"title\":\"圆角矩形\",\"category\":\"basic\",\"name\":\"roundRectangle\",\"path\":[{\"actions\":[{\"action\":\"move\",\"y\":\"4\",\"x\":\"0\"},{\"y1\":\"0\",\"action\":\"quadraticCurve\",\"y\":\"0\",\"x1\":\"0\",\"x\":\"4\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w-4\"},{\"y1\":\"0\",\"action\":\"quadraticCurve\",\"y\":\"4\",\"x1\":\"w\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h-4\",\"x\":\"w\"},{\"y1\":\"h\",\"action\":\"quadraticCurve\",\"y\":\"h\",\"x1\":\"w\",\"x\":\"w-4\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"4\"},{\"y1\":\"h\",\"action\":\"quadraticCurve\",\"y\":\"h-4\",\"x1\":\"0\",\"x\":\"0\"},{\"action\":\"close\"}]}],\"fillStyle\":{\"color\":\"204,255,204\",\"type\":\"solid\"},\"locked\":false,\"group\":\"\",\"props\":{\"w\":84.88964346349745,\"y\":716.9475814612426,\"h\":50.49180327868852,\"angle\":0,\"zindex\":74,\"x\":329.01372006037604}},\"14b0a9c6c223ae\":{\"textBlock\":[{\"position\":{\"w\":\"w*1.4\",\"h\":\"h*0.24\",\"y\":\"h*0.38\",\"x\":\"-w*0.2\"},\"text\":\"\"}],\"lineStyle\":{\"lineColor\":\"255,153,153\"},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":true,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{},\"dataAttributes\":[{\"id\":\"14b0a9c6c222c3\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"14b0a9c6c22e91\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a9c6c221d4\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a9c6c22347\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"14b0a9c6c22207\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"14b0a9c6c223ae\",\"anchors\":[{\"y\":\"0\",\"x\":\"w*0.5\"},{\"y\":\"h\",\"x\":\"w*0.5\"}],\"category\":\"basic\",\"title\":\"上下箭头\",\"name\":\"doubleVerticalArrow\",\"fillStyle\":{\"color\":\"255,153,153\",\"type\":\"solid\"},\"path\":[{\"actions\":[{\"action\":\"move\",\"y\":\"0\",\"x\":\"w*0.5\"},{\"action\":\"line\",\"y\":\"Math.min(w*0.5,h*0.45)\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"Math.min(w*0.5,h*0.45)\",\"x\":\"w*0.67\"},{\"action\":\"line\",\"y\":\"h-Math.min(w*0.5,h*0.45)\",\"x\":\"w*0.67\"},{\"action\":\"line\",\"y\":\"h-Math.min(w*0.5,h*0.45)\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"w*0.5\"},{\"action\":\"line\",\"y\":\"h-Math.min(w*0.5,h*0.45)\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"h-Math.min(w*0.5,h*0.45)\",\"x\":\"w*0.33\"},{\"action\":\"line\",\"y\":\"Math.min(w*0.5,h*0.45)\",\"x\":\"w*0.33\"},{\"action\":\"line\",\"y\":\"Math.min(w*0.5,h*0.45)\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w*0.5\"},{\"action\":\"close\"}]}],\"locked\":false,\"group\":\"\",\"props\":{\"w\":29,\"angle\":0,\"h\":121,\"y\":413,\"x\":169,\"zindex\":42}},\"155de39ef02b85\":{\"textBlock\":[{\"position\":{\"w\":\"w\",\"y\":0,\"h\":\"h\",\"x\":0},\"text\":\"RCP内部调用\"}],\"lineStyle\":{},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":false,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{\"bold\":true,\"size\":15},\"dataAttributes\":[{\"id\":\"155de39f6f8bad\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"155de39f6f83f9\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"155de39f6f8b0b\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"155de39f6f84b1\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"155de39f6f807d\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"155de39ef02b85\",\"anchors\":[],\"title\":\"文本\",\"category\":\"basic\",\"name\":\"text\",\"path\":[{\"lineStyle\":{\"lineWidth\":0},\"fillStyle\":{\"type\":\"none\"},\"actions\":[{\"action\":\"move\",\"y\":\"0\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"0\"},{\"action\":\"close\"}]}],\"fillStyle\":{},\"locked\":false,\"group\":\"\",\"props\":{\"w\":160,\"y\":581.9999986487549,\"h\":40,\"angle\":1.5707963267948966,\"zindex\":54,\"x\":761.5857828662754}},\"14b0a5d5905132\":{\"textBlock\":[{\"position\":{\"w\":\"w\",\"y\":0,\"h\":\"h\",\"x\":0},\"text\":\"组件层\"}],\"lineStyle\":{},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":false,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{\"bold\":false,\"size\":15},\"dataAttributes\":[{\"id\":\"14b0a5d59c0a0c\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"14b0a5d59c02b\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a5d59c01ea\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a5d59c024d\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"14b0a5d59c02e7\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"14b0a5d5905132\",\"anchors\":[],\"title\":\"文本\",\"category\":\"basic\",\"name\":\"text\",\"path\":[{\"lineStyle\":{\"lineWidth\":0},\"fillStyle\":{\"type\":\"none\"},\"actions\":[{\"action\":\"move\",\"y\":\"0\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"0\"},{\"action\":\"close\"}]}],\"fillStyle\":{},\"locked\":false,\"group\":\"\",\"props\":{\"w\":160,\"y\":840.5,\"h\":40,\"angle\":0,\"zindex\":40,\"x\":63}},\"14b0a5d4ec802e\":{\"textBlock\":[{\"position\":{\"w\":\"w\",\"h\":\"h\",\"y\":0,\"x\":0},\"text\":\"数据层\"}],\"lineStyle\":{},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":false,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{\"bold\":false,\"size\":15},\"dataAttributes\":[{\"id\":\"14b0a5d59050dc\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"14b0a5d5905ca5\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a5d5905e12\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a5d590540a\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"14b0a5d590510f\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"14b0a5d4ec802e\",\"anchors\":[],\"category\":\"basic\",\"title\":\"文本\",\"name\":\"text\",\"fillStyle\":{},\"path\":[{\"lineStyle\":{\"lineWidth\":0},\"fillStyle\":{\"type\":\"none\"},\"actions\":[{\"action\":\"move\",\"y\":\"0\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"0\"},{\"action\":\"close\"}]}],\"locked\":false,\"group\":\"\",\"props\":{\"w\":160,\"angle\":0,\"h\":40,\"y\":981.5737704918033,\"x\":63,\"zindex\":39}},\"14b0a37e265e7e\":{\"textBlock\":[{\"position\":{\"w\":\"w-20\",\"h\":\"h\",\"y\":0,\"x\":10},\"text\":\"搜索系统\"}],\"lineStyle\":{\"lineColor\":\"255,204,204\"},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":true,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{\"size\":15},\"dataAttributes\":[{\"id\":\"14b0a37ec15a87\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"14b0a37ec1549e\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a37ec15844\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a37ec15b84\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"14b0a37ec150bf\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"14b0a37e265e7e\",\"anchors\":[{\"y\":\"0\",\"x\":\"w/2\"},{\"y\":\"h\",\"x\":\"w/2\"},{\"y\":\"h/2\",\"x\":\"0\"},{\"y\":\"h/2\",\"x\":\"w\"}],\"category\":\"basic\",\"title\":\"圆角矩形\",\"name\":\"roundRectangle\",\"fillStyle\":{\"color\":\"255,204,204\",\"type\":\"solid\"},\"path\":[{\"actions\":[{\"action\":\"move\",\"y\":\"4\",\"x\":\"0\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"0\",\"x\":\"4\",\"x1\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w-4\"},{\"action\":\"quadraticCurve\",\"y1\":\"0\",\"y\":\"4\",\"x\":\"w\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h-4\",\"x\":\"w\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h\",\"x\":\"w-4\",\"x1\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"4\"},{\"action\":\"quadraticCurve\",\"y1\":\"h\",\"y\":\"h-4\",\"x\":\"0\",\"x1\":\"0\"},{\"action\":\"close\"}]}],\"locked\":false,\"group\":\"\",\"props\":{\"w\":84.88964346349745,\"angle\":0,\"h\":50.49180327868852,\"y\":589.8364703501311,\"x\":571.4380305602718,\"zindex\":4}},\"14b0a5cecdb5c8\":{\"textBlock\":[{\"position\":{\"w\":\"w\",\"y\":0,\"h\":\"h\",\"x\":0},\"text\":\"应用层\"}],\"lineStyle\":{},\"link\":\"\",\"parent\":\"\",\"attribute\":{\"linkable\":false,\"visible\":true,\"container\":false,\"rotatable\":true,\"markerOffset\":5,\"collapsable\":false,\"collapsed\":false},\"children\":[],\"resizeDir\":[\"tl\",\"tr\",\"br\",\"bl\"],\"fontStyle\":{\"bold\":false,\"size\":15},\"dataAttributes\":[{\"id\":\"14b0a5cecdbed4\",\"category\":\"default\",\"name\":\"序号\",\"value\":\"\",\"type\":\"number\"},{\"id\":\"14b0a5cecdb3ac\",\"category\":\"default\",\"name\":\"名称\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a5cecdba13\",\"category\":\"default\",\"name\":\"所有者\",\"value\":\"\",\"type\":\"string\"},{\"id\":\"14b0a5cecdb6a5\",\"category\":\"default\",\"name\":\"连接\",\"value\":\"\",\"type\":\"link\"},{\"id\":\"14b0a5cecdbe86\",\"category\":\"default\",\"name\":\"便笺\",\"value\":\"\",\"type\":\"string\"}],\"shapeStyle\":{\"alpha\":1},\"id\":\"14b0a5cecdb5c8\",\"anchors\":[],\"title\":\"文本\",\"category\":\"basic\",\"name\":\"text\",\"path\":[{\"lineStyle\":{\"lineWidth\":0},\"fillStyle\":{\"type\":\"none\"},\"actions\":[{\"action\":\"move\",\"y\":\"0\",\"x\":\"0\"},{\"action\":\"line\",\"y\":\"0\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"w\"},{\"action\":\"line\",\"y\":\"h\",\"x\":\"0\"},{\"action\":\"close\"}]}],\"fillStyle\":{},\"locked\":false,\"group\":\"\",\"props\":{\"w\":160,\"y\":458.2295081967213,\"h\":40,\"angle\":0,\"zindex\":37,\"x\":64}}}}},\"meta\":{\"id\":\"5acb19b8e4b00dc8a037046c\",\"member\":\"57dcb1fae4b0ba3ecb1939e8\",\"exportTime\":\"2018-04-09 15:44:37\",\"diagramInfo\":{\"category\":\"uncategorized\",\"title\":\"架构图\",\"created\":\"2018-04-09 15:43:52\",\"creator\":\"57dcb1fae4b0ba3ecb1939e8\",\"modified\":\"2018-04-09 15:43:52\"},\"type\":\"ProcessOn Schema File\",\"version\":\"1.0\"}}"
  },
  {
    "path": "docs/电商平台设计.mdl",
    "content": "\r\n(object Petal\r\n    version    \t50\r\n    _written   \t\"Rose 8.2.0310.2800\"\r\n    charSet    \t134)\r\n\r\n(object Design \"Logical View\"\r\n    is_unit    \tTRUE\r\n    is_loaded  \tTRUE\r\n    attributes \t(list Attribute_Set\r\n\t(object Attribute\r\n\t    tool       \t\"Java\"\r\n\t    name       \t\"IDE\"\r\n\t    value      \t\"Internal Editor\")\r\n\t(object Attribute\r\n\t    tool       \t\"Java\"\r\n\t    name       \t\"UserDefineTagName1\"\r\n\t    value      \t\"\")\r\n\t(object Attribute\r\n\t    tool       \t\"Java\"\r\n\t    name       \t\"UserDefineTagText1\"\r\n\t    value      \t\"\")\r\n\t(object Attribute\r\n\t    tool       \t\"Java\"\r\n\t    name       \t\"UserDefineTagApply1\"\r\n\t    value      \t\"\")\r\n\t(object Attribute\r\n\t    tool       \t\"Java\"\r\n\t    name       \t\"UserDefineTagName2\"\r\n\t    value      \t\"\")\r\n\t(object Attribute\r\n\t    tool       \t\"Java\"\r\n\t    name       \t\"UserDefineTagText2\"\r\n\t    value      \t\"\")\r\n\t(object Attribute\r\n\t    tool       \t\"Java\"\r\n\t    name       \t\"UserDefineTagApply2\"\r\n\t    value      \t\"\")\r\n\t(object Attribute\r\n\t    tool       \t\"Java\"\r\n\t    name       \t\"UserDefineTagName3\"\r\n\t    value      \t\"\")\r\n\t(object Attribute\r\n\t    tool       \t\"Java\"\r\n\t    name       \t\"UserDefineTagText3\"\r\n\t    value      \t\"\")\r\n\t(object Attribute\r\n\t    tool       \t\"Java\"\r\n\t    name       \t\"UserDefineTagApply3\"\r\n\t    value      \t\"\")\r\n\t(object Attribute\r\n\t    tool       \t\"Data Modeler\"\r\n\t    name       \t\"DatabaseCounter\"\r\n\t    value      \t\"1\")\r\n\t(object Attribute\r\n\t    tool       \t\"Data Modeler\"\r\n\t    name       \t\"DomainPackageCounter\"\r\n\t    value      \t\"0\")\r\n\t(object Attribute\r\n\t    tool       \t\"Data Modeler\"\r\n\t    name       \t\"SchemaCounter\"\r\n\t    value      \t\"1\")\r\n\t(object Attribute\r\n\t    tool       \t\"Data Modeler\"\r\n\t    name       \t\"DomainCounter\"\r\n\t    value      \t0)\r\n\t(object Attribute\r\n\t    tool       \t\"Data Modeler\"\r\n\t    name       \t\"TableCounter\"\r\n\t    value      \t11)\r\n\t(object Attribute\r\n\t    tool       \t\"Data Modeler\"\r\n\t    name       \t\"ViewCounter\"\r\n\t    value      \t0)\r\n\t(object Attribute\r\n\t    tool       \t\"Data Modeler\"\r\n\t    name       \t\"JoinCounter\"\r\n\t    value      \t0)\r\n\t(object Attribute\r\n\t    tool       \t\"Data Modeler\"\r\n\t    name       \t\"ColumnCounter\"\r\n\t    value      \t\"23\")\r\n\t(object Attribute\r\n\t    tool       \t\"Data Modeler\"\r\n\t    name       \t\"TriggerCounter\"\r\n\t    value      \t0)\r\n\t(object Attribute\r\n\t    tool       \t\"Data Modeler\"\r\n\t    name       \t\"IndexCounter\"\r\n\t    value      \t0)\r\n\t(object Attribute\r\n\t    tool       \t\"Data Modeler\"\r\n\t    name       \t\"ConstraintCounter\"\r\n\t    value      \t49)\r\n\t(object Attribute\r\n\t    tool       \t\"Data Modeler\"\r\n\t    name       \t\"PrimaryKeyCounter\"\r\n\t    value      \t0)\r\n\t(object Attribute\r\n\t    tool       \t\"Data Modeler\"\r\n\t    name       \t\"ForeignKeyCounter\"\r\n\t    value      \t0)\r\n\t(object Attribute\r\n\t    tool       \t\"Data Modeler\"\r\n\t    name       \t\"StoredProcedurePackageCounter\"\r\n\t    value      \t\"0\")\r\n\t(object Attribute\r\n\t    tool       \t\"Data Modeler\"\r\n\t    name       \t\"StoredProcedureCounter\"\r\n\t    value      \t\"0\")\r\n\t(object Attribute\r\n\t    tool       \t\"Data Modeler\"\r\n\t    name       \t\"StoredProcedureParameterCounter\"\r\n\t    value      \t\"0\"))\r\n    quid       \t\"39C9260C00D4\"\r\n    enforceClosureAutoLoad \tFALSE\r\n    defaults   \t(object defaults\r\n\trightMargin \t0.250000\r\n\tleftMargin \t0.250000\r\n\ttopMargin  \t0.250000\r\n\tbottomMargin \t0.500000\r\n\tpageOverlap \t0.250000\r\n\tclipIconLabels \tTRUE\r\n\tautoResize \tTRUE\r\n\tsnapToGrid \tTRUE\r\n\tgridX      \t16\r\n\tgridY      \t16\r\n\tdefaultFont \t(object Font\r\n\t    size       \t10\r\n\t    face       \t\"Arial\"\r\n\t    bold       \tFALSE\r\n\t    italics    \tFALSE\r\n\t    underline  \tFALSE\r\n\t    strike     \tFALSE\r\n\t    color      \t0\r\n\t    default_color \tTRUE)\r\n\tshowMessageNum \t1\r\n\tshowClassOfObject \tTRUE\r\n\tnotation   \t\"Unified\")\r\n    root_usecase_package \t(object Class_Category \"Use Case View\"\r\n\tquid       \t\"39C9260C00D6\"\r\n\texportControl \t\"Public\"\r\n\tglobal     \tTRUE\r\n\tlogical_models \t(list unit_reference_list)\r\n\tlogical_presentations \t(list unit_reference_list\r\n\t    (object UseCaseDiagram \"Main\"\r\n\t\tquid       \t\"39C9261001B7\"\r\n\t\ttitle      \t\"Main\"\r\n\t\tzoom       \t100\r\n\t\tmax_height \t28350\r\n\t\tmax_width  \t21600\r\n\t\torigin_x   \t0\r\n\t\torigin_y   \t0\r\n\t\titems      \t(list diagram_item_list))))\r\n    root_category \t(object Class_Category \"Logical View\"\r\n\tquid       \t\"39C9260C00D5\"\r\n\texportControl \t\"Public\"\r\n\tglobal     \tTRUE\r\n\tsubsystem  \t\"Component View\"\r\n\tquidu      \t\"39C9260C00D7\"\r\n\tlogical_models \t(list unit_reference_list\r\n\t    (object Class_Category \"javax\"\r\n\t\tis_unit    \tTRUE\r\n\t\tis_loaded  \tFALSE\r\n\t\tfile_name  \t\"$FRAMEWORK_PATH\\\\Shared Components\\\\j2ee_javax.cat\"\r\n\t\tquid       \t\"39C926610018\")\r\n\t    (object Class_Category \"java\"\r\n\t\tis_unit    \tTRUE\r\n\t\tis_loaded  \tFALSE\r\n\t\tfile_name  \t\"$FRAMEWORK_PATH\\\\Shared Components\\\\j2se_1_3_java.cat\"\r\n\t\tquid       \t\"39C92661003B\")\r\n\t    (object Class_Category \"org\"\r\n\t\tis_unit    \tTRUE\r\n\t\tis_loaded  \tFALSE\r\n\t\tfile_name  \t\"$FRAMEWORK_PATH\\\\Shared Components\\\\j2se_1_3_org.cat\"\r\n\t\tquid       \t\"39C92693036F\")\r\n\t    (object Class_Category \"Global Data Types\"\r\n\t\tattributes \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"dmItem\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsRootDomainPackage\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"dmDomainPackage\"\r\n\t\t\tvalue      \t\"Data Modeler\"))\r\n\t\tquid       \t\"5B1AA85A03AD\"\r\n\t\texportControl \t\"Public\"\r\n\t\tlogical_models \t(list unit_reference_list)\r\n\t\tlogical_presentations \t(list unit_reference_list))\r\n\t    (object Class_Category \"Schemas\"\r\n\t\tattributes \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"dmItem\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsRootSchema\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"dmSchema\"\r\n\t\t\tvalue      \t\"Data Modeler\"))\r\n\t\tquid       \t\"5B1AA85A03B2\"\r\n\t\texportControl \t\"Public\"\r\n\t\tlogical_models \t(list unit_reference_list\r\n\t\t    (object Class_Category \"S_0\"\r\n\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\tvalue      \tTRUE)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"IsSchema\"\r\n\t\t\t\tvalue      \tTRUE)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"dmSchema\"\r\n\t\t\t\tvalue      \t\"Data Modeler\")\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\tvalue      \t\"S_0\")\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\tvalue      \t\"\"))\r\n\t\t\tquid       \t\"5B1AA8CD02FA\"\r\n\t\t\tstereotype \t\"Schema\"\r\n\t\t\texportControl \t\"Public\"\r\n\t\t\tlogical_models \t(list unit_reference_list\r\n\t\t\t    (object Class \"SPU\"\r\n\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"IsTable\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\tvalue      \t\"SPU\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\tvalue      \t\"item_spu\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"TableSpaceID\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"HasLikeStatemenet\"\r\n\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeTableName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeIncludeIdentity\"\r\n\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeColumnAttr\"\r\n\t\t\t\t\tvalue      \t\"False\"))\r\n\t\t\t\tquid       \t\"5B1AA9510260\"\r\n\t\t\t\tstereotype \t\"Table\"\r\n\t\t\t\tclass_attributes \t(list class_attribute_list\r\n\t\t\t\t    (object ClassAttribute \"id\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ExplicitNullable\"\r\n\t\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\t\tvalue      \t\"id\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Ordinal\"\r\n\t\t\t\t\t\tvalue      \t1)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Length\"\r\n\t\t\t\t\t\tvalue      \t10)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"NullsAllowed\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"IsIdentity\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ForBitData\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ColumnType\"\r\n\t\t\t\t\t\tvalue      \t\"Native\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\t\t\t\tvalue      \t\"No Default Value\"))\r\n\t\t\t\t\tquid       \t\"5B1AACB2038A\"\r\n\t\t\t\t\ttype       \t\"VARCHAR(10)\"\r\n\t\t\t\t\texportControl \t\"Neither\")\r\n\t\t\t\t    (object ClassAttribute \"Ʒ\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\t\tvalue      \t\"Ʒ\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Ordinal\"\r\n\t\t\t\t\t\tvalue      \t2)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Length\"\r\n\t\t\t\t\t\tvalue      \t30)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"NullsAllowed\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"IsIdentity\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ForBitData\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ExplicitNullable\"\r\n\t\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ColumnType\"\r\n\t\t\t\t\t\tvalue      \t\"Native\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\t\t\t\tvalue      \t\"No Default Value\"))\r\n\t\t\t\t\tquid       \t\"5B1AACB203AD\"\r\n\t\t\t\t\ttype       \t\"VARCHAR(30)\"\r\n\t\t\t\t\texportControl \t\"Neither\")\r\n\t\t\t\t    (object ClassAttribute \"Ʒid\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\t\tvalue      \t\"Ʒid\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Ordinal\"\r\n\t\t\t\t\t\tvalue      \t3)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"NullsAllowed\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"IsIdentity\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ForBitData\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ExplicitNullable\"\r\n\t\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ColumnType\"\r\n\t\t\t\t\t\tvalue      \t\"Native\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\t\t\t\tvalue      \t\"No Default Value\"))\r\n\t\t\t\t\tquid       \t\"5B1AACB203CB\"\r\n\t\t\t\t\ttype       \t\"SMALLINT\"\r\n\t\t\t\t\texportControl \t\"Neither\"))\r\n\t\t\t\tlanguage   \t\"Data Modeler\")\r\n\t\t\t    (object Class \"SKU\"\r\n\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"IsTable\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\tvalue      \t\"SKU\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"TableSpaceID\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"HasLikeStatemenet\"\r\n\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeTableName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeIncludeIdentity\"\r\n\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeColumnAttr\"\r\n\t\t\t\t\tvalue      \t\"False\"))\r\n\t\t\t\tquid       \t\"5B1AA9BA0234\"\r\n\t\t\t\tstereotype \t\"Table\"\r\n\t\t\t\tclass_attributes \t(list class_attribute_list\r\n\t\t\t\t    (object ClassAttribute \"id\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ExplicitNullable\"\r\n\t\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\t\tvalue      \t\"id\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Ordinal\"\r\n\t\t\t\t\t\tvalue      \t1)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Length\"\r\n\t\t\t\t\t\tvalue      \t10)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"NullsAllowed\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"IsIdentity\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ForBitData\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ColumnType\"\r\n\t\t\t\t\t\tvalue      \t\"Native\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\t\t\t\tvalue      \t\"No Default Value\"))\r\n\t\t\t\t\tquid       \t\"5B1B5D5800C5\"\r\n\t\t\t\t\ttype       \t\"VARCHAR(10)\"\r\n\t\t\t\t\texportControl \t\"Neither\")\r\n\t\t\t\t    (object ClassAttribute \"spu_id\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\t\tvalue      \t\"spu_id\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Ordinal\"\r\n\t\t\t\t\t\tvalue      \t2)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Length\"\r\n\t\t\t\t\t\tvalue      \t10)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"NullsAllowed\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"IsIdentity\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ForBitData\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ExplicitNullable\"\r\n\t\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ColumnType\"\r\n\t\t\t\t\t\tvalue      \t\"Native\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\t\t\t\tvalue      \t\"No Default Value\"))\r\n\t\t\t\t\tquid       \t\"5B1B5D5800E3\"\r\n\t\t\t\t\ttype       \t\"VARCHAR(10)\"\r\n\t\t\t\t\texportControl \t\"Neither\"))\r\n\t\t\t\tlanguage   \t\"Data Modeler\")\r\n\t\t\t    (object Class \"Ʒ\"\r\n\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"IsTable\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\tvalue      \t\"Ʒ\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"TableSpaceID\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"HasLikeStatemenet\"\r\n\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeTableName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeIncludeIdentity\"\r\n\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeColumnAttr\"\r\n\t\t\t\t\tvalue      \t\"False\"))\r\n\t\t\t\tquid       \t\"5B1AAA6501AC\"\r\n\t\t\t\tstereotype \t\"Table\"\r\n\t\t\t\tclass_attributes \t(list class_attribute_list\r\n\t\t\t\t    (object ClassAttribute \"id\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ExplicitNullable\"\r\n\t\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\t\tvalue      \t\"id\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Ordinal\"\r\n\t\t\t\t\t\tvalue      \t1)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Length\"\r\n\t\t\t\t\t\tvalue      \t10)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"NullsAllowed\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"IsIdentity\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ForBitData\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ColumnType\"\r\n\t\t\t\t\t\tvalue      \t\"Native\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\t\t\t\tvalue      \t\"No Default Value\"))\r\n\t\t\t\t\tquid       \t\"5B1AAAC90295\"\r\n\t\t\t\t\ttype       \t\"VARCHAR(10)\"\r\n\t\t\t\t\texportControl \t\"Neither\")\r\n\t\t\t\t    (object ClassAttribute \"Ʒ\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ExplicitNullable\"\r\n\t\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\t\tvalue      \t\"Ʒ\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Ordinal\"\r\n\t\t\t\t\t\tvalue      \t2)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Length\"\r\n\t\t\t\t\t\tvalue      \t30)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"NullsAllowed\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"IsIdentity\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ForBitData\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ColumnType\"\r\n\t\t\t\t\t\tvalue      \t\"Native\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\t\t\t\tvalue      \t\"No Default Value\"))\r\n\t\t\t\t\tquid       \t\"5B1AAAC902B9\"\r\n\t\t\t\t\ttype       \t\"VARCHAR(30)\"\r\n\t\t\t\t\texportControl \t\"Neither\"))\r\n\t\t\t\tlanguage   \t\"Data Modeler\")\r\n\t\t\t    (object Class \"\"\r\n\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"IsTable\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"TableSpaceID\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"HasLikeStatemenet\"\r\n\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeTableName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeIncludeIdentity\"\r\n\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeColumnAttr\"\r\n\t\t\t\t\tvalue      \t\"False\"))\r\n\t\t\t\tquid       \t\"5B1AACBF0283\"\r\n\t\t\t\tstereotype \t\"Table\"\r\n\t\t\t\tclass_attributes \t(list class_attribute_list\r\n\t\t\t\t    (object ClassAttribute \"id\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ExplicitNullable\"\r\n\t\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\t\tvalue      \t\"id\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Ordinal\"\r\n\t\t\t\t\t\tvalue      \t1)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Length\"\r\n\t\t\t\t\t\tvalue      \t10)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"NullsAllowed\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"IsIdentity\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ForBitData\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ColumnType\"\r\n\t\t\t\t\t\tvalue      \t\"Native\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\t\t\t\tvalue      \t\"No Default Value\"))\r\n\t\t\t\t\tquid       \t\"5B1AAD45002A\"\r\n\t\t\t\t\ttype       \t\"VARCHAR(10)\"\r\n\t\t\t\t\texportControl \t\"Neither\")\r\n\t\t\t\t    (object ClassAttribute \"\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ExplicitNullable\"\r\n\t\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Ordinal\"\r\n\t\t\t\t\t\tvalue      \t2)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"NullsAllowed\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"IsIdentity\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ForBitData\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ColumnType\"\r\n\t\t\t\t\t\tvalue      \t\"Native\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\t\t\t\tvalue      \t\"No Default Value\"))\r\n\t\t\t\t\tquid       \t\"5B1AAD45004B\"\r\n\t\t\t\t\ttype       \t\"SMALLINT\"\r\n\t\t\t\t\texportControl \t\"Neither\"))\r\n\t\t\t\tlanguage   \t\"Data Modeler\")\r\n\t\t\t    (object Class \"ֵ\"\r\n\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"IsTable\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\tvalue      \t\"ֵ\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"TableSpaceID\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"HasLikeStatemenet\"\r\n\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeTableName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeIncludeIdentity\"\r\n\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeColumnAttr\"\r\n\t\t\t\t\tvalue      \t\"False\"))\r\n\t\t\t\tquid       \t\"5B1B57A8023E\"\r\n\t\t\t\tstereotype \t\"Table\"\r\n\t\t\t\tclass_attributes \t(list class_attribute_list\r\n\t\t\t\t    (object ClassAttribute \"id\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ExplicitNullable\"\r\n\t\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\t\tvalue      \t\"id\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Ordinal\"\r\n\t\t\t\t\t\tvalue      \t1)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Length\"\r\n\t\t\t\t\t\tvalue      \t10)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"NullsAllowed\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"IsIdentity\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ForBitData\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ColumnType\"\r\n\t\t\t\t\t\tvalue      \t\"Native\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\t\t\t\tvalue      \t\"No Default Value\"))\r\n\t\t\t\t\tquid       \t\"5B1B58BD0041\"\r\n\t\t\t\t\ttype       \t\"VARCHAR(10)\"\r\n\t\t\t\t\texportControl \t\"Neither\")\r\n\t\t\t\t    (object ClassAttribute \"id\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ExplicitNullable\"\r\n\t\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\t\tvalue      \t\"id\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Ordinal\"\r\n\t\t\t\t\t\tvalue      \t2)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Length\"\r\n\t\t\t\t\t\tvalue      \t10)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"NullsAllowed\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"IsIdentity\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ForBitData\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ColumnType\"\r\n\t\t\t\t\t\tvalue      \t\"Native\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\t\t\t\tvalue      \t\"No Default Value\"))\r\n\t\t\t\t\tquid       \t\"5B1B58BD0062\"\r\n\t\t\t\t\ttype       \t\"VARCHAR(10)\"\r\n\t\t\t\t\texportControl \t\"Neither\")\r\n\t\t\t\t    (object ClassAttribute \"ֵ\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\t\tvalue      \t\"ֵ\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Ordinal\"\r\n\t\t\t\t\t\tvalue      \t3)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"NullsAllowed\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"IsIdentity\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ForBitData\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ExplicitNullable\"\r\n\t\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ColumnType\"\r\n\t\t\t\t\t\tvalue      \t\"Native\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\t\t\t\tvalue      \t\"No Default Value\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Length\"\r\n\t\t\t\t\t\tvalue      \t10))\r\n\t\t\t\t\tquid       \t\"5B1B58BD0081\"\r\n\t\t\t\t\ttype       \t\"VARCHAR(10)\"\r\n\t\t\t\t\texportControl \t\"Neither\"))\r\n\t\t\t\tlanguage   \t\"Data Modeler\")\r\n\t\t\t    (object Class \"Ʒ\"\r\n\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"IsTable\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\tvalue      \t\"Ʒ\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"TableSpaceID\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"HasLikeStatemenet\"\r\n\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeTableName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeIncludeIdentity\"\r\n\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeColumnAttr\"\r\n\t\t\t\t\tvalue      \t\"False\"))\r\n\t\t\t\tquid       \t\"5B1B59C80320\"\r\n\t\t\t\tstereotype \t\"Table\"\r\n\t\t\t\tclass_attributes \t(list class_attribute_list\r\n\t\t\t\t    (object ClassAttribute \"id\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\t\tvalue      \t\"id\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Ordinal\"\r\n\t\t\t\t\t\tvalue      \t1)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Length\"\r\n\t\t\t\t\t\tvalue      \t10)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"NullsAllowed\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"IsIdentity\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ForBitData\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ExplicitNullable\"\r\n\t\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ColumnType\"\r\n\t\t\t\t\t\tvalue      \t\"Native\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\t\t\t\tvalue      \t\"No Default Value\"))\r\n\t\t\t\t\tquid       \t\"5B1B5A9D02FA\"\r\n\t\t\t\t\ttype       \t\"VARCHAR(10)\"\r\n\t\t\t\t\texportControl \t\"Neither\")\r\n\t\t\t\t    (object ClassAttribute \"\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Ordinal\"\r\n\t\t\t\t\t\tvalue      \t2)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Length\"\r\n\t\t\t\t\t\tvalue      \t1)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"NullsAllowed\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"IsIdentity\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ForBitData\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ExplicitNullable\"\r\n\t\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ColumnType\"\r\n\t\t\t\t\t\tvalue      \t\"Native\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\t\t\t\tvalue      \t\"No Default Value\"))\r\n\t\t\t\t\tquid       \t\"5B1B5A9D0318\"\r\n\t\t\t\t\ttype       \t\"VARCHAR(1)\"\r\n\t\t\t\t\texportControl \t\"Neither\"))\r\n\t\t\t\tlanguage   \t\"Data Modeler\")\r\n\t\t\t    (object Class \"SPU-\"\r\n\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"IsTable\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\tvalue      \t\"SP-U\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"TableSpaceID\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"HasLikeStatemenet\"\r\n\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeTableName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeIncludeIdentity\"\r\n\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeColumnAttr\"\r\n\t\t\t\t\tvalue      \t\"False\"))\r\n\t\t\t\tquid       \t\"5B1B5D7901E2\"\r\n\t\t\t\tstereotype \t\"Table\"\r\n\t\t\t\tclass_attributes \t(list class_attribute_list\r\n\t\t\t\t    (object ClassAttribute \"spu_id\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ExplicitNullable\"\r\n\t\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\t\tvalue      \t\"spu_id\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Ordinal\"\r\n\t\t\t\t\t\tvalue      \t1)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Length\"\r\n\t\t\t\t\t\tvalue      \t1)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"NullsAllowed\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"IsIdentity\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ForBitData\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ColumnType\"\r\n\t\t\t\t\t\tvalue      \t\"Native\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\t\t\t\tvalue      \t\"No Default Value\"))\r\n\t\t\t\t\tquid       \t\"5B1B5E150171\"\r\n\t\t\t\t\ttype       \t\"VARCHAR(1)\"\r\n\t\t\t\t\texportControl \t\"Neither\")\r\n\t\t\t\t    (object ClassAttribute \"id\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ExplicitNullable\"\r\n\t\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\t\tvalue      \t\"id\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Ordinal\"\r\n\t\t\t\t\t\tvalue      \t2)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Length\"\r\n\t\t\t\t\t\tvalue      \t10)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"NullsAllowed\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"IsIdentity\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ForBitData\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ColumnType\"\r\n\t\t\t\t\t\tvalue      \t\"Native\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\t\t\t\tvalue      \t\"No Default Value\"))\r\n\t\t\t\t\tquid       \t\"5B1B5E150198\"\r\n\t\t\t\t\ttype       \t\"VARCHAR(10)\"\r\n\t\t\t\t\texportControl \t\"Neither\"))\r\n\t\t\t\tlanguage   \t\"Data Modeler\")\r\n\t\t\t    (object Class \"SKU-ֵ\"\r\n\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"IsTable\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\tvalue      \t\"SKU-ֵ\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"TableSpaceID\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"HasLikeStatemenet\"\r\n\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeTableName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeIncludeIdentity\"\r\n\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeColumnAttr\"\r\n\t\t\t\t\tvalue      \t\"False\"))\r\n\t\t\t\tquid       \t\"5B1B5E01011A\"\r\n\t\t\t\tstereotype \t\"Table\"\r\n\t\t\t\tclass_attributes \t(list class_attribute_list\r\n\t\t\t\t    (object ClassAttribute \"sku_id\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\t\tvalue      \t\"sku_id\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Ordinal\"\r\n\t\t\t\t\t\tvalue      \t1)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Length\"\r\n\t\t\t\t\t\tvalue      \t10)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"NullsAllowed\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"IsIdentity\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ForBitData\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ExplicitNullable\"\r\n\t\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ColumnType\"\r\n\t\t\t\t\t\tvalue      \t\"Native\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\t\t\t\tvalue      \t\"No Default Value\"))\r\n\t\t\t\t\tquid       \t\"5B1B5E5E01E4\"\r\n\t\t\t\t\ttype       \t\"VARCHAR(10)\"\r\n\t\t\t\t\texportControl \t\"Neither\")\r\n\t\t\t\t    (object ClassAttribute \"ֵid\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\t\tvalue      \t\"ֵid\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Ordinal\"\r\n\t\t\t\t\t\tvalue      \t2)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Length\"\r\n\t\t\t\t\t\tvalue      \t10)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"NullsAllowed\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"IsIdentity\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ForBitData\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ExplicitNullable\"\r\n\t\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ColumnType\"\r\n\t\t\t\t\t\tvalue      \t\"Native\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\t\t\t\tvalue      \t\"No Default Value\"))\r\n\t\t\t\t\tquid       \t\"5B1B5E5E0207\"\r\n\t\t\t\t\ttype       \t\"VARCHAR(10)\"\r\n\t\t\t\t\texportControl \t\"Neither\"))\r\n\t\t\t\tlanguage   \t\"Data Modeler\")\r\n\t\t\t    (object Class \"\"\r\n\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"IsTable\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"TableSpaceID\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"HasLikeStatemenet\"\r\n\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeTableName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeIncludeIdentity\"\r\n\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeColumnAttr\"\r\n\t\t\t\t\tvalue      \t\"False\"))\r\n\t\t\t\tquid       \t\"5B1B5E8F0382\"\r\n\t\t\t\tstereotype \t\"Table\"\r\n\t\t\t\tclass_attributes \t(list class_attribute_list\r\n\t\t\t\t    (object ClassAttribute \"id\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\t\tvalue      \t\"id\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Ordinal\"\r\n\t\t\t\t\t\tvalue      \t1)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Length\"\r\n\t\t\t\t\t\tvalue      \t10)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"NullsAllowed\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"IsIdentity\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ForBitData\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ExplicitNullable\"\r\n\t\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ColumnType\"\r\n\t\t\t\t\t\tvalue      \t\"Native\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\t\t\t\tvalue      \t\"No Default Value\"))\r\n\t\t\t\t\tquid       \t\"5B1B5EB5001C\"\r\n\t\t\t\t\ttype       \t\"VARCHAR(10)\"\r\n\t\t\t\t\texportControl \t\"Neither\")\r\n\t\t\t\t    (object ClassAttribute \"\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Ordinal\"\r\n\t\t\t\t\t\tvalue      \t2)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Length\"\r\n\t\t\t\t\t\tvalue      \t30)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"NullsAllowed\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"IsIdentity\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ForBitData\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ExplicitNullable\"\r\n\t\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ColumnType\"\r\n\t\t\t\t\t\tvalue      \t\"Native\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\t\t\t\tvalue      \t\"No Default Value\"))\r\n\t\t\t\t\tquid       \t\"5B1B5EB5003C\"\r\n\t\t\t\t\ttype       \t\"VARCHAR(30)\"\r\n\t\t\t\t\texportControl \t\"Neither\"))\r\n\t\t\t\tlanguage   \t\"Data Modeler\")\r\n\t\t\t    (object Class \"sku_ֵ\"\r\n\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"IsTable\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\tvalue      \t\"sku_ֵ\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"TableSpaceID\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"HasLikeStatemenet\"\r\n\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeTableName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeIncludeIdentity\"\r\n\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeColumnAttr\"\r\n\t\t\t\t\tvalue      \t\"False\"))\r\n\t\t\t\tquid       \t\"5B1B5ECD0127\"\r\n\t\t\t\tstereotype \t\"Table\"\r\n\t\t\t\tclass_attributes \t(list class_attribute_list\r\n\t\t\t\t    (object ClassAttribute \"sku_id\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\t\tvalue      \t\"sku_id\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Ordinal\"\r\n\t\t\t\t\t\tvalue      \t1)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Length\"\r\n\t\t\t\t\t\tvalue      \t10)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"NullsAllowed\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"IsIdentity\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ForBitData\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ExplicitNullable\"\r\n\t\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ColumnType\"\r\n\t\t\t\t\t\tvalue      \t\"Native\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\t\t\t\tvalue      \t\"No Default Value\"))\r\n\t\t\t\t\tquid       \t\"5B1B5F02025F\"\r\n\t\t\t\t\ttype       \t\"VARCHAR(10)\"\r\n\t\t\t\t\texportControl \t\"Neither\")\r\n\t\t\t\t    (object ClassAttribute \"ֵid\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\t\tvalue      \t\"ֵid\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Ordinal\"\r\n\t\t\t\t\t\tvalue      \t2)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Length\"\r\n\t\t\t\t\t\tvalue      \t10)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"NullsAllowed\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"IsIdentity\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ForBitData\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ExplicitNullable\"\r\n\t\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ColumnType\"\r\n\t\t\t\t\t\tvalue      \t\"Native\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\t\t\t\tvalue      \t\"No Default Value\"))\r\n\t\t\t\t\tquid       \t\"5B1B5F020282\"\r\n\t\t\t\t\ttype       \t\"VARCHAR(10)\"\r\n\t\t\t\t\texportControl \t\"Neither\"))\r\n\t\t\t\tlanguage   \t\"Data Modeler\")\r\n\t\t\t    (object Class \"ֵ\"\r\n\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"IsTable\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\tvalue      \t\"ֵ\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"TableSpaceID\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"HasLikeStatemenet\"\r\n\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeTableName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeIncludeIdentity\"\r\n\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeColumnAttr\"\r\n\t\t\t\t\tvalue      \t\"False\"))\r\n\t\t\t\tquid       \t\"5B1B5F09010A\"\r\n\t\t\t\tstereotype \t\"Table\"\r\n\t\t\t\tclass_attributes \t(list class_attribute_list\r\n\t\t\t\t    (object ClassAttribute \"id\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\t\tvalue      \t\"id\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Ordinal\"\r\n\t\t\t\t\t\tvalue      \t1)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Length\"\r\n\t\t\t\t\t\tvalue      \t10)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"NullsAllowed\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"IsIdentity\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ForBitData\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ExplicitNullable\"\r\n\t\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ColumnType\"\r\n\t\t\t\t\t\tvalue      \t\"Native\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\t\t\t\tvalue      \t\"No Default Value\"))\r\n\t\t\t\t\tquid       \t\"5B1B5F38013A\"\r\n\t\t\t\t\ttype       \t\"VARCHAR(10)\"\r\n\t\t\t\t\texportControl \t\"Neither\")\r\n\t\t\t\t    (object ClassAttribute \"\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Ordinal\"\r\n\t\t\t\t\t\tvalue      \t2)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Length\"\r\n\t\t\t\t\t\tvalue      \t1)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"NullsAllowed\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"IsIdentity\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ForBitData\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ExplicitNullable\"\r\n\t\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ColumnType\"\r\n\t\t\t\t\t\tvalue      \t\"Native\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\t\t\t\tvalue      \t\"No Default Value\"))\r\n\t\t\t\t\tquid       \t\"5B1B5F380166\"\r\n\t\t\t\t\ttype       \t\"VARCHAR(1)\"\r\n\t\t\t\t\texportControl \t\"Neither\"))\r\n\t\t\t\tlanguage   \t\"Data Modeler\")\r\n\t\t\t    (object Association \"TC_Ʒ3\"\r\n\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"IsRelationship\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\tvalue      \t\"TC_Ʒ3\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"RIMethod\"\r\n\t\t\t\t\tvalue      \t\"DRI\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ParentUpdateRule\"\r\n\t\t\t\t\tvalue      \t\"No Action\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ParentDeleteRule\"\r\n\t\t\t\t\tvalue      \t\"No Action\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ChildMultiplicity\"\r\n\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ParentUpdateRuleName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ParentDeleteRuleName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ChildInsertRestrict\"\r\n\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ChildInsertRestrictName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ChildMultiplicityName\"\r\n\t\t\t\t\tvalue      \t\"\"))\r\n\t\t\t\tquid       \t\"5B1B5AC502CA\"\r\n\t\t\t\tstereotype \t\"Identifying\"\r\n\t\t\t\troles      \t(list role_list\r\n\t\t\t\t    (object Role \"$UNNAMED$0\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ConstraintName\"\r\n\t\t\t\t\t\tvalue      \t\"\"))\r\n\t\t\t\t\tquid       \t\"5B1B5AC600DF\"\r\n\t\t\t\t\tsupplier   \t\"Logical View::Schemas::S_0::SPU\"\r\n\t\t\t\t\tquidu      \t\"5B1AA9510260\"\r\n\t\t\t\t\tclient_cardinality \t(value cardinality \"0..*\")\r\n\t\t\t\t\tContainment \t\"By Value\"\r\n\t\t\t\t\tis_navigable \tTRUE)\r\n\t\t\t\t    (object Role \"$UNNAMED$1\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ConstraintName\"\r\n\t\t\t\t\t\tvalue      \t\"\"))\r\n\t\t\t\t\tquid       \t\"5B1B5AC600E5\"\r\n\t\t\t\t\tsupplier   \t\"Logical View::Schemas::S_0::Ʒ\"\r\n\t\t\t\t\tquidu      \t\"5B1B59C80320\"\r\n\t\t\t\t\tclient_cardinality \t(value cardinality \"0..1\")\r\n\t\t\t\t\tis_navigable \tTRUE\r\n\t\t\t\t\tis_aggregate \tTRUE)))\r\n\t\t\t    (object Association \"$UNNAMED$2\"\r\n\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"IsRelationship\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\tvalue      \t\"TC_Ʒ8\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"RIMethod\"\r\n\t\t\t\t\tvalue      \t\"DRI\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ParentUpdateRule\"\r\n\t\t\t\t\tvalue      \t\"No Action\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ParentDeleteRule\"\r\n\t\t\t\t\tvalue      \t\"No Action\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ChildMultiplicity\"\r\n\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ParentUpdateRuleName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ParentDeleteRuleName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ChildInsertRestrict\"\r\n\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ChildInsertRestrictName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ChildMultiplicityName\"\r\n\t\t\t\t\tvalue      \t\"\"))\r\n\t\t\t\tquid       \t\"5B1B5AD0025B\"\r\n\t\t\t\tstereotype \t\"Identifying\"\r\n\t\t\t\troles      \t(list role_list\r\n\t\t\t\t    (object Role \"$UNNAMED$3\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ConstraintName\"\r\n\t\t\t\t\t\tvalue      \t\"\"))\r\n\t\t\t\t\tquid       \t\"5B1B5AD10028\"\r\n\t\t\t\t\tsupplier   \t\"Logical View::Schemas::S_0::SPU\"\r\n\t\t\t\t\tquidu      \t\"5B1AA9510260\"\r\n\t\t\t\t\tclient_cardinality \t(value cardinality \"0..*\")\r\n\t\t\t\t\tContainment \t\"By Value\"\r\n\t\t\t\t\tis_navigable \tTRUE)\r\n\t\t\t\t    (object Role \"$UNNAMED$4\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ConstraintName\"\r\n\t\t\t\t\t\tvalue      \t\"\"))\r\n\t\t\t\t\tquid       \t\"5B1B5AD1002E\"\r\n\t\t\t\t\tsupplier   \t\"Logical View::Schemas::S_0::Ʒ\"\r\n\t\t\t\t\tquidu      \t\"5B1B59C80320\"\r\n\t\t\t\t\tclient_cardinality \t(value cardinality \"0..1\")\r\n\t\t\t\t\tis_navigable \tTRUE\r\n\t\t\t\t\tis_aggregate \tTRUE)))\r\n\t\t\t    (object Association \"TC_Ʒ15\"\r\n\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"IsRelationship\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\tvalue      \t\"TC_Ʒ15\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"RIMethod\"\r\n\t\t\t\t\tvalue      \t\"DRI\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ParentUpdateRule\"\r\n\t\t\t\t\tvalue      \t\"No Action\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ParentDeleteRule\"\r\n\t\t\t\t\tvalue      \t\"No Action\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ChildMultiplicity\"\r\n\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ParentUpdateRuleName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ParentDeleteRuleName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ChildInsertRestrict\"\r\n\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ChildInsertRestrictName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ChildMultiplicityName\"\r\n\t\t\t\t\tvalue      \t\"\"))\r\n\t\t\t\tquid       \t\"5B1B5ADB0301\"\r\n\t\t\t\tstereotype \t\"Identifying\"\r\n\t\t\t\troles      \t(list role_list\r\n\t\t\t\t    (object Role \"$UNNAMED$5\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ConstraintName\"\r\n\t\t\t\t\t\tvalue      \t\"\"))\r\n\t\t\t\t\tquid       \t\"5B1B5ADC003A\"\r\n\t\t\t\t\tsupplier   \t\"Logical View::Schemas::S_0::SPU\"\r\n\t\t\t\t\tquidu      \t\"5B1AA9510260\"\r\n\t\t\t\t\tclient_cardinality \t(value cardinality \"0..*\")\r\n\t\t\t\t\tContainment \t\"By Value\"\r\n\t\t\t\t\tis_navigable \tTRUE)\r\n\t\t\t\t    (object Role \"$UNNAMED$6\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ConstraintName\"\r\n\t\t\t\t\t\tvalue      \t\"\"))\r\n\t\t\t\t\tquid       \t\"5B1B5ADC0041\"\r\n\t\t\t\t\tsupplier   \t\"Logical View::Schemas::S_0::Ʒ\"\r\n\t\t\t\t\tquidu      \t\"5B1B59C80320\"\r\n\t\t\t\t\tclient_cardinality \t(value cardinality \"0..1\")\r\n\t\t\t\t\tis_navigable \tTRUE\r\n\t\t\t\t\tis_aggregate \tTRUE)))\r\n\t\t\t    (object Association \"TC_Ʒ24\"\r\n\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"IsRelationship\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\tvalue      \t\"TC_Ʒ24\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"RIMethod\"\r\n\t\t\t\t\tvalue      \t\"DRI\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ParentUpdateRule\"\r\n\t\t\t\t\tvalue      \t\"No Action\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ParentDeleteRule\"\r\n\t\t\t\t\tvalue      \t\"No Action\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ChildMultiplicity\"\r\n\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ParentUpdateRuleName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ParentDeleteRuleName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ChildInsertRestrict\"\r\n\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ChildInsertRestrictName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ChildMultiplicityName\"\r\n\t\t\t\t\tvalue      \t\"\"))\r\n\t\t\t\tquid       \t\"5B1B5AE7038D\"\r\n\t\t\t\tstereotype \t\"Identifying\"\r\n\t\t\t\troles      \t(list role_list\r\n\t\t\t\t    (object Role \"$UNNAMED$7\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ConstraintName\"\r\n\t\t\t\t\t\tvalue      \t\"\"))\r\n\t\t\t\t\tquid       \t\"5B1B5AE80320\"\r\n\t\t\t\t\tsupplier   \t\"Logical View::Schemas::S_0::SPU\"\r\n\t\t\t\t\tquidu      \t\"5B1AA9510260\"\r\n\t\t\t\t\tclient_cardinality \t(value cardinality \"0..*\")\r\n\t\t\t\t\tContainment \t\"By Value\"\r\n\t\t\t\t\tis_navigable \tTRUE)\r\n\t\t\t\t    (object Role \"$UNNAMED$8\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ConstraintName\"\r\n\t\t\t\t\t\tvalue      \t\"\"))\r\n\t\t\t\t\tquid       \t\"5B1B5AE80328\"\r\n\t\t\t\t\tsupplier   \t\"Logical View::Schemas::S_0::Ʒ\"\r\n\t\t\t\t\tquidu      \t\"5B1B59C80320\"\r\n\t\t\t\t\tclient_cardinality \t(value cardinality \"0..1\")\r\n\t\t\t\t\tis_navigable \tTRUE\r\n\t\t\t\t\tis_aggregate \tTRUE)))\r\n\t\t\t    (object Association \"TC_SPU35\"\r\n\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"IsRelationship\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\tvalue      \t\"TC_SPU35\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"RIMethod\"\r\n\t\t\t\t\tvalue      \t\"DRI\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ParentUpdateRule\"\r\n\t\t\t\t\tvalue      \t\"No Action\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ParentDeleteRule\"\r\n\t\t\t\t\tvalue      \t\"No Action\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ChildMultiplicity\"\r\n\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ParentUpdateRuleName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ParentDeleteRuleName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ChildInsertRestrict\"\r\n\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ChildInsertRestrictName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ChildMultiplicityName\"\r\n\t\t\t\t\tvalue      \t\"\"))\r\n\t\t\t\tquid       \t\"5B1B5AF10125\"\r\n\t\t\t\tstereotype \t\"Identifying\"\r\n\t\t\t\troles      \t(list role_list\r\n\t\t\t\t    (object Role \"$UNNAMED$9\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ConstraintName\"\r\n\t\t\t\t\t\tvalue      \t\"\"))\r\n\t\t\t\t\tquid       \t\"5B1B5AF10320\"\r\n\t\t\t\t\tsupplier   \t\"Logical View::Schemas::S_0::Ʒ\"\r\n\t\t\t\t\tquidu      \t\"5B1B59C80320\"\r\n\t\t\t\t\tclient_cardinality \t(value cardinality \"0..*\")\r\n\t\t\t\t\tContainment \t\"By Value\"\r\n\t\t\t\t\tis_navigable \tTRUE)\r\n\t\t\t\t    (object Role \"$UNNAMED$10\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ConstraintName\"\r\n\t\t\t\t\t\tvalue      \t\"\"))\r\n\t\t\t\t\tquid       \t\"5B1B5AF1032C\"\r\n\t\t\t\t\tsupplier   \t\"Logical View::Schemas::S_0::SPU\"\r\n\t\t\t\t\tquidu      \t\"5B1AA9510260\"\r\n\t\t\t\t\tclient_cardinality \t(value cardinality \"0..1\")\r\n\t\t\t\t\tis_navigable \tTRUE\r\n\t\t\t\t\tis_aggregate \tTRUE)))\r\n\t\t\t    (object Association \"TC_SPU-48\"\r\n\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"IsRelationship\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\tvalue      \t\"TC_SPU-48\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"RIMethod\"\r\n\t\t\t\t\tvalue      \t\"DRI\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ParentUpdateRule\"\r\n\t\t\t\t\tvalue      \t\"No Action\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ParentDeleteRule\"\r\n\t\t\t\t\tvalue      \t\"No Action\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ChildMultiplicity\"\r\n\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ParentUpdateRuleName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ParentDeleteRuleName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ChildInsertRestrict\"\r\n\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ChildInsertRestrictName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"ChildMultiplicityName\"\r\n\t\t\t\t\tvalue      \t\"\"))\r\n\t\t\t\tquid       \t\"5B1B5E6C03E4\"\r\n\t\t\t\tstereotype \t\"Identifying\"\r\n\t\t\t\troles      \t(list role_list\r\n\t\t\t\t    (object Role \"$UNNAMED$11\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ConstraintName\"\r\n\t\t\t\t\t\tvalue      \t\"\"))\r\n\t\t\t\t\tquid       \t\"5B1B5E6D0149\"\r\n\t\t\t\t\tsupplier   \t\"Logical View::Schemas::S_0::SPU\"\r\n\t\t\t\t\tquidu      \t\"5B1AA9510260\"\r\n\t\t\t\t\tclient_cardinality \t(value cardinality \"0..*\")\r\n\t\t\t\t\tContainment \t\"By Value\"\r\n\t\t\t\t\tis_navigable \tTRUE)\r\n\t\t\t\t    (object Role \"$UNNAMED$12\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ConstraintName\"\r\n\t\t\t\t\t\tvalue      \t\"\"))\r\n\t\t\t\t\tquid       \t\"5B1B5E6D0153\"\r\n\t\t\t\t\tsupplier   \t\"Logical View::Schemas::S_0::SPU-\"\r\n\t\t\t\t\tquidu      \t\"5B1B5D7901E2\"\r\n\t\t\t\t\tclient_cardinality \t(value cardinality \"0..1\")\r\n\t\t\t\t\tis_navigable \tTRUE\r\n\t\t\t\t\tis_aggregate \tTRUE))))\r\n\t\t\tlogical_presentations \t(list unit_reference_list\r\n\t\t\t    (object ClassDiagram \"NewDiagram\"\r\n\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\tvalue      \t\"True\"))\r\n\t\t\t\tquid       \t\"5B1AA92C02F1\"\r\n\t\t\t\ttitle      \t\"NewDiagram\"\r\n\t\t\t\tzoom       \t100\r\n\t\t\t\tmax_height \t28350\r\n\t\t\t\tmax_width  \t21600\r\n\t\t\t\torigin_x   \t0\r\n\t\t\t\torigin_y   \t0\r\n\t\t\t\titems      \t(list diagram_item_list\r\n\t\t\t\t    (object ClassView \"Class\" \"Logical View::Schemas::S_0::SKU\" @1\r\n\t\t\t\t\tShowCompartmentStereotypes \tTRUE\r\n\t\t\t\t\tIncludeAttribute \tTRUE\r\n\t\t\t\t\tIncludeOperation \tTRUE\r\n\t\t\t\t\tlocation   \t(1296, 768)\r\n\t\t\t\t\tfont       \t(object Font\r\n\t\t\t\t\t    size       \t10\r\n\t\t\t\t\t    face       \t\"Arial\"\r\n\t\t\t\t\t    bold       \tFALSE\r\n\t\t\t\t\t    italics    \tFALSE\r\n\t\t\t\t\t    underline  \tFALSE\r\n\t\t\t\t\t    strike     \tFALSE\r\n\t\t\t\t\t    color      \t0\r\n\t\t\t\t\t    default_color \tTRUE)\r\n\t\t\t\t\tlabel      \t(object ItemLabel\r\n\t\t\t\t\t    Parent_View \t@1\r\n\t\t\t\t\t    location   \t(985, 703)\r\n\t\t\t\t\t    fill_color \t13434879\r\n\t\t\t\t\t    nlines     \t1\r\n\t\t\t\t\t    max_width  \t622\r\n\t\t\t\t\t    justify    \t0\r\n\t\t\t\t\t    label      \t\"SKU\")\r\n\t\t\t\t\ticon       \t\"Table\"\r\n\t\t\t\t\ticon_style \t\"Decoration\"\r\n\t\t\t\t\tline_color \t3342489\r\n\t\t\t\t\tfill_color \t13434879\r\n\t\t\t\t\tquidu      \t\"5B1AA9BA0234\"\r\n\t\t\t\t\tcompartment \t(object Compartment\r\n\t\t\t\t\t    Parent_View \t@1\r\n\t\t\t\t\t    location   \t(985, 764)\r\n\t\t\t\t\t    font       \t(object Font\r\n\t\t\t\t\t\tsize       \t10\r\n\t\t\t\t\t\tface       \t\"Arial\"\r\n\t\t\t\t\t\tbold       \tFALSE\r\n\t\t\t\t\t\titalics    \tFALSE\r\n\t\t\t\t\t\tunderline  \tFALSE\r\n\t\t\t\t\t\tstrike     \tFALSE\r\n\t\t\t\t\t\tcolor      \t0\r\n\t\t\t\t\t\tdefault_color \tTRUE)\r\n\t\t\t\t\t    icon_style \t\"Icon\"\r\n\t\t\t\t\t    fill_color \t16777215\r\n\t\t\t\t\t    anchor     \t2\r\n\t\t\t\t\t    nlines     \t3\r\n\t\t\t\t\t    max_width  \t472)\r\n\t\t\t\t\twidth      \t640\r\n\t\t\t\t\theight     \t330\r\n\t\t\t\t\tannotation \t8\r\n\t\t\t\t\tautoResize \tTRUE)\r\n\t\t\t\t    (object ClassView \"Class\" \"Logical View::Schemas::S_0::Ʒ\" @2\r\n\t\t\t\t\tShowCompartmentStereotypes \tTRUE\r\n\t\t\t\t\tIncludeAttribute \tTRUE\r\n\t\t\t\t\tIncludeOperation \tTRUE\r\n\t\t\t\t\tlocation   \t(2176, 544)\r\n\t\t\t\t\tfont       \t(object Font\r\n\t\t\t\t\t    size       \t10\r\n\t\t\t\t\t    face       \t\"Arial\"\r\n\t\t\t\t\t    bold       \tFALSE\r\n\t\t\t\t\t    italics    \tFALSE\r\n\t\t\t\t\t    underline  \tFALSE\r\n\t\t\t\t\t    strike     \tFALSE\r\n\t\t\t\t\t    color      \t0\r\n\t\t\t\t\t    default_color \tTRUE)\r\n\t\t\t\t\tlabel      \t(object ItemLabel\r\n\t\t\t\t\t    Parent_View \t@2\r\n\t\t\t\t\t    location   \t(1831, 478)\r\n\t\t\t\t\t    fill_color \t13434879\r\n\t\t\t\t\t    nlines     \t1\r\n\t\t\t\t\t    max_width  \t690\r\n\t\t\t\t\t    justify    \t0\r\n\t\t\t\t\t    label      \t\"Ʒ\")\r\n\t\t\t\t\ticon       \t\"Table\"\r\n\t\t\t\t\ticon_style \t\"Decoration\"\r\n\t\t\t\t\tline_color \t3342489\r\n\t\t\t\t\tfill_color \t13434879\r\n\t\t\t\t\tquidu      \t\"5B1AAA6501AC\"\r\n\t\t\t\t\tcompartment \t(object Compartment\r\n\t\t\t\t\t    Parent_View \t@2\r\n\t\t\t\t\t    location   \t(1831, 539)\r\n\t\t\t\t\t    font       \t(object Font\r\n\t\t\t\t\t\tsize       \t10\r\n\t\t\t\t\t\tface       \t\"Arial\"\r\n\t\t\t\t\t\tbold       \tFALSE\r\n\t\t\t\t\t\titalics    \tFALSE\r\n\t\t\t\t\t\tunderline  \tFALSE\r\n\t\t\t\t\t\tstrike     \tFALSE\r\n\t\t\t\t\t\tcolor      \t0\r\n\t\t\t\t\t\tdefault_color \tTRUE)\r\n\t\t\t\t\t    icon_style \t\"Icon\"\r\n\t\t\t\t\t    fill_color \t13434879\r\n\t\t\t\t\t    anchor     \t2\r\n\t\t\t\t\t    nlines     \t3\r\n\t\t\t\t\t    max_width  \t559)\r\n\t\t\t\t\twidth      \t708\r\n\t\t\t\t\theight     \t332\r\n\t\t\t\t\tannotation \t8\r\n\t\t\t\t\tautoResize \tTRUE)\r\n\t\t\t\t    (object ClassView \"Class\" \"Logical View::Schemas::S_0::\" @3\r\n\t\t\t\t\tShowCompartmentStereotypes \tTRUE\r\n\t\t\t\t\tIncludeAttribute \tTRUE\r\n\t\t\t\t\tIncludeOperation \tTRUE\r\n\t\t\t\t\tlocation   \t(384, 720)\r\n\t\t\t\t\tfont       \t(object Font\r\n\t\t\t\t\t    size       \t10\r\n\t\t\t\t\t    face       \t\"Arial\"\r\n\t\t\t\t\t    bold       \tFALSE\r\n\t\t\t\t\t    italics    \tFALSE\r\n\t\t\t\t\t    underline  \tFALSE\r\n\t\t\t\t\t    strike     \tFALSE\r\n\t\t\t\t\t    color      \t0\r\n\t\t\t\t\t    default_color \tTRUE)\r\n\t\t\t\t\tlabel      \t(object ItemLabel\r\n\t\t\t\t\t    Parent_View \t@3\r\n\t\t\t\t\t    location   \t(78, 655)\r\n\t\t\t\t\t    fill_color \t13434879\r\n\t\t\t\t\t    nlines     \t1\r\n\t\t\t\t\t    max_width  \t612\r\n\t\t\t\t\t    justify    \t0\r\n\t\t\t\t\t    label      \t\"\")\r\n\t\t\t\t\ticon       \t\"Table\"\r\n\t\t\t\t\ticon_style \t\"Decoration\"\r\n\t\t\t\t\tline_color \t3342489\r\n\t\t\t\t\tfill_color \t13434879\r\n\t\t\t\t\tquidu      \t\"5B1AACBF0283\"\r\n\t\t\t\t\tcompartment \t(object Compartment\r\n\t\t\t\t\t    Parent_View \t@3\r\n\t\t\t\t\t    location   \t(78, 716)\r\n\t\t\t\t\t    font       \t(object Font\r\n\t\t\t\t\t\tsize       \t10\r\n\t\t\t\t\t\tface       \t\"Arial\"\r\n\t\t\t\t\t\tbold       \tFALSE\r\n\t\t\t\t\t\titalics    \tFALSE\r\n\t\t\t\t\t\tunderline  \tFALSE\r\n\t\t\t\t\t\tstrike     \tFALSE\r\n\t\t\t\t\t\tcolor      \t0\r\n\t\t\t\t\t\tdefault_color \tTRUE)\r\n\t\t\t\t\t    icon_style \t\"Icon\"\r\n\t\t\t\t\t    fill_color \t13434879\r\n\t\t\t\t\t    anchor     \t2\r\n\t\t\t\t\t    nlines     \t3\r\n\t\t\t\t\t    max_width  \t457)\r\n\t\t\t\t\twidth      \t630\r\n\t\t\t\t\theight     \t330\r\n\t\t\t\t\tannotation \t8\r\n\t\t\t\t\tautoResize \tTRUE)\r\n\t\t\t\t    (object ClassView \"Class\" \"Logical View::Schemas::S_0::ֵ\" @4\r\n\t\t\t\t\tShowCompartmentStereotypes \tTRUE\r\n\t\t\t\t\tIncludeAttribute \tTRUE\r\n\t\t\t\t\tIncludeOperation \tTRUE\r\n\t\t\t\t\tlocation   \t(400, 1248)\r\n\t\t\t\t\tfont       \t(object Font\r\n\t\t\t\t\t    size       \t10\r\n\t\t\t\t\t    face       \t\"Arial\"\r\n\t\t\t\t\t    bold       \tFALSE\r\n\t\t\t\t\t    italics    \tFALSE\r\n\t\t\t\t\t    underline  \tFALSE\r\n\t\t\t\t\t    strike     \tFALSE\r\n\t\t\t\t\t    color      \t0\r\n\t\t\t\t\t    default_color \tTRUE)\r\n\t\t\t\t\tlabel      \t(object ItemLabel\r\n\t\t\t\t\t    Parent_View \t@4\r\n\t\t\t\t\t    location   \t(89, 1158)\r\n\t\t\t\t\t    fill_color \t13434879\r\n\t\t\t\t\t    nlines     \t1\r\n\t\t\t\t\t    max_width  \t622\r\n\t\t\t\t\t    justify    \t0\r\n\t\t\t\t\t    label      \t\"ֵ\")\r\n\t\t\t\t\ticon       \t\"Table\"\r\n\t\t\t\t\ticon_style \t\"Decoration\"\r\n\t\t\t\t\tline_color \t3342489\r\n\t\t\t\t\tfill_color \t13434879\r\n\t\t\t\t\tquidu      \t\"5B1B57A8023E\"\r\n\t\t\t\t\tcompartment \t(object Compartment\r\n\t\t\t\t\t    Parent_View \t@4\r\n\t\t\t\t\t    location   \t(89, 1219)\r\n\t\t\t\t\t    font       \t(object Font\r\n\t\t\t\t\t\tsize       \t10\r\n\t\t\t\t\t\tface       \t\"Arial\"\r\n\t\t\t\t\t\tbold       \tFALSE\r\n\t\t\t\t\t\titalics    \tFALSE\r\n\t\t\t\t\t\tunderline  \tFALSE\r\n\t\t\t\t\t\tstrike     \tFALSE\r\n\t\t\t\t\t\tcolor      \t0\r\n\t\t\t\t\t\tdefault_color \tTRUE)\r\n\t\t\t\t\t    icon_style \t\"Icon\"\r\n\t\t\t\t\t    fill_color \t13434879\r\n\t\t\t\t\t    anchor     \t2\r\n\t\t\t\t\t    nlines     \t4\r\n\t\t\t\t\t    max_width  \t509)\r\n\t\t\t\t\twidth      \t640\r\n\t\t\t\t\theight     \t380\r\n\t\t\t\t\tannotation \t8\r\n\t\t\t\t\tautoResize \tTRUE)\r\n\t\t\t\t    (object ClassView \"Class\" \"Logical View::Schemas::S_0::Ʒ\" @5\r\n\t\t\t\t\tShowCompartmentStereotypes \tTRUE\r\n\t\t\t\t\tIncludeAttribute \tTRUE\r\n\t\t\t\t\tIncludeOperation \tTRUE\r\n\t\t\t\t\tlocation   \t(2176, 160)\r\n\t\t\t\t\tfont       \t(object Font\r\n\t\t\t\t\t    size       \t10\r\n\t\t\t\t\t    face       \t\"Arial\"\r\n\t\t\t\t\t    bold       \tFALSE\r\n\t\t\t\t\t    italics    \tFALSE\r\n\t\t\t\t\t    underline  \tFALSE\r\n\t\t\t\t\t    strike     \tFALSE\r\n\t\t\t\t\t    color      \t0\r\n\t\t\t\t\t    default_color \tTRUE)\r\n\t\t\t\t\tlabel      \t(object ItemLabel\r\n\t\t\t\t\t    Parent_View \t@5\r\n\t\t\t\t\t    location   \t(1845, 95)\r\n\t\t\t\t\t    fill_color \t13434879\r\n\t\t\t\t\t    nlines     \t1\r\n\t\t\t\t\t    max_width  \t662\r\n\t\t\t\t\t    justify    \t0\r\n\t\t\t\t\t    label      \t\"Ʒ\")\r\n\t\t\t\t\ticon       \t\"Table\"\r\n\t\t\t\t\ticon_style \t\"Decoration\"\r\n\t\t\t\t\tline_color \t3342489\r\n\t\t\t\t\tfill_color \t13434879\r\n\t\t\t\t\tquidu      \t\"5B1B59C80320\"\r\n\t\t\t\t\tcompartment \t(object Compartment\r\n\t\t\t\t\t    Parent_View \t@5\r\n\t\t\t\t\t    location   \t(1845, 156)\r\n\t\t\t\t\t    font       \t(object Font\r\n\t\t\t\t\t\tsize       \t10\r\n\t\t\t\t\t\tface       \t\"Arial\"\r\n\t\t\t\t\t\tbold       \tFALSE\r\n\t\t\t\t\t\titalics    \tFALSE\r\n\t\t\t\t\t\tunderline  \tFALSE\r\n\t\t\t\t\t\tstrike     \tFALSE\r\n\t\t\t\t\t\tcolor      \t0\r\n\t\t\t\t\t\tdefault_color \tTRUE)\r\n\t\t\t\t\t    icon_style \t\"Icon\"\r\n\t\t\t\t\t    fill_color \t13434879\r\n\t\t\t\t\t    anchor     \t2\r\n\t\t\t\t\t    nlines     \t3\r\n\t\t\t\t\t    max_width  \t537)\r\n\t\t\t\t\twidth      \t680\r\n\t\t\t\t\theight     \t330\r\n\t\t\t\t\tannotation \t8\r\n\t\t\t\t\tautoResize \tTRUE)\r\n\t\t\t\t    (object ClassView \"Class\" \"Logical View::Schemas::S_0::SKU-ֵ\" @6\r\n\t\t\t\t\tShowCompartmentStereotypes \tTRUE\r\n\t\t\t\t\tIncludeAttribute \tTRUE\r\n\t\t\t\t\tIncludeOperation \tTRUE\r\n\t\t\t\t\tlocation   \t(1296, 1248)\r\n\t\t\t\t\tfont       \t(object Font\r\n\t\t\t\t\t    size       \t10\r\n\t\t\t\t\t    face       \t\"Arial\"\r\n\t\t\t\t\t    bold       \tFALSE\r\n\t\t\t\t\t    italics    \tFALSE\r\n\t\t\t\t\t    underline  \tFALSE\r\n\t\t\t\t\t    strike     \tFALSE\r\n\t\t\t\t\t    color      \t0\r\n\t\t\t\t\t    default_color \tTRUE)\r\n\t\t\t\t\tlabel      \t(object ItemLabel\r\n\t\t\t\t\t    Parent_View \t@6\r\n\t\t\t\t\t    location   \t(959, 1183)\r\n\t\t\t\t\t    fill_color \t13434879\r\n\t\t\t\t\t    nlines     \t1\r\n\t\t\t\t\t    max_width  \t674\r\n\t\t\t\t\t    justify    \t0\r\n\t\t\t\t\t    label      \t\"SKU-ֵ\")\r\n\t\t\t\t\ticon       \t\"Table\"\r\n\t\t\t\t\ticon_style \t\"Decoration\"\r\n\t\t\t\t\tline_color \t3342489\r\n\t\t\t\t\tfill_color \t13434879\r\n\t\t\t\t\tquidu      \t\"5B1B5E01011A\"\r\n\t\t\t\t\tcompartment \t(object Compartment\r\n\t\t\t\t\t    Parent_View \t@6\r\n\t\t\t\t\t    location   \t(959, 1244)\r\n\t\t\t\t\t    font       \t(object Font\r\n\t\t\t\t\t\tsize       \t10\r\n\t\t\t\t\t\tface       \t\"Arial\"\r\n\t\t\t\t\t\tbold       \tFALSE\r\n\t\t\t\t\t\titalics    \tFALSE\r\n\t\t\t\t\t\tunderline  \tFALSE\r\n\t\t\t\t\t\tstrike     \tFALSE\r\n\t\t\t\t\t\tcolor      \t0\r\n\t\t\t\t\t\tdefault_color \tTRUE)\r\n\t\t\t\t\t    icon_style \t\"Icon\"\r\n\t\t\t\t\t    fill_color \t13434879\r\n\t\t\t\t\t    anchor     \t2\r\n\t\t\t\t\t    nlines     \t3\r\n\t\t\t\t\t    max_width  \t515)\r\n\t\t\t\t\twidth      \t692\r\n\t\t\t\t\theight     \t330\r\n\t\t\t\t\tannotation \t8\r\n\t\t\t\t\tautoResize \tTRUE)\r\n\t\t\t\t    (object ClassView \"Class\" \"Logical View::Schemas::S_0::SPU-\" @7\r\n\t\t\t\t\tShowCompartmentStereotypes \tTRUE\r\n\t\t\t\t\tIncludeAttribute \tTRUE\r\n\t\t\t\t\tIncludeOperation \tTRUE\r\n\t\t\t\t\tlocation   \t(400, 272)\r\n\t\t\t\t\tfont       \t(object Font\r\n\t\t\t\t\t    size       \t10\r\n\t\t\t\t\t    face       \t\"Arial\"\r\n\t\t\t\t\t    bold       \tFALSE\r\n\t\t\t\t\t    italics    \tFALSE\r\n\t\t\t\t\t    underline  \tFALSE\r\n\t\t\t\t\t    strike     \tFALSE\r\n\t\t\t\t\t    color      \t0\r\n\t\t\t\t\t    default_color \tTRUE)\r\n\t\t\t\t\tlabel      \t(object ItemLabel\r\n\t\t\t\t\t    Parent_View \t@7\r\n\t\t\t\t\t    location   \t(89, 207)\r\n\t\t\t\t\t    fill_color \t13434879\r\n\t\t\t\t\t    nlines     \t1\r\n\t\t\t\t\t    max_width  \t622\r\n\t\t\t\t\t    justify    \t0\r\n\t\t\t\t\t    label      \t\"SPU-\")\r\n\t\t\t\t\ticon       \t\"Table\"\r\n\t\t\t\t\ticon_style \t\"Decoration\"\r\n\t\t\t\t\tline_color \t3342489\r\n\t\t\t\t\tfill_color \t13434879\r\n\t\t\t\t\tquidu      \t\"5B1B5D7901E2\"\r\n\t\t\t\t\tcompartment \t(object Compartment\r\n\t\t\t\t\t    Parent_View \t@7\r\n\t\t\t\t\t    location   \t(89, 268)\r\n\t\t\t\t\t    font       \t(object Font\r\n\t\t\t\t\t\tsize       \t10\r\n\t\t\t\t\t\tface       \t\"Arial\"\r\n\t\t\t\t\t\tbold       \tFALSE\r\n\t\t\t\t\t\titalics    \tFALSE\r\n\t\t\t\t\t\tunderline  \tFALSE\r\n\t\t\t\t\t\tstrike     \tFALSE\r\n\t\t\t\t\t\tcolor      \t0\r\n\t\t\t\t\t\tdefault_color \tTRUE)\r\n\t\t\t\t\t    icon_style \t\"Icon\"\r\n\t\t\t\t\t    fill_color \t13434879\r\n\t\t\t\t\t    anchor     \t2\r\n\t\t\t\t\t    nlines     \t3\r\n\t\t\t\t\t    max_width  \t490)\r\n\t\t\t\t\twidth      \t640\r\n\t\t\t\t\theight     \t330\r\n\t\t\t\t\tannotation \t8\r\n\t\t\t\t\tautoResize \tTRUE)\r\n\t\t\t\t    (object ClassView \"Class\" \"Logical View::Schemas::S_0::SPU\" @8\r\n\t\t\t\t\tShowCompartmentStereotypes \tTRUE\r\n\t\t\t\t\tIncludeAttribute \tTRUE\r\n\t\t\t\t\tIncludeOperation \tTRUE\r\n\t\t\t\t\tlocation   \t(1184, 272)\r\n\t\t\t\t\tfont       \t(object Font\r\n\t\t\t\t\t    size       \t10\r\n\t\t\t\t\t    face       \t\"Arial\"\r\n\t\t\t\t\t    bold       \tFALSE\r\n\t\t\t\t\t    italics    \tFALSE\r\n\t\t\t\t\t    underline  \tFALSE\r\n\t\t\t\t\t    strike     \tFALSE\r\n\t\t\t\t\t    color      \t0\r\n\t\t\t\t\t    default_color \tTRUE)\r\n\t\t\t\t\tlabel      \t(object ItemLabel\r\n\t\t\t\t\t    Parent_View \t@8\r\n\t\t\t\t\t    location   \t(839, 182)\r\n\t\t\t\t\t    fill_color \t13434879\r\n\t\t\t\t\t    nlines     \t1\r\n\t\t\t\t\t    max_width  \t690\r\n\t\t\t\t\t    justify    \t0\r\n\t\t\t\t\t    label      \t\"SPU\")\r\n\t\t\t\t\ticon       \t\"Table\"\r\n\t\t\t\t\ticon_style \t\"Decoration\"\r\n\t\t\t\t\tline_color \t3342489\r\n\t\t\t\t\tfill_color \t13434879\r\n\t\t\t\t\tquidu      \t\"5B1AA9510260\"\r\n\t\t\t\t\tcompartment \t(object Compartment\r\n\t\t\t\t\t    Parent_View \t@8\r\n\t\t\t\t\t    location   \t(839, 243)\r\n\t\t\t\t\t    font       \t(object Font\r\n\t\t\t\t\t\tsize       \t10\r\n\t\t\t\t\t\tface       \t\"Arial\"\r\n\t\t\t\t\t\tbold       \tFALSE\r\n\t\t\t\t\t\titalics    \tFALSE\r\n\t\t\t\t\t\tunderline  \tFALSE\r\n\t\t\t\t\t\tstrike     \tFALSE\r\n\t\t\t\t\t\tcolor      \t0\r\n\t\t\t\t\t\tdefault_color \tTRUE)\r\n\t\t\t\t\t    icon_style \t\"Icon\"\r\n\t\t\t\t\t    fill_color \t13434879\r\n\t\t\t\t\t    anchor     \t2\r\n\t\t\t\t\t    nlines     \t4\r\n\t\t\t\t\t    max_width  \t559)\r\n\t\t\t\t\twidth      \t708\r\n\t\t\t\t\theight     \t380\r\n\t\t\t\t\tannotation \t8\r\n\t\t\t\t\tautoResize \tTRUE)\r\n\t\t\t\t    (object ClassView \"Class\" \"Logical View::Schemas::S_0::\" @9\r\n\t\t\t\t\tShowCompartmentStereotypes \tTRUE\r\n\t\t\t\t\tIncludeAttribute \tTRUE\r\n\t\t\t\t\tIncludeOperation \tTRUE\r\n\t\t\t\t\tlocation   \t(2160, 960)\r\n\t\t\t\t\tfont       \t(object Font\r\n\t\t\t\t\t    size       \t10\r\n\t\t\t\t\t    face       \t\"Arial\"\r\n\t\t\t\t\t    bold       \tFALSE\r\n\t\t\t\t\t    italics    \tFALSE\r\n\t\t\t\t\t    underline  \tFALSE\r\n\t\t\t\t\t    strike     \tFALSE\r\n\t\t\t\t\t    color      \t0\r\n\t\t\t\t\t    default_color \tTRUE)\r\n\t\t\t\t\tlabel      \t(object ItemLabel\r\n\t\t\t\t\t    Parent_View \t@9\r\n\t\t\t\t\t    location   \t(1815, 895)\r\n\t\t\t\t\t    fill_color \t13434879\r\n\t\t\t\t\t    nlines     \t1\r\n\t\t\t\t\t    max_width  \t690\r\n\t\t\t\t\t    justify    \t0\r\n\t\t\t\t\t    label      \t\"\")\r\n\t\t\t\t\ticon       \t\"Table\"\r\n\t\t\t\t\ticon_style \t\"Decoration\"\r\n\t\t\t\t\tline_color \t3342489\r\n\t\t\t\t\tfill_color \t13434879\r\n\t\t\t\t\tquidu      \t\"5B1B5E8F0382\"\r\n\t\t\t\t\tcompartment \t(object Compartment\r\n\t\t\t\t\t    Parent_View \t@9\r\n\t\t\t\t\t    location   \t(1815, 956)\r\n\t\t\t\t\t    font       \t(object Font\r\n\t\t\t\t\t\tsize       \t10\r\n\t\t\t\t\t\tface       \t\"Arial\"\r\n\t\t\t\t\t\tbold       \tFALSE\r\n\t\t\t\t\t\titalics    \tFALSE\r\n\t\t\t\t\t\tunderline  \tFALSE\r\n\t\t\t\t\t\tstrike     \tFALSE\r\n\t\t\t\t\t\tcolor      \t0\r\n\t\t\t\t\t\tdefault_color \tTRUE)\r\n\t\t\t\t\t    icon_style \t\"Icon\"\r\n\t\t\t\t\t    fill_color \t13434879\r\n\t\t\t\t\t    anchor     \t2\r\n\t\t\t\t\t    nlines     \t3\r\n\t\t\t\t\t    max_width  \t526)\r\n\t\t\t\t\twidth      \t708\r\n\t\t\t\t\theight     \t330\r\n\t\t\t\t\tannotation \t8\r\n\t\t\t\t\tautoResize \tTRUE)\r\n\t\t\t\t    (object ClassView \"Class\" \"Logical View::Schemas::S_0::sku_ֵ\" @10\r\n\t\t\t\t\tShowCompartmentStereotypes \tTRUE\r\n\t\t\t\t\tIncludeAttribute \tTRUE\r\n\t\t\t\t\tIncludeOperation \tTRUE\r\n\t\t\t\t\tlocation   \t(2176, 1328)\r\n\t\t\t\t\tfont       \t(object Font\r\n\t\t\t\t\t    size       \t10\r\n\t\t\t\t\t    face       \t\"Arial\"\r\n\t\t\t\t\t    bold       \tFALSE\r\n\t\t\t\t\t    italics    \tFALSE\r\n\t\t\t\t\t    underline  \tFALSE\r\n\t\t\t\t\t    strike     \tFALSE\r\n\t\t\t\t\t    color      \t0\r\n\t\t\t\t\t    default_color \tTRUE)\r\n\t\t\t\t\tlabel      \t(object ItemLabel\r\n\t\t\t\t\t    Parent_View \t@10\r\n\t\t\t\t\t    location   \t(1812, 1263)\r\n\t\t\t\t\t    fill_color \t13434879\r\n\t\t\t\t\t    nlines     \t1\r\n\t\t\t\t\t    max_width  \t728\r\n\t\t\t\t\t    justify    \t0\r\n\t\t\t\t\t    label      \t\"sku_ֵ\")\r\n\t\t\t\t\ticon       \t\"Table\"\r\n\t\t\t\t\ticon_style \t\"Decoration\"\r\n\t\t\t\t\tline_color \t3342489\r\n\t\t\t\t\tfill_color \t13434879\r\n\t\t\t\t\tquidu      \t\"5B1B5ECD0127\"\r\n\t\t\t\t\tcompartment \t(object Compartment\r\n\t\t\t\t\t    Parent_View \t@10\r\n\t\t\t\t\t    location   \t(1812, 1324)\r\n\t\t\t\t\t    font       \t(object Font\r\n\t\t\t\t\t\tsize       \t10\r\n\t\t\t\t\t\tface       \t\"Arial\"\r\n\t\t\t\t\t\tbold       \tFALSE\r\n\t\t\t\t\t\titalics    \tFALSE\r\n\t\t\t\t\t\tunderline  \tFALSE\r\n\t\t\t\t\t\tstrike     \tFALSE\r\n\t\t\t\t\t\tcolor      \t0\r\n\t\t\t\t\t\tdefault_color \tTRUE)\r\n\t\t\t\t\t    icon_style \t\"Icon\"\r\n\t\t\t\t\t    fill_color \t13434879\r\n\t\t\t\t\t    anchor     \t2\r\n\t\t\t\t\t    nlines     \t3\r\n\t\t\t\t\t    max_width  \t559)\r\n\t\t\t\t\twidth      \t746\r\n\t\t\t\t\theight     \t330\r\n\t\t\t\t\tannotation \t8\r\n\t\t\t\t\tautoResize \tTRUE)\r\n\t\t\t\t    (object ClassView \"Class\" \"Logical View::Schemas::S_0::ֵ\" @11\r\n\t\t\t\t\tShowCompartmentStereotypes \tTRUE\r\n\t\t\t\t\tIncludeAttribute \tTRUE\r\n\t\t\t\t\tIncludeOperation \tTRUE\r\n\t\t\t\t\tlocation   \t(2976, 1312)\r\n\t\t\t\t\tfont       \t(object Font\r\n\t\t\t\t\t    size       \t10\r\n\t\t\t\t\t    face       \t\"Arial\"\r\n\t\t\t\t\t    bold       \tFALSE\r\n\t\t\t\t\t    italics    \tFALSE\r\n\t\t\t\t\t    underline  \tFALSE\r\n\t\t\t\t\t    strike     \tFALSE\r\n\t\t\t\t\t    color      \t0\r\n\t\t\t\t\t    default_color \tTRUE)\r\n\t\t\t\t\tlabel      \t(object ItemLabel\r\n\t\t\t\t\t    Parent_View \t@11\r\n\t\t\t\t\t    location   \t(2645, 1247)\r\n\t\t\t\t\t    fill_color \t13434879\r\n\t\t\t\t\t    nlines     \t1\r\n\t\t\t\t\t    max_width  \t662\r\n\t\t\t\t\t    justify    \t0\r\n\t\t\t\t\t    label      \t\"ֵ\")\r\n\t\t\t\t\ticon       \t\"Table\"\r\n\t\t\t\t\ticon_style \t\"Decoration\"\r\n\t\t\t\t\tline_color \t3342489\r\n\t\t\t\t\tfill_color \t13434879\r\n\t\t\t\t\tquidu      \t\"5B1B5F09010A\"\r\n\t\t\t\t\tcompartment \t(object Compartment\r\n\t\t\t\t\t    Parent_View \t@11\r\n\t\t\t\t\t    location   \t(2645, 1308)\r\n\t\t\t\t\t    font       \t(object Font\r\n\t\t\t\t\t\tsize       \t10\r\n\t\t\t\t\t\tface       \t\"Arial\"\r\n\t\t\t\t\t\tbold       \tFALSE\r\n\t\t\t\t\t\titalics    \tFALSE\r\n\t\t\t\t\t\tunderline  \tFALSE\r\n\t\t\t\t\t\tstrike     \tFALSE\r\n\t\t\t\t\t\tcolor      \t0\r\n\t\t\t\t\t\tdefault_color \tTRUE)\r\n\t\t\t\t\t    icon_style \t\"Icon\"\r\n\t\t\t\t\t    fill_color \t13434879\r\n\t\t\t\t\t    anchor     \t2\r\n\t\t\t\t\t    nlines     \t3\r\n\t\t\t\t\t    max_width  \t504)\r\n\t\t\t\t\twidth      \t680\r\n\t\t\t\t\theight     \t330\r\n\t\t\t\t\tannotation \t8\r\n\t\t\t\t\tautoResize \tTRUE))))))\r\n\t\tlogical_presentations \t(list unit_reference_list)))\r\n\tlogical_presentations \t(list unit_reference_list\r\n\t    (object ClassDiagram \"Package Hierarchy\"\r\n\t\tquid       \t\"39C9261001B8\"\r\n\t\ttitle      \t\"Package Hierarchy\"\r\n\t\tzoom       \t100\r\n\t\tmax_height \t28350\r\n\t\tmax_width  \t21600\r\n\t\torigin_x   \t0\r\n\t\torigin_y   \t0\r\n\t\titems      \t(list diagram_item_list\r\n\t\t    (object CategoryView \"Logical View::java\" @12\r\n\t\t\tlocation   \t(208, 272)\r\n\t\t\tfont       \t(object Font\r\n\t\t\t    size       \t10\r\n\t\t\t    face       \t\"Arial\"\r\n\t\t\t    bold       \tFALSE\r\n\t\t\t    italics    \tFALSE\r\n\t\t\t    underline  \tFALSE\r\n\t\t\t    strike     \tFALSE\r\n\t\t\t    color      \t0\r\n\t\t\t    default_color \tTRUE)\r\n\t\t\tlabel      \t(object ItemLabel\r\n\t\t\t    Parent_View \t@12\r\n\t\t\t    location   \t(64, 188)\r\n\t\t\t    nlines     \t2\r\n\t\t\t    max_width  \t288\r\n\t\t\t    justify    \t0\r\n\t\t\t    label      \t\"java\")\r\n\t\t\ticon_style \t\"Icon\"\r\n\t\t\tline_color \t3342489\r\n\t\t\tfill_color \t16777215\r\n\t\t\tquidu      \t\"39C92661003B\"\r\n\t\t\twidth      \t300\r\n\t\t\theight     \t180)\r\n\t\t    (object CategoryView \"Logical View::javax\" @13\r\n\t\t\tlocation   \t(656, 272)\r\n\t\t\tfont       \t(object Font\r\n\t\t\t    size       \t10\r\n\t\t\t    face       \t\"Arial\"\r\n\t\t\t    bold       \tFALSE\r\n\t\t\t    italics    \tFALSE\r\n\t\t\t    underline  \tFALSE\r\n\t\t\t    strike     \tFALSE\r\n\t\t\t    color      \t0\r\n\t\t\t    default_color \tTRUE)\r\n\t\t\tlabel      \t(object ItemLabel\r\n\t\t\t    Parent_View \t@13\r\n\t\t\t    location   \t(512, 188)\r\n\t\t\t    nlines     \t2\r\n\t\t\t    max_width  \t288\r\n\t\t\t    justify    \t0\r\n\t\t\t    label      \t\"javax\")\r\n\t\t\ticon_style \t\"Icon\"\r\n\t\t\tline_color \t3342489\r\n\t\t\tfill_color \t16777215\r\n\t\t\tquidu      \t\"39C926610018\"\r\n\t\t\twidth      \t300\r\n\t\t\theight     \t180)\r\n\t\t    (object CategoryView \"Logical View::org\" @14\r\n\t\t\tlocation   \t(1104, 272)\r\n\t\t\tfont       \t(object Font\r\n\t\t\t    size       \t10\r\n\t\t\t    face       \t\"Arial\"\r\n\t\t\t    bold       \tFALSE\r\n\t\t\t    italics    \tFALSE\r\n\t\t\t    underline  \tFALSE\r\n\t\t\t    strike     \tFALSE\r\n\t\t\t    color      \t0\r\n\t\t\t    default_color \tTRUE)\r\n\t\t\tlabel      \t(object ItemLabel\r\n\t\t\t    Parent_View \t@14\r\n\t\t\t    location   \t(960, 188)\r\n\t\t\t    nlines     \t2\r\n\t\t\t    max_width  \t288\r\n\t\t\t    justify    \t0\r\n\t\t\t    label      \t\"org\")\r\n\t\t\ticon_style \t\"Icon\"\r\n\t\t\tline_color \t3342489\r\n\t\t\tfill_color \t16777215\r\n\t\t\tquidu      \t\"39C92693036F\"\r\n\t\t\twidth      \t300\r\n\t\t\theight     \t180)))\r\n\t    (object ClassDiagram \"Legend\"\r\n\t\tquid       \t\"39CD51840059\"\r\n\t\ttitle      \t\"Legend\"\r\n\t\tzoom       \t100\r\n\t\tmax_height \t28350\r\n\t\tmax_width  \t21600\r\n\t\torigin_x   \t0\r\n\t\torigin_y   \t0\r\n\t\titems      \t(list diagram_item_list\r\n\t\t    (object NoteView @15\r\n\t\t\tlocation   \t(224, 624)\r\n\t\t\tfont       \t(object Font\r\n\t\t\t    size       \t10\r\n\t\t\t    face       \t\"Arial\"\r\n\t\t\t    bold       \tFALSE\r\n\t\t\t    italics    \tFALSE\r\n\t\t\t    underline  \tFALSE\r\n\t\t\t    strike     \tFALSE\r\n\t\t\t    color      \t0\r\n\t\t\t    default_color \tTRUE)\r\n\t\t\tline_color \t3342489\r\n\t\t\tfill_color \t12632256\r\n\t\t\twidth      \t300\r\n\t\t\theight     \t132)\r\n\t\t    (object NoteView @16\r\n\t\t\tlocation   \t(704, 624)\r\n\t\t\tfont       \t(object Font\r\n\t\t\t    size       \t10\r\n\t\t\t    face       \t\"Arial\"\r\n\t\t\t    bold       \tFALSE\r\n\t\t\t    italics    \tFALSE\r\n\t\t\t    underline  \tFALSE\r\n\t\t\t    strike     \tFALSE\r\n\t\t\t    color      \t0\r\n\t\t\t    default_color \tTRUE)\r\n\t\t\tline_color \t3342489\r\n\t\t\tfill_color \t8421631\r\n\t\t\twidth      \t300\r\n\t\t\theight     \t132)\r\n\t\t    (object NoteView @17\r\n\t\t\tlocation   \t(1200, 624)\r\n\t\t\tfont       \t(object Font\r\n\t\t\t    size       \t10\r\n\t\t\t    face       \t\"Arial\"\r\n\t\t\t    bold       \tFALSE\r\n\t\t\t    italics    \tFALSE\r\n\t\t\t    underline  \tFALSE\r\n\t\t\t    strike     \tFALSE\r\n\t\t\t    color      \t0\r\n\t\t\t    default_color \tTRUE)\r\n\t\t\tline_color \t3342489\r\n\t\t\tfill_color \t12615680\r\n\t\t\twidth      \t300\r\n\t\t\theight     \t132)\r\n\t\t    (object NoteView @18\r\n\t\t\tlocation   \t(1664, 624)\r\n\t\t\tfont       \t(object Font\r\n\t\t\t    size       \t10\r\n\t\t\t    face       \t\"Arial\"\r\n\t\t\t    bold       \tFALSE\r\n\t\t\t    italics    \tFALSE\r\n\t\t\t    underline  \tFALSE\r\n\t\t\t    strike     \tFALSE\r\n\t\t\t    color      \t0\r\n\t\t\t    default_color \tTRUE)\r\n\t\t\tline_color \t3342489\r\n\t\t\tfill_color \t16777215\r\n\t\t\twidth      \t300\r\n\t\t\theight     \t132)\r\n\t\t    (object Label @19\r\n\t\t\tlocation   \t(81, 369)\r\n\t\t\tfont       \t(object Font\r\n\t\t\t    size       \t12\r\n\t\t\t    face       \t\"Arial\"\r\n\t\t\t    bold       \tTRUE\r\n\t\t\t    italics    \tFALSE\r\n\t\t\t    underline  \tFALSE\r\n\t\t\t    strike     \tFALSE\r\n\t\t\t    color      \t0\r\n\t\t\t    default_color \tTRUE)\r\n\t\t\tnlines     \t1\r\n\t\t\tmax_width  \t1163\r\n\t\t\tlabel      \t\"J2EE: Java 2 Platform, Enterprise Edition - v 1.2.1\")\r\n\t\t    (object Label @20\r\n\t\t\tlocation   \t(96, 608)\r\n\t\t\tfont       \t(object Font\r\n\t\t\t    size       \t10\r\n\t\t\t    face       \t\"Arial\"\r\n\t\t\t    bold       \tFALSE\r\n\t\t\t    italics    \tFALSE\r\n\t\t\t    underline  \tFALSE\r\n\t\t\t    strike     \tFALSE\r\n\t\t\t    color      \t0\r\n\t\t\t    default_color \tTRUE)\r\n\t\t\tnlines     \t1\r\n\t\t\tmax_width  \t268\r\n\t\t\tlabel      \t\"Abstract Class\")\r\n\t\t    (object Label @21\r\n\t\t\tlocation   \t(592, 608)\r\n\t\t\tfont       \t(object Font\r\n\t\t\t    size       \t10\r\n\t\t\t    face       \t\"Arial\"\r\n\t\t\t    bold       \tFALSE\r\n\t\t\t    italics    \tFALSE\r\n\t\t\t    underline  \tFALSE\r\n\t\t\t    strike     \tFALSE\r\n\t\t\t    color      \t0\r\n\t\t\t    default_color \tTRUE)\r\n\t\t\tnlines     \t1\r\n\t\t\tmax_width  \t225\r\n\t\t\tlabel      \t\"Final Class\")\r\n\t\t    (object Label @22\r\n\t\t\tlocation   \t(1104, 608)\r\n\t\t\tfont       \t(object Font\r\n\t\t\t    size       \t10\r\n\t\t\t    face       \t\"Arial\"\r\n\t\t\t    bold       \tFALSE\r\n\t\t\t    italics    \tFALSE\r\n\t\t\t    underline  \tFALSE\r\n\t\t\t    strike     \tFALSE\r\n\t\t\t    color      \t0\r\n\t\t\t    default_color \tTRUE)\r\n\t\t\tnlines     \t1\r\n\t\t\tmax_width  \t206\r\n\t\t\tlabel      \t\"Interface\")\r\n\t\t    (object Label @23\r\n\t\t\tlocation   \t(1552, 608)\r\n\t\t\tfont       \t(object Font\r\n\t\t\t    size       \t10\r\n\t\t\t    face       \t\"Arial\"\r\n\t\t\t    bold       \tFALSE\r\n\t\t\t    italics    \tFALSE\r\n\t\t\t    underline  \tFALSE\r\n\t\t\t    strike     \tFALSE\r\n\t\t\t    color      \t0\r\n\t\t\t    default_color \tTRUE)\r\n\t\t\tnlines     \t1\r\n\t\t\tmax_width  \t144\r\n\t\t\tlabel      \t\"Class\")))))\r\n    root_subsystem \t(object SubSystem \"Component View\"\r\n\tquid       \t\"39C9260C00D7\"\r\n\tphysical_models \t(list unit_reference_list\r\n\t    (object SubSystem \"javax\"\r\n\t\tis_unit    \tTRUE\r\n\t\tis_loaded  \tFALSE\r\n\t\tfile_name  \t\"$FRAMEWORK_PATH\\\\Shared Components\\\\j2ee_javax.sub\"\r\n\t\tquid       \t\"39C9266003D8\")\r\n\t    (object SubSystem \"java\"\r\n\t\tis_unit    \tTRUE\r\n\t\tis_loaded  \tFALSE\r\n\t\tfile_name  \t\"$FRAMEWORK_PATH\\\\Shared Components\\\\j2se_1_3_java.sub\"\r\n\t\tquid       \t\"39C92661002C\")\r\n\t    (object SubSystem \"org\"\r\n\t\tis_unit    \tTRUE\r\n\t\tis_loaded  \tFALSE\r\n\t\tfile_name  \t\"$FRAMEWORK_PATH\\\\Shared Components\\\\j2se_1_3_org.sub\"\r\n\t\tquid       \t\"39C9268C01C9\")\r\n\t    (object SubSystem \"DB_0\"\r\n\t\tquid       \t\"5B1AA85B0069\"\r\n\t\tphysical_models \t(list unit_reference_list\r\n\t\t    (object module \"DB_0\" \"NotAModuleType\" \"NotAModulePart\"\r\n\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\tvalue      \tTRUE)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"IsDatabase\"\r\n\t\t\t\tvalue      \tTRUE)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\tvalue      \t\"DB_0\")\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\tvalue      \t\"\")\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"Location\"\r\n\t\t\t\tvalue      \t\"\")\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"TargetDatabase\"\r\n\t\t\t\tvalue      \t\"Oracle 9i\"))\r\n\t\t\tquid       \t\"5B1AA85B006B\"\r\n\t\t\tstereotype \t\"Database\"\r\n\t\t\tvisible_modules \t(list dependency_list\r\n\t\t\t    (object Module_Visibility_Relationship\r\n\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\tvalue      \t\"True\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"IsTableSpaceDependency\"\r\n\t\t\t\t\tvalue      \t\"True\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\tvalue      \t\"\"))\r\n\t\t\t\tquid       \t\"5B1AA93E014D\"\r\n\t\t\t\tsupplier   \t\"Component View::DB_0::TSP_0\"\r\n\t\t\t\tquidu      \t\"5B1AA93E0140\"\r\n\t\t\t\tsupplier_is_spec \tTRUE))\r\n\t\t\tlanguage   \t\"Data Modeler\")\r\n\t\t    (object module \"TSP_0\" \"NotAModuleType\" \"NotAModulePart\"\r\n\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\tvalue      \tTRUE)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"IsTableSpace\"\r\n\t\t\t\tvalue      \tTRUE)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\tvalue      \t\"TSP_0\")\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\tvalue      \t\"\")\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"DatabaseId\"\r\n\t\t\t\tvalue      \t\"5B1AA85B006B\")\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"IsDefault\"\r\n\t\t\t\tvalue      \t\"False\")\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"BufferPool\"\r\n\t\t\t\tvalue      \t\"\")\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"ExtentSize\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"PrefetchSize\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"PageSize\"\r\n\t\t\t\tvalue      \t0)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"TableSpaceType\"\r\n\t\t\t\tvalue      \t\"Permanent\")\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"ManagedBy\"\r\n\t\t\t\tvalue      \t\"Database\")\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"ContainerList\"\r\n\t\t\t\tvalue      \t\"\"))\r\n\t\t\tquid       \t\"5B1AA93E0140\"\r\n\t\t\tstereotype \t\"Tablespace\"\r\n\t\t\tlanguage   \t\"Data Modeler\"))\r\n\t\tphysical_presentations \t(list unit_reference_list)))\r\n\tphysical_presentations \t(list unit_reference_list\r\n\t    (object Module_Diagram \"Main\"\r\n\t\tquid       \t\"39C9261001B6\"\r\n\t\ttitle      \t\"Main\"\r\n\t\tzoom       \t100\r\n\t\tmax_height \t28350\r\n\t\tmax_width  \t21600\r\n\t\torigin_x   \t0\r\n\t\torigin_y   \t0\r\n\t\titems      \t(list diagram_item_list)))\r\n\tcategory   \t\"Logical View\"\r\n\tquidu      \t\"5B1AA7B60127\")\r\n    process_structure \t(object Processes\r\n\tquid       \t\"39C9260C00D8\"\r\n\tProcsNDevs \t(list\r\n\t    (object Process_Diagram \"Deployment View\"\r\n\t\tquid       \t\"39C9260C00DA\"\r\n\t\ttitle      \t\"Deployment View\"\r\n\t\tzoom       \t100\r\n\t\tmax_height \t28350\r\n\t\tmax_width  \t21600\r\n\t\torigin_x   \t0\r\n\t\torigin_y   \t0\r\n\t\titems      \t(list diagram_item_list))))\r\n    properties \t(object Properties\r\n\tattributes \t(list Attribute_Set\r\n\t    (object Attribute\r\n\t\ttool       \t\"CORBA\"\r\n\t\tname       \t\"propertyId\"\r\n\t\tvalue      \t\"809135966\")\r\n\t    (object Attribute\r\n\t\ttool       \t\"CORBA\"\r\n\t\tname       \t\"default__Project\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"CreateMissingDirectories\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"Editor\"\r\n\t\t\tvalue      \t(\"EditorType\" 100))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"IncludePath\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"StopOnError\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"EditorType\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"CORBA\"\r\n\t\t\t\tname       \t\"BuiltIn\"\r\n\t\t\t\tvalue      \t100)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"CORBA\"\r\n\t\t\t\tname       \t\"WindowsShell\"\r\n\t\t\t\tvalue      \t101)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"PathSeparator\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"CORBA\"\r\n\t\tname       \t\"default__Class\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"ArrayDimensions\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"ConstValue\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"ImplementationType\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"CORBA\"\r\n\t\tname       \t\"default__Module-Spec\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"AdditionalIncludes\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"CmIdentification\"\r\n\t\t\tvalue      \t(value Text \"  %X% %Q% %Z% %W%\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"CopyrightNotice\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"InclusionProtectionSymbol\"\r\n\t\t\tvalue      \t\"AUTO GENERATE\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"CORBA\"\r\n\t\tname       \t\"default__Module-Body\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"AdditionalIncludes\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"CmIdentification\"\r\n\t\t\tvalue      \t(value Text \"  %X% %Q% %Z% %W%\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"CopyrightNotice\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"InclusionProtectionSymbol\"\r\n\t\t\tvalue      \t\"AUTO GENERATE\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"CORBA\"\r\n\t\tname       \t\"default__Operation\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"Context\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"OperationIsOneWay\"\r\n\t\t\tvalue      \tFALSE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"CORBA\"\r\n\t\tname       \t\"default__Attribute\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"ArrayDimensions\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"CaseSpecifier\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"IsReadOnly\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"Order\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"CORBA\"\r\n\t\tname       \t\"default__Role\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"ArrayDimensions\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"CaseSpecifier\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"GenerateForwardReference\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"IsReadOnly\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"Order\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"BoundedRoleType\"\r\n\t\t\tvalue      \t(\"AssocTypeSet\" 47))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"AssocTypeSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"CORBA\"\r\n\t\t\t\tname       \t\"Array\"\r\n\t\t\t\tvalue      \t24)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"CORBA\"\r\n\t\t\t\tname       \t\"Sequence\"\r\n\t\t\t\tvalue      \t47)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"CORBA\"\r\n\t\tname       \t\"default__Uses\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"GenerateForwardReference\"\r\n\t\t\tvalue      \tFALSE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"CORBA\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"Data Modeler\"\r\n\t\tname       \t\"propertyId\"\r\n\t\tvalue      \t\"809135966\")\r\n\t    (object Attribute\r\n\t\ttool       \t\"Data Modeler\"\r\n\t\tname       \t\"default__Project\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"project\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"TableCounter\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DomainCounter\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"SPPackageCounter\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"TriggerCounter\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IndexCounter\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ConstraintCounter\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"StoreProcedureCounter\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"PrimaryKeyCounter\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ForeignKeyCounter\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"TablePrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DomainPrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"TriggerPrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IndexPrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ConstraintPrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"StoreProcedurePrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"PrimaryKeyPrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ForeignKeyPrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ViewCounter\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"JoinCounter\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"TableSpaceCounter\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"cONTAINERCounter\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ViewPrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"TableSpacePrefix\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Data Modeler\"\r\n\t\tname       \t\"default__Module-Spec\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"dmItem\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DMName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsDatabase\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"TargetDatabase\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"Location\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsTableSpace\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"TableSpaceType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsDeault\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"BufferPool\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ExtentSize\"\r\n\t\t\tvalue      \t1)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"PrefetchSize\"\r\n\t\t\tvalue      \t1)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"PageSize\"\r\n\t\t\tvalue      \t4)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ManagedBy\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ContainerList\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Data Modeler\"\r\n\t\tname       \t\"default__Category\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"dmItem\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DMName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"dmSchema\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"dmDomainPackage\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsSchema\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsDomainPackage\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsRootSchema\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsRootDomainPackage\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsSchemaPackage\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DatabaseID\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DBMS\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Data Modeler\"\r\n\t\tname       \t\"default__Class\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"dmItem\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DMName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsTable\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsView\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsDomain\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsSPPackage\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"Synonymns\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"TableSpace\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"SourceId\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"SourceType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"SelectClause\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsUpdatable\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"CheckOption\"\r\n\t\t\tvalue      \t\"None\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"PersistToServer\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"TableSpaceID\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"CorrelationName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsUpdateable\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsSnapShot\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsDistinct\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsPackage\"\r\n\t\t\tvalue      \tFALSE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Data Modeler\"\r\n\t\tname       \t\"default__Attribute\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"dmItem\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DMName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"Ordinal\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsIdentity\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsUnique\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"NullsAllowed\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DataTypeName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"Length\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"Scale\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ColumnType\"\r\n\t\t\tvalue      \t\"Native\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ForBitData\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DefaultValue\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"SourceId\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"SourceType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"OID\"\r\n\t\t\tvalue      \tFALSE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Data Modeler\"\r\n\t\tname       \t\"default__Association\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"dmItem\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DMName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsRelationship\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"SourceId\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"SourceType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"RIMethod\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ParentUpdateRule\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ParentUpdateRuleName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ParentDeleteRule\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ParentDeleteRuleName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ChildInsertRestrict\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ChildInsertRestrictName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ChildMultiplicity\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ChildMultiplicityName\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Data Modeler\"\r\n\t\tname       \t\"default__Role\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"dmItem\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DMName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ConstraintName\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Data Modeler\"\r\n\t\tname       \t\"default__Operation\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"dmItem\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DMName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsConstraint\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ConstraintType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsIndex\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsTrigger\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsStoredProcedure\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsCluster\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"TableSpace\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"FillFactor\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"KeyList\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"CheckPredicate\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsUnique\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DeferalMode\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"InitialCheckTime\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"TriggerType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsInsertEvent\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsUpdateEvent\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsDeleteEvent\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"RefOldTable\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"RefNewTable\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"RefOldRow\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"RefNewRow\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsRow\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"WhenClause\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"Language\"\r\n\t\t\tvalue      \t\"SQL\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ProcType\"\r\n\t\t\tvalue      \t\"Procedure\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsDeterministic\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ParameterStyle\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ReturnedNull\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ExternalName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ReturnTypeName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"Length\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"Scale\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ForBitData\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DefaultValue\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Data Modeler\"\r\n\t\tname       \t\"default__Parameter\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"dmItem\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DMName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsInParameter\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsOutParameter\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"Ordinal\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DataTypeName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"Length\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"Scale\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ForBitData\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DefaultValue\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"OperationID\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Data Modeler\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"Data Modeler Communicator\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"framework\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"Java\"\r\n\t\tname       \t\"propertyId\"\r\n\t\tvalue      \t\"809135966\")\r\n\t    (object Attribute\r\n\t\ttool       \t\"Java\"\r\n\t\tname       \t\"default__Project\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"RootDir\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"CreateMissingDirectories\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"StopOnError\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"UsePrefixes\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"AutoSync\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ShowCodegenDlg\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"JavadocDefaultAuthor\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"JavadocDefaultVersion\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"JavadocDefaultSince\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"JavadocNumAsterisks\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"MaxNumChars\"\r\n\t\t\tvalue      \t80)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Editor\"\r\n\t\t\tvalue      \t(\"EditorType\" 100))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"VM\"\r\n\t\t\tvalue      \t(\"VMType\" 200))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ClassPath\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EditorType\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"BuiltIn\"\r\n\t\t\t\tvalue      \t100)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"VMType\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Sun\"\r\n\t\t\t\tvalue      \t200)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"InstanceVariablePrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ClassVariablePrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"DefaultAttributeDataType\"\r\n\t\t\tvalue      \t\"int\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"DefaultOperationReturnType\"\r\n\t\t\tvalue      \t\"void\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"NoClassCustomDlg\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GlobalImports\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"OpenBraceClassStyle\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"OpenBraceMethodStyle\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"UseTabs\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"UseSpaces\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"SpacingItems\"\r\n\t\t\tvalue      \t3)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"RoseDefaultCommentStyle\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"AsteriskCommentStyle\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"JavaCommentStyle\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"JavadocAuthor\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"JavadocSince\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"JavadocVersion\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"FundamentalType\"\r\n\t\t\tvalue      \t\"boolean; char; byte; short; int; long; float; double; Boolean; Byte; Character; Double; Float; Integer; Long; Object; Short; String; StringBuffer; Void; java.math.BigDecimal; java.math.BigInteger; java.sql.Date; java.sql.Time; java.sql.Timestamp; java.util.AbstractCollection; java.util.AbstractList;java.util.AbstractMap; java.util.AbstractSequentialList; java.util.AbstractSet; java.util.ArrayList; java.util.Arrays; java.util.BitSet; java.util.Calendar; java.util.Collections; java.util.Date; java.util.Date; java.util.Dictionary; java.util.EventObject; java.util.GregorianCalendar; java.util.HashMap; java.util.HashSet; java.util.Hashtable; java.util.LinkedList; java.util.ListResourceBundle; java.util.Locale; java.util.Observable; java.util.Properties; java.util.PropertyPermission; java.util.PropertyResourceBundle; java.util.Random; java.util.ResourceBundle; java.util.SimpleTimeZone; java.util.Stack; java.util.StringTokenizer; java.util.Timer; java.util.TimerTask; java.util.TimeZone; java.util.TreeMap; java.util.TreeSet; java.util.Vector; java.util.WeakHashMap\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"NotShowRoseIDDlg\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateRoseID\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateDefaultJ2EEJavadoc\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateDefaultReturnLine\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"UserDefineJavaDocTags\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ReferenceClasspath\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"VAJavaWorkingFolder\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"BeanPrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"BeanSuffix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"RemotePrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"RemoteSuffix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"HomePrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"HomeSuffix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"LocalPrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"LocalSuffix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"LocalHomePrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"LocalHomeSuffix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"PrimaryKeyPrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"PrimaryKeySuffix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBDTDLocation\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletDTDLocation\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"DefaultEJBVersion\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"DefaultServletVersion\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"SourceControl\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"SCCSelected\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"SCCProjectSourceRoot\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"SCCProjectName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"SCCComment\"\r\n\t\t\tvalue      \tFALSE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Java\"\r\n\t\tname       \t\"default__Class\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Final\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Static\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateDefaultConstructor\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ConstructorIs\"\r\n\t\t\tvalue      \t(\"Ctor_Set\" 62))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Ctor_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"public\"\r\n\t\t\t\tvalue      \t62)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"protected\"\r\n\t\t\t\tvalue      \t63)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"private\"\r\n\t\t\t\tvalue      \t64)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"package\"\r\n\t\t\t\tvalue      \t65)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateFinalizer\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateStaticInitializer\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateInstanceInitializer\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateCode\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"DisableAutoSync\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ReadOnly\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Strictfp\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletContextRef\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"IsSingleThread\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletInitParameter\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletInitParameterNames\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletIsSecure\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletRequestDispatcher\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletRequestDispatcherPath\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"DispatcherInclude\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"DispatcherForward\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletSecurityRoles\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletgetInfo\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletXMLFilePath\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Generate_XML_DD\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBCmpField\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBEnvironmentProperties\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBCnxFactory\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBReferences\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBSecurityRoles\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBNameInJAR\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBSessionType\"\r\n\t\t\tvalue      \t(\"EJBSessionType_Set\" 200))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBSessionType_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"\"\r\n\t\t\t\tvalue      \t200)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Stateless\"\r\n\t\t\t\tvalue      \t201)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Stateful\"\r\n\t\t\t\tvalue      \t202)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBTransactionType\"\r\n\t\t\tvalue      \t(\"EJBTransactionType_Set\" 211))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBTransactionType_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Container\"\r\n\t\t\t\tvalue      \t211)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Bean\"\r\n\t\t\t\tvalue      \t212)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBPersistenceType\"\r\n\t\t\tvalue      \t(\"EJBPersistenceType_Set\" 220))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBPersistenceType_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"\"\r\n\t\t\t\tvalue      \t220)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Bean\"\r\n\t\t\t\tvalue      \t221)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Container\"\r\n\t\t\t\tvalue      \t222)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBReentrant\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBSessionSync\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBVersion\"\r\n\t\t\tvalue      \t(\"EJBVersion_Set\" 230))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBVersion_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"2.0\"\r\n\t\t\t\tvalue      \t230)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"1.x\"\r\n\t\t\t\tvalue      \t231)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBXMLFilePath\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Java\"\r\n\t\tname       \t\"Default_Servlet__Class\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletContextRef\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"IsSingleThread\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletInitParameter\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletInitParameterNames\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletIsSecure\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletRequestDispatcher\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletRequestDispatcherPath\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"DispatcherInclude\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"DispatcherForward\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletSecurityRoles\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletgetInfo\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Final\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Static\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateDefaultConstructor\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ConstructorIs\"\r\n\t\t\tvalue      \t(\"Ctor_Set\" 62))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Ctor_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"public\"\r\n\t\t\t\tvalue      \t62)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"protected\"\r\n\t\t\t\tvalue      \t63)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"private\"\r\n\t\t\t\tvalue      \t64)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"package\"\r\n\t\t\t\tvalue      \t65)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateFinalizer\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateStaticInitializer\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateInstanceInitializer\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateCode\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"DisableAutoSync\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ReadOnly\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Strictfp\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletXMLFilePath\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Generate_XML_DD\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBCmpField\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBEnvironmentProperties\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBCnxFactory\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBReferences\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBSecurityRoles\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBNameInJAR\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBSessionType\"\r\n\t\t\tvalue      \t(\"EJBSessionType_Set\" 200))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBSessionType_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"\"\r\n\t\t\t\tvalue      \t200)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Stateless\"\r\n\t\t\t\tvalue      \t201)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Stateful\"\r\n\t\t\t\tvalue      \t202)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBTransactionType\"\r\n\t\t\tvalue      \t(\"EJBTransactionType_Set\" 211))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBTransactionType_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Container\"\r\n\t\t\t\tvalue      \t211)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Bean\"\r\n\t\t\t\tvalue      \t212)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBPersistenceType\"\r\n\t\t\tvalue      \t(\"EJBPersistenceType_Set\" 220))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBPersistenceType_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"\"\r\n\t\t\t\tvalue      \t220)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Bean\"\r\n\t\t\t\tvalue      \t221)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Container\"\r\n\t\t\t\tvalue      \t222)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBReentrant\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBSessionSync\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBVersion\"\r\n\t\t\tvalue      \t(\"EJBVersion_Set\" 230))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBVersion_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"2.0\"\r\n\t\t\t\tvalue      \t230)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"1.x\"\r\n\t\t\t\tvalue      \t231)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBXMLFilePath\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Java\"\r\n\t\tname       \t\"Http_Servlet__Class\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletRequestAttribute\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletRequestAttributesNames\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"MethodForRequestAttributes\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletRequestParameter\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletRequestParameterNames\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"MethodForRequestParameters\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletHeader\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletHeaderNames\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"MethodForHeaders\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletIntHeader\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletDateHeader\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletCookie\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"MethodForCookie\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletContentType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateHTML\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Final\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Static\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateDefaultConstructor\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ConstructorIs\"\r\n\t\t\tvalue      \t(\"Ctor_Set\" 62))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Ctor_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"public\"\r\n\t\t\t\tvalue      \t62)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"protected\"\r\n\t\t\t\tvalue      \t63)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"private\"\r\n\t\t\t\tvalue      \t64)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"package\"\r\n\t\t\t\tvalue      \t65)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateFinalizer\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateStaticInitializer\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateInstanceInitializer\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateCode\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"DisableAutoSync\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ReadOnly\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Strictfp\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletContextRef\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"IsSingleThread\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletInitParameter\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletInitParameterNames\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletIsSecure\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletRequestDispatcher\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletRequestDispatcherPath\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"DispatcherInclude\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"DispatcherForward\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletSecurityRoles\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletgetInfo\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletXMLFilePath\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Generate_XML_DD\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBCmpField\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBEnvironmentProperties\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBCnxFactory\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBReferences\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBSecurityRoles\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBNameInJAR\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBSessionType\"\r\n\t\t\tvalue      \t(\"EJBSessionType_Set\" 200))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBSessionType_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"\"\r\n\t\t\t\tvalue      \t200)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Stateless\"\r\n\t\t\t\tvalue      \t201)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Stateful\"\r\n\t\t\t\tvalue      \t202)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBTransactionType\"\r\n\t\t\tvalue      \t(\"EJBTransactionType_Set\" 211))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBTransactionType_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Container\"\r\n\t\t\t\tvalue      \t211)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Bean\"\r\n\t\t\t\tvalue      \t212)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBPersistenceType\"\r\n\t\t\tvalue      \t(\"EJBPersistenceType_Set\" 220))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBPersistenceType_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"\"\r\n\t\t\t\tvalue      \t220)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Bean\"\r\n\t\t\t\tvalue      \t221)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Container\"\r\n\t\t\t\tvalue      \t222)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBReentrant\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBSessionSync\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBVersion\"\r\n\t\t\tvalue      \t(\"EJBVersion_Set\" 230))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBVersion_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"2.0\"\r\n\t\t\t\tvalue      \t230)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"1.x\"\r\n\t\t\t\tvalue      \t231)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBXMLFilePath\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Java\"\r\n\t\tname       \t\"Default_EJB__Class\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Generate_XML_DD\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBCmpField\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBEnvironmentProperties\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBCnxFactory\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBReferences\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBSecurityRoles\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBNameInJAR\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBSessionType\"\r\n\t\t\tvalue      \t(\"EJBSessionType_Set\" 200))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBSessionType_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"\"\r\n\t\t\t\tvalue      \t200)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Stateless\"\r\n\t\t\t\tvalue      \t201)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Stateful\"\r\n\t\t\t\tvalue      \t202)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBTransactionType\"\r\n\t\t\tvalue      \t(\"EJBTransactionType_Set\" 211))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBTransactionType_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Container\"\r\n\t\t\t\tvalue      \t211)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Bean\"\r\n\t\t\t\tvalue      \t212)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBPersistenceType\"\r\n\t\t\tvalue      \t(\"EJBPersistenceType_Set\" 220))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBPersistenceType_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"\"\r\n\t\t\t\tvalue      \t220)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Bean\"\r\n\t\t\t\tvalue      \t221)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Container\"\r\n\t\t\t\tvalue      \t222)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBReentrant\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"BMP_Extend_CMP\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Final\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Static\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateDefaultConstructor\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ConstructorIs\"\r\n\t\t\tvalue      \t(\"Ctor_Set\" 62))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Ctor_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"public\"\r\n\t\t\t\tvalue      \t62)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"protected\"\r\n\t\t\t\tvalue      \t63)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"private\"\r\n\t\t\t\tvalue      \t64)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"package\"\r\n\t\t\t\tvalue      \t65)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateFinalizer\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateStaticInitializer\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateInstanceInitializer\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateCode\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"DisableAutoSync\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ReadOnly\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Strictfp\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletContextRef\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"IsSingleThread\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletInitParameter\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletInitParameterNames\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletIsSecure\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletRequestDispatcher\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletRequestDispatcherPath\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"DispatcherInclude\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"DispatcherForward\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletSecurityRoles\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletgetInfo\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletXMLFilePath\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBSessionSync\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBVersion\"\r\n\t\t\tvalue      \t(\"EJBVersion_Set\" 230))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBVersion_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"2.0\"\r\n\t\t\t\tvalue      \t230)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"1.x\"\r\n\t\t\t\tvalue      \t231)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBXMLFilePath\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Java\"\r\n\t\tname       \t\"default__Module-Spec\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"CmIdentification\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"CopyrightNotice\"\r\n\t\t\tvalue      \t(value Text \"\"))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Java\"\r\n\t\tname       \t\"default__Module-Body\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"CmIdentification\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"CopyrightNotice\"\r\n\t\t\tvalue      \t(value Text \"\"))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Java\"\r\n\t\tname       \t\"default__Operation\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Abstract\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Static\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Final\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Native\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Synchronized\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateFullyQualifiedReturn\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ReplaceExistingCode\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Strictfp\"\r\n\t\t\tvalue      \tFALSE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Java\"\r\n\t\tname       \t\"default__Attribute\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Final\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Transient\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Volatile\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"PropertyType\"\r\n\t\t\tvalue      \t(\"BeanProperty_Set\" 71))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"BeanProperty_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Not A Property\"\r\n\t\t\t\tvalue      \t71)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Simple\"\r\n\t\t\t\tvalue      \t72)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Bound\"\r\n\t\t\t\tvalue      \t73)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Constrained\"\r\n\t\t\t\tvalue      \t74)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"IndividualChangeMgt\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Read/Write\"\r\n\t\t\tvalue      \t(\"Read/Write_Set\" 81))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Read/Write_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Read & Write\"\r\n\t\t\t\tvalue      \t81)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Read Only\"\r\n\t\t\t\tvalue      \t82)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Write Only\"\r\n\t\t\t\tvalue      \t83)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateFullyQualifiedTypes\"\r\n\t\t\tvalue      \tFALSE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Java\"\r\n\t\tname       \t\"default__Role\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ContainerClass\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"InitialValue\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Final\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Transient\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Volatile\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"PropertyType\"\r\n\t\t\tvalue      \t(\"BeanProperty_Set\" 71))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"BeanProperty_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Not A Property\"\r\n\t\t\t\tvalue      \t71)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Simple\"\r\n\t\t\t\tvalue      \t72)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Bound\"\r\n\t\t\t\tvalue      \t73)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Constrained\"\r\n\t\t\t\tvalue      \t74)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"IndividualChangeMgt\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Read/Write\"\r\n\t\t\tvalue      \t(\"Read/Write_Set\" 81))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Read/Write_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Read & Write\"\r\n\t\t\t\tvalue      \t81)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Read Only\"\r\n\t\t\t\tvalue      \t82)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Write Only\"\r\n\t\t\t\tvalue      \t83)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateFullyQualifiedTypes\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"IsNavigable\"\r\n\t\t\tvalue      \tTRUE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Java\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"R2Editor\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"Rose Web Publisher\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"COM\"\r\n\t\tname       \t\"propertyId\"\r\n\t\tvalue      \t\"783606378\")\r\n\t    (object Attribute\r\n\t\ttool       \t\"COM\"\r\n\t\tname       \t\"default__Class\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"TypeKinds\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"COM\"\r\n\t\t\t\tname       \t\"enum\"\r\n\t\t\t\tvalue      \t100)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"COM\"\r\n\t\t\t\tname       \t\"record\"\r\n\t\t\t\tvalue      \t101)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"COM\"\r\n\t\t\t\tname       \t\"module\"\r\n\t\t\t\tvalue      \t102)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"COM\"\r\n\t\t\t\tname       \t\"interface\"\r\n\t\t\t\tvalue      \t103)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"COM\"\r\n\t\t\t\tname       \t\"dispinterface\"\r\n\t\t\t\tvalue      \t104)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"COM\"\r\n\t\t\t\tname       \t\"coclass\"\r\n\t\t\t\tvalue      \t105)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"COM\"\r\n\t\t\t\tname       \t\"alias\"\r\n\t\t\t\tvalue      \t106)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"COM\"\r\n\t\t\t\tname       \t\"union\"\r\n\t\t\t\tvalue      \t107)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"COM\"\r\n\t\t\t\tname       \t\"max\"\r\n\t\t\t\tvalue      \t108)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"COM\"\r\n\t\t\t\tname       \t\"(none)\"\r\n\t\t\t\tvalue      \t109)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"Generate\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"kind\"\r\n\t\t\tvalue      \t(\"TypeKinds\" 109))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"uuid\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"version\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"helpstring\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"helpcontext\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"attributes\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"dllname\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"alias\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"COM\"\r\n\t\tname       \t\"default__Operation\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"Generate\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"id\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"helpstring\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"attributes\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"COM\"\r\n\t\tname       \t\"default__Attribute\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"Generate\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"id\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"helpstring\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"attributes\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"COM\"\r\n\t\tname       \t\"default__Module-Spec\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"Generate\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"filename\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"library\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"uuid\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"version\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"helpstring\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"helpfile\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"helpcontext\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"lcid\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"attributes\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"COM\"\r\n\t\tname       \t\"default__Param\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"attributes\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"COM\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"VC++\"\r\n\t\tname       \t\"propertyId\"\r\n\t\tvalue      \t\"809135966\")\r\n\t    (object Attribute\r\n\t\ttool       \t\"VC++\"\r\n\t\tname       \t\"default__Project\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"UpdateATL\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"SmartPointersOnAssoc\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"GenerateImports\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"PutImportsIn\"\r\n\t\t\tvalue      \t\"stdafx.h\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"FullPathInImports\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"UseImportAttributes\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"ImportAttributes\"\r\n\t\t\tvalue      \t\"no_namespace named_guids\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"ImportProjTypeLib\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"DefaultTypeLib\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"TypeLibLocation\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"CompileProjTypeLib\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"IdlInterfaceAttributes\"\r\n\t\t\tvalue      \t(value Text \r\n|endpoint(\"\")\r\n|local\r\n|object\r\n|pointer_default()\r\n|uuid(\"\")\r\n|version(\"\")\r\n|encode\r\n|decode\r\n|auto_handle\r\n|implicit_handle(\"\")\r\n|code\r\n|nocode\r\n\t\t\t))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"IdlCoClassAttributes\"\r\n\t\t\tvalue      \t(value Text \r\n|uuid(\"\")\r\n|helpstring(\"\")\r\n|helpcontext(\"\")\r\n|licensed\r\n|version(\"\")\r\n|control\r\n|hidden\r\n|appobject\r\n\t\t\t))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"IdlCoClassInterfaceAttributes\"\r\n\t\t\tvalue      \t(value Text \r\n|default\r\n|source\r\n\t\t\t))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"IdlParameterAttributes\"\r\n\t\t\tvalue      \t(value Text \r\n|in\r\n|out\r\n|retval\r\n\t\t\t))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"IdlMethodAttributes\"\r\n\t\t\tvalue      \t(value Text \r\n|id(1)\r\n|helpstring(\"\")\r\n|call_as(\"\")\r\n|callback\r\n|helpcontext(\"\")\r\n|hidden\r\n|local\r\n|restricted\r\n|source\r\n|vararg\r\n\t\t\t))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"IdlPropertyAttributes\"\r\n\t\t\tvalue      \t(value Text \r\n|id()\r\n|helpstring(\"\")\r\n|call_as(\"\")\r\n|helpcontext(\"\")\r\n|hidden\r\n|local\r\n|restricted\r\n|source\r\n|vararg\r\n|bindable\r\n|defaultbind\r\n|defaultcallelem\r\n|displaybind\r\n|immediatebind\r\n|nonbrowseable\r\n|requestedit\r\n\t\t\t))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"RvcPtyVersion\"\r\n\t\t\tvalue      \t\"1.3\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"ModelIDStyle\"\r\n\t\t\tvalue      \t2)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"DocStyle\"\r\n\t\t\tvalue      \t1)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"GenerateIncludes\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"ApplyPattern\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"CreateBackupFiles\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"SupportCodeName\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"DocRevEngineer\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"CreateOverviewDiagrams\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"UpdateModelIDsInCode\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"AttributeTypes\"\r\n\t\t\tvalue      \t(value Text \r\n|attr1=bool\r\n|attr2=short\r\n|attr3=int\r\n|attr4=long\r\n|attr5=char\r\n|attr6=float\r\n|attr7=double\r\n|attr8=void\r\n|attr9=clock_t\r\n|attr10=_complex\r\n|attr11=_dev_t\r\n|attr12=div_t\r\n|attr13=_exception\r\n|attr14=FILE\r\n|attr15=_finddata_t\r\n|attr16=_FPIEEE_RECORD\r\n|attr17=fpos_t\r\n|attr18=_HEAPINFO\r\n|attr19=jmp_buf\r\n|attr20=lconv\r\n|attr21=ldiv_t\r\n|attr22=_off_t\r\n|attr23=_onexit_t\r\n|attr24=_PNH\r\n|attr25=ptrdiff_t\r\n|attr26=sig_atomic_t\r\n|attr27=size_t\r\n|attr28=_stat\r\n|attr29=time_t\r\n|attr30=_timeb\r\n|attr31=tm\r\n|attr32=_utimbuf\r\n|attr33=va_list\r\n|attr34=wchar_t\r\n|attr35=wctrans_t\r\n|attr36=wctype_t\r\n|attr37=_wfinddata_t\r\n|attr38=_wfinddatai64_t\r\n|attr39=wint_t\r\n|attr40=ABORTPROC\r\n|attr41=ACMDRIVERENUMCB\r\n|attr42=ACMDRIVERPROC\r\n|attr43=ACMFILTERCHOOSEHOOKPROC\r\n|attr44=ACMFILTERENUMCB\r\n|attr45=ACMFILTERTAGENUMCB\r\n|attr46=ACMFORMATCHOOSEHOOKPROC\r\n|attr47=ACMFORMATENUMCB\r\n|attr48=ACMFORMATTAGENUMCB\r\n|attr49=APPLET_PROC\r\n|attr50=ATOM\r\n|attr51=BOOL\r\n|attr52=BOOLEAN\r\n|attr53=BYTE\r\n|attr54=CALINFO_ENUMPROC\r\n|attr55=CALLBACK\r\n|attr56=CHAR\r\n|attr57=COLORREF\r\n|attr58=CONST\r\n|attr59=CRITICAL_SECTION\r\n|attr60=CTRYID\r\n|attr61=DATEFMT_ENUMPROC\r\n|attr62=DESKTOPENUMPROC\r\n|attr63=DLGPROC\r\n|attr64=DRAWSTATEPROC\r\n|attr65=DWORD\r\n|attr66=EDITWORDBREAKPROC\r\n|attr67=ENHMFENUMPROC\r\n|attr68=ENUMRESLANGPROC\r\n|attr69=ENUMRESNAMEPROC\r\n|attr70=ENUMRESTYPEPROC\r\n|attr71=FARPROC\r\n|attr72=FILE_SEGMENT_ELEMENT\r\n|attr73=FLOAT\r\n|attr74=FONTENUMPROC\r\n|attr75=GOBJENUMPROC\r\n|attr76=GRAYSTRINGPROC\r\n|attr77=HACCEL\r\n|attr78=HANDLE\r\n|attr79=HBITMAP\r\n|attr80=HBRUSH\r\n|attr81=HCOLORSPACE\r\n|attr82=HCONV\r\n|attr83=HCONVLIST\r\n|attr84=HCURSOR\r\n|attr85=HDC\r\n|attr86=HDDEDATA\r\n|attr87=HDESK\r\n|attr88=HDROP\r\n|attr89=HDWP\r\n|attr90=HENHMETAFILE\r\n|attr91=HFILE\r\n|attr92=HFONT\r\n|attr93=HGDIOBJ\r\n|attr94=HGLOBAL\r\n|attr95=HHOOK\r\n|attr96=HICON\r\n|attr97=HIMAGELIST\r\n|attr98=HIMC\r\n|attr99=HINSTANCE\r\n|attr100=HKEY\r\n|attr101=HKL\r\n|attr102=HLOCAL\r\n|attr103=HMENU\r\n|attr104=HMETAFILE\r\n|attr105=HMODULE\r\n|attr106=HMONITOR\r\n|attr107=HOOKPROC\r\n|attr108=HPALETTE\r\n|attr109=HPEN\r\n|attr110=HRGN\r\n|attr111=HRSRC\r\n|attr112=HSZ\r\n|attr113=HTREEITEM\r\n|attr114=HWINSTA\r\n|attr115=HWND\r\n|attr116=INT\r\n|attr117=IPADDR\r\n|attr118=LANGID\r\n|attr119=LCID\r\n|attr120=LCSCSTYPE\r\n|attr121=LCSGAMUTMATCH\r\n|attr122=LCTYPE\r\n|attr123=LINEDDAPROC\r\n|attr124=LOCALE_ENUMPROC\r\n|attr125=LONG\r\n|attr126=LONGLONG\r\n|attr127=LPARAM\r\n|attr128=LPBOOL\r\n|attr129=LPBYTE\r\n|attr130=LPCCHOOKPROC\r\n|attr131=LPCFHOOKPROC\r\n|attr132=LPCOLORREF\r\n|attr133=LPCRITICAL_SECTION\r\n|attr134=LPCSTR\r\n|attr135=LPCTSTR\r\n|attr136=LPCVOID\r\n|attr137=LPCWSTR\r\n|attr138=LPDWORD\r\n|attr139=LPFIBER_START_ROUTINE\r\n|attr140=LPFRHOOKPROC\r\n|attr141=LPHANDLE\r\n|attr142=LPHANDLER_FUNCTION\r\n|attr143=LPINT\r\n|attr144=LPLONG\r\n|attr145=LPOFNHOOKPROC\r\n|attr146=LPPAGEPAINTHOOK\r\n|attr147=LPPAGESETUPHOOK\r\n|attr148=LPPRINTHOOKPROC\r\n|attr149=LPPROGRESS_ROUTINE\r\n|attr150=LPSETUPHOOKPROC\r\n|attr151=LPSTR\r\n|attr152=LPSTREAM\r\n|attr153=LPTHREAD_START_ROUTINE\r\n|attr154=LPTSTR\r\n|attr155=LPVOID\r\n|attr156=LPWORD\r\n|attr157=LPWSTR\r\n|attr158=LRESULT\r\n|attr159=LUID\r\n|attr160=PBOOL\r\n|attr161=PBOOLEAN\r\n|attr162=PBYTE\r\n|attr163=PCHAR\r\n|attr164=PCRITICAL_SECTION\r\n|attr165=PCSTR\r\n|attr166=PCTSTR\r\n|attr167=PCWCH\r\n|attr168=PCWSTR\r\n|attr169=PDWORD\r\n|attr170=PFLOAT\r\n|attr171=PFNCALLBACK\r\n|attr172=PHANDLE\r\n|attr173=PHANDLER_ROUTINE\r\n|attr174=PHKEY\r\n|attr175=PINT\r\n|attr176=PLCID\r\n|attr177=PLONG\r\n|attr178=PLUID\r\n|attr179=PROPENUMPROC\r\n|attr180=PROPENUMPROCEX\r\n|attr181=PSHORT\r\n|attr182=PSTR\r\n|attr183=PTBYTE\r\n|attr184=PTCHAR\r\n|attr185=PTIMERAPCROUTINE\r\n|attr186=PTSTR\r\n|attr187=PUCHAR\r\n|attr188=PUINT\r\n|attr189=PULONG\r\n|attr190=PUSHORT\r\n|attr191=PVOID\r\n|attr192=PWCHAR\r\n|attr193=PWORD\r\n|attr194=PWSTR\r\n|attr195=REGISTERWORDENUMPROC\r\n|attr196=REGSAM\r\n|attr197=SC_HANDLE\r\n|attr198=SC_LOCK\r\n|attr199=SENDASYNCPROC\r\n|attr200=SERVICE_STATUS_HANDLE\r\n|attr201=SHORT\r\n|attr202=TBYTE\r\n|attr203=TCHAR\r\n|attr204=TIMEFMT_ENUMPROC\r\n|attr205=TIMERPROC\r\n|attr206=UCHAR\r\n|attr207=UINT\r\n|attr208=ULONG\r\n|attr209=ULONGLONG\r\n|attr210=UNSIGNED\r\n|attr211=USHORT\r\n|attr212=VOID\r\n|attr213=WCHAR\r\n|attr214=WINAPI\r\n|attr215=WINSTAENUMPROC\r\n|attr216=WNDENUMPROC\r\n|attr217=WNDPROC\r\n|attr218=WORD\r\n|attr219=WPARAM\r\n|attr220=YIELDPROC\r\n|attr221=CPoint\r\n|attr222=CRect\r\n|attr223=CSize\r\n|attr224=CString\r\n|attr225=CTime\r\n|attr226=CTimeSpan\r\n|attr227=CCreateContext\r\n|attr228=CMemoryState\r\n|attr229=COleSafeArray\r\n|attr230=CPrintInfo\r\n|attr231=HRESULT\r\n\t\t\t))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"Containers\"\r\n\t\t\tvalue      \t(value Text \r\n|cont1=CArray<$TYPE, $TYPE&>\r\n|cont2=CByteArray\r\n|cont3=CDWordArray\r\n|cont4=CObArray\r\n|cont5=CPtrArray\r\n|cont6=CStringArray\r\n|cont7=CUIntArray\r\n|cont8=CWordArray\r\n|cont9=CList<$TYPE, $TYPE&>\r\n|cont10=CPtrList\r\n|cont11=CObList\r\n|cont12=CStringList\r\n|cont13=CMapWordToPtr\r\n|cont14=CMapPtrToWord\r\n|cont15=CMapPtrToPtr\r\n|cont16=CMapWordToOb\r\n|cont17=CMapStringToPtr\r\n|cont18=CMapStringToOb\r\n|cont19=CMapStringToString\r\n|cont20=CTypedPtrArray<CPtrArray, $TYPE*>\r\n|cont21=CTypedPtrArray<CObArray, $TYPE*>\r\n|cont22=CTypedPtrList<CObList, $TYPE*>\r\n|cont23=CTypedPtrList<CPtrList, $TYPE*>\r\n|cont24=CComObject<$TYPE>\r\n|cont25=CComPtr<$TYPE>\r\n|cont26=CComQIPtr<$TYPE>\r\n|cont27=CComQIPtr<$TYPE, IID*>\r\n\t\t\t))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"ClassMethods\"\r\n\t\t\tvalue      \t(value Text \r\n|*_body=// ToDo: Add your specialized code here and/or call the base class\r\n|cm1=$NAME()\r\n|cm2=$NAME(orig:const $NAME&)\r\n|cm3=<<virtual>> ~$NAME()\r\n|cm4=operator=(rhs:$NAME&):$NAME&\r\n|cm4_body=// ToDo: Add your specialized code here and/or call the base class||return rhs;\r\n|cm5=<<const>> operator==(rhs:const $NAME&):bool\r\n|cm5_body=// ToDo: Add your specialized code here and/or call the base class||return false;\r\n|cm6=<<const>> operator!=(rhs:$NAME&):bool\r\n|cm6_body=// ToDo: Add your specialized code here and/or call the base class||return false;\r\n|cm7=<<const>> operator<(rhs:$NAME&):bool\r\n|cm7_body=// ToDo: Add your specialized code here and/or call the base class||return false;\r\n|cm8=<<const>> operator>(rhs:$NAME&):bool\r\n|cm8_body=// ToDo: Add your specialized code here and/or call the base class||return false;\r\n|cm9=<<const>> operator<=(rhs:$NAME&):bool\r\n|cm9_body=// ToDo: Add your specialized code here and/or call the base class||return false;\r\n|cm10=<<const>> operator>=(rhs:$NAME&):bool\r\n|cm10_body=// ToDo: Add your specialized code here and/or call the base class||return false;\r\n|cm11=<<friend>> operator>>(i:istream&, rhs:$NAME&):istream&\r\n|cm11_body=// ToDo: Add your specialized code here and/or call the base class||return i;\r\n|cm12=<<friend>> operator<<(o:ostream&, rhs:const $NAME&):ostream&\r\n|cm12_body=// ToDo: Add your specialized code here and/or call the base class||return o;\r\n\t\t\t))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"Accessors\"\r\n\t\t\tvalue      \t(value Text \r\n|agf=<<const>> get_$BASICNAME():const $TYPE\r\n|agf_body=return $NAME;\r\n|asf=set_$BASICNAME(value:$TYPE):void\r\n|asf_body=$NAME = value;|return;\r\n|agv=<<const>> get_$BASICNAME():const $TYPE&\r\n|agv_body=return $NAME;\r\n|asv=set_$BASICNAME(value:$TYPE&):void\r\n|asv_body=$NAME = value;|return;\r\n|agp=<<const>> get_$BASICNAME():const $TYPE\r\n|agp_body=return $NAME;\r\n|asp=set_$BASICNAME(value:$TYPE):void\r\n|asp_body=$NAME = value;|return;\r\n|agr=<<const>> get_$BASICNAME():const $TYPE\r\n|agr_body=return $NAME;\r\n|asr=set_$BASICNAME(value:$TYPE):void\r\n|asr_body=$NAME = value;|return;\r\n|aga=<<const>> get_$BASICNAME(index:int):const $TYPE\r\n|aga_body=return $NAME[index];\r\n|asa=set_$BASICNAME(index:int, value:$TYPE):void\r\n|asa_body=$NAME[index] = value;|return;\r\n\t\t\t))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"Conditionals\"\r\n\t\t\tvalue      \t(value Text \r\n|*_decl=#ifdef _DEBUG\r\n|*_base=CObject\r\n|cond1=<<virtual, const>> AssertValid():void\r\n|cond1_body=$SUPERNAME::AssertValid();\r\n|cond2=<<virtual, const>> Dump(dc:CDumpContext&):void\r\n|cond2_body=$SUPERNAME::Dump(dc);\r\n\t\t\t))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"Patterns\"\r\n\t\t\tvalue      \t(value Text \r\n|patrn1=cm1,cm3,cond1,cond2\r\n|Patrn1_name=Default\r\n\t\t\t))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"AtlClassPrefix\"\r\n\t\t\tvalue      \t\"C\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"AtlInterfacePrefix\"\r\n\t\t\tvalue      \t\"I\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"AtlTypeDescription\"\r\n\t\t\tvalue      \t\"Class\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"VC++\"\r\n\t\tname       \t\"default__Class\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"Generate\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"HeaderFileName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"CodeFileName\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"VC++\"\r\n\t\tname       \t\"default__Module-Spec\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"InternalMap\"\r\n\t\t\tvalue      \t(value Text \r\n|*:AUTO:AUTO\r\n|\r\n\t\t\t))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"ExportMap\"\r\n\t\t\tvalue      \t(value Text \r\n|*:AUTO:AUTO\r\n|\r\n\t\t\t))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"InitialSourceIncludes\"\r\n\t\t\tvalue      \t(value Text \r\n|\"stdafx.h\"\r\n\t\t\t))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"InitialHeaderIncludes\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"Copyright\"\r\n\t\t\tvalue      \t(value Text \"Copyright (C) 1991 - 1999 Rational Software Corporation\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"KindSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"VC++\"\r\n\t\t\t\tname       \t\"(none)\"\r\n\t\t\t\tvalue      \t300)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"VC++\"\r\n\t\t\t\tname       \t\"DLL\"\r\n\t\t\t\tvalue      \t301)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"VC++\"\r\n\t\t\t\tname       \t\"EXE\"\r\n\t\t\t\tvalue      \t302)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"VC++\"\r\n\t\t\t\tname       \t\"MIDL\"\r\n\t\t\t\tvalue      \t303)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"Kind\"\r\n\t\t\tvalue      \t(\"KindSet\" 300))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"VC++\"\r\n\t\tname       \t\"default__Role\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"Const\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"Generate\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"InitialValue\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"VC++\"\r\n\t\tname       \t\"default__Uses\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"Generate\"\r\n\t\t\tvalue      \tTRUE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"VC++\"\r\n\t\tname       \t\"default__Category\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"IsDirectory\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"Directory\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"VC++\"\r\n\t\tname       \t\"default__Attribute\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"Generate\"\r\n\t\t\tvalue      \tTRUE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"VC++\"\r\n\t\tname       \t\"default__Operation\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"Generate\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"Inline\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"DefaultBody\"\r\n\t\t\tvalue      \t(value Text \"\"))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"VC++\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"VisualStudio\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"Web Modeler\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"XML_DTD\"\r\n\t\tname       \t\"propertyId\"\r\n\t\tvalue      \t\"809135966\")\r\n\t    (object Attribute\r\n\t\ttool       \t\"XML_DTD\"\r\n\t\tname       \t\"default__Project\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"XML_DTD\"\r\n\t\t\tname       \t\"CreateMissingDirectories\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"XML_DTD\"\r\n\t\t\tname       \t\"Editor\"\r\n\t\t\tvalue      \t(\"EditorType\" 100))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"XML_DTD\"\r\n\t\t\tname       \t\"StopOnError\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"XML_DTD\"\r\n\t\t\tname       \t\"EditorType\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"XML_DTD\"\r\n\t\t\t\tname       \t\"BuiltIn\"\r\n\t\t\t\tvalue      \t100)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"XML_DTD\"\r\n\t\t\t\tname       \t\"WindowsShell\"\r\n\t\t\t\tvalue      \t101)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"XML_DTD\"\r\n\t\tname       \t\"default__Class\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"XML_DTD\"\r\n\t\t\tname       \t\"Entity_SystemID\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"XML_DTD\"\r\n\t\t\tname       \t\"Entity_PublicID\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"XML_DTD\"\r\n\t\t\tname       \t\"NotationValue\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"XML_DTD\"\r\n\t\t\tname       \t\"InternalValue\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"XML_DTD\"\r\n\t\t\tname       \t\"ParameterEntity\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"XML_DTD\"\r\n\t\t\tname       \t\"ExternalEntity\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"XML_DTD\"\r\n\t\t\tname       \t\"Notation_SystemID\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"XML_DTD\"\r\n\t\t\tname       \t\"Notation_PublicID\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"XML_DTD\"\r\n\t\tname       \t\"default__Attribute\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"XML_DTD\"\r\n\t\t\tname       \t\"DefaultDeclType\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"XML_DTD\"\r\n\t\tname       \t\"default__Module-Spec\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"XML_DTD\"\r\n\t\t\tname       \t\"Assign All\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"XML_DTD\"\r\n\t\t\tname       \t\"ComponentPath\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"XML_DTD\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"Cplusplus\"\r\n\t\tname       \t\"propertyId\"\r\n\t\tvalue      \t\"809135966\")\r\n\t    (object Attribute\r\n\t\ttool       \t\"Cplusplus\"\r\n\t\tname       \t\"default__Role\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"Synchronize\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"CodeName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"InitialValue\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Cplusplus\"\r\n\t\tname       \t\"default__Inherit\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"Synchronize\"\r\n\t\t\tvalue      \tTRUE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Cplusplus\"\r\n\t\tname       \t\"default__Module-Spec\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"Synchronize\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"RevEngRootDirectory\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"RootPackage\"\r\n\t\t\tvalue      \t\"C++ Reverse Engineered\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"RevEngDirectoriesAsPackages\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"HeaderFileExtension\"\r\n\t\t\tvalue      \t\".h\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"ImplementationFileExtension\"\r\n\t\t\tvalue      \t\".cpp\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"NewHeaderFileDirectory\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"NewImplementationFileDirectory\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"FileCapitalization\"\r\n\t\t\tvalue      \t(\"FileCapitalizationSet\" 0))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"CodeGenExtraDirectories\"\r\n\t\t\tvalue      \t(\"CodeGenExtraDirectoriesSet\" 0))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"StripClassPrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"UseTabs\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"TabWidth\"\r\n\t\t\tvalue      \t8)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"IndentWidth\"\r\n\t\t\tvalue      \t4)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"AccessIndentation\"\r\n\t\t\tvalue      \t-2)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"CreateBackupFiles\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"ModelIdCommentRules\"\r\n\t\t\tvalue      \t(\"ModelIdCommentRulesSet\" 1))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"CommentRules\"\r\n\t\t\tvalue      \t(\"CommentRulesSet\" 1))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"PageWidth\"\r\n\t\t\tvalue      \t80)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"ClassMemberOrder\"\r\n\t\t\tvalue      \t(\"MemberOrderSet\" 1))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"OneParameterPerLine\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"NamespaceBraceStyle\"\r\n\t\t\tvalue      \t(\"BraceStyleSet\" 2))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"ClassBraceStyle\"\r\n\t\t\tvalue      \t(\"BraceStyleSet\" 2))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"FunctionBraceStyle\"\r\n\t\t\tvalue      \t(\"BraceStyleSet\" 2))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"Copyright\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"InitialHeaderIncludes\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"InitialBodyIncludes\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"CodeGenExtraDirectoriesSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"None\"\r\n\t\t\t\tvalue      \t0)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Namespaces\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Packages\"\r\n\t\t\t\tvalue      \t2)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"FileCapitalizationSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Same as model\"\r\n\t\t\t\tvalue      \t0)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Lower case\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Upper case\"\r\n\t\t\t\tvalue      \t2)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Lower case with underscores\"\r\n\t\t\t\tvalue      \t3)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"BraceStyleSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"B1\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"B2\"\r\n\t\t\t\tvalue      \t2)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"B3\"\r\n\t\t\t\tvalue      \t3)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"B4\"\r\n\t\t\t\tvalue      \t4)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"B5\"\r\n\t\t\t\tvalue      \t5)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"MemberOrderSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Public First\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Private First\"\r\n\t\t\t\tvalue      \t2)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Order by kind\"\r\n\t\t\t\tvalue      \t3)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Unordered\"\r\n\t\t\t\tvalue      \t4)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"ModelIdCommentRulesSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Code generation only\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Code generation and reverse engineering\"\r\n\t\t\t\tvalue      \t2)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Never generate model IDs\"\r\n\t\t\t\tvalue      \t3)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"CommentRulesSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Always synchronize\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Code generation only\"\r\n\t\t\t\tvalue      \t2)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Reverse engineering only\"\r\n\t\t\t\tvalue      \t3)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Never synchronize\"\r\n\t\t\t\tvalue      \t4)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Cplusplus\"\r\n\t\tname       \t\"default__Module-Body\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"Synchronize\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"RevEngRootDirectory\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"RootPackage\"\r\n\t\t\tvalue      \t\"C++ Reverse Engineered\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"RevEngDirectoriesAsPackages\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"HeaderFileExtension\"\r\n\t\t\tvalue      \t\".h\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"ImplementationFileExtension\"\r\n\t\t\tvalue      \t\".cpp\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"NewHeaderFileDirectory\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"NewImplementationFileDirectory\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"FileCapitalization\"\r\n\t\t\tvalue      \t(\"FileCapitalizationSet\" 0))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"CodeGenExtraDirectories\"\r\n\t\t\tvalue      \t(\"CodeGenExtraDirectoriesSet\" 0))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"StripClassPrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"UseTabs\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"TabWidth\"\r\n\t\t\tvalue      \t8)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"IndentWidth\"\r\n\t\t\tvalue      \t4)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"AccessIndentation\"\r\n\t\t\tvalue      \t-2)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"CreateBackupFiles\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"ModelIdCommentRules\"\r\n\t\t\tvalue      \t(\"ModelIdCommentRulesSet\" 1))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"CommentRules\"\r\n\t\t\tvalue      \t(\"CommentRulesSet\" 1))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"PageWidth\"\r\n\t\t\tvalue      \t80)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"ClassMemberOrder\"\r\n\t\t\tvalue      \t(\"MemberOrderSet\" 1))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"OneParameterPerLine\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"NamespaceBraceStyle\"\r\n\t\t\tvalue      \t(\"BraceStyleSet\" 2))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"ClassBraceStyle\"\r\n\t\t\tvalue      \t(\"BraceStyleSet\" 2))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"FunctionBraceStyle\"\r\n\t\t\tvalue      \t(\"BraceStyleSet\" 2))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"Copyright\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"InitialHeaderIncludes\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"InitialBodyIncludes\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"CodeGenExtraDirectoriesSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"None\"\r\n\t\t\t\tvalue      \t0)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Namespaces\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Packages\"\r\n\t\t\t\tvalue      \t2)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"FileCapitalizationSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Same as model\"\r\n\t\t\t\tvalue      \t0)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Lower case\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Upper case\"\r\n\t\t\t\tvalue      \t2)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Lower case with underscores\"\r\n\t\t\t\tvalue      \t3)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"BraceStyleSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"B1\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"B2\"\r\n\t\t\t\tvalue      \t2)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"B3\"\r\n\t\t\t\tvalue      \t3)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"B4\"\r\n\t\t\t\tvalue      \t4)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"B5\"\r\n\t\t\t\tvalue      \t5)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"MemberOrderSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Public First\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Private First\"\r\n\t\t\t\tvalue      \t2)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Order by kind\"\r\n\t\t\t\tvalue      \t3)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Unordered\"\r\n\t\t\t\tvalue      \t4)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"ModelIdCommentRulesSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Code generation only\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Code generation and reverse engineering\"\r\n\t\t\t\tvalue      \t2)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Never generate model IDs\"\r\n\t\t\t\tvalue      \t3)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"CommentRulesSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Always synchronize\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Code generation only\"\r\n\t\t\t\tvalue      \t2)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Reverse engineering only\"\r\n\t\t\t\tvalue      \t3)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Never synchronize\"\r\n\t\t\t\tvalue      \t4)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Cplusplus\"\r\n\t\tname       \t\"default__Param\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"CodeName\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Cplusplus\"\r\n\t\tname       \t\"default__Attribute\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"Synchronize\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"CodeName\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Cplusplus\"\r\n\t\tname       \t\"default__Operation\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"Synchronize\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"CodeName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"InitialCodeBody\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"Inline\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"GenerateFunctionBody\"\r\n\t\t\tvalue      \t(\"GenerateFunctionBodySet\" 2))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"GenerateFunctionBodySet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Default\"\r\n\t\t\t\tvalue      \t2)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"True\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"False\"\r\n\t\t\t\tvalue      \t0)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Cplusplus\"\r\n\t\tname       \t\"default__Class\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"Synchronize\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"CodeName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"ImplementationType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"HeaderSourceFile\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"BodySourceFile\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Cplusplus\"\r\n\t\tname       \t\"default__Category\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"CodeName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"IsNamespace\"\r\n\t\t\tvalue      \tFALSE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Cplusplus\"\r\n\t\tname       \t\"default__Uses\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"BodyReferenceOnly\"\r\n\t\t\tvalue      \tFALSE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Cplusplus\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"ANSIConvert\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada83\"\r\n\t\tname       \t\"propertyId\"\r\n\t\tvalue      \t\"838326200\")\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada83\"\r\n\t\tname       \t\"default__Project\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"SpecFileExtension\"\r\n\t\t\tvalue      \t\"1.ada\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"SpecFileBackupExtension\"\r\n\t\t\tvalue      \t\"1.ad~\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"SpecFileTemporaryExtension\"\r\n\t\t\tvalue      \t\"1.ad#\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"BodyFileExtension\"\r\n\t\t\tvalue      \t\"2.ada\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"BodyFileBackupExtension\"\r\n\t\t\tvalue      \t\"2.ad~\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"BodyFileTemporaryExtension\"\r\n\t\t\tvalue      \t\"2.ad#\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"CreateMissingDirectories\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"GenerateBodies\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"GenerateAccessorOperations\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"GenerateStandardOperations\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"DefaultCodeBody\"\r\n\t\t\tvalue      \t\"[statement]\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ImplicitParameter\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"CommentWidth\"\r\n\t\t\tvalue      \t60)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"StopOnError\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ErrorLimit\"\r\n\t\t\tvalue      \t30)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"UseFileName\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Directory\"\r\n\t\t\tvalue      \t\"$ROSEADA83_SOURCE\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada83\"\r\n\t\tname       \t\"default__Class\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"CodeName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ClassName\"\r\n\t\t\tvalue      \t\"Object\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ClassAccess\"\r\n\t\t\tvalue      \t(\"ImplementationSet\" 43))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ImplementationType\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"IsSubtype\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"PolymorphicUnit\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"HandleName\"\r\n\t\t\tvalue      \t\"Handle\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"HandleAccess\"\r\n\t\t\tvalue      \t(\"ImplementationSet\" 45))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Discriminant\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Variant\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"EnumerationLiteralPrefix\"\r\n\t\t\tvalue      \t\"A_\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"RecordFieldPrefix\"\r\n\t\t\tvalue      \t\"The_\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"GenerateAccessorOperations\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"GenerateStandardOperations\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ImplicitParameter\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ClassParameterName\"\r\n\t\t\tvalue      \t\"This\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"DefaultConstructorKind\"\r\n\t\t\tvalue      \t(\"ConstructorKindSet\" 199))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"DefaultConstructorName\"\r\n\t\t\tvalue      \t\"Create\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InlineDefaultConstructor\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"CopyConstructorKind\"\r\n\t\t\tvalue      \t(\"ConstructorKindSet\" 199))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"CopyConstructorName\"\r\n\t\t\tvalue      \t\"Copy\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InlineCopyConstructor\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"DestructorName\"\r\n\t\t\tvalue      \t\"Free\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InlineDestructor\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ClassEqualityOperation\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"HandleEqualityOperation\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InlineEquality\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"IsTask\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Representation\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ImplementationSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Public\"\r\n\t\t\t\tvalue      \t45)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Private\"\r\n\t\t\t\tvalue      \t43)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"LimitedPrivate\"\r\n\t\t\t\tvalue      \t200)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ConstructorKindSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Procedure\"\r\n\t\t\t\tvalue      \t202)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Function\"\r\n\t\t\t\tvalue      \t199)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada83\"\r\n\t\tname       \t\"default__Module-Spec\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Generate\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"CopyrightNotice\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"FileName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ReturnType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"GenericFormalParameters\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"AdditionalWiths\"\r\n\t\t\tvalue      \t(value Text \"\"))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada83\"\r\n\t\tname       \t\"default__Module-Body\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Generate\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"CopyrightNotice\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"FileName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ReturnType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"AdditionalWiths\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"IsSubunit\"\r\n\t\t\tvalue      \tFALSE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada83\"\r\n\t\tname       \t\"default__Operation\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"CodeName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"SubprogramImplementation\"\r\n\t\t\tvalue      \t(\"SubprogramImplementationSet\" 2))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Renames\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ClassParameterMode\"\r\n\t\t\tvalue      \t(\"ParameterModeSet\" 203))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Inline\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"EntryCode\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ExitCode\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InitialCodeBody\"\r\n\t\t\tvalue      \t\"${default}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Representation\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"SubprogramImplementationSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Spec\"\r\n\t\t\t\tvalue      \t224)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Body\"\r\n\t\t\t\tvalue      \t2)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Renaming\"\r\n\t\t\t\tvalue      \t222)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Separate\"\r\n\t\t\t\tvalue      \t223)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ParameterModeSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Default\"\r\n\t\t\t\tvalue      \t232)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"In\"\r\n\t\t\t\tvalue      \t204)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Out\"\r\n\t\t\t\tvalue      \t205)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"InOut\"\r\n\t\t\t\tvalue      \t203)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"FunctionReturn\"\r\n\t\t\t\tvalue      \t206)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada83\"\r\n\t\tname       \t\"default__Param\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Mode\"\r\n\t\t\tvalue      \t(\"ParameterModeSet\" 232))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"GenericFormal\"\r\n\t\t\tvalue      \t(\"GenericFormalSet\" 1))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"AssociationMapping\"\r\n\t\t\tvalue      \t(\"AssociationMappingSet\" 1))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ParameterModeSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Default\"\r\n\t\t\t\tvalue      \t232)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"In\"\r\n\t\t\t\tvalue      \t204)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Out\"\r\n\t\t\t\tvalue      \t205)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"InOut\"\r\n\t\t\t\tvalue      \t203)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"GenericFormalSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Default\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Object\"\r\n\t\t\t\tvalue      \t2)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Type\"\r\n\t\t\t\tvalue      \t3)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Procedure\"\r\n\t\t\t\tvalue      \t4)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Function\"\r\n\t\t\t\tvalue      \t5)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"AssociationMappingSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Name\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Type\"\r\n\t\t\t\tvalue      \t2)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada83\"\r\n\t\tname       \t\"default__Has\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"CodeName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"NameIfUnlabeled\"\r\n\t\t\tvalue      \t\"The_${supplier}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"DataMemberName\"\r\n\t\t\tvalue      \t\"${relationship}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"GetName\"\r\n\t\t\tvalue      \t\"Get_${relationship}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InlineGet\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"SetName\"\r\n\t\t\tvalue      \t\"Set_${relationship}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InlineSet\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"IsConstant\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InitialValue\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Declare\"\r\n\t\t\tvalue      \t(\"DeclareSet\" 234))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Variant\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ContainerGeneric\"\r\n\t\t\tvalue      \t\"List\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ContainerType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ContainerDeclarations\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"SelectorName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"SelectorType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"DeclareSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Before\"\r\n\t\t\t\tvalue      \t233)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"After\"\r\n\t\t\t\tvalue      \t234)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada83\"\r\n\t\tname       \t\"default__Attribute\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"CodeName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"DataMemberName\"\r\n\t\t\tvalue      \t\"${attribute}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"GetName\"\r\n\t\t\tvalue      \t\"Get_${attribute}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InlineGet\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"SetName\"\r\n\t\t\tvalue      \t\"Set_${attribute}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InlineSet\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"IsConstant\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InitialValue\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Declare\"\r\n\t\t\tvalue      \t(\"DeclareSet\" 234))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Variant\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Representation\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"DeclareSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Before\"\r\n\t\t\t\tvalue      \t233)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"After\"\r\n\t\t\t\tvalue      \t234)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada83\"\r\n\t\tname       \t\"default__Association\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"NameIfUnlabeled\"\r\n\t\t\tvalue      \t\"The_${targetClass}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"GetName\"\r\n\t\t\tvalue      \t\"Get_${association}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InlineGet\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"SetName\"\r\n\t\t\tvalue      \t\"Set_${association}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InlineSet\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"GenerateAssociate\"\r\n\t\t\tvalue      \t(\"ProcedureKindSet\" 202))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"AssociateName\"\r\n\t\t\tvalue      \t\"Associate\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InlineAssociate\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"GenerateDissociate\"\r\n\t\t\tvalue      \t(\"ProcedureKindSet\" 202))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"DissociateName\"\r\n\t\t\tvalue      \t\"Dissociate\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InlineDissociate\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ProcedureKindSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Procedure\"\r\n\t\t\t\tvalue      \t202)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"FunctionKindSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Function\"\r\n\t\t\t\tvalue      \t199)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada83\"\r\n\t\tname       \t\"default__Role\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"CodeName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"NameIfUnlabeled\"\r\n\t\t\tvalue      \t\"The_${targetClass}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"DataMemberName\"\r\n\t\t\tvalue      \t\"${target}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"GetName\"\r\n\t\t\tvalue      \t\"Get_${target}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InlineGet\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"SetName\"\r\n\t\t\tvalue      \t\"Set_${target}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InlineSet\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"IsConstant\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InitialValue\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Declare\"\r\n\t\t\tvalue      \t(\"DeclareSet\" 234))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Representation\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ContainerGeneric\"\r\n\t\t\tvalue      \t\"List\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ContainerType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ContainerDeclarations\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"SelectorName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"SelectorType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ProcedureKindSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Procedure\"\r\n\t\t\t\tvalue      \t202)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"DeclareSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Before\"\r\n\t\t\t\tvalue      \t233)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"After\"\r\n\t\t\t\tvalue      \t234)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada83\"\r\n\t\tname       \t\"default__Subsystem\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Directory\"\r\n\t\t\tvalue      \t\"AUTO GENERATE\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada83\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada95\"\r\n\t\tname       \t\"propertyId\"\r\n\t\tvalue      \t\"838326200\")\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada95\"\r\n\t\tname       \t\"default__Project\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"SpecFileExtension\"\r\n\t\t\tvalue      \t\"1.ada\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"SpecFileBackupExtension\"\r\n\t\t\tvalue      \t\"1.ad~\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"SpecFileTemporaryExtension\"\r\n\t\t\tvalue      \t\"1.ad#\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"BodyFileExtension\"\r\n\t\t\tvalue      \t\"2.ada\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"BodyFileBackupExtension\"\r\n\t\t\tvalue      \t\"2.ad~\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"BodyFileTemporaryExtension\"\r\n\t\t\tvalue      \t\"2.ad#\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"CreateMissingDirectories\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"UseColonNotation\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateBodies\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateAccessorOperations\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateStandardOperations\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"DefaultCodeBody\"\r\n\t\t\tvalue      \t\"[statement]\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ImplicitParameter\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"CommentWidth\"\r\n\t\t\tvalue      \t60)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"StopOnError\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ErrorLimit\"\r\n\t\t\tvalue      \t30)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"UseFileName\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"Directory\"\r\n\t\t\tvalue      \t\"$ROSEADA95_SOURCE\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada95\"\r\n\t\tname       \t\"default__Class\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"CodeName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"TypeName\"\r\n\t\t\tvalue      \t\"Object\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"TypeVisibility\"\r\n\t\t\tvalue      \t(\"TypeVisibilitySet\" 43))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"TypeImplementation\"\r\n\t\t\tvalue      \t(\"TypeImplementationSet\" 208))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"IncompleteType\"\r\n\t\t\tvalue      \t(\"IncompleteTypeSet\" 1))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"TypeControl\"\r\n\t\t\tvalue      \t(\"TypeControlSet\" 225))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"TypeControlName\"\r\n\t\t\tvalue      \t\"Controlled_${type}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"TypeControlVisibility\"\r\n\t\t\tvalue      \t(\"TypeVisibilitySet\" 43))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"TypeDefinition\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"RecordImplementation\"\r\n\t\t\tvalue      \t(\"RecordImplementationSet\" 209))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"RecordKindPackageName\"\r\n\t\t\tvalue      \t\"${class}_Record_Kinds\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"IsLimited\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"IsSubtype\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateAccessType\"\r\n\t\t\tvalue      \t(\"GenerateAccessTypeSet\" 230))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"AccessTypeName\"\r\n\t\t\tvalue      \t\"Handle\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"AccessTypeVisibility\"\r\n\t\t\tvalue      \t(\"TypeVisibilitySet\" 45))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"AccessTypeDefinition\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"AccessClassWide\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"MaybeAliased\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ParameterizedImplementation\"\r\n\t\t\tvalue      \t(\"ParameterizedImplementationSet\" 11))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ParentClassName\"\r\n\t\t\tvalue      \t\"Superclass\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"EnumerationLiteralPrefix\"\r\n\t\t\tvalue      \t\"A_\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"RecordFieldPrefix\"\r\n\t\t\tvalue      \t\"The_\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ArrayOfTypeName\"\r\n\t\t\tvalue      \t\"Array_Of_${type}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"AccessArrayOfTypeName\"\r\n\t\t\tvalue      \t\"Access_Array_Of_${type}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ArrayOfAccessTypeName\"\r\n\t\t\tvalue      \t\"Array_Of_${access_type}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"AccessArrayOfAccessTypeName\"\r\n\t\t\tvalue      \t\"Access_Array_Of_${access_type}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ArrayIndexDefinition\"\r\n\t\t\tvalue      \t\"Positive range <>\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateAccessorOperations\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateStandardOperations\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ImplicitParameter\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ImplicitParameterName\"\r\n\t\t\tvalue      \t\"This\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateDefaultConstructor\"\r\n\t\t\tvalue      \t(\"SubprogramKindSet\" 199))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"DefaultConstructorName\"\r\n\t\t\tvalue      \t\"Create\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InlineDefaultConstructor\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateCopyConstructor\"\r\n\t\t\tvalue      \t(\"SubprogramKindSet\" 199))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"CopyConstructorName\"\r\n\t\t\tvalue      \t\"Copy\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InlineCopyConstructor\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateDestructor\"\r\n\t\t\tvalue      \t(\"ProcedureKindSet\" 202))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"DestructorName\"\r\n\t\t\tvalue      \t\"Free\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InlineDestructor\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateTypeEquality\"\r\n\t\t\tvalue      \t(\"FunctionKindSet\" 201))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"TypeEqualityName\"\r\n\t\t\tvalue      \t(value Text \r\n|\"=\"\r\n\t\t\t))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InlineEquality\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"Representation\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"TypeImplementationSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Tagged\"\r\n\t\t\t\tvalue      \t208)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Record\"\r\n\t\t\t\tvalue      \t210)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Mixin\"\r\n\t\t\t\tvalue      \t211)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Protected\"\r\n\t\t\t\tvalue      \t44)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Task\"\r\n\t\t\t\tvalue      \t212)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"IncompleteTypeSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"DoNotDeclare\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"NoDiscriminantPart\"\r\n\t\t\t\tvalue      \t2)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"UnknownDiscriminantPart\"\r\n\t\t\t\tvalue      \t3)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"KnownDiscriminantPart\"\r\n\t\t\t\tvalue      \t4)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"RecordImplementationSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"SingleType\"\r\n\t\t\t\tvalue      \t209)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"MultipleTypes\"\r\n\t\t\t\tvalue      \t213)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ParameterizedImplementationSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Generic\"\r\n\t\t\t\tvalue      \t11)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Unconstrained\"\r\n\t\t\t\tvalue      \t214)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"TypeVisibilitySet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Public\"\r\n\t\t\t\tvalue      \t45)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Private\"\r\n\t\t\t\tvalue      \t43)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"SubprogramKindSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Procedure\"\r\n\t\t\t\tvalue      \t202)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Function\"\r\n\t\t\t\tvalue      \t199)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ProcedureKindSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Procedure\"\r\n\t\t\t\tvalue      \t202)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"FunctionKindSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Function\"\r\n\t\t\t\tvalue      \t199)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"TypeControlSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"None\"\r\n\t\t\t\tvalue      \t225)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"InitializationOnly\"\r\n\t\t\t\tvalue      \t226)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"AssignmentFinalizationOnly\"\r\n\t\t\t\tvalue      \t227)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"All\"\r\n\t\t\t\tvalue      \t228)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateAccessTypeSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Always\"\r\n\t\t\t\tvalue      \t229)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Auto\"\r\n\t\t\t\tvalue      \t230)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada95\"\r\n\t\tname       \t\"default__Module-Spec\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"Generate\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"CopyrightNotice\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"FileName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ReturnType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenericFormalParameters\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"AdditionalWiths\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"IsPrivate\"\r\n\t\t\tvalue      \tFALSE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada95\"\r\n\t\tname       \t\"default__Module-Body\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"Generate\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"CopyrightNotice\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"FileName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ReturnType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"AdditionalWiths\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"IsSubunit\"\r\n\t\t\tvalue      \tFALSE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada95\"\r\n\t\tname       \t\"default__Operation\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"CodeName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"SubprogramImplementation\"\r\n\t\t\tvalue      \t(\"SubprogramImplementationSet\" 2))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"Renames\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateOverriding\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ImplicitParameterMode\"\r\n\t\t\tvalue      \t(\"ParameterModeSet\" 203))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ImplicitParameterClassWide\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateAccessOperation\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"Inline\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"EntryCode\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ExitCode\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InitialCodeBody\"\r\n\t\t\tvalue      \t\"${default}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"EntryBarrierCondition\"\r\n\t\t\tvalue      \t\"True\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"Representation\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"SubprogramImplementationSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Spec\"\r\n\t\t\t\tvalue      \t224)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Body\"\r\n\t\t\t\tvalue      \t2)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Abstract\"\r\n\t\t\t\tvalue      \t221)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Renaming\"\r\n\t\t\t\tvalue      \t222)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"RenamingAsBody\"\r\n\t\t\t\tvalue      \t231)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Separate\"\r\n\t\t\t\tvalue      \t223)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ParameterModeSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Default\"\r\n\t\t\t\tvalue      \t232)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"In\"\r\n\t\t\t\tvalue      \t204)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Out\"\r\n\t\t\t\tvalue      \t205)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"InOut\"\r\n\t\t\t\tvalue      \t203)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Access\"\r\n\t\t\t\tvalue      \t220)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada95\"\r\n\t\tname       \t\"default__Param\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"Mode\"\r\n\t\t\tvalue      \t(\"ParameterModeSet\" 232))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenericFormal\"\r\n\t\t\tvalue      \t(\"GenericFormalSet\" 1))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"AssociationMapping\"\r\n\t\t\tvalue      \t(\"AssociationMappingSet\" 1))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ParameterModeSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Default\"\r\n\t\t\t\tvalue      \t232)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"In\"\r\n\t\t\t\tvalue      \t204)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Out\"\r\n\t\t\t\tvalue      \t205)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"InOut\"\r\n\t\t\t\tvalue      \t203)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Access\"\r\n\t\t\t\tvalue      \t220)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenericFormalSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Default\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Object\"\r\n\t\t\t\tvalue      \t2)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Type\"\r\n\t\t\t\tvalue      \t3)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Procedure\"\r\n\t\t\t\tvalue      \t4)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Function\"\r\n\t\t\t\tvalue      \t5)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Package\"\r\n\t\t\t\tvalue      \t6)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"AssociationMappingSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Name\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Type\"\r\n\t\t\t\tvalue      \t2)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada95\"\r\n\t\tname       \t\"default__Has\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"CodeName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"NameIfUnlabeled\"\r\n\t\t\tvalue      \t\"The_${supplier}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"RecordFieldImplementation\"\r\n\t\t\tvalue      \t(\"RecordFieldImplementationSet\" 216))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"AccessDiscriminantClassWide\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"RecordFieldName\"\r\n\t\t\tvalue      \t\"${relationship}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateGet\"\r\n\t\t\tvalue      \t(\"FunctionKindSet\" 199))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateAccessGet\"\r\n\t\t\tvalue      \t(\"FunctionKindSet\" 201))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GetName\"\r\n\t\t\tvalue      \t\"Get_${relationship}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InlineGet\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateSet\"\r\n\t\t\tvalue      \t(\"ProcedureKindSet\" 202))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateAccessSet\"\r\n\t\t\tvalue      \t(\"ProcedureKindSet\" 201))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"SetName\"\r\n\t\t\tvalue      \t\"Set_${relationship}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InlineSet\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"IsAliased\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"IsConstant\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InitialValue\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"Declare\"\r\n\t\t\tvalue      \t(\"DeclareSet\" 234))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ContainerImplementation\"\r\n\t\t\tvalue      \t(\"ContainerImplementationSet\" 217))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ContainerGeneric\"\r\n\t\t\tvalue      \t\"List\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ContainerType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ContainerDeclarations\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"SelectorName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"SelectorType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"DeclareSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Before\"\r\n\t\t\t\tvalue      \t233)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"After\"\r\n\t\t\t\tvalue      \t234)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"RecordFieldImplementationSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Component\"\r\n\t\t\t\tvalue      \t216)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Discriminant\"\r\n\t\t\t\tvalue      \t218)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"AccessDiscriminant\"\r\n\t\t\t\tvalue      \t219)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ContainerImplementationSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Array\"\r\n\t\t\t\tvalue      \t217)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Generic\"\r\n\t\t\t\tvalue      \t11)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ProcedureKindSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Procedure\"\r\n\t\t\t\tvalue      \t202)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"FunctionKindSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Function\"\r\n\t\t\t\tvalue      \t199)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada95\"\r\n\t\tname       \t\"default__Attribute\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"CodeName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"RecordFieldImplementation\"\r\n\t\t\tvalue      \t(\"RecordFieldImplementationSet\" 216))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"AccessDiscriminantClassWide\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"RecordFieldName\"\r\n\t\t\tvalue      \t\"${attribute}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateGet\"\r\n\t\t\tvalue      \t(\"FunctionKindSet\" 199))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateAccessGet\"\r\n\t\t\tvalue      \t(\"FunctionKindSet\" 201))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GetName\"\r\n\t\t\tvalue      \t\"Get_${attribute}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InlineGet\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateSet\"\r\n\t\t\tvalue      \t(\"ProcedureKindSet\" 202))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateAccessSet\"\r\n\t\t\tvalue      \t(\"ProcedureKindSet\" 201))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"SetName\"\r\n\t\t\tvalue      \t\"Set_${attribute}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InlineSet\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"IsAliased\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"IsConstant\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InitialValue\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"Declare\"\r\n\t\t\tvalue      \t(\"DeclareSet\" 234))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"Representation\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"DeclareSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Before\"\r\n\t\t\t\tvalue      \t233)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"After\"\r\n\t\t\t\tvalue      \t234)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"RecordFieldImplementationSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Component\"\r\n\t\t\t\tvalue      \t216)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Discriminant\"\r\n\t\t\t\tvalue      \t218)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"AccessDiscriminant\"\r\n\t\t\t\tvalue      \t219)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ProcedureKindSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Procedure\"\r\n\t\t\t\tvalue      \t202)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"FunctionKindSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Function\"\r\n\t\t\t\tvalue      \t199)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada95\"\r\n\t\tname       \t\"default__Association\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"NameIfUnlabeled\"\r\n\t\t\tvalue      \t\"The_${targetClass}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateGet\"\r\n\t\t\tvalue      \t(\"FunctionKindSet\" 199))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GetName\"\r\n\t\t\tvalue      \t\"Get_${association}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InlineGet\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateSet\"\r\n\t\t\tvalue      \t(\"ProcedureKindSet\" 202))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"SetName\"\r\n\t\t\tvalue      \t\"Set_${association}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InlineSet\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateAssociate\"\r\n\t\t\tvalue      \t(\"ProcedureKindSet\" 202))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"AssociateName\"\r\n\t\t\tvalue      \t\"Associate\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InlineAssociate\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateDissociate\"\r\n\t\t\tvalue      \t(\"ProcedureKindSet\" 202))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"DissociateName\"\r\n\t\t\tvalue      \t\"Dissociate\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InlineDissociate\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ProcedureKindSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Procedure\"\r\n\t\t\t\tvalue      \t202)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"FunctionKindSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Function\"\r\n\t\t\t\tvalue      \t199)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada95\"\r\n\t\tname       \t\"default__Role\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"CodeName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"NameIfUnlabeled\"\r\n\t\t\tvalue      \t\"The_${targetClass}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"RecordFieldImplementation\"\r\n\t\t\tvalue      \t(\"RecordFieldImplementationSet\" 216))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"AccessDiscriminantClassWide\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"RecordFieldName\"\r\n\t\t\tvalue      \t\"${target}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateGet\"\r\n\t\t\tvalue      \t(\"FunctionKindSet\" 199))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateAccessGet\"\r\n\t\t\tvalue      \t(\"FunctionKindSet\" 201))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GetName\"\r\n\t\t\tvalue      \t\"Get_${target}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InlineGet\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateSet\"\r\n\t\t\tvalue      \t(\"ProcedureKindSet\" 202))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateAccessSet\"\r\n\t\t\tvalue      \t(\"ProcedureKindSet\" 201))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"SetName\"\r\n\t\t\tvalue      \t\"Set_${target}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InlineSet\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"IsAliased\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"IsConstant\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InitialValue\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"Declare\"\r\n\t\t\tvalue      \t(\"DeclareSet\" 234))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"Representation\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ContainerImplementation\"\r\n\t\t\tvalue      \t(\"ContainerImplementationSet\" 217))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ContainerGeneric\"\r\n\t\t\tvalue      \t\"List\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ContainerType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ContainerDeclarations\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"SelectorName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"SelectorType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ProcedureKindSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Procedure\"\r\n\t\t\t\tvalue      \t202)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"DeclareSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Before\"\r\n\t\t\t\tvalue      \t233)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"After\"\r\n\t\t\t\tvalue      \t234)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"RecordFieldImplementationSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Component\"\r\n\t\t\t\tvalue      \t216)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Discriminant\"\r\n\t\t\t\tvalue      \t218)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"AccessDiscriminant\"\r\n\t\t\t\tvalue      \t219)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ContainerImplementationSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Array\"\r\n\t\t\t\tvalue      \t217)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Generic\"\r\n\t\t\t\tvalue      \t11)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"FunctionKindSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Function\"\r\n\t\t\t\tvalue      \t199)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada95\"\r\n\t\tname       \t\"default__Subsystem\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"Directory\"\r\n\t\t\tvalue      \t\"AUTO GENERATE\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada95\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"CORBA\"\r\n\t\tname       \t\"default__Param\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"Direction\"\r\n\t\t\tvalue      \t(\"ParamDirectionTypeSet\" 102))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"ParamDirectionTypeSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"CORBA\"\r\n\t\t\t\tname       \t\"in\"\r\n\t\t\t\tvalue      \t102)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"CORBA\"\r\n\t\t\t\tname       \t\"inout\"\r\n\t\t\t\tvalue      \t103)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"CORBA\"\r\n\t\t\t\tname       \t\"out\"\r\n\t\t\t\tvalue      \t104)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Deploy\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"Oracle8\"\r\n\t\tname       \t\"propertyId\"\r\n\t\tvalue      \t\"360000002\")\r\n\t    (object Attribute\r\n\t\ttool       \t\"Oracle8\"\r\n\t\tname       \t\"default__Project\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"DDLScriptFilename\"\r\n\t\t\tvalue      \t\"DDL1.SQL\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"DropClause\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"PrimaryKeyColumnName\"\r\n\t\t\tvalue      \t\"_ID\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"PrimaryKeyColumnType\"\r\n\t\t\tvalue      \t\"NUMBER(5,0)\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"SchemaNamePrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"SchemaNameSuffix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"TableNamePrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"TableNameSuffix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"TypeNamePrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"TypeNameSuffix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"ViewNamePrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"ViewNameSuffix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"VarrayNamePrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"VarrayNameSuffix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"NestedTableNamePrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"NestedTableNameSuffix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"ObjectTableNamePrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"ObjectTableNameSuffix\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Oracle8\"\r\n\t\tname       \t\"default__Module-Spec\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"IsSchema\"\r\n\t\t\tvalue      \tFALSE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Oracle8\"\r\n\t\tname       \t\"default__Class\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"OID\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"WhereClause\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"CheckConstraint\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"CollectionTypeLength\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"CollectionTypePrecision\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"CollectionTypeScale\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"CollectionOfREFS\"\r\n\t\t\tvalue      \tFALSE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Oracle8\"\r\n\t\tname       \t\"default__Operation\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"MethodKind\"\r\n\t\t\tvalue      \t(\"MethodKindSet\" 1903))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"OverloadID\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"OrderNumber\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"IsReadNoDataState\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"IsReadNoProcessState\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"IsWriteNoDataState\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"IsWriteNoProcessState\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"IsSelfish\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"TriggerType\"\r\n\t\t\tvalue      \t(\"TriggerTypeSet\" 1801))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"TriggerEvent\"\r\n\t\t\tvalue      \t(\"TriggerEventSet\" 1601))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"TriggerText\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"TriggerReferencingNames\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"TriggerForEach\"\r\n\t\t\tvalue      \t(\"TriggerForEachSet\" 1701))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"TriggerWhenClause\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"MethodKindSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"MapMethod\"\r\n\t\t\t\tvalue      \t1901)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"OrderMethod\"\r\n\t\t\t\tvalue      \t1902)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"Function\"\r\n\t\t\t\tvalue      \t1903)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"Procedure\"\r\n\t\t\t\tvalue      \t1904)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"Operator\"\r\n\t\t\t\tvalue      \t1905)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"Constructor\"\r\n\t\t\t\tvalue      \t1906)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"Destructor\"\r\n\t\t\t\tvalue      \t1907)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"Trigger\"\r\n\t\t\t\tvalue      \t1908)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"Calculated\"\r\n\t\t\t\tvalue      \t1909)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"TriggerTypeSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"AFTER\"\r\n\t\t\t\tvalue      \t1801)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"BEFORE\"\r\n\t\t\t\tvalue      \t1802)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"INSTEAD OF\"\r\n\t\t\t\tvalue      \t1803)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"TriggerForEachSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"ROW\"\r\n\t\t\t\tvalue      \t1701)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"STATEMENT\"\r\n\t\t\t\tvalue      \t1702)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"TriggerEventSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"INSERT\"\r\n\t\t\t\tvalue      \t1601)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"UPDATE\"\r\n\t\t\t\tvalue      \t1602)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"DELETE\"\r\n\t\t\t\tvalue      \t1603)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"INSERT OR UPDATE\"\r\n\t\t\t\tvalue      \t1604)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"INSERT OR DELETE\"\r\n\t\t\t\tvalue      \t1605)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"UPDATE OR DELETE\"\r\n\t\t\t\tvalue      \t1606)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"INSERT OR UPDATE OR DELETE\"\r\n\t\t\t\tvalue      \t1607)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Oracle8\"\r\n\t\tname       \t\"default__Role\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"OrderNumber\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Oracle8\"\r\n\t\tname       \t\"default__Attribute\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"OrderNumber\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"IsUnique\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"NullsAllowed\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"Length\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"Precision\"\r\n\t\t\tvalue      \t\"2\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"Scale\"\r\n\t\t\tvalue      \t\"6\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"IsIndex\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"IsPrimaryKey\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"CompositeUnique\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"CheckConstraint\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Oracle8\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"ComponentTest\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"Rose Model Integrator\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"TopLink\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"Version Control\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"Visual Basic\"\r\n\t\tname       \t\"propertyId\"\r\n\t\tvalue      \t\"783606378\")\r\n\t    (object Attribute\r\n\t\ttool       \t\"Visual Basic\"\r\n\t\tname       \t\"default__Class\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"UpdateCode\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"UpdateModel\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"InstancingSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\t\tname       \t\"Private\"\r\n\t\t\t\tvalue      \t221)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\t\tname       \t\"PublicNotCreatable\"\r\n\t\t\t\tvalue      \t213)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\t\tname       \t\"SingleUse\"\r\n\t\t\t\tvalue      \t214)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\t\tname       \t\"GlobalSingleUse\"\r\n\t\t\t\tvalue      \t215)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\t\tname       \t\"MultiUse\"\r\n\t\t\t\tvalue      \t219)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\t\tname       \t\"GlobalMultiUse\"\r\n\t\t\t\tvalue      \t220)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"BaseSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\t\tname       \t\"(none)\"\r\n\t\t\t\tvalue      \t222)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\t\tname       \t\"0\"\r\n\t\t\t\tvalue      \t223)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\t\tname       \t\"1\"\r\n\t\t\t\tvalue      \t224)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"OptionBase\"\r\n\t\t\tvalue      \t(\"BaseSet\" 222))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"OptionExplicit\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"OptionCompare\"\r\n\t\t\tvalue      \t(\"CompareSet\" 202))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"Instancing\"\r\n\t\t\tvalue      \t(\"InstancingSet\" 219))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"CompareSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\t\tname       \t\"(none)\"\r\n\t\t\t\tvalue      \t202)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\t\tname       \t\"Binary\"\r\n\t\t\t\tvalue      \t203)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\t\tname       \t\"Text\"\r\n\t\t\t\tvalue      \t204)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Visual Basic\"\r\n\t\tname       \t\"default__Operation\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"LibraryName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"AliasName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"IsStatic\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"ProcedureID\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"ReplaceExistingBody\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"DefaultBody\"\r\n\t\t\tvalue      \t(value Text \"\"))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Visual Basic\"\r\n\t\tname       \t\"default__Attribute\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"New\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"WithEvents\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"ProcedureID\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"PropertyName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"Subscript\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Visual Basic\"\r\n\t\tname       \t\"default__Role\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"UpdateCode\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"New\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"WithEvents\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"FullName\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"ProcedureID\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"PropertyName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"Subscript\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Visual Basic\"\r\n\t\tname       \t\"default__Inherit\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"ImplementsDelegation\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"FullName\"\r\n\t\t\tvalue      \tFALSE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Visual Basic\"\r\n\t\tname       \t\"default__Param\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"ByVal\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"ByRef\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"Optional\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"ParamArray\"\r\n\t\t\tvalue      \tFALSE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Visual Basic\"\r\n\t\tname       \t\"default__Module-Spec\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"ProjectFile\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"UpdateCode\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"UpdateModel\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"ImportReferences\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"QuickImport\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"ImportBinary\"\r\n\t\t\tvalue      \tFALSE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Visual Basic\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE))\r\n\tquid       \t\"39C9260C00D9\"))\r\n"
  },
  {
    "path": "docs/电商平台设计.md~",
    "content": "\r\n(object Petal\r\n    version    \t50\r\n    _written   \t\"Rose 8.2.0310.2800\"\r\n    charSet    \t134)\r\n\r\n(object Design \"Logical View\"\r\n    is_unit    \tTRUE\r\n    is_loaded  \tTRUE\r\n    attributes \t(list Attribute_Set\r\n\t(object Attribute\r\n\t    tool       \t\"Java\"\r\n\t    name       \t\"IDE\"\r\n\t    value      \t\"Internal Editor\")\r\n\t(object Attribute\r\n\t    tool       \t\"Java\"\r\n\t    name       \t\"UserDefineTagName1\"\r\n\t    value      \t\"\")\r\n\t(object Attribute\r\n\t    tool       \t\"Java\"\r\n\t    name       \t\"UserDefineTagText1\"\r\n\t    value      \t\"\")\r\n\t(object Attribute\r\n\t    tool       \t\"Java\"\r\n\t    name       \t\"UserDefineTagApply1\"\r\n\t    value      \t\"\")\r\n\t(object Attribute\r\n\t    tool       \t\"Java\"\r\n\t    name       \t\"UserDefineTagName2\"\r\n\t    value      \t\"\")\r\n\t(object Attribute\r\n\t    tool       \t\"Java\"\r\n\t    name       \t\"UserDefineTagText2\"\r\n\t    value      \t\"\")\r\n\t(object Attribute\r\n\t    tool       \t\"Java\"\r\n\t    name       \t\"UserDefineTagApply2\"\r\n\t    value      \t\"\")\r\n\t(object Attribute\r\n\t    tool       \t\"Java\"\r\n\t    name       \t\"UserDefineTagName3\"\r\n\t    value      \t\"\")\r\n\t(object Attribute\r\n\t    tool       \t\"Java\"\r\n\t    name       \t\"UserDefineTagText3\"\r\n\t    value      \t\"\")\r\n\t(object Attribute\r\n\t    tool       \t\"Java\"\r\n\t    name       \t\"UserDefineTagApply3\"\r\n\t    value      \t\"\")\r\n\t(object Attribute\r\n\t    tool       \t\"Data Modeler\"\r\n\t    name       \t\"DatabaseCounter\"\r\n\t    value      \t\"1\")\r\n\t(object Attribute\r\n\t    tool       \t\"Data Modeler\"\r\n\t    name       \t\"DomainPackageCounter\"\r\n\t    value      \t\"0\")\r\n\t(object Attribute\r\n\t    tool       \t\"Data Modeler\"\r\n\t    name       \t\"SchemaCounter\"\r\n\t    value      \t\"1\")\r\n\t(object Attribute\r\n\t    tool       \t\"Data Modeler\"\r\n\t    name       \t\"DomainCounter\"\r\n\t    value      \t0)\r\n\t(object Attribute\r\n\t    tool       \t\"Data Modeler\"\r\n\t    name       \t\"TableCounter\"\r\n\t    value      \t4)\r\n\t(object Attribute\r\n\t    tool       \t\"Data Modeler\"\r\n\t    name       \t\"ViewCounter\"\r\n\t    value      \t0)\r\n\t(object Attribute\r\n\t    tool       \t\"Data Modeler\"\r\n\t    name       \t\"JoinCounter\"\r\n\t    value      \t0)\r\n\t(object Attribute\r\n\t    tool       \t\"Data Modeler\"\r\n\t    name       \t\"ColumnCounter\"\r\n\t    value      \t\"6\")\r\n\t(object Attribute\r\n\t    tool       \t\"Data Modeler\"\r\n\t    name       \t\"TriggerCounter\"\r\n\t    value      \t0)\r\n\t(object Attribute\r\n\t    tool       \t\"Data Modeler\"\r\n\t    name       \t\"IndexCounter\"\r\n\t    value      \t0)\r\n\t(object Attribute\r\n\t    tool       \t\"Data Modeler\"\r\n\t    name       \t\"ConstraintCounter\"\r\n\t    value      \t1)\r\n\t(object Attribute\r\n\t    tool       \t\"Data Modeler\"\r\n\t    name       \t\"PrimaryKeyCounter\"\r\n\t    value      \t0)\r\n\t(object Attribute\r\n\t    tool       \t\"Data Modeler\"\r\n\t    name       \t\"ForeignKeyCounter\"\r\n\t    value      \t0)\r\n\t(object Attribute\r\n\t    tool       \t\"Data Modeler\"\r\n\t    name       \t\"StoredProcedurePackageCounter\"\r\n\t    value      \t\"0\")\r\n\t(object Attribute\r\n\t    tool       \t\"Data Modeler\"\r\n\t    name       \t\"StoredProcedureCounter\"\r\n\t    value      \t\"0\")\r\n\t(object Attribute\r\n\t    tool       \t\"Data Modeler\"\r\n\t    name       \t\"StoredProcedureParameterCounter\"\r\n\t    value      \t\"0\"))\r\n    quid       \t\"39C9260C00D4\"\r\n    enforceClosureAutoLoad \tFALSE\r\n    defaults   \t(object defaults\r\n\trightMargin \t0.250000\r\n\tleftMargin \t0.250000\r\n\ttopMargin  \t0.250000\r\n\tbottomMargin \t0.500000\r\n\tpageOverlap \t0.250000\r\n\tclipIconLabels \tTRUE\r\n\tautoResize \tTRUE\r\n\tsnapToGrid \tTRUE\r\n\tgridX      \t16\r\n\tgridY      \t16\r\n\tdefaultFont \t(object Font\r\n\t    size       \t10\r\n\t    face       \t\"Arial\"\r\n\t    bold       \tFALSE\r\n\t    italics    \tFALSE\r\n\t    underline  \tFALSE\r\n\t    strike     \tFALSE\r\n\t    color      \t0\r\n\t    default_color \tTRUE)\r\n\tshowMessageNum \t1\r\n\tshowClassOfObject \tTRUE\r\n\tnotation   \t\"Unified\")\r\n    root_usecase_package \t(object Class_Category \"Use Case View\"\r\n\tquid       \t\"39C9260C00D6\"\r\n\texportControl \t\"Public\"\r\n\tglobal     \tTRUE\r\n\tlogical_models \t(list unit_reference_list)\r\n\tlogical_presentations \t(list unit_reference_list\r\n\t    (object UseCaseDiagram \"Main\"\r\n\t\tquid       \t\"39C9261001B7\"\r\n\t\ttitle      \t\"Main\"\r\n\t\tzoom       \t100\r\n\t\tmax_height \t28350\r\n\t\tmax_width  \t21600\r\n\t\torigin_x   \t0\r\n\t\torigin_y   \t0\r\n\t\titems      \t(list diagram_item_list))))\r\n    root_category \t(object Class_Category \"Logical View\"\r\n\tquid       \t\"39C9260C00D5\"\r\n\texportControl \t\"Public\"\r\n\tglobal     \tTRUE\r\n\tsubsystem  \t\"Component View\"\r\n\tquidu      \t\"39C9260C00D7\"\r\n\tlogical_models \t(list unit_reference_list\r\n\t    (object Class_Category \"javax\"\r\n\t\tis_unit    \tTRUE\r\n\t\tis_loaded  \tFALSE\r\n\t\tfile_name  \t\"$FRAMEWORK_PATH\\\\Shared Components\\\\j2ee_javax.cat\"\r\n\t\tquid       \t\"39C926610018\")\r\n\t    (object Class_Category \"java\"\r\n\t\tis_unit    \tTRUE\r\n\t\tis_loaded  \tFALSE\r\n\t\tfile_name  \t\"$FRAMEWORK_PATH\\\\Shared Components\\\\j2se_1_3_java.cat\"\r\n\t\tquid       \t\"39C92661003B\")\r\n\t    (object Class_Category \"org\"\r\n\t\tis_unit    \tTRUE\r\n\t\tis_loaded  \tFALSE\r\n\t\tfile_name  \t\"$FRAMEWORK_PATH\\\\Shared Components\\\\j2se_1_3_org.cat\"\r\n\t\tquid       \t\"39C92693036F\")\r\n\t    (object Class_Category \"Global Data Types\"\r\n\t\tattributes \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"dmItem\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsRootDomainPackage\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"dmDomainPackage\"\r\n\t\t\tvalue      \t\"Data Modeler\"))\r\n\t\tquid       \t\"5B1AA85A03AD\"\r\n\t\texportControl \t\"Public\"\r\n\t\tlogical_models \t(list unit_reference_list)\r\n\t\tlogical_presentations \t(list unit_reference_list))\r\n\t    (object Class_Category \"Schemas\"\r\n\t\tattributes \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"dmItem\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsRootSchema\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"dmSchema\"\r\n\t\t\tvalue      \t\"Data Modeler\"))\r\n\t\tquid       \t\"5B1AA85A03B2\"\r\n\t\texportControl \t\"Public\"\r\n\t\tlogical_models \t(list unit_reference_list\r\n\t\t    (object Class_Category \"S_0\"\r\n\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\tvalue      \tTRUE)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"IsSchema\"\r\n\t\t\t\tvalue      \tTRUE)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"dmSchema\"\r\n\t\t\t\tvalue      \t\"Data Modeler\")\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\tvalue      \t\"S_0\")\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\tvalue      \t\"\"))\r\n\t\t\tquid       \t\"5B1AA8CD02FA\"\r\n\t\t\tstereotype \t\"Schema\"\r\n\t\t\texportControl \t\"Public\"\r\n\t\t\tlogical_models \t(list unit_reference_list\r\n\t\t\t    (object Class \"SPU\"\r\n\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"IsTable\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\tvalue      \t\"SPU\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\tvalue      \t\"item_spu\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"TableSpaceID\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"HasLikeStatemenet\"\r\n\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeTableName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeIncludeIdentity\"\r\n\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeColumnAttr\"\r\n\t\t\t\t\tvalue      \t\"False\"))\r\n\t\t\t\tquid       \t\"5B1AA9510260\"\r\n\t\t\t\tstereotype \t\"Table\"\r\n\t\t\t\tclass_attributes \t(list class_attribute_list\r\n\t\t\t\t    (object ClassAttribute \"id\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ExplicitNullable\"\r\n\t\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\t\tvalue      \t\"id\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Ordinal\"\r\n\t\t\t\t\t\tvalue      \t1)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Length\"\r\n\t\t\t\t\t\tvalue      \t10)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"NullsAllowed\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"IsIdentity\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ForBitData\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ColumnType\"\r\n\t\t\t\t\t\tvalue      \t\"Native\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\t\t\t\tvalue      \t\"No Default Value\"))\r\n\t\t\t\t\tquid       \t\"5B1AACB2038A\"\r\n\t\t\t\t\ttype       \t\"VARCHAR(10)\"\r\n\t\t\t\t\texportControl \t\"Neither\")\r\n\t\t\t\t    (object ClassAttribute \"Ʒ\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\t\tvalue      \t\"Ʒ\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Ordinal\"\r\n\t\t\t\t\t\tvalue      \t2)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Length\"\r\n\t\t\t\t\t\tvalue      \t30)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"NullsAllowed\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"IsIdentity\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ForBitData\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ExplicitNullable\"\r\n\t\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ColumnType\"\r\n\t\t\t\t\t\tvalue      \t\"Native\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\t\t\t\tvalue      \t\"No Default Value\"))\r\n\t\t\t\t\tquid       \t\"5B1AACB203AD\"\r\n\t\t\t\t\ttype       \t\"VARCHAR(30)\"\r\n\t\t\t\t\texportControl \t\"Neither\")\r\n\t\t\t\t    (object ClassAttribute \"Ʒid\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\t\tvalue      \t\"Ʒid\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Ordinal\"\r\n\t\t\t\t\t\tvalue      \t3)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"NullsAllowed\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"IsIdentity\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ForBitData\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ExplicitNullable\"\r\n\t\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ColumnType\"\r\n\t\t\t\t\t\tvalue      \t\"Native\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\t\t\t\tvalue      \t\"No Default Value\"))\r\n\t\t\t\t\tquid       \t\"5B1AACB203CB\"\r\n\t\t\t\t\ttype       \t\"SMALLINT\"\r\n\t\t\t\t\texportControl \t\"Neither\"))\r\n\t\t\t\tlanguage   \t\"Data Modeler\")\r\n\t\t\t    (object Class \"SKU\"\r\n\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"IsTable\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\tvalue      \t\"T_1\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"TableSpaceID\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"HasLikeStatemenet\"\r\n\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeTableName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeIncludeIdentity\"\r\n\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeColumnAttr\"\r\n\t\t\t\t\tvalue      \t\"False\"))\r\n\t\t\t\tquid       \t\"5B1AA9BA0234\"\r\n\t\t\t\tstereotype \t\"Table\"\r\n\t\t\t\tlanguage   \t\"Data Modeler\")\r\n\t\t\t    (object Class \"Ʒ\"\r\n\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"IsTable\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\tvalue      \t\"Ʒ\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"TableSpaceID\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"HasLikeStatemenet\"\r\n\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeTableName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeIncludeIdentity\"\r\n\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeColumnAttr\"\r\n\t\t\t\t\tvalue      \t\"False\"))\r\n\t\t\t\tquid       \t\"5B1AAA6501AC\"\r\n\t\t\t\tstereotype \t\"Table\"\r\n\t\t\t\tclass_attributes \t(list class_attribute_list\r\n\t\t\t\t    (object ClassAttribute \"id\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ExplicitNullable\"\r\n\t\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\t\tvalue      \t\"id\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Ordinal\"\r\n\t\t\t\t\t\tvalue      \t1)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Length\"\r\n\t\t\t\t\t\tvalue      \t10)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"NullsAllowed\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"IsIdentity\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ForBitData\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ColumnType\"\r\n\t\t\t\t\t\tvalue      \t\"Native\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\t\t\t\tvalue      \t\"No Default Value\"))\r\n\t\t\t\t\tquid       \t\"5B1AAAC90295\"\r\n\t\t\t\t\ttype       \t\"VARCHAR(10)\"\r\n\t\t\t\t\texportControl \t\"Neither\")\r\n\t\t\t\t    (object ClassAttribute \"Ʒ\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ExplicitNullable\"\r\n\t\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\t\tvalue      \t\"Ʒ\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Ordinal\"\r\n\t\t\t\t\t\tvalue      \t2)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Length\"\r\n\t\t\t\t\t\tvalue      \t30)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"NullsAllowed\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"IsIdentity\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ForBitData\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ColumnType\"\r\n\t\t\t\t\t\tvalue      \t\"Native\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\t\t\t\tvalue      \t\"No Default Value\"))\r\n\t\t\t\t\tquid       \t\"5B1AAAC902B9\"\r\n\t\t\t\t\ttype       \t\"VARCHAR(30)\"\r\n\t\t\t\t\texportControl \t\"Neither\"))\r\n\t\t\t\tlanguage   \t\"Data Modeler\")\r\n\t\t\t    (object Class \"\"\r\n\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"IsTable\"\r\n\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"TableSpaceID\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"HasLikeStatemenet\"\r\n\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeTableName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeIncludeIdentity\"\r\n\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"LikeColumnAttr\"\r\n\t\t\t\t\tvalue      \t\"False\"))\r\n\t\t\t\tquid       \t\"5B1AACBF0283\"\r\n\t\t\t\tstereotype \t\"Table\"\r\n\t\t\t\tclass_attributes \t(list class_attribute_list\r\n\t\t\t\t    (object ClassAttribute \"id\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ExplicitNullable\"\r\n\t\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\t\tvalue      \t\"id\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Ordinal\"\r\n\t\t\t\t\t\tvalue      \t1)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Length\"\r\n\t\t\t\t\t\tvalue      \t10)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"NullsAllowed\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"IsIdentity\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ForBitData\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ColumnType\"\r\n\t\t\t\t\t\tvalue      \t\"Native\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\t\t\t\tvalue      \t\"No Default Value\"))\r\n\t\t\t\t\tquid       \t\"5B1AAD45002A\"\r\n\t\t\t\t\ttype       \t\"VARCHAR(10)\"\r\n\t\t\t\t\texportControl \t\"Neither\")\r\n\t\t\t\t    (object ClassAttribute \"\"\r\n\t\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\t\tvalue      \tTRUE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ExplicitNullable\"\r\n\t\t\t\t\t\tvalue      \t\"False\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"Ordinal\"\r\n\t\t\t\t\t\tvalue      \t2)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"NullsAllowed\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"IsIdentity\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ForBitData\"\r\n\t\t\t\t\t\tvalue      \tFALSE)\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"ColumnType\"\r\n\t\t\t\t\t\tvalue      \t\"Native\")\r\n\t\t\t\t\t    (object Attribute\r\n\t\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\t\t\t\tvalue      \t\"No Default Value\"))\r\n\t\t\t\t\tquid       \t\"5B1AAD45004B\"\r\n\t\t\t\t\ttype       \t\"SMALLINT\"\r\n\t\t\t\t\texportControl \t\"Neither\"))\r\n\t\t\t\tlanguage   \t\"Data Modeler\"))\r\n\t\t\tlogical_presentations \t(list unit_reference_list\r\n\t\t\t    (object ClassDiagram \"NewDiagram\"\r\n\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\tvalue      \t\"True\"))\r\n\t\t\t\tquid       \t\"5B1AA92C02F1\"\r\n\t\t\t\ttitle      \t\"NewDiagram\"\r\n\t\t\t\tzoom       \t100\r\n\t\t\t\tmax_height \t28350\r\n\t\t\t\tmax_width  \t21600\r\n\t\t\t\torigin_x   \t0\r\n\t\t\t\torigin_y   \t0\r\n\t\t\t\titems      \t(list diagram_item_list\r\n\t\t\t\t    (object ClassView \"Class\" \"Logical View::Schemas::S_0::SPU\" @1\r\n\t\t\t\t\tShowCompartmentStereotypes \tTRUE\r\n\t\t\t\t\tIncludeAttribute \tTRUE\r\n\t\t\t\t\tIncludeOperation \tTRUE\r\n\t\t\t\t\tlocation   \t(1200, 368)\r\n\t\t\t\t\tfont       \t(object Font\r\n\t\t\t\t\t    size       \t10\r\n\t\t\t\t\t    face       \t\"Arial\"\r\n\t\t\t\t\t    bold       \tFALSE\r\n\t\t\t\t\t    italics    \tFALSE\r\n\t\t\t\t\t    underline  \tFALSE\r\n\t\t\t\t\t    strike     \tFALSE\r\n\t\t\t\t\t    color      \t0\r\n\t\t\t\t\t    default_color \tTRUE)\r\n\t\t\t\t\tlabel      \t(object ItemLabel\r\n\t\t\t\t\t    Parent_View \t@1\r\n\t\t\t\t\t    location   \t(855, 278)\r\n\t\t\t\t\t    fill_color \t13434879\r\n\t\t\t\t\t    nlines     \t1\r\n\t\t\t\t\t    max_width  \t690\r\n\t\t\t\t\t    justify    \t0\r\n\t\t\t\t\t    label      \t\"SPU\")\r\n\t\t\t\t\ticon       \t\"Table\"\r\n\t\t\t\t\ticon_style \t\"Decoration\"\r\n\t\t\t\t\tline_color \t3342489\r\n\t\t\t\t\tfill_color \t13434879\r\n\t\t\t\t\tquidu      \t\"5B1AA9510260\"\r\n\t\t\t\t\tcompartment \t(object Compartment\r\n\t\t\t\t\t    Parent_View \t@1\r\n\t\t\t\t\t    location   \t(855, 339)\r\n\t\t\t\t\t    font       \t(object Font\r\n\t\t\t\t\t\tsize       \t10\r\n\t\t\t\t\t\tface       \t\"Arial\"\r\n\t\t\t\t\t\tbold       \tFALSE\r\n\t\t\t\t\t\titalics    \tFALSE\r\n\t\t\t\t\t\tunderline  \tFALSE\r\n\t\t\t\t\t\tstrike     \tFALSE\r\n\t\t\t\t\t\tcolor      \t0\r\n\t\t\t\t\t\tdefault_color \tTRUE)\r\n\t\t\t\t\t    icon_style \t\"Icon\"\r\n\t\t\t\t\t    fill_color \t13434879\r\n\t\t\t\t\t    anchor     \t2\r\n\t\t\t\t\t    nlines     \t4\r\n\t\t\t\t\t    max_width  \t524)\r\n\t\t\t\t\twidth      \t708\r\n\t\t\t\t\theight     \t380\r\n\t\t\t\t\tannotation \t8\r\n\t\t\t\t\tautoResize \tTRUE)\r\n\t\t\t\t    (object ClassView \"Class\" \"Logical View::Schemas::S_0::SKU\" @2\r\n\t\t\t\t\tShowCompartmentStereotypes \tTRUE\r\n\t\t\t\t\tIncludeAttribute \tTRUE\r\n\t\t\t\t\tIncludeOperation \tTRUE\r\n\t\t\t\t\tlocation   \t(1120, 848)\r\n\t\t\t\t\tfont       \t(object Font\r\n\t\t\t\t\t    size       \t10\r\n\t\t\t\t\t    face       \t\"Arial\"\r\n\t\t\t\t\t    bold       \tFALSE\r\n\t\t\t\t\t    italics    \tFALSE\r\n\t\t\t\t\t    underline  \tFALSE\r\n\t\t\t\t\t    strike     \tFALSE\r\n\t\t\t\t\t    color      \t0\r\n\t\t\t\t\t    default_color \tTRUE)\r\n\t\t\t\t\tlabel      \t(object ItemLabel\r\n\t\t\t\t\t    Parent_View \t@2\r\n\t\t\t\t\t    location   \t(988, 837)\r\n\t\t\t\t\t    fill_color \t13434879\r\n\t\t\t\t\t    nlines     \t1\r\n\t\t\t\t\t    max_width  \t264\r\n\t\t\t\t\t    justify    \t0\r\n\t\t\t\t\t    label      \t\"SKU\")\r\n\t\t\t\t\ticon       \t\"Table\"\r\n\t\t\t\t\ticon_style \t\"Decoration\"\r\n\t\t\t\t\tline_color \t3342489\r\n\t\t\t\t\tfill_color \t13434879\r\n\t\t\t\t\tquidu      \t\"5B1AA9BA0234\"\r\n\t\t\t\t\twidth      \t282\r\n\t\t\t\t\theight     \t222\r\n\t\t\t\t\tannotation \t8\r\n\t\t\t\t\tautoResize \tTRUE)\r\n\t\t\t\t    (object ClassView \"Class\" \"Logical View::Schemas::S_0::Ʒ\" @3\r\n\t\t\t\t\tShowCompartmentStereotypes \tTRUE\r\n\t\t\t\t\tIncludeAttribute \tTRUE\r\n\t\t\t\t\tIncludeOperation \tTRUE\r\n\t\t\t\t\tlocation   \t(2064, 496)\r\n\t\t\t\t\tfont       \t(object Font\r\n\t\t\t\t\t    size       \t10\r\n\t\t\t\t\t    face       \t\"Arial\"\r\n\t\t\t\t\t    bold       \tFALSE\r\n\t\t\t\t\t    italics    \tFALSE\r\n\t\t\t\t\t    underline  \tFALSE\r\n\t\t\t\t\t    strike     \tFALSE\r\n\t\t\t\t\t    color      \t0\r\n\t\t\t\t\t    default_color \tTRUE)\r\n\t\t\t\t\tlabel      \t(object ItemLabel\r\n\t\t\t\t\t    Parent_View \t@3\r\n\t\t\t\t\t    location   \t(1719, 430)\r\n\t\t\t\t\t    fill_color \t13434879\r\n\t\t\t\t\t    nlines     \t1\r\n\t\t\t\t\t    max_width  \t690\r\n\t\t\t\t\t    justify    \t0\r\n\t\t\t\t\t    label      \t\"Ʒ\")\r\n\t\t\t\t\ticon       \t\"Table\"\r\n\t\t\t\t\ticon_style \t\"Decoration\"\r\n\t\t\t\t\tline_color \t3342489\r\n\t\t\t\t\tfill_color \t13434879\r\n\t\t\t\t\tquidu      \t\"5B1AAA6501AC\"\r\n\t\t\t\t\tcompartment \t(object Compartment\r\n\t\t\t\t\t    Parent_View \t@3\r\n\t\t\t\t\t    location   \t(1719, 491)\r\n\t\t\t\t\t    font       \t(object Font\r\n\t\t\t\t\t\tsize       \t10\r\n\t\t\t\t\t\tface       \t\"Arial\"\r\n\t\t\t\t\t\tbold       \tFALSE\r\n\t\t\t\t\t\titalics    \tFALSE\r\n\t\t\t\t\t\tunderline  \tFALSE\r\n\t\t\t\t\t\tstrike     \tFALSE\r\n\t\t\t\t\t\tcolor      \t0\r\n\t\t\t\t\t\tdefault_color \tTRUE)\r\n\t\t\t\t\t    icon_style \t\"Icon\"\r\n\t\t\t\t\t    fill_color \t13434879\r\n\t\t\t\t\t    anchor     \t2\r\n\t\t\t\t\t    nlines     \t3\r\n\t\t\t\t\t    max_width  \t524)\r\n\t\t\t\t\twidth      \t708\r\n\t\t\t\t\theight     \t332\r\n\t\t\t\t\tannotation \t8\r\n\t\t\t\t\tautoResize \tTRUE)\r\n\t\t\t\t    (object ClassView \"Class\" \"Logical View::Schemas::S_0::\" @4\r\n\t\t\t\t\tShowCompartmentStereotypes \tTRUE\r\n\t\t\t\t\tIncludeAttribute \tTRUE\r\n\t\t\t\t\tIncludeOperation \tTRUE\r\n\t\t\t\t\tlocation   \t(384, 784)\r\n\t\t\t\t\tfont       \t(object Font\r\n\t\t\t\t\t    size       \t10\r\n\t\t\t\t\t    face       \t\"Arial\"\r\n\t\t\t\t\t    bold       \tFALSE\r\n\t\t\t\t\t    italics    \tFALSE\r\n\t\t\t\t\t    underline  \tFALSE\r\n\t\t\t\t\t    strike     \tFALSE\r\n\t\t\t\t\t    color      \t0\r\n\t\t\t\t\t    default_color \tTRUE)\r\n\t\t\t\t\tlabel      \t(object ItemLabel\r\n\t\t\t\t\t    Parent_View \t@4\r\n\t\t\t\t\t    location   \t(78, 719)\r\n\t\t\t\t\t    fill_color \t13434879\r\n\t\t\t\t\t    nlines     \t1\r\n\t\t\t\t\t    max_width  \t612\r\n\t\t\t\t\t    justify    \t0\r\n\t\t\t\t\t    label      \t\"\")\r\n\t\t\t\t\ticon       \t\"Table\"\r\n\t\t\t\t\ticon_style \t\"Decoration\"\r\n\t\t\t\t\tline_color \t3342489\r\n\t\t\t\t\tfill_color \t13434879\r\n\t\t\t\t\tquidu      \t\"5B1AACBF0283\"\r\n\t\t\t\t\tcompartment \t(object Compartment\r\n\t\t\t\t\t    Parent_View \t@4\r\n\t\t\t\t\t    location   \t(78, 780)\r\n\t\t\t\t\t    font       \t(object Font\r\n\t\t\t\t\t\tsize       \t10\r\n\t\t\t\t\t\tface       \t\"Arial\"\r\n\t\t\t\t\t\tbold       \tFALSE\r\n\t\t\t\t\t\titalics    \tFALSE\r\n\t\t\t\t\t\tunderline  \tFALSE\r\n\t\t\t\t\t\tstrike     \tFALSE\r\n\t\t\t\t\t\tcolor      \t0\r\n\t\t\t\t\t\tdefault_color \tTRUE)\r\n\t\t\t\t\t    icon_style \t\"Icon\"\r\n\t\t\t\t\t    fill_color \t13434879\r\n\t\t\t\t\t    anchor     \t2\r\n\t\t\t\t\t    nlines     \t3\r\n\t\t\t\t\t    max_width  \t456)\r\n\t\t\t\t\twidth      \t630\r\n\t\t\t\t\theight     \t330\r\n\t\t\t\t\tannotation \t8\r\n\t\t\t\t\tautoResize \tTRUE))))))\r\n\t\tlogical_presentations \t(list unit_reference_list)))\r\n\tlogical_presentations \t(list unit_reference_list\r\n\t    (object ClassDiagram \"Package Hierarchy\"\r\n\t\tquid       \t\"39C9261001B8\"\r\n\t\ttitle      \t\"Package Hierarchy\"\r\n\t\tzoom       \t100\r\n\t\tmax_height \t28350\r\n\t\tmax_width  \t21600\r\n\t\torigin_x   \t0\r\n\t\torigin_y   \t0\r\n\t\titems      \t(list diagram_item_list\r\n\t\t    (object CategoryView \"Logical View::java\" @5\r\n\t\t\tlocation   \t(208, 272)\r\n\t\t\tfont       \t(object Font\r\n\t\t\t    size       \t10\r\n\t\t\t    face       \t\"Arial\"\r\n\t\t\t    bold       \tFALSE\r\n\t\t\t    italics    \tFALSE\r\n\t\t\t    underline  \tFALSE\r\n\t\t\t    strike     \tFALSE\r\n\t\t\t    color      \t0\r\n\t\t\t    default_color \tTRUE)\r\n\t\t\tlabel      \t(object ItemLabel\r\n\t\t\t    Parent_View \t@5\r\n\t\t\t    location   \t(64, 188)\r\n\t\t\t    nlines     \t2\r\n\t\t\t    max_width  \t288\r\n\t\t\t    justify    \t0\r\n\t\t\t    label      \t\"java\")\r\n\t\t\ticon_style \t\"Icon\"\r\n\t\t\tline_color \t3342489\r\n\t\t\tfill_color \t16777215\r\n\t\t\tquidu      \t\"39C92661003B\"\r\n\t\t\twidth      \t300\r\n\t\t\theight     \t180)\r\n\t\t    (object CategoryView \"Logical View::javax\" @6\r\n\t\t\tlocation   \t(656, 272)\r\n\t\t\tfont       \t(object Font\r\n\t\t\t    size       \t10\r\n\t\t\t    face       \t\"Arial\"\r\n\t\t\t    bold       \tFALSE\r\n\t\t\t    italics    \tFALSE\r\n\t\t\t    underline  \tFALSE\r\n\t\t\t    strike     \tFALSE\r\n\t\t\t    color      \t0\r\n\t\t\t    default_color \tTRUE)\r\n\t\t\tlabel      \t(object ItemLabel\r\n\t\t\t    Parent_View \t@6\r\n\t\t\t    location   \t(512, 188)\r\n\t\t\t    nlines     \t2\r\n\t\t\t    max_width  \t288\r\n\t\t\t    justify    \t0\r\n\t\t\t    label      \t\"javax\")\r\n\t\t\ticon_style \t\"Icon\"\r\n\t\t\tline_color \t3342489\r\n\t\t\tfill_color \t16777215\r\n\t\t\tquidu      \t\"39C926610018\"\r\n\t\t\twidth      \t300\r\n\t\t\theight     \t180)\r\n\t\t    (object CategoryView \"Logical View::org\" @7\r\n\t\t\tlocation   \t(1104, 272)\r\n\t\t\tfont       \t(object Font\r\n\t\t\t    size       \t10\r\n\t\t\t    face       \t\"Arial\"\r\n\t\t\t    bold       \tFALSE\r\n\t\t\t    italics    \tFALSE\r\n\t\t\t    underline  \tFALSE\r\n\t\t\t    strike     \tFALSE\r\n\t\t\t    color      \t0\r\n\t\t\t    default_color \tTRUE)\r\n\t\t\tlabel      \t(object ItemLabel\r\n\t\t\t    Parent_View \t@7\r\n\t\t\t    location   \t(960, 188)\r\n\t\t\t    nlines     \t2\r\n\t\t\t    max_width  \t288\r\n\t\t\t    justify    \t0\r\n\t\t\t    label      \t\"org\")\r\n\t\t\ticon_style \t\"Icon\"\r\n\t\t\tline_color \t3342489\r\n\t\t\tfill_color \t16777215\r\n\t\t\tquidu      \t\"39C92693036F\"\r\n\t\t\twidth      \t300\r\n\t\t\theight     \t180)))\r\n\t    (object ClassDiagram \"Legend\"\r\n\t\tquid       \t\"39CD51840059\"\r\n\t\ttitle      \t\"Legend\"\r\n\t\tzoom       \t100\r\n\t\tmax_height \t28350\r\n\t\tmax_width  \t21600\r\n\t\torigin_x   \t0\r\n\t\torigin_y   \t0\r\n\t\titems      \t(list diagram_item_list\r\n\t\t    (object NoteView @8\r\n\t\t\tlocation   \t(224, 624)\r\n\t\t\tfont       \t(object Font\r\n\t\t\t    size       \t10\r\n\t\t\t    face       \t\"Arial\"\r\n\t\t\t    bold       \tFALSE\r\n\t\t\t    italics    \tFALSE\r\n\t\t\t    underline  \tFALSE\r\n\t\t\t    strike     \tFALSE\r\n\t\t\t    color      \t0\r\n\t\t\t    default_color \tTRUE)\r\n\t\t\tline_color \t3342489\r\n\t\t\tfill_color \t12632256\r\n\t\t\twidth      \t300\r\n\t\t\theight     \t132)\r\n\t\t    (object NoteView @9\r\n\t\t\tlocation   \t(704, 624)\r\n\t\t\tfont       \t(object Font\r\n\t\t\t    size       \t10\r\n\t\t\t    face       \t\"Arial\"\r\n\t\t\t    bold       \tFALSE\r\n\t\t\t    italics    \tFALSE\r\n\t\t\t    underline  \tFALSE\r\n\t\t\t    strike     \tFALSE\r\n\t\t\t    color      \t0\r\n\t\t\t    default_color \tTRUE)\r\n\t\t\tline_color \t3342489\r\n\t\t\tfill_color \t8421631\r\n\t\t\twidth      \t300\r\n\t\t\theight     \t132)\r\n\t\t    (object NoteView @10\r\n\t\t\tlocation   \t(1200, 624)\r\n\t\t\tfont       \t(object Font\r\n\t\t\t    size       \t10\r\n\t\t\t    face       \t\"Arial\"\r\n\t\t\t    bold       \tFALSE\r\n\t\t\t    italics    \tFALSE\r\n\t\t\t    underline  \tFALSE\r\n\t\t\t    strike     \tFALSE\r\n\t\t\t    color      \t0\r\n\t\t\t    default_color \tTRUE)\r\n\t\t\tline_color \t3342489\r\n\t\t\tfill_color \t12615680\r\n\t\t\twidth      \t300\r\n\t\t\theight     \t132)\r\n\t\t    (object NoteView @11\r\n\t\t\tlocation   \t(1664, 624)\r\n\t\t\tfont       \t(object Font\r\n\t\t\t    size       \t10\r\n\t\t\t    face       \t\"Arial\"\r\n\t\t\t    bold       \tFALSE\r\n\t\t\t    italics    \tFALSE\r\n\t\t\t    underline  \tFALSE\r\n\t\t\t    strike     \tFALSE\r\n\t\t\t    color      \t0\r\n\t\t\t    default_color \tTRUE)\r\n\t\t\tline_color \t3342489\r\n\t\t\tfill_color \t16777215\r\n\t\t\twidth      \t300\r\n\t\t\theight     \t132)\r\n\t\t    (object Label @12\r\n\t\t\tlocation   \t(81, 369)\r\n\t\t\tfont       \t(object Font\r\n\t\t\t    size       \t12\r\n\t\t\t    face       \t\"Arial\"\r\n\t\t\t    bold       \tTRUE\r\n\t\t\t    italics    \tFALSE\r\n\t\t\t    underline  \tFALSE\r\n\t\t\t    strike     \tFALSE\r\n\t\t\t    color      \t0\r\n\t\t\t    default_color \tTRUE)\r\n\t\t\tnlines     \t1\r\n\t\t\tmax_width  \t1163\r\n\t\t\tlabel      \t\"J2EE: Java 2 Platform, Enterprise Edition - v 1.2.1\")\r\n\t\t    (object Label @13\r\n\t\t\tlocation   \t(96, 608)\r\n\t\t\tfont       \t(object Font\r\n\t\t\t    size       \t10\r\n\t\t\t    face       \t\"Arial\"\r\n\t\t\t    bold       \tFALSE\r\n\t\t\t    italics    \tFALSE\r\n\t\t\t    underline  \tFALSE\r\n\t\t\t    strike     \tFALSE\r\n\t\t\t    color      \t0\r\n\t\t\t    default_color \tTRUE)\r\n\t\t\tnlines     \t1\r\n\t\t\tmax_width  \t268\r\n\t\t\tlabel      \t\"Abstract Class\")\r\n\t\t    (object Label @14\r\n\t\t\tlocation   \t(592, 608)\r\n\t\t\tfont       \t(object Font\r\n\t\t\t    size       \t10\r\n\t\t\t    face       \t\"Arial\"\r\n\t\t\t    bold       \tFALSE\r\n\t\t\t    italics    \tFALSE\r\n\t\t\t    underline  \tFALSE\r\n\t\t\t    strike     \tFALSE\r\n\t\t\t    color      \t0\r\n\t\t\t    default_color \tTRUE)\r\n\t\t\tnlines     \t1\r\n\t\t\tmax_width  \t225\r\n\t\t\tlabel      \t\"Final Class\")\r\n\t\t    (object Label @15\r\n\t\t\tlocation   \t(1104, 608)\r\n\t\t\tfont       \t(object Font\r\n\t\t\t    size       \t10\r\n\t\t\t    face       \t\"Arial\"\r\n\t\t\t    bold       \tFALSE\r\n\t\t\t    italics    \tFALSE\r\n\t\t\t    underline  \tFALSE\r\n\t\t\t    strike     \tFALSE\r\n\t\t\t    color      \t0\r\n\t\t\t    default_color \tTRUE)\r\n\t\t\tnlines     \t1\r\n\t\t\tmax_width  \t206\r\n\t\t\tlabel      \t\"Interface\")\r\n\t\t    (object Label @16\r\n\t\t\tlocation   \t(1552, 608)\r\n\t\t\tfont       \t(object Font\r\n\t\t\t    size       \t10\r\n\t\t\t    face       \t\"Arial\"\r\n\t\t\t    bold       \tFALSE\r\n\t\t\t    italics    \tFALSE\r\n\t\t\t    underline  \tFALSE\r\n\t\t\t    strike     \tFALSE\r\n\t\t\t    color      \t0\r\n\t\t\t    default_color \tTRUE)\r\n\t\t\tnlines     \t1\r\n\t\t\tmax_width  \t144\r\n\t\t\tlabel      \t\"Class\")))))\r\n    root_subsystem \t(object SubSystem \"Component View\"\r\n\tquid       \t\"39C9260C00D7\"\r\n\tphysical_models \t(list unit_reference_list\r\n\t    (object SubSystem \"javax\"\r\n\t\tis_unit    \tTRUE\r\n\t\tis_loaded  \tFALSE\r\n\t\tfile_name  \t\"$FRAMEWORK_PATH\\\\Shared Components\\\\j2ee_javax.sub\"\r\n\t\tquid       \t\"39C9266003D8\")\r\n\t    (object SubSystem \"java\"\r\n\t\tis_unit    \tTRUE\r\n\t\tis_loaded  \tFALSE\r\n\t\tfile_name  \t\"$FRAMEWORK_PATH\\\\Shared Components\\\\j2se_1_3_java.sub\"\r\n\t\tquid       \t\"39C92661002C\")\r\n\t    (object SubSystem \"org\"\r\n\t\tis_unit    \tTRUE\r\n\t\tis_loaded  \tFALSE\r\n\t\tfile_name  \t\"$FRAMEWORK_PATH\\\\Shared Components\\\\j2se_1_3_org.sub\"\r\n\t\tquid       \t\"39C9268C01C9\")\r\n\t    (object SubSystem \"DB_0\"\r\n\t\tquid       \t\"5B1AA85B0069\"\r\n\t\tphysical_models \t(list unit_reference_list\r\n\t\t    (object module \"DB_0\" \"NotAModuleType\" \"NotAModulePart\"\r\n\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\tvalue      \tTRUE)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"IsDatabase\"\r\n\t\t\t\tvalue      \tTRUE)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\tvalue      \t\"DB_0\")\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\tvalue      \t\"\")\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"Location\"\r\n\t\t\t\tvalue      \t\"\")\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"TargetDatabase\"\r\n\t\t\t\tvalue      \t\"Oracle 9i\"))\r\n\t\t\tquid       \t\"5B1AA85B006B\"\r\n\t\t\tstereotype \t\"Database\"\r\n\t\t\tvisible_modules \t(list dependency_list\r\n\t\t\t    (object Module_Visibility_Relationship\r\n\t\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\t\tvalue      \t\"True\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"IsTableSpaceDependency\"\r\n\t\t\t\t\tvalue      \t\"True\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\t\tvalue      \t\"\")\r\n\t\t\t\t    (object Attribute\r\n\t\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\t\tvalue      \t\"\"))\r\n\t\t\t\tquid       \t\"5B1AA93E014D\"\r\n\t\t\t\tsupplier   \t\"Component View::DB_0::TSP_0\"\r\n\t\t\t\tquidu      \t\"5B1AA93E0140\"\r\n\t\t\t\tsupplier_is_spec \tTRUE))\r\n\t\t\tlanguage   \t\"Data Modeler\")\r\n\t\t    (object module \"TSP_0\" \"NotAModuleType\" \"NotAModulePart\"\r\n\t\t\tattributes \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"dmItem\"\r\n\t\t\t\tvalue      \tTRUE)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"IsTableSpace\"\r\n\t\t\t\tvalue      \tTRUE)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"DMName\"\r\n\t\t\t\tvalue      \t\"TSP_0\")\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"CodeName\"\r\n\t\t\t\tvalue      \t\"\")\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"DatabaseId\"\r\n\t\t\t\tvalue      \t\"5B1AA85B006B\")\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"IsDefault\"\r\n\t\t\t\tvalue      \t\"False\")\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"BufferPool\"\r\n\t\t\t\tvalue      \t\"\")\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"ExtentSize\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"PrefetchSize\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"PageSize\"\r\n\t\t\t\tvalue      \t0)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"TableSpaceType\"\r\n\t\t\t\tvalue      \t\"Permanent\")\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"ManagedBy\"\r\n\t\t\t\tvalue      \t\"Database\")\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\t\tname       \t\"ContainerList\"\r\n\t\t\t\tvalue      \t\"\"))\r\n\t\t\tquid       \t\"5B1AA93E0140\"\r\n\t\t\tstereotype \t\"Tablespace\"\r\n\t\t\tlanguage   \t\"Data Modeler\"))\r\n\t\tphysical_presentations \t(list unit_reference_list)))\r\n\tphysical_presentations \t(list unit_reference_list\r\n\t    (object Module_Diagram \"Main\"\r\n\t\tquid       \t\"39C9261001B6\"\r\n\t\ttitle      \t\"Main\"\r\n\t\tzoom       \t100\r\n\t\tmax_height \t28350\r\n\t\tmax_width  \t21600\r\n\t\torigin_x   \t0\r\n\t\torigin_y   \t0\r\n\t\titems      \t(list diagram_item_list)))\r\n\tcategory   \t\"Logical View\"\r\n\tquidu      \t\"5B1AA7B60127\")\r\n    process_structure \t(object Processes\r\n\tquid       \t\"39C9260C00D8\"\r\n\tProcsNDevs \t(list\r\n\t    (object Process_Diagram \"Deployment View\"\r\n\t\tquid       \t\"39C9260C00DA\"\r\n\t\ttitle      \t\"Deployment View\"\r\n\t\tzoom       \t100\r\n\t\tmax_height \t28350\r\n\t\tmax_width  \t21600\r\n\t\torigin_x   \t0\r\n\t\torigin_y   \t0\r\n\t\titems      \t(list diagram_item_list))))\r\n    properties \t(object Properties\r\n\tattributes \t(list Attribute_Set\r\n\t    (object Attribute\r\n\t\ttool       \t\"CORBA\"\r\n\t\tname       \t\"propertyId\"\r\n\t\tvalue      \t\"809135966\")\r\n\t    (object Attribute\r\n\t\ttool       \t\"CORBA\"\r\n\t\tname       \t\"default__Project\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"CreateMissingDirectories\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"Editor\"\r\n\t\t\tvalue      \t(\"EditorType\" 100))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"IncludePath\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"StopOnError\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"EditorType\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"CORBA\"\r\n\t\t\t\tname       \t\"BuiltIn\"\r\n\t\t\t\tvalue      \t100)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"CORBA\"\r\n\t\t\t\tname       \t\"WindowsShell\"\r\n\t\t\t\tvalue      \t101)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"PathSeparator\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"CORBA\"\r\n\t\tname       \t\"default__Class\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"ArrayDimensions\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"ConstValue\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"ImplementationType\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"CORBA\"\r\n\t\tname       \t\"default__Module-Spec\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"AdditionalIncludes\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"CmIdentification\"\r\n\t\t\tvalue      \t(value Text \"  %X% %Q% %Z% %W%\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"CopyrightNotice\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"InclusionProtectionSymbol\"\r\n\t\t\tvalue      \t\"AUTO GENERATE\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"CORBA\"\r\n\t\tname       \t\"default__Module-Body\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"AdditionalIncludes\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"CmIdentification\"\r\n\t\t\tvalue      \t(value Text \"  %X% %Q% %Z% %W%\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"CopyrightNotice\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"InclusionProtectionSymbol\"\r\n\t\t\tvalue      \t\"AUTO GENERATE\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"CORBA\"\r\n\t\tname       \t\"default__Operation\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"Context\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"OperationIsOneWay\"\r\n\t\t\tvalue      \tFALSE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"CORBA\"\r\n\t\tname       \t\"default__Attribute\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"ArrayDimensions\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"CaseSpecifier\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"IsReadOnly\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"Order\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"CORBA\"\r\n\t\tname       \t\"default__Role\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"ArrayDimensions\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"CaseSpecifier\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"GenerateForwardReference\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"IsReadOnly\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"Order\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"BoundedRoleType\"\r\n\t\t\tvalue      \t(\"AssocTypeSet\" 47))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"AssocTypeSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"CORBA\"\r\n\t\t\t\tname       \t\"Array\"\r\n\t\t\t\tvalue      \t24)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"CORBA\"\r\n\t\t\t\tname       \t\"Sequence\"\r\n\t\t\t\tvalue      \t47)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"CORBA\"\r\n\t\tname       \t\"default__Uses\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"GenerateForwardReference\"\r\n\t\t\tvalue      \tFALSE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"CORBA\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"Data Modeler\"\r\n\t\tname       \t\"propertyId\"\r\n\t\tvalue      \t\"809135966\")\r\n\t    (object Attribute\r\n\t\ttool       \t\"Data Modeler\"\r\n\t\tname       \t\"default__Project\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"project\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"TableCounter\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DomainCounter\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"SPPackageCounter\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"TriggerCounter\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IndexCounter\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ConstraintCounter\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"StoreProcedureCounter\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"PrimaryKeyCounter\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ForeignKeyCounter\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"TablePrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DomainPrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"TriggerPrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IndexPrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ConstraintPrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"StoreProcedurePrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"PrimaryKeyPrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ForeignKeyPrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ViewCounter\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"JoinCounter\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"TableSpaceCounter\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"cONTAINERCounter\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ViewPrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"TableSpacePrefix\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Data Modeler\"\r\n\t\tname       \t\"default__Module-Spec\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"dmItem\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DMName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsDatabase\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"TargetDatabase\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"Location\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsTableSpace\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"TableSpaceType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsDeault\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"BufferPool\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ExtentSize\"\r\n\t\t\tvalue      \t1)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"PrefetchSize\"\r\n\t\t\tvalue      \t1)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"PageSize\"\r\n\t\t\tvalue      \t4)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ManagedBy\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ContainerList\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Data Modeler\"\r\n\t\tname       \t\"default__Category\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"dmItem\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DMName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"dmSchema\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"dmDomainPackage\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsSchema\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsDomainPackage\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsRootSchema\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsRootDomainPackage\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsSchemaPackage\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DatabaseID\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DBMS\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Data Modeler\"\r\n\t\tname       \t\"default__Class\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"dmItem\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DMName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsTable\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsView\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsDomain\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsSPPackage\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"Synonymns\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"TableSpace\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"SourceId\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"SourceType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"SelectClause\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsUpdatable\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"CheckOption\"\r\n\t\t\tvalue      \t\"None\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"PersistToServer\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"TableSpaceID\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"CorrelationName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsUpdateable\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsSnapShot\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsDistinct\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsPackage\"\r\n\t\t\tvalue      \tFALSE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Data Modeler\"\r\n\t\tname       \t\"default__Attribute\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"dmItem\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DMName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"Ordinal\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsIdentity\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsUnique\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"NullsAllowed\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DataTypeName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"Length\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"Scale\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ColumnType\"\r\n\t\t\tvalue      \t\"Native\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ForBitData\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DefaultValue\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"SourceId\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"SourceType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"OID\"\r\n\t\t\tvalue      \tFALSE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Data Modeler\"\r\n\t\tname       \t\"default__Association\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"dmItem\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DMName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsRelationship\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"SourceId\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"SourceType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"RIMethod\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ParentUpdateRule\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ParentUpdateRuleName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ParentDeleteRule\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ParentDeleteRuleName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ChildInsertRestrict\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ChildInsertRestrictName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ChildMultiplicity\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ChildMultiplicityName\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Data Modeler\"\r\n\t\tname       \t\"default__Role\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"dmItem\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DMName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ConstraintName\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Data Modeler\"\r\n\t\tname       \t\"default__Operation\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"dmItem\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DMName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsConstraint\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ConstraintType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsIndex\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsTrigger\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsStoredProcedure\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsCluster\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"TableSpace\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"FillFactor\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"KeyList\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"CheckPredicate\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsUnique\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DeferalMode\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"InitialCheckTime\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"TriggerType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsInsertEvent\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsUpdateEvent\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsDeleteEvent\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"RefOldTable\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"RefNewTable\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"RefOldRow\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"RefNewRow\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsRow\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"WhenClause\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"Language\"\r\n\t\t\tvalue      \t\"SQL\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ProcType\"\r\n\t\t\tvalue      \t\"Procedure\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsDeterministic\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ParameterStyle\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ReturnedNull\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ExternalName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ReturnTypeName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"Length\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"Scale\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ForBitData\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DefaultValue\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Data Modeler\"\r\n\t\tname       \t\"default__Parameter\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"dmItem\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DMName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsInParameter\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"IsOutParameter\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"Ordinal\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DataTypeName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"Length\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"Scale\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"ForBitData\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DefaultValueType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"DefaultValue\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Data Modeler\"\r\n\t\t\tname       \t\"OperationID\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Data Modeler\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"Data Modeler Communicator\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"framework\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"Java\"\r\n\t\tname       \t\"propertyId\"\r\n\t\tvalue      \t\"809135966\")\r\n\t    (object Attribute\r\n\t\ttool       \t\"Java\"\r\n\t\tname       \t\"default__Project\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"RootDir\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"CreateMissingDirectories\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"StopOnError\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"UsePrefixes\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"AutoSync\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ShowCodegenDlg\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"JavadocDefaultAuthor\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"JavadocDefaultVersion\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"JavadocDefaultSince\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"JavadocNumAsterisks\"\r\n\t\t\tvalue      \t0)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"MaxNumChars\"\r\n\t\t\tvalue      \t80)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Editor\"\r\n\t\t\tvalue      \t(\"EditorType\" 100))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"VM\"\r\n\t\t\tvalue      \t(\"VMType\" 200))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ClassPath\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EditorType\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"BuiltIn\"\r\n\t\t\t\tvalue      \t100)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"VMType\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Sun\"\r\n\t\t\t\tvalue      \t200)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"InstanceVariablePrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ClassVariablePrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"DefaultAttributeDataType\"\r\n\t\t\tvalue      \t\"int\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"DefaultOperationReturnType\"\r\n\t\t\tvalue      \t\"void\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"NoClassCustomDlg\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GlobalImports\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"OpenBraceClassStyle\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"OpenBraceMethodStyle\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"UseTabs\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"UseSpaces\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"SpacingItems\"\r\n\t\t\tvalue      \t3)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"RoseDefaultCommentStyle\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"AsteriskCommentStyle\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"JavaCommentStyle\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"JavadocAuthor\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"JavadocSince\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"JavadocVersion\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"FundamentalType\"\r\n\t\t\tvalue      \t\"boolean; char; byte; short; int; long; float; double; Boolean; Byte; Character; Double; Float; Integer; Long; Object; Short; String; StringBuffer; Void; java.math.BigDecimal; java.math.BigInteger; java.sql.Date; java.sql.Time; java.sql.Timestamp; java.util.AbstractCollection; java.util.AbstractList;java.util.AbstractMap; java.util.AbstractSequentialList; java.util.AbstractSet; java.util.ArrayList; java.util.Arrays; java.util.BitSet; java.util.Calendar; java.util.Collections; java.util.Date; java.util.Date; java.util.Dictionary; java.util.EventObject; java.util.GregorianCalendar; java.util.HashMap; java.util.HashSet; java.util.Hashtable; java.util.LinkedList; java.util.ListResourceBundle; java.util.Locale; java.util.Observable; java.util.Properties; java.util.PropertyPermission; java.util.PropertyResourceBundle; java.util.Random; java.util.ResourceBundle; java.util.SimpleTimeZone; java.util.Stack; java.util.StringTokenizer; java.util.Timer; java.util.TimerTask; java.util.TimeZone; java.util.TreeMap; java.util.TreeSet; java.util.Vector; java.util.WeakHashMap\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"NotShowRoseIDDlg\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateRoseID\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateDefaultJ2EEJavadoc\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateDefaultReturnLine\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"UserDefineJavaDocTags\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ReferenceClasspath\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"VAJavaWorkingFolder\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"BeanPrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"BeanSuffix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"RemotePrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"RemoteSuffix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"HomePrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"HomeSuffix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"LocalPrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"LocalSuffix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"LocalHomePrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"LocalHomeSuffix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"PrimaryKeyPrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"PrimaryKeySuffix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBDTDLocation\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletDTDLocation\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"DefaultEJBVersion\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"DefaultServletVersion\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"SourceControl\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"SCCSelected\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"SCCProjectSourceRoot\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"SCCProjectName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"SCCComment\"\r\n\t\t\tvalue      \tFALSE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Java\"\r\n\t\tname       \t\"default__Class\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Final\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Static\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateDefaultConstructor\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ConstructorIs\"\r\n\t\t\tvalue      \t(\"Ctor_Set\" 62))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Ctor_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"public\"\r\n\t\t\t\tvalue      \t62)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"protected\"\r\n\t\t\t\tvalue      \t63)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"private\"\r\n\t\t\t\tvalue      \t64)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"package\"\r\n\t\t\t\tvalue      \t65)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateFinalizer\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateStaticInitializer\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateInstanceInitializer\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateCode\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"DisableAutoSync\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ReadOnly\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Strictfp\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletContextRef\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"IsSingleThread\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletInitParameter\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletInitParameterNames\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletIsSecure\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletRequestDispatcher\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletRequestDispatcherPath\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"DispatcherInclude\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"DispatcherForward\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletSecurityRoles\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletgetInfo\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletXMLFilePath\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Generate_XML_DD\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBCmpField\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBEnvironmentProperties\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBCnxFactory\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBReferences\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBSecurityRoles\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBNameInJAR\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBSessionType\"\r\n\t\t\tvalue      \t(\"EJBSessionType_Set\" 200))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBSessionType_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"\"\r\n\t\t\t\tvalue      \t200)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Stateless\"\r\n\t\t\t\tvalue      \t201)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Stateful\"\r\n\t\t\t\tvalue      \t202)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBTransactionType\"\r\n\t\t\tvalue      \t(\"EJBTransactionType_Set\" 211))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBTransactionType_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Container\"\r\n\t\t\t\tvalue      \t211)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Bean\"\r\n\t\t\t\tvalue      \t212)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBPersistenceType\"\r\n\t\t\tvalue      \t(\"EJBPersistenceType_Set\" 220))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBPersistenceType_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"\"\r\n\t\t\t\tvalue      \t220)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Bean\"\r\n\t\t\t\tvalue      \t221)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Container\"\r\n\t\t\t\tvalue      \t222)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBReentrant\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBSessionSync\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBVersion\"\r\n\t\t\tvalue      \t(\"EJBVersion_Set\" 230))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBVersion_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"2.0\"\r\n\t\t\t\tvalue      \t230)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"1.x\"\r\n\t\t\t\tvalue      \t231)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBXMLFilePath\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Java\"\r\n\t\tname       \t\"Default_Servlet__Class\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletContextRef\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"IsSingleThread\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletInitParameter\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletInitParameterNames\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletIsSecure\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletRequestDispatcher\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletRequestDispatcherPath\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"DispatcherInclude\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"DispatcherForward\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletSecurityRoles\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletgetInfo\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Final\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Static\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateDefaultConstructor\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ConstructorIs\"\r\n\t\t\tvalue      \t(\"Ctor_Set\" 62))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Ctor_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"public\"\r\n\t\t\t\tvalue      \t62)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"protected\"\r\n\t\t\t\tvalue      \t63)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"private\"\r\n\t\t\t\tvalue      \t64)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"package\"\r\n\t\t\t\tvalue      \t65)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateFinalizer\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateStaticInitializer\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateInstanceInitializer\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateCode\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"DisableAutoSync\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ReadOnly\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Strictfp\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletXMLFilePath\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Generate_XML_DD\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBCmpField\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBEnvironmentProperties\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBCnxFactory\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBReferences\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBSecurityRoles\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBNameInJAR\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBSessionType\"\r\n\t\t\tvalue      \t(\"EJBSessionType_Set\" 200))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBSessionType_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"\"\r\n\t\t\t\tvalue      \t200)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Stateless\"\r\n\t\t\t\tvalue      \t201)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Stateful\"\r\n\t\t\t\tvalue      \t202)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBTransactionType\"\r\n\t\t\tvalue      \t(\"EJBTransactionType_Set\" 211))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBTransactionType_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Container\"\r\n\t\t\t\tvalue      \t211)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Bean\"\r\n\t\t\t\tvalue      \t212)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBPersistenceType\"\r\n\t\t\tvalue      \t(\"EJBPersistenceType_Set\" 220))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBPersistenceType_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"\"\r\n\t\t\t\tvalue      \t220)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Bean\"\r\n\t\t\t\tvalue      \t221)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Container\"\r\n\t\t\t\tvalue      \t222)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBReentrant\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBSessionSync\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBVersion\"\r\n\t\t\tvalue      \t(\"EJBVersion_Set\" 230))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBVersion_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"2.0\"\r\n\t\t\t\tvalue      \t230)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"1.x\"\r\n\t\t\t\tvalue      \t231)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBXMLFilePath\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Java\"\r\n\t\tname       \t\"Http_Servlet__Class\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletRequestAttribute\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletRequestAttributesNames\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"MethodForRequestAttributes\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletRequestParameter\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletRequestParameterNames\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"MethodForRequestParameters\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletHeader\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletHeaderNames\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"MethodForHeaders\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletIntHeader\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletDateHeader\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletCookie\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"MethodForCookie\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletContentType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateHTML\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Final\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Static\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateDefaultConstructor\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ConstructorIs\"\r\n\t\t\tvalue      \t(\"Ctor_Set\" 62))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Ctor_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"public\"\r\n\t\t\t\tvalue      \t62)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"protected\"\r\n\t\t\t\tvalue      \t63)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"private\"\r\n\t\t\t\tvalue      \t64)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"package\"\r\n\t\t\t\tvalue      \t65)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateFinalizer\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateStaticInitializer\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateInstanceInitializer\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateCode\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"DisableAutoSync\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ReadOnly\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Strictfp\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletContextRef\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"IsSingleThread\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletInitParameter\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletInitParameterNames\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletIsSecure\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletRequestDispatcher\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletRequestDispatcherPath\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"DispatcherInclude\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"DispatcherForward\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletSecurityRoles\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletgetInfo\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletXMLFilePath\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Generate_XML_DD\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBCmpField\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBEnvironmentProperties\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBCnxFactory\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBReferences\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBSecurityRoles\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBNameInJAR\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBSessionType\"\r\n\t\t\tvalue      \t(\"EJBSessionType_Set\" 200))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBSessionType_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"\"\r\n\t\t\t\tvalue      \t200)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Stateless\"\r\n\t\t\t\tvalue      \t201)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Stateful\"\r\n\t\t\t\tvalue      \t202)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBTransactionType\"\r\n\t\t\tvalue      \t(\"EJBTransactionType_Set\" 211))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBTransactionType_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Container\"\r\n\t\t\t\tvalue      \t211)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Bean\"\r\n\t\t\t\tvalue      \t212)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBPersistenceType\"\r\n\t\t\tvalue      \t(\"EJBPersistenceType_Set\" 220))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBPersistenceType_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"\"\r\n\t\t\t\tvalue      \t220)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Bean\"\r\n\t\t\t\tvalue      \t221)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Container\"\r\n\t\t\t\tvalue      \t222)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBReentrant\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBSessionSync\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBVersion\"\r\n\t\t\tvalue      \t(\"EJBVersion_Set\" 230))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBVersion_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"2.0\"\r\n\t\t\t\tvalue      \t230)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"1.x\"\r\n\t\t\t\tvalue      \t231)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBXMLFilePath\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Java\"\r\n\t\tname       \t\"Default_EJB__Class\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Generate_XML_DD\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBCmpField\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBEnvironmentProperties\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBCnxFactory\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBReferences\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBSecurityRoles\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBNameInJAR\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBSessionType\"\r\n\t\t\tvalue      \t(\"EJBSessionType_Set\" 200))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBSessionType_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"\"\r\n\t\t\t\tvalue      \t200)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Stateless\"\r\n\t\t\t\tvalue      \t201)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Stateful\"\r\n\t\t\t\tvalue      \t202)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBTransactionType\"\r\n\t\t\tvalue      \t(\"EJBTransactionType_Set\" 211))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBTransactionType_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Container\"\r\n\t\t\t\tvalue      \t211)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Bean\"\r\n\t\t\t\tvalue      \t212)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBPersistenceType\"\r\n\t\t\tvalue      \t(\"EJBPersistenceType_Set\" 220))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBPersistenceType_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"\"\r\n\t\t\t\tvalue      \t220)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Bean\"\r\n\t\t\t\tvalue      \t221)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Container\"\r\n\t\t\t\tvalue      \t222)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBReentrant\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"BMP_Extend_CMP\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Final\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Static\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateDefaultConstructor\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ConstructorIs\"\r\n\t\t\tvalue      \t(\"Ctor_Set\" 62))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Ctor_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"public\"\r\n\t\t\t\tvalue      \t62)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"protected\"\r\n\t\t\t\tvalue      \t63)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"private\"\r\n\t\t\t\tvalue      \t64)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"package\"\r\n\t\t\t\tvalue      \t65)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateFinalizer\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateStaticInitializer\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateInstanceInitializer\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateCode\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"DisableAutoSync\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ReadOnly\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Strictfp\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletContextRef\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"IsSingleThread\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletInitParameter\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletInitParameterNames\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletIsSecure\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletRequestDispatcher\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletRequestDispatcherPath\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"DispatcherInclude\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"DispatcherForward\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletSecurityRoles\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletgetInfo\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ServletXMLFilePath\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBSessionSync\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBVersion\"\r\n\t\t\tvalue      \t(\"EJBVersion_Set\" 230))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBVersion_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"2.0\"\r\n\t\t\t\tvalue      \t230)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"1.x\"\r\n\t\t\t\tvalue      \t231)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"EJBXMLFilePath\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Java\"\r\n\t\tname       \t\"default__Module-Spec\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"CmIdentification\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"CopyrightNotice\"\r\n\t\t\tvalue      \t(value Text \"\"))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Java\"\r\n\t\tname       \t\"default__Module-Body\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"CmIdentification\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"CopyrightNotice\"\r\n\t\t\tvalue      \t(value Text \"\"))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Java\"\r\n\t\tname       \t\"default__Operation\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Abstract\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Static\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Final\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Native\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Synchronized\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateFullyQualifiedReturn\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ReplaceExistingCode\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Strictfp\"\r\n\t\t\tvalue      \tFALSE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Java\"\r\n\t\tname       \t\"default__Attribute\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Final\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Transient\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Volatile\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"PropertyType\"\r\n\t\t\tvalue      \t(\"BeanProperty_Set\" 71))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"BeanProperty_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Not A Property\"\r\n\t\t\t\tvalue      \t71)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Simple\"\r\n\t\t\t\tvalue      \t72)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Bound\"\r\n\t\t\t\tvalue      \t73)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Constrained\"\r\n\t\t\t\tvalue      \t74)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"IndividualChangeMgt\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Read/Write\"\r\n\t\t\tvalue      \t(\"Read/Write_Set\" 81))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Read/Write_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Read & Write\"\r\n\t\t\t\tvalue      \t81)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Read Only\"\r\n\t\t\t\tvalue      \t82)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Write Only\"\r\n\t\t\t\tvalue      \t83)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateFullyQualifiedTypes\"\r\n\t\t\tvalue      \tFALSE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Java\"\r\n\t\tname       \t\"default__Role\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"ContainerClass\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"InitialValue\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Final\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Transient\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Volatile\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"PropertyType\"\r\n\t\t\tvalue      \t(\"BeanProperty_Set\" 71))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"BeanProperty_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Not A Property\"\r\n\t\t\t\tvalue      \t71)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Simple\"\r\n\t\t\t\tvalue      \t72)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Bound\"\r\n\t\t\t\tvalue      \t73)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Constrained\"\r\n\t\t\t\tvalue      \t74)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"IndividualChangeMgt\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Read/Write\"\r\n\t\t\tvalue      \t(\"Read/Write_Set\" 81))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"Read/Write_Set\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Read & Write\"\r\n\t\t\t\tvalue      \t81)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Read Only\"\r\n\t\t\t\tvalue      \t82)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Java\"\r\n\t\t\t\tname       \t\"Write Only\"\r\n\t\t\t\tvalue      \t83)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"GenerateFullyQualifiedTypes\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Java\"\r\n\t\t\tname       \t\"IsNavigable\"\r\n\t\t\tvalue      \tTRUE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Java\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"R2Editor\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"Rose Web Publisher\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"COM\"\r\n\t\tname       \t\"propertyId\"\r\n\t\tvalue      \t\"783606378\")\r\n\t    (object Attribute\r\n\t\ttool       \t\"COM\"\r\n\t\tname       \t\"default__Class\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"TypeKinds\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"COM\"\r\n\t\t\t\tname       \t\"enum\"\r\n\t\t\t\tvalue      \t100)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"COM\"\r\n\t\t\t\tname       \t\"record\"\r\n\t\t\t\tvalue      \t101)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"COM\"\r\n\t\t\t\tname       \t\"module\"\r\n\t\t\t\tvalue      \t102)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"COM\"\r\n\t\t\t\tname       \t\"interface\"\r\n\t\t\t\tvalue      \t103)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"COM\"\r\n\t\t\t\tname       \t\"dispinterface\"\r\n\t\t\t\tvalue      \t104)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"COM\"\r\n\t\t\t\tname       \t\"coclass\"\r\n\t\t\t\tvalue      \t105)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"COM\"\r\n\t\t\t\tname       \t\"alias\"\r\n\t\t\t\tvalue      \t106)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"COM\"\r\n\t\t\t\tname       \t\"union\"\r\n\t\t\t\tvalue      \t107)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"COM\"\r\n\t\t\t\tname       \t\"max\"\r\n\t\t\t\tvalue      \t108)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"COM\"\r\n\t\t\t\tname       \t\"(none)\"\r\n\t\t\t\tvalue      \t109)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"Generate\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"kind\"\r\n\t\t\tvalue      \t(\"TypeKinds\" 109))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"uuid\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"version\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"helpstring\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"helpcontext\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"attributes\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"dllname\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"alias\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"COM\"\r\n\t\tname       \t\"default__Operation\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"Generate\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"id\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"helpstring\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"attributes\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"COM\"\r\n\t\tname       \t\"default__Attribute\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"Generate\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"id\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"helpstring\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"attributes\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"COM\"\r\n\t\tname       \t\"default__Module-Spec\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"Generate\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"filename\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"library\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"uuid\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"version\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"helpstring\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"helpfile\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"helpcontext\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"lcid\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"attributes\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"COM\"\r\n\t\tname       \t\"default__Param\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"COM\"\r\n\t\t\tname       \t\"attributes\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"COM\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"VC++\"\r\n\t\tname       \t\"propertyId\"\r\n\t\tvalue      \t\"809135966\")\r\n\t    (object Attribute\r\n\t\ttool       \t\"VC++\"\r\n\t\tname       \t\"default__Project\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"UpdateATL\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"SmartPointersOnAssoc\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"GenerateImports\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"PutImportsIn\"\r\n\t\t\tvalue      \t\"stdafx.h\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"FullPathInImports\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"UseImportAttributes\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"ImportAttributes\"\r\n\t\t\tvalue      \t\"no_namespace named_guids\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"ImportProjTypeLib\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"DefaultTypeLib\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"TypeLibLocation\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"CompileProjTypeLib\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"IdlInterfaceAttributes\"\r\n\t\t\tvalue      \t(value Text \r\n|endpoint(\"\")\r\n|local\r\n|object\r\n|pointer_default()\r\n|uuid(\"\")\r\n|version(\"\")\r\n|encode\r\n|decode\r\n|auto_handle\r\n|implicit_handle(\"\")\r\n|code\r\n|nocode\r\n\t\t\t))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"IdlCoClassAttributes\"\r\n\t\t\tvalue      \t(value Text \r\n|uuid(\"\")\r\n|helpstring(\"\")\r\n|helpcontext(\"\")\r\n|licensed\r\n|version(\"\")\r\n|control\r\n|hidden\r\n|appobject\r\n\t\t\t))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"IdlCoClassInterfaceAttributes\"\r\n\t\t\tvalue      \t(value Text \r\n|default\r\n|source\r\n\t\t\t))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"IdlParameterAttributes\"\r\n\t\t\tvalue      \t(value Text \r\n|in\r\n|out\r\n|retval\r\n\t\t\t))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"IdlMethodAttributes\"\r\n\t\t\tvalue      \t(value Text \r\n|id(1)\r\n|helpstring(\"\")\r\n|call_as(\"\")\r\n|callback\r\n|helpcontext(\"\")\r\n|hidden\r\n|local\r\n|restricted\r\n|source\r\n|vararg\r\n\t\t\t))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"IdlPropertyAttributes\"\r\n\t\t\tvalue      \t(value Text \r\n|id()\r\n|helpstring(\"\")\r\n|call_as(\"\")\r\n|helpcontext(\"\")\r\n|hidden\r\n|local\r\n|restricted\r\n|source\r\n|vararg\r\n|bindable\r\n|defaultbind\r\n|defaultcallelem\r\n|displaybind\r\n|immediatebind\r\n|nonbrowseable\r\n|requestedit\r\n\t\t\t))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"RvcPtyVersion\"\r\n\t\t\tvalue      \t\"1.3\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"ModelIDStyle\"\r\n\t\t\tvalue      \t2)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"DocStyle\"\r\n\t\t\tvalue      \t1)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"GenerateIncludes\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"ApplyPattern\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"CreateBackupFiles\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"SupportCodeName\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"DocRevEngineer\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"CreateOverviewDiagrams\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"UpdateModelIDsInCode\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"AttributeTypes\"\r\n\t\t\tvalue      \t(value Text \r\n|attr1=bool\r\n|attr2=short\r\n|attr3=int\r\n|attr4=long\r\n|attr5=char\r\n|attr6=float\r\n|attr7=double\r\n|attr8=void\r\n|attr9=clock_t\r\n|attr10=_complex\r\n|attr11=_dev_t\r\n|attr12=div_t\r\n|attr13=_exception\r\n|attr14=FILE\r\n|attr15=_finddata_t\r\n|attr16=_FPIEEE_RECORD\r\n|attr17=fpos_t\r\n|attr18=_HEAPINFO\r\n|attr19=jmp_buf\r\n|attr20=lconv\r\n|attr21=ldiv_t\r\n|attr22=_off_t\r\n|attr23=_onexit_t\r\n|attr24=_PNH\r\n|attr25=ptrdiff_t\r\n|attr26=sig_atomic_t\r\n|attr27=size_t\r\n|attr28=_stat\r\n|attr29=time_t\r\n|attr30=_timeb\r\n|attr31=tm\r\n|attr32=_utimbuf\r\n|attr33=va_list\r\n|attr34=wchar_t\r\n|attr35=wctrans_t\r\n|attr36=wctype_t\r\n|attr37=_wfinddata_t\r\n|attr38=_wfinddatai64_t\r\n|attr39=wint_t\r\n|attr40=ABORTPROC\r\n|attr41=ACMDRIVERENUMCB\r\n|attr42=ACMDRIVERPROC\r\n|attr43=ACMFILTERCHOOSEHOOKPROC\r\n|attr44=ACMFILTERENUMCB\r\n|attr45=ACMFILTERTAGENUMCB\r\n|attr46=ACMFORMATCHOOSEHOOKPROC\r\n|attr47=ACMFORMATENUMCB\r\n|attr48=ACMFORMATTAGENUMCB\r\n|attr49=APPLET_PROC\r\n|attr50=ATOM\r\n|attr51=BOOL\r\n|attr52=BOOLEAN\r\n|attr53=BYTE\r\n|attr54=CALINFO_ENUMPROC\r\n|attr55=CALLBACK\r\n|attr56=CHAR\r\n|attr57=COLORREF\r\n|attr58=CONST\r\n|attr59=CRITICAL_SECTION\r\n|attr60=CTRYID\r\n|attr61=DATEFMT_ENUMPROC\r\n|attr62=DESKTOPENUMPROC\r\n|attr63=DLGPROC\r\n|attr64=DRAWSTATEPROC\r\n|attr65=DWORD\r\n|attr66=EDITWORDBREAKPROC\r\n|attr67=ENHMFENUMPROC\r\n|attr68=ENUMRESLANGPROC\r\n|attr69=ENUMRESNAMEPROC\r\n|attr70=ENUMRESTYPEPROC\r\n|attr71=FARPROC\r\n|attr72=FILE_SEGMENT_ELEMENT\r\n|attr73=FLOAT\r\n|attr74=FONTENUMPROC\r\n|attr75=GOBJENUMPROC\r\n|attr76=GRAYSTRINGPROC\r\n|attr77=HACCEL\r\n|attr78=HANDLE\r\n|attr79=HBITMAP\r\n|attr80=HBRUSH\r\n|attr81=HCOLORSPACE\r\n|attr82=HCONV\r\n|attr83=HCONVLIST\r\n|attr84=HCURSOR\r\n|attr85=HDC\r\n|attr86=HDDEDATA\r\n|attr87=HDESK\r\n|attr88=HDROP\r\n|attr89=HDWP\r\n|attr90=HENHMETAFILE\r\n|attr91=HFILE\r\n|attr92=HFONT\r\n|attr93=HGDIOBJ\r\n|attr94=HGLOBAL\r\n|attr95=HHOOK\r\n|attr96=HICON\r\n|attr97=HIMAGELIST\r\n|attr98=HIMC\r\n|attr99=HINSTANCE\r\n|attr100=HKEY\r\n|attr101=HKL\r\n|attr102=HLOCAL\r\n|attr103=HMENU\r\n|attr104=HMETAFILE\r\n|attr105=HMODULE\r\n|attr106=HMONITOR\r\n|attr107=HOOKPROC\r\n|attr108=HPALETTE\r\n|attr109=HPEN\r\n|attr110=HRGN\r\n|attr111=HRSRC\r\n|attr112=HSZ\r\n|attr113=HTREEITEM\r\n|attr114=HWINSTA\r\n|attr115=HWND\r\n|attr116=INT\r\n|attr117=IPADDR\r\n|attr118=LANGID\r\n|attr119=LCID\r\n|attr120=LCSCSTYPE\r\n|attr121=LCSGAMUTMATCH\r\n|attr122=LCTYPE\r\n|attr123=LINEDDAPROC\r\n|attr124=LOCALE_ENUMPROC\r\n|attr125=LONG\r\n|attr126=LONGLONG\r\n|attr127=LPARAM\r\n|attr128=LPBOOL\r\n|attr129=LPBYTE\r\n|attr130=LPCCHOOKPROC\r\n|attr131=LPCFHOOKPROC\r\n|attr132=LPCOLORREF\r\n|attr133=LPCRITICAL_SECTION\r\n|attr134=LPCSTR\r\n|attr135=LPCTSTR\r\n|attr136=LPCVOID\r\n|attr137=LPCWSTR\r\n|attr138=LPDWORD\r\n|attr139=LPFIBER_START_ROUTINE\r\n|attr140=LPFRHOOKPROC\r\n|attr141=LPHANDLE\r\n|attr142=LPHANDLER_FUNCTION\r\n|attr143=LPINT\r\n|attr144=LPLONG\r\n|attr145=LPOFNHOOKPROC\r\n|attr146=LPPAGEPAINTHOOK\r\n|attr147=LPPAGESETUPHOOK\r\n|attr148=LPPRINTHOOKPROC\r\n|attr149=LPPROGRESS_ROUTINE\r\n|attr150=LPSETUPHOOKPROC\r\n|attr151=LPSTR\r\n|attr152=LPSTREAM\r\n|attr153=LPTHREAD_START_ROUTINE\r\n|attr154=LPTSTR\r\n|attr155=LPVOID\r\n|attr156=LPWORD\r\n|attr157=LPWSTR\r\n|attr158=LRESULT\r\n|attr159=LUID\r\n|attr160=PBOOL\r\n|attr161=PBOOLEAN\r\n|attr162=PBYTE\r\n|attr163=PCHAR\r\n|attr164=PCRITICAL_SECTION\r\n|attr165=PCSTR\r\n|attr166=PCTSTR\r\n|attr167=PCWCH\r\n|attr168=PCWSTR\r\n|attr169=PDWORD\r\n|attr170=PFLOAT\r\n|attr171=PFNCALLBACK\r\n|attr172=PHANDLE\r\n|attr173=PHANDLER_ROUTINE\r\n|attr174=PHKEY\r\n|attr175=PINT\r\n|attr176=PLCID\r\n|attr177=PLONG\r\n|attr178=PLUID\r\n|attr179=PROPENUMPROC\r\n|attr180=PROPENUMPROCEX\r\n|attr181=PSHORT\r\n|attr182=PSTR\r\n|attr183=PTBYTE\r\n|attr184=PTCHAR\r\n|attr185=PTIMERAPCROUTINE\r\n|attr186=PTSTR\r\n|attr187=PUCHAR\r\n|attr188=PUINT\r\n|attr189=PULONG\r\n|attr190=PUSHORT\r\n|attr191=PVOID\r\n|attr192=PWCHAR\r\n|attr193=PWORD\r\n|attr194=PWSTR\r\n|attr195=REGISTERWORDENUMPROC\r\n|attr196=REGSAM\r\n|attr197=SC_HANDLE\r\n|attr198=SC_LOCK\r\n|attr199=SENDASYNCPROC\r\n|attr200=SERVICE_STATUS_HANDLE\r\n|attr201=SHORT\r\n|attr202=TBYTE\r\n|attr203=TCHAR\r\n|attr204=TIMEFMT_ENUMPROC\r\n|attr205=TIMERPROC\r\n|attr206=UCHAR\r\n|attr207=UINT\r\n|attr208=ULONG\r\n|attr209=ULONGLONG\r\n|attr210=UNSIGNED\r\n|attr211=USHORT\r\n|attr212=VOID\r\n|attr213=WCHAR\r\n|attr214=WINAPI\r\n|attr215=WINSTAENUMPROC\r\n|attr216=WNDENUMPROC\r\n|attr217=WNDPROC\r\n|attr218=WORD\r\n|attr219=WPARAM\r\n|attr220=YIELDPROC\r\n|attr221=CPoint\r\n|attr222=CRect\r\n|attr223=CSize\r\n|attr224=CString\r\n|attr225=CTime\r\n|attr226=CTimeSpan\r\n|attr227=CCreateContext\r\n|attr228=CMemoryState\r\n|attr229=COleSafeArray\r\n|attr230=CPrintInfo\r\n|attr231=HRESULT\r\n\t\t\t))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"Containers\"\r\n\t\t\tvalue      \t(value Text \r\n|cont1=CArray<$TYPE, $TYPE&>\r\n|cont2=CByteArray\r\n|cont3=CDWordArray\r\n|cont4=CObArray\r\n|cont5=CPtrArray\r\n|cont6=CStringArray\r\n|cont7=CUIntArray\r\n|cont8=CWordArray\r\n|cont9=CList<$TYPE, $TYPE&>\r\n|cont10=CPtrList\r\n|cont11=CObList\r\n|cont12=CStringList\r\n|cont13=CMapWordToPtr\r\n|cont14=CMapPtrToWord\r\n|cont15=CMapPtrToPtr\r\n|cont16=CMapWordToOb\r\n|cont17=CMapStringToPtr\r\n|cont18=CMapStringToOb\r\n|cont19=CMapStringToString\r\n|cont20=CTypedPtrArray<CPtrArray, $TYPE*>\r\n|cont21=CTypedPtrArray<CObArray, $TYPE*>\r\n|cont22=CTypedPtrList<CObList, $TYPE*>\r\n|cont23=CTypedPtrList<CPtrList, $TYPE*>\r\n|cont24=CComObject<$TYPE>\r\n|cont25=CComPtr<$TYPE>\r\n|cont26=CComQIPtr<$TYPE>\r\n|cont27=CComQIPtr<$TYPE, IID*>\r\n\t\t\t))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"ClassMethods\"\r\n\t\t\tvalue      \t(value Text \r\n|*_body=// ToDo: Add your specialized code here and/or call the base class\r\n|cm1=$NAME()\r\n|cm2=$NAME(orig:const $NAME&)\r\n|cm3=<<virtual>> ~$NAME()\r\n|cm4=operator=(rhs:$NAME&):$NAME&\r\n|cm4_body=// ToDo: Add your specialized code here and/or call the base class||return rhs;\r\n|cm5=<<const>> operator==(rhs:const $NAME&):bool\r\n|cm5_body=// ToDo: Add your specialized code here and/or call the base class||return false;\r\n|cm6=<<const>> operator!=(rhs:$NAME&):bool\r\n|cm6_body=// ToDo: Add your specialized code here and/or call the base class||return false;\r\n|cm7=<<const>> operator<(rhs:$NAME&):bool\r\n|cm7_body=// ToDo: Add your specialized code here and/or call the base class||return false;\r\n|cm8=<<const>> operator>(rhs:$NAME&):bool\r\n|cm8_body=// ToDo: Add your specialized code here and/or call the base class||return false;\r\n|cm9=<<const>> operator<=(rhs:$NAME&):bool\r\n|cm9_body=// ToDo: Add your specialized code here and/or call the base class||return false;\r\n|cm10=<<const>> operator>=(rhs:$NAME&):bool\r\n|cm10_body=// ToDo: Add your specialized code here and/or call the base class||return false;\r\n|cm11=<<friend>> operator>>(i:istream&, rhs:$NAME&):istream&\r\n|cm11_body=// ToDo: Add your specialized code here and/or call the base class||return i;\r\n|cm12=<<friend>> operator<<(o:ostream&, rhs:const $NAME&):ostream&\r\n|cm12_body=// ToDo: Add your specialized code here and/or call the base class||return o;\r\n\t\t\t))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"Accessors\"\r\n\t\t\tvalue      \t(value Text \r\n|agf=<<const>> get_$BASICNAME():const $TYPE\r\n|agf_body=return $NAME;\r\n|asf=set_$BASICNAME(value:$TYPE):void\r\n|asf_body=$NAME = value;|return;\r\n|agv=<<const>> get_$BASICNAME():const $TYPE&\r\n|agv_body=return $NAME;\r\n|asv=set_$BASICNAME(value:$TYPE&):void\r\n|asv_body=$NAME = value;|return;\r\n|agp=<<const>> get_$BASICNAME():const $TYPE\r\n|agp_body=return $NAME;\r\n|asp=set_$BASICNAME(value:$TYPE):void\r\n|asp_body=$NAME = value;|return;\r\n|agr=<<const>> get_$BASICNAME():const $TYPE\r\n|agr_body=return $NAME;\r\n|asr=set_$BASICNAME(value:$TYPE):void\r\n|asr_body=$NAME = value;|return;\r\n|aga=<<const>> get_$BASICNAME(index:int):const $TYPE\r\n|aga_body=return $NAME[index];\r\n|asa=set_$BASICNAME(index:int, value:$TYPE):void\r\n|asa_body=$NAME[index] = value;|return;\r\n\t\t\t))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"Conditionals\"\r\n\t\t\tvalue      \t(value Text \r\n|*_decl=#ifdef _DEBUG\r\n|*_base=CObject\r\n|cond1=<<virtual, const>> AssertValid():void\r\n|cond1_body=$SUPERNAME::AssertValid();\r\n|cond2=<<virtual, const>> Dump(dc:CDumpContext&):void\r\n|cond2_body=$SUPERNAME::Dump(dc);\r\n\t\t\t))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"Patterns\"\r\n\t\t\tvalue      \t(value Text \r\n|patrn1=cm1,cm3,cond1,cond2\r\n|Patrn1_name=Default\r\n\t\t\t))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"AtlClassPrefix\"\r\n\t\t\tvalue      \t\"C\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"AtlInterfacePrefix\"\r\n\t\t\tvalue      \t\"I\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"AtlTypeDescription\"\r\n\t\t\tvalue      \t\"Class\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"VC++\"\r\n\t\tname       \t\"default__Class\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"Generate\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"HeaderFileName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"CodeFileName\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"VC++\"\r\n\t\tname       \t\"default__Module-Spec\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"InternalMap\"\r\n\t\t\tvalue      \t(value Text \r\n|*:AUTO:AUTO\r\n|\r\n\t\t\t))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"ExportMap\"\r\n\t\t\tvalue      \t(value Text \r\n|*:AUTO:AUTO\r\n|\r\n\t\t\t))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"InitialSourceIncludes\"\r\n\t\t\tvalue      \t(value Text \r\n|\"stdafx.h\"\r\n\t\t\t))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"InitialHeaderIncludes\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"Copyright\"\r\n\t\t\tvalue      \t(value Text \"Copyright (C) 1991 - 1999 Rational Software Corporation\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"KindSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"VC++\"\r\n\t\t\t\tname       \t\"(none)\"\r\n\t\t\t\tvalue      \t300)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"VC++\"\r\n\t\t\t\tname       \t\"DLL\"\r\n\t\t\t\tvalue      \t301)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"VC++\"\r\n\t\t\t\tname       \t\"EXE\"\r\n\t\t\t\tvalue      \t302)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"VC++\"\r\n\t\t\t\tname       \t\"MIDL\"\r\n\t\t\t\tvalue      \t303)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"Kind\"\r\n\t\t\tvalue      \t(\"KindSet\" 300))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"VC++\"\r\n\t\tname       \t\"default__Role\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"Const\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"Generate\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"InitialValue\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"VC++\"\r\n\t\tname       \t\"default__Uses\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"Generate\"\r\n\t\t\tvalue      \tTRUE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"VC++\"\r\n\t\tname       \t\"default__Category\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"IsDirectory\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"Directory\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"VC++\"\r\n\t\tname       \t\"default__Attribute\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"Generate\"\r\n\t\t\tvalue      \tTRUE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"VC++\"\r\n\t\tname       \t\"default__Operation\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"Generate\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"Inline\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"VC++\"\r\n\t\t\tname       \t\"DefaultBody\"\r\n\t\t\tvalue      \t(value Text \"\"))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"VC++\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"VisualStudio\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"Web Modeler\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"XML_DTD\"\r\n\t\tname       \t\"propertyId\"\r\n\t\tvalue      \t\"809135966\")\r\n\t    (object Attribute\r\n\t\ttool       \t\"XML_DTD\"\r\n\t\tname       \t\"default__Project\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"XML_DTD\"\r\n\t\t\tname       \t\"CreateMissingDirectories\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"XML_DTD\"\r\n\t\t\tname       \t\"Editor\"\r\n\t\t\tvalue      \t(\"EditorType\" 100))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"XML_DTD\"\r\n\t\t\tname       \t\"StopOnError\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"XML_DTD\"\r\n\t\t\tname       \t\"EditorType\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"XML_DTD\"\r\n\t\t\t\tname       \t\"BuiltIn\"\r\n\t\t\t\tvalue      \t100)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"XML_DTD\"\r\n\t\t\t\tname       \t\"WindowsShell\"\r\n\t\t\t\tvalue      \t101)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"XML_DTD\"\r\n\t\tname       \t\"default__Class\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"XML_DTD\"\r\n\t\t\tname       \t\"Entity_SystemID\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"XML_DTD\"\r\n\t\t\tname       \t\"Entity_PublicID\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"XML_DTD\"\r\n\t\t\tname       \t\"NotationValue\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"XML_DTD\"\r\n\t\t\tname       \t\"InternalValue\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"XML_DTD\"\r\n\t\t\tname       \t\"ParameterEntity\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"XML_DTD\"\r\n\t\t\tname       \t\"ExternalEntity\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"XML_DTD\"\r\n\t\t\tname       \t\"Notation_SystemID\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"XML_DTD\"\r\n\t\t\tname       \t\"Notation_PublicID\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"XML_DTD\"\r\n\t\tname       \t\"default__Attribute\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"XML_DTD\"\r\n\t\t\tname       \t\"DefaultDeclType\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"XML_DTD\"\r\n\t\tname       \t\"default__Module-Spec\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"XML_DTD\"\r\n\t\t\tname       \t\"Assign All\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"XML_DTD\"\r\n\t\t\tname       \t\"ComponentPath\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"XML_DTD\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"Cplusplus\"\r\n\t\tname       \t\"propertyId\"\r\n\t\tvalue      \t\"809135966\")\r\n\t    (object Attribute\r\n\t\ttool       \t\"Cplusplus\"\r\n\t\tname       \t\"default__Role\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"Synchronize\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"CodeName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"InitialValue\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Cplusplus\"\r\n\t\tname       \t\"default__Inherit\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"Synchronize\"\r\n\t\t\tvalue      \tTRUE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Cplusplus\"\r\n\t\tname       \t\"default__Module-Spec\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"Synchronize\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"RevEngRootDirectory\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"RootPackage\"\r\n\t\t\tvalue      \t\"C++ Reverse Engineered\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"RevEngDirectoriesAsPackages\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"HeaderFileExtension\"\r\n\t\t\tvalue      \t\".h\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"ImplementationFileExtension\"\r\n\t\t\tvalue      \t\".cpp\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"NewHeaderFileDirectory\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"NewImplementationFileDirectory\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"FileCapitalization\"\r\n\t\t\tvalue      \t(\"FileCapitalizationSet\" 0))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"CodeGenExtraDirectories\"\r\n\t\t\tvalue      \t(\"CodeGenExtraDirectoriesSet\" 0))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"StripClassPrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"UseTabs\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"TabWidth\"\r\n\t\t\tvalue      \t8)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"IndentWidth\"\r\n\t\t\tvalue      \t4)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"AccessIndentation\"\r\n\t\t\tvalue      \t-2)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"CreateBackupFiles\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"ModelIdCommentRules\"\r\n\t\t\tvalue      \t(\"ModelIdCommentRulesSet\" 1))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"CommentRules\"\r\n\t\t\tvalue      \t(\"CommentRulesSet\" 1))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"PageWidth\"\r\n\t\t\tvalue      \t80)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"ClassMemberOrder\"\r\n\t\t\tvalue      \t(\"MemberOrderSet\" 1))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"OneParameterPerLine\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"NamespaceBraceStyle\"\r\n\t\t\tvalue      \t(\"BraceStyleSet\" 2))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"ClassBraceStyle\"\r\n\t\t\tvalue      \t(\"BraceStyleSet\" 2))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"FunctionBraceStyle\"\r\n\t\t\tvalue      \t(\"BraceStyleSet\" 2))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"Copyright\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"InitialHeaderIncludes\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"InitialBodyIncludes\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"CodeGenExtraDirectoriesSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"None\"\r\n\t\t\t\tvalue      \t0)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Namespaces\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Packages\"\r\n\t\t\t\tvalue      \t2)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"FileCapitalizationSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Same as model\"\r\n\t\t\t\tvalue      \t0)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Lower case\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Upper case\"\r\n\t\t\t\tvalue      \t2)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Lower case with underscores\"\r\n\t\t\t\tvalue      \t3)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"BraceStyleSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"B1\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"B2\"\r\n\t\t\t\tvalue      \t2)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"B3\"\r\n\t\t\t\tvalue      \t3)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"B4\"\r\n\t\t\t\tvalue      \t4)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"B5\"\r\n\t\t\t\tvalue      \t5)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"MemberOrderSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Public First\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Private First\"\r\n\t\t\t\tvalue      \t2)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Order by kind\"\r\n\t\t\t\tvalue      \t3)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Unordered\"\r\n\t\t\t\tvalue      \t4)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"ModelIdCommentRulesSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Code generation only\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Code generation and reverse engineering\"\r\n\t\t\t\tvalue      \t2)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Never generate model IDs\"\r\n\t\t\t\tvalue      \t3)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"CommentRulesSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Always synchronize\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Code generation only\"\r\n\t\t\t\tvalue      \t2)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Reverse engineering only\"\r\n\t\t\t\tvalue      \t3)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Never synchronize\"\r\n\t\t\t\tvalue      \t4)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Cplusplus\"\r\n\t\tname       \t\"default__Module-Body\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"Synchronize\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"RevEngRootDirectory\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"RootPackage\"\r\n\t\t\tvalue      \t\"C++ Reverse Engineered\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"RevEngDirectoriesAsPackages\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"HeaderFileExtension\"\r\n\t\t\tvalue      \t\".h\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"ImplementationFileExtension\"\r\n\t\t\tvalue      \t\".cpp\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"NewHeaderFileDirectory\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"NewImplementationFileDirectory\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"FileCapitalization\"\r\n\t\t\tvalue      \t(\"FileCapitalizationSet\" 0))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"CodeGenExtraDirectories\"\r\n\t\t\tvalue      \t(\"CodeGenExtraDirectoriesSet\" 0))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"StripClassPrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"UseTabs\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"TabWidth\"\r\n\t\t\tvalue      \t8)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"IndentWidth\"\r\n\t\t\tvalue      \t4)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"AccessIndentation\"\r\n\t\t\tvalue      \t-2)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"CreateBackupFiles\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"ModelIdCommentRules\"\r\n\t\t\tvalue      \t(\"ModelIdCommentRulesSet\" 1))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"CommentRules\"\r\n\t\t\tvalue      \t(\"CommentRulesSet\" 1))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"PageWidth\"\r\n\t\t\tvalue      \t80)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"ClassMemberOrder\"\r\n\t\t\tvalue      \t(\"MemberOrderSet\" 1))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"OneParameterPerLine\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"NamespaceBraceStyle\"\r\n\t\t\tvalue      \t(\"BraceStyleSet\" 2))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"ClassBraceStyle\"\r\n\t\t\tvalue      \t(\"BraceStyleSet\" 2))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"FunctionBraceStyle\"\r\n\t\t\tvalue      \t(\"BraceStyleSet\" 2))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"Copyright\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"InitialHeaderIncludes\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"InitialBodyIncludes\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"CodeGenExtraDirectoriesSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"None\"\r\n\t\t\t\tvalue      \t0)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Namespaces\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Packages\"\r\n\t\t\t\tvalue      \t2)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"FileCapitalizationSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Same as model\"\r\n\t\t\t\tvalue      \t0)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Lower case\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Upper case\"\r\n\t\t\t\tvalue      \t2)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Lower case with underscores\"\r\n\t\t\t\tvalue      \t3)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"BraceStyleSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"B1\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"B2\"\r\n\t\t\t\tvalue      \t2)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"B3\"\r\n\t\t\t\tvalue      \t3)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"B4\"\r\n\t\t\t\tvalue      \t4)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"B5\"\r\n\t\t\t\tvalue      \t5)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"MemberOrderSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Public First\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Private First\"\r\n\t\t\t\tvalue      \t2)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Order by kind\"\r\n\t\t\t\tvalue      \t3)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Unordered\"\r\n\t\t\t\tvalue      \t4)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"ModelIdCommentRulesSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Code generation only\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Code generation and reverse engineering\"\r\n\t\t\t\tvalue      \t2)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Never generate model IDs\"\r\n\t\t\t\tvalue      \t3)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"CommentRulesSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Always synchronize\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Code generation only\"\r\n\t\t\t\tvalue      \t2)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Reverse engineering only\"\r\n\t\t\t\tvalue      \t3)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Never synchronize\"\r\n\t\t\t\tvalue      \t4)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Cplusplus\"\r\n\t\tname       \t\"default__Param\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"CodeName\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Cplusplus\"\r\n\t\tname       \t\"default__Attribute\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"Synchronize\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"CodeName\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Cplusplus\"\r\n\t\tname       \t\"default__Operation\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"Synchronize\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"CodeName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"InitialCodeBody\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"Inline\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"GenerateFunctionBody\"\r\n\t\t\tvalue      \t(\"GenerateFunctionBodySet\" 2))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"GenerateFunctionBodySet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"Default\"\r\n\t\t\t\tvalue      \t2)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"True\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\t\tname       \t\"False\"\r\n\t\t\t\tvalue      \t0)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Cplusplus\"\r\n\t\tname       \t\"default__Class\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"Synchronize\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"CodeName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"ImplementationType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"HeaderSourceFile\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"BodySourceFile\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Cplusplus\"\r\n\t\tname       \t\"default__Category\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"CodeName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"IsNamespace\"\r\n\t\t\tvalue      \tFALSE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Cplusplus\"\r\n\t\tname       \t\"default__Uses\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Cplusplus\"\r\n\t\t\tname       \t\"BodyReferenceOnly\"\r\n\t\t\tvalue      \tFALSE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Cplusplus\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"ANSIConvert\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada83\"\r\n\t\tname       \t\"propertyId\"\r\n\t\tvalue      \t\"838326200\")\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada83\"\r\n\t\tname       \t\"default__Project\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"SpecFileExtension\"\r\n\t\t\tvalue      \t\"1.ada\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"SpecFileBackupExtension\"\r\n\t\t\tvalue      \t\"1.ad~\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"SpecFileTemporaryExtension\"\r\n\t\t\tvalue      \t\"1.ad#\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"BodyFileExtension\"\r\n\t\t\tvalue      \t\"2.ada\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"BodyFileBackupExtension\"\r\n\t\t\tvalue      \t\"2.ad~\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"BodyFileTemporaryExtension\"\r\n\t\t\tvalue      \t\"2.ad#\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"CreateMissingDirectories\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"GenerateBodies\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"GenerateAccessorOperations\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"GenerateStandardOperations\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"DefaultCodeBody\"\r\n\t\t\tvalue      \t\"[statement]\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ImplicitParameter\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"CommentWidth\"\r\n\t\t\tvalue      \t60)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"StopOnError\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ErrorLimit\"\r\n\t\t\tvalue      \t30)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"UseFileName\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Directory\"\r\n\t\t\tvalue      \t\"$ROSEADA83_SOURCE\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada83\"\r\n\t\tname       \t\"default__Class\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"CodeName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ClassName\"\r\n\t\t\tvalue      \t\"Object\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ClassAccess\"\r\n\t\t\tvalue      \t(\"ImplementationSet\" 43))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ImplementationType\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"IsSubtype\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"PolymorphicUnit\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"HandleName\"\r\n\t\t\tvalue      \t\"Handle\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"HandleAccess\"\r\n\t\t\tvalue      \t(\"ImplementationSet\" 45))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Discriminant\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Variant\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"EnumerationLiteralPrefix\"\r\n\t\t\tvalue      \t\"A_\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"RecordFieldPrefix\"\r\n\t\t\tvalue      \t\"The_\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"GenerateAccessorOperations\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"GenerateStandardOperations\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ImplicitParameter\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ClassParameterName\"\r\n\t\t\tvalue      \t\"This\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"DefaultConstructorKind\"\r\n\t\t\tvalue      \t(\"ConstructorKindSet\" 199))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"DefaultConstructorName\"\r\n\t\t\tvalue      \t\"Create\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InlineDefaultConstructor\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"CopyConstructorKind\"\r\n\t\t\tvalue      \t(\"ConstructorKindSet\" 199))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"CopyConstructorName\"\r\n\t\t\tvalue      \t\"Copy\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InlineCopyConstructor\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"DestructorName\"\r\n\t\t\tvalue      \t\"Free\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InlineDestructor\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ClassEqualityOperation\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"HandleEqualityOperation\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InlineEquality\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"IsTask\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Representation\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ImplementationSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Public\"\r\n\t\t\t\tvalue      \t45)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Private\"\r\n\t\t\t\tvalue      \t43)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"LimitedPrivate\"\r\n\t\t\t\tvalue      \t200)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ConstructorKindSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Procedure\"\r\n\t\t\t\tvalue      \t202)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Function\"\r\n\t\t\t\tvalue      \t199)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada83\"\r\n\t\tname       \t\"default__Module-Spec\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Generate\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"CopyrightNotice\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"FileName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ReturnType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"GenericFormalParameters\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"AdditionalWiths\"\r\n\t\t\tvalue      \t(value Text \"\"))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada83\"\r\n\t\tname       \t\"default__Module-Body\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Generate\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"CopyrightNotice\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"FileName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ReturnType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"AdditionalWiths\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"IsSubunit\"\r\n\t\t\tvalue      \tFALSE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada83\"\r\n\t\tname       \t\"default__Operation\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"CodeName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"SubprogramImplementation\"\r\n\t\t\tvalue      \t(\"SubprogramImplementationSet\" 2))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Renames\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ClassParameterMode\"\r\n\t\t\tvalue      \t(\"ParameterModeSet\" 203))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Inline\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"EntryCode\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ExitCode\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InitialCodeBody\"\r\n\t\t\tvalue      \t\"${default}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Representation\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"SubprogramImplementationSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Spec\"\r\n\t\t\t\tvalue      \t224)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Body\"\r\n\t\t\t\tvalue      \t2)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Renaming\"\r\n\t\t\t\tvalue      \t222)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Separate\"\r\n\t\t\t\tvalue      \t223)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ParameterModeSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Default\"\r\n\t\t\t\tvalue      \t232)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"In\"\r\n\t\t\t\tvalue      \t204)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Out\"\r\n\t\t\t\tvalue      \t205)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"InOut\"\r\n\t\t\t\tvalue      \t203)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"FunctionReturn\"\r\n\t\t\t\tvalue      \t206)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada83\"\r\n\t\tname       \t\"default__Param\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Mode\"\r\n\t\t\tvalue      \t(\"ParameterModeSet\" 232))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"GenericFormal\"\r\n\t\t\tvalue      \t(\"GenericFormalSet\" 1))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"AssociationMapping\"\r\n\t\t\tvalue      \t(\"AssociationMappingSet\" 1))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ParameterModeSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Default\"\r\n\t\t\t\tvalue      \t232)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"In\"\r\n\t\t\t\tvalue      \t204)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Out\"\r\n\t\t\t\tvalue      \t205)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"InOut\"\r\n\t\t\t\tvalue      \t203)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"GenericFormalSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Default\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Object\"\r\n\t\t\t\tvalue      \t2)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Type\"\r\n\t\t\t\tvalue      \t3)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Procedure\"\r\n\t\t\t\tvalue      \t4)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Function\"\r\n\t\t\t\tvalue      \t5)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"AssociationMappingSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Name\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Type\"\r\n\t\t\t\tvalue      \t2)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada83\"\r\n\t\tname       \t\"default__Has\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"CodeName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"NameIfUnlabeled\"\r\n\t\t\tvalue      \t\"The_${supplier}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"DataMemberName\"\r\n\t\t\tvalue      \t\"${relationship}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"GetName\"\r\n\t\t\tvalue      \t\"Get_${relationship}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InlineGet\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"SetName\"\r\n\t\t\tvalue      \t\"Set_${relationship}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InlineSet\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"IsConstant\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InitialValue\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Declare\"\r\n\t\t\tvalue      \t(\"DeclareSet\" 234))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Variant\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ContainerGeneric\"\r\n\t\t\tvalue      \t\"List\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ContainerType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ContainerDeclarations\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"SelectorName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"SelectorType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"DeclareSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Before\"\r\n\t\t\t\tvalue      \t233)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"After\"\r\n\t\t\t\tvalue      \t234)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada83\"\r\n\t\tname       \t\"default__Attribute\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"CodeName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"DataMemberName\"\r\n\t\t\tvalue      \t\"${attribute}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"GetName\"\r\n\t\t\tvalue      \t\"Get_${attribute}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InlineGet\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"SetName\"\r\n\t\t\tvalue      \t\"Set_${attribute}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InlineSet\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"IsConstant\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InitialValue\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Declare\"\r\n\t\t\tvalue      \t(\"DeclareSet\" 234))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Variant\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Representation\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"DeclareSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Before\"\r\n\t\t\t\tvalue      \t233)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"After\"\r\n\t\t\t\tvalue      \t234)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada83\"\r\n\t\tname       \t\"default__Association\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"NameIfUnlabeled\"\r\n\t\t\tvalue      \t\"The_${targetClass}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"GetName\"\r\n\t\t\tvalue      \t\"Get_${association}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InlineGet\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"SetName\"\r\n\t\t\tvalue      \t\"Set_${association}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InlineSet\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"GenerateAssociate\"\r\n\t\t\tvalue      \t(\"ProcedureKindSet\" 202))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"AssociateName\"\r\n\t\t\tvalue      \t\"Associate\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InlineAssociate\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"GenerateDissociate\"\r\n\t\t\tvalue      \t(\"ProcedureKindSet\" 202))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"DissociateName\"\r\n\t\t\tvalue      \t\"Dissociate\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InlineDissociate\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ProcedureKindSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Procedure\"\r\n\t\t\t\tvalue      \t202)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"FunctionKindSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Function\"\r\n\t\t\t\tvalue      \t199)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada83\"\r\n\t\tname       \t\"default__Role\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"CodeName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"NameIfUnlabeled\"\r\n\t\t\tvalue      \t\"The_${targetClass}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"DataMemberName\"\r\n\t\t\tvalue      \t\"${target}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"GetName\"\r\n\t\t\tvalue      \t\"Get_${target}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InlineGet\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"SetName\"\r\n\t\t\tvalue      \t\"Set_${target}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InlineSet\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"IsConstant\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"InitialValue\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Declare\"\r\n\t\t\tvalue      \t(\"DeclareSet\" 234))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Representation\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ContainerGeneric\"\r\n\t\t\tvalue      \t\"List\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ContainerType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ContainerDeclarations\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"SelectorName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"SelectorType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"ProcedureKindSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Procedure\"\r\n\t\t\t\tvalue      \t202)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"DeclareSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"Before\"\r\n\t\t\t\tvalue      \t233)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada83\"\r\n\t\t\t\tname       \t\"After\"\r\n\t\t\t\tvalue      \t234)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada83\"\r\n\t\tname       \t\"default__Subsystem\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada83\"\r\n\t\t\tname       \t\"Directory\"\r\n\t\t\tvalue      \t\"AUTO GENERATE\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada83\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada95\"\r\n\t\tname       \t\"propertyId\"\r\n\t\tvalue      \t\"838326200\")\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada95\"\r\n\t\tname       \t\"default__Project\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"SpecFileExtension\"\r\n\t\t\tvalue      \t\"1.ada\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"SpecFileBackupExtension\"\r\n\t\t\tvalue      \t\"1.ad~\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"SpecFileTemporaryExtension\"\r\n\t\t\tvalue      \t\"1.ad#\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"BodyFileExtension\"\r\n\t\t\tvalue      \t\"2.ada\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"BodyFileBackupExtension\"\r\n\t\t\tvalue      \t\"2.ad~\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"BodyFileTemporaryExtension\"\r\n\t\t\tvalue      \t\"2.ad#\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"CreateMissingDirectories\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"UseColonNotation\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateBodies\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateAccessorOperations\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateStandardOperations\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"DefaultCodeBody\"\r\n\t\t\tvalue      \t\"[statement]\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ImplicitParameter\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"CommentWidth\"\r\n\t\t\tvalue      \t60)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"StopOnError\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ErrorLimit\"\r\n\t\t\tvalue      \t30)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"UseFileName\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"Directory\"\r\n\t\t\tvalue      \t\"$ROSEADA95_SOURCE\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada95\"\r\n\t\tname       \t\"default__Class\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"CodeName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"TypeName\"\r\n\t\t\tvalue      \t\"Object\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"TypeVisibility\"\r\n\t\t\tvalue      \t(\"TypeVisibilitySet\" 43))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"TypeImplementation\"\r\n\t\t\tvalue      \t(\"TypeImplementationSet\" 208))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"IncompleteType\"\r\n\t\t\tvalue      \t(\"IncompleteTypeSet\" 1))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"TypeControl\"\r\n\t\t\tvalue      \t(\"TypeControlSet\" 225))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"TypeControlName\"\r\n\t\t\tvalue      \t\"Controlled_${type}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"TypeControlVisibility\"\r\n\t\t\tvalue      \t(\"TypeVisibilitySet\" 43))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"TypeDefinition\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"RecordImplementation\"\r\n\t\t\tvalue      \t(\"RecordImplementationSet\" 209))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"RecordKindPackageName\"\r\n\t\t\tvalue      \t\"${class}_Record_Kinds\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"IsLimited\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"IsSubtype\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateAccessType\"\r\n\t\t\tvalue      \t(\"GenerateAccessTypeSet\" 230))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"AccessTypeName\"\r\n\t\t\tvalue      \t\"Handle\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"AccessTypeVisibility\"\r\n\t\t\tvalue      \t(\"TypeVisibilitySet\" 45))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"AccessTypeDefinition\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"AccessClassWide\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"MaybeAliased\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ParameterizedImplementation\"\r\n\t\t\tvalue      \t(\"ParameterizedImplementationSet\" 11))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ParentClassName\"\r\n\t\t\tvalue      \t\"Superclass\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"EnumerationLiteralPrefix\"\r\n\t\t\tvalue      \t\"A_\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"RecordFieldPrefix\"\r\n\t\t\tvalue      \t\"The_\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ArrayOfTypeName\"\r\n\t\t\tvalue      \t\"Array_Of_${type}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"AccessArrayOfTypeName\"\r\n\t\t\tvalue      \t\"Access_Array_Of_${type}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ArrayOfAccessTypeName\"\r\n\t\t\tvalue      \t\"Array_Of_${access_type}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"AccessArrayOfAccessTypeName\"\r\n\t\t\tvalue      \t\"Access_Array_Of_${access_type}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ArrayIndexDefinition\"\r\n\t\t\tvalue      \t\"Positive range <>\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateAccessorOperations\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateStandardOperations\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ImplicitParameter\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ImplicitParameterName\"\r\n\t\t\tvalue      \t\"This\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateDefaultConstructor\"\r\n\t\t\tvalue      \t(\"SubprogramKindSet\" 199))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"DefaultConstructorName\"\r\n\t\t\tvalue      \t\"Create\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InlineDefaultConstructor\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateCopyConstructor\"\r\n\t\t\tvalue      \t(\"SubprogramKindSet\" 199))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"CopyConstructorName\"\r\n\t\t\tvalue      \t\"Copy\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InlineCopyConstructor\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateDestructor\"\r\n\t\t\tvalue      \t(\"ProcedureKindSet\" 202))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"DestructorName\"\r\n\t\t\tvalue      \t\"Free\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InlineDestructor\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateTypeEquality\"\r\n\t\t\tvalue      \t(\"FunctionKindSet\" 201))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"TypeEqualityName\"\r\n\t\t\tvalue      \t(value Text \r\n|\"=\"\r\n\t\t\t))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InlineEquality\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"Representation\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"TypeImplementationSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Tagged\"\r\n\t\t\t\tvalue      \t208)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Record\"\r\n\t\t\t\tvalue      \t210)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Mixin\"\r\n\t\t\t\tvalue      \t211)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Protected\"\r\n\t\t\t\tvalue      \t44)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Task\"\r\n\t\t\t\tvalue      \t212)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"IncompleteTypeSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"DoNotDeclare\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"NoDiscriminantPart\"\r\n\t\t\t\tvalue      \t2)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"UnknownDiscriminantPart\"\r\n\t\t\t\tvalue      \t3)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"KnownDiscriminantPart\"\r\n\t\t\t\tvalue      \t4)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"RecordImplementationSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"SingleType\"\r\n\t\t\t\tvalue      \t209)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"MultipleTypes\"\r\n\t\t\t\tvalue      \t213)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ParameterizedImplementationSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Generic\"\r\n\t\t\t\tvalue      \t11)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Unconstrained\"\r\n\t\t\t\tvalue      \t214)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"TypeVisibilitySet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Public\"\r\n\t\t\t\tvalue      \t45)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Private\"\r\n\t\t\t\tvalue      \t43)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"SubprogramKindSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Procedure\"\r\n\t\t\t\tvalue      \t202)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Function\"\r\n\t\t\t\tvalue      \t199)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ProcedureKindSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Procedure\"\r\n\t\t\t\tvalue      \t202)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"FunctionKindSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Function\"\r\n\t\t\t\tvalue      \t199)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"TypeControlSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"None\"\r\n\t\t\t\tvalue      \t225)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"InitializationOnly\"\r\n\t\t\t\tvalue      \t226)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"AssignmentFinalizationOnly\"\r\n\t\t\t\tvalue      \t227)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"All\"\r\n\t\t\t\tvalue      \t228)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateAccessTypeSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Always\"\r\n\t\t\t\tvalue      \t229)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Auto\"\r\n\t\t\t\tvalue      \t230)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada95\"\r\n\t\tname       \t\"default__Module-Spec\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"Generate\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"CopyrightNotice\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"FileName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ReturnType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenericFormalParameters\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"AdditionalWiths\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"IsPrivate\"\r\n\t\t\tvalue      \tFALSE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada95\"\r\n\t\tname       \t\"default__Module-Body\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"Generate\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"CopyrightNotice\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"FileName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ReturnType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"AdditionalWiths\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"IsSubunit\"\r\n\t\t\tvalue      \tFALSE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada95\"\r\n\t\tname       \t\"default__Operation\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"CodeName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"SubprogramImplementation\"\r\n\t\t\tvalue      \t(\"SubprogramImplementationSet\" 2))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"Renames\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateOverriding\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ImplicitParameterMode\"\r\n\t\t\tvalue      \t(\"ParameterModeSet\" 203))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ImplicitParameterClassWide\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateAccessOperation\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"Inline\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"EntryCode\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ExitCode\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InitialCodeBody\"\r\n\t\t\tvalue      \t\"${default}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"EntryBarrierCondition\"\r\n\t\t\tvalue      \t\"True\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"Representation\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"SubprogramImplementationSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Spec\"\r\n\t\t\t\tvalue      \t224)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Body\"\r\n\t\t\t\tvalue      \t2)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Abstract\"\r\n\t\t\t\tvalue      \t221)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Renaming\"\r\n\t\t\t\tvalue      \t222)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"RenamingAsBody\"\r\n\t\t\t\tvalue      \t231)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Separate\"\r\n\t\t\t\tvalue      \t223)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ParameterModeSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Default\"\r\n\t\t\t\tvalue      \t232)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"In\"\r\n\t\t\t\tvalue      \t204)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Out\"\r\n\t\t\t\tvalue      \t205)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"InOut\"\r\n\t\t\t\tvalue      \t203)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Access\"\r\n\t\t\t\tvalue      \t220)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada95\"\r\n\t\tname       \t\"default__Param\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"Mode\"\r\n\t\t\tvalue      \t(\"ParameterModeSet\" 232))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenericFormal\"\r\n\t\t\tvalue      \t(\"GenericFormalSet\" 1))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"AssociationMapping\"\r\n\t\t\tvalue      \t(\"AssociationMappingSet\" 1))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ParameterModeSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Default\"\r\n\t\t\t\tvalue      \t232)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"In\"\r\n\t\t\t\tvalue      \t204)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Out\"\r\n\t\t\t\tvalue      \t205)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"InOut\"\r\n\t\t\t\tvalue      \t203)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Access\"\r\n\t\t\t\tvalue      \t220)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenericFormalSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Default\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Object\"\r\n\t\t\t\tvalue      \t2)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Type\"\r\n\t\t\t\tvalue      \t3)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Procedure\"\r\n\t\t\t\tvalue      \t4)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Function\"\r\n\t\t\t\tvalue      \t5)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Package\"\r\n\t\t\t\tvalue      \t6)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"AssociationMappingSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Name\"\r\n\t\t\t\tvalue      \t1)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Type\"\r\n\t\t\t\tvalue      \t2)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada95\"\r\n\t\tname       \t\"default__Has\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"CodeName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"NameIfUnlabeled\"\r\n\t\t\tvalue      \t\"The_${supplier}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"RecordFieldImplementation\"\r\n\t\t\tvalue      \t(\"RecordFieldImplementationSet\" 216))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"AccessDiscriminantClassWide\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"RecordFieldName\"\r\n\t\t\tvalue      \t\"${relationship}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateGet\"\r\n\t\t\tvalue      \t(\"FunctionKindSet\" 199))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateAccessGet\"\r\n\t\t\tvalue      \t(\"FunctionKindSet\" 201))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GetName\"\r\n\t\t\tvalue      \t\"Get_${relationship}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InlineGet\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateSet\"\r\n\t\t\tvalue      \t(\"ProcedureKindSet\" 202))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateAccessSet\"\r\n\t\t\tvalue      \t(\"ProcedureKindSet\" 201))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"SetName\"\r\n\t\t\tvalue      \t\"Set_${relationship}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InlineSet\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"IsAliased\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"IsConstant\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InitialValue\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"Declare\"\r\n\t\t\tvalue      \t(\"DeclareSet\" 234))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ContainerImplementation\"\r\n\t\t\tvalue      \t(\"ContainerImplementationSet\" 217))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ContainerGeneric\"\r\n\t\t\tvalue      \t\"List\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ContainerType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ContainerDeclarations\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"SelectorName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"SelectorType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"DeclareSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Before\"\r\n\t\t\t\tvalue      \t233)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"After\"\r\n\t\t\t\tvalue      \t234)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"RecordFieldImplementationSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Component\"\r\n\t\t\t\tvalue      \t216)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Discriminant\"\r\n\t\t\t\tvalue      \t218)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"AccessDiscriminant\"\r\n\t\t\t\tvalue      \t219)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ContainerImplementationSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Array\"\r\n\t\t\t\tvalue      \t217)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Generic\"\r\n\t\t\t\tvalue      \t11)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ProcedureKindSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Procedure\"\r\n\t\t\t\tvalue      \t202)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"FunctionKindSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Function\"\r\n\t\t\t\tvalue      \t199)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada95\"\r\n\t\tname       \t\"default__Attribute\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"CodeName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"RecordFieldImplementation\"\r\n\t\t\tvalue      \t(\"RecordFieldImplementationSet\" 216))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"AccessDiscriminantClassWide\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"RecordFieldName\"\r\n\t\t\tvalue      \t\"${attribute}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateGet\"\r\n\t\t\tvalue      \t(\"FunctionKindSet\" 199))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateAccessGet\"\r\n\t\t\tvalue      \t(\"FunctionKindSet\" 201))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GetName\"\r\n\t\t\tvalue      \t\"Get_${attribute}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InlineGet\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateSet\"\r\n\t\t\tvalue      \t(\"ProcedureKindSet\" 202))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateAccessSet\"\r\n\t\t\tvalue      \t(\"ProcedureKindSet\" 201))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"SetName\"\r\n\t\t\tvalue      \t\"Set_${attribute}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InlineSet\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"IsAliased\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"IsConstant\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InitialValue\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"Declare\"\r\n\t\t\tvalue      \t(\"DeclareSet\" 234))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"Representation\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"DeclareSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Before\"\r\n\t\t\t\tvalue      \t233)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"After\"\r\n\t\t\t\tvalue      \t234)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"RecordFieldImplementationSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Component\"\r\n\t\t\t\tvalue      \t216)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Discriminant\"\r\n\t\t\t\tvalue      \t218)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"AccessDiscriminant\"\r\n\t\t\t\tvalue      \t219)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ProcedureKindSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Procedure\"\r\n\t\t\t\tvalue      \t202)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"FunctionKindSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Function\"\r\n\t\t\t\tvalue      \t199)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada95\"\r\n\t\tname       \t\"default__Association\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"NameIfUnlabeled\"\r\n\t\t\tvalue      \t\"The_${targetClass}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateGet\"\r\n\t\t\tvalue      \t(\"FunctionKindSet\" 199))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GetName\"\r\n\t\t\tvalue      \t\"Get_${association}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InlineGet\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateSet\"\r\n\t\t\tvalue      \t(\"ProcedureKindSet\" 202))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"SetName\"\r\n\t\t\tvalue      \t\"Set_${association}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InlineSet\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateAssociate\"\r\n\t\t\tvalue      \t(\"ProcedureKindSet\" 202))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"AssociateName\"\r\n\t\t\tvalue      \t\"Associate\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InlineAssociate\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateDissociate\"\r\n\t\t\tvalue      \t(\"ProcedureKindSet\" 202))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"DissociateName\"\r\n\t\t\tvalue      \t\"Dissociate\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InlineDissociate\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ProcedureKindSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Procedure\"\r\n\t\t\t\tvalue      \t202)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"FunctionKindSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Function\"\r\n\t\t\t\tvalue      \t199)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada95\"\r\n\t\tname       \t\"default__Role\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"CodeName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"NameIfUnlabeled\"\r\n\t\t\tvalue      \t\"The_${targetClass}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"RecordFieldImplementation\"\r\n\t\t\tvalue      \t(\"RecordFieldImplementationSet\" 216))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"AccessDiscriminantClassWide\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"RecordFieldName\"\r\n\t\t\tvalue      \t\"${target}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateGet\"\r\n\t\t\tvalue      \t(\"FunctionKindSet\" 199))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateAccessGet\"\r\n\t\t\tvalue      \t(\"FunctionKindSet\" 201))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GetName\"\r\n\t\t\tvalue      \t\"Get_${target}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InlineGet\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateSet\"\r\n\t\t\tvalue      \t(\"ProcedureKindSet\" 202))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"GenerateAccessSet\"\r\n\t\t\tvalue      \t(\"ProcedureKindSet\" 201))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"SetName\"\r\n\t\t\tvalue      \t\"Set_${target}\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InlineSet\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"IsAliased\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"IsConstant\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"InitialValue\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"Declare\"\r\n\t\t\tvalue      \t(\"DeclareSet\" 234))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"Representation\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ContainerImplementation\"\r\n\t\t\tvalue      \t(\"ContainerImplementationSet\" 217))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ContainerGeneric\"\r\n\t\t\tvalue      \t\"List\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ContainerType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ContainerDeclarations\"\r\n\t\t\tvalue      \t(value Text \"\"))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"SelectorName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"SelectorType\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ProcedureKindSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Procedure\"\r\n\t\t\t\tvalue      \t202)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"DeclareSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Before\"\r\n\t\t\t\tvalue      \t233)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"After\"\r\n\t\t\t\tvalue      \t234)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"RecordFieldImplementationSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Component\"\r\n\t\t\t\tvalue      \t216)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Discriminant\"\r\n\t\t\t\tvalue      \t218)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"AccessDiscriminant\"\r\n\t\t\t\tvalue      \t219)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"ContainerImplementationSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Array\"\r\n\t\t\t\tvalue      \t217)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Generic\"\r\n\t\t\t\tvalue      \t11)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"FunctionKindSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"Function\"\r\n\t\t\t\tvalue      \t199)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Ada95\"\r\n\t\t\t\tname       \t\"DoNotCreate\"\r\n\t\t\t\tvalue      \t201)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada95\"\r\n\t\tname       \t\"default__Subsystem\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Ada95\"\r\n\t\t\tname       \t\"Directory\"\r\n\t\t\tvalue      \t\"AUTO GENERATE\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Ada95\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"CORBA\"\r\n\t\tname       \t\"default__Param\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"Direction\"\r\n\t\t\tvalue      \t(\"ParamDirectionTypeSet\" 102))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"CORBA\"\r\n\t\t\tname       \t\"ParamDirectionTypeSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"CORBA\"\r\n\t\t\t\tname       \t\"in\"\r\n\t\t\t\tvalue      \t102)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"CORBA\"\r\n\t\t\t\tname       \t\"inout\"\r\n\t\t\t\tvalue      \t103)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"CORBA\"\r\n\t\t\t\tname       \t\"out\"\r\n\t\t\t\tvalue      \t104)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Deploy\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"Oracle8\"\r\n\t\tname       \t\"propertyId\"\r\n\t\tvalue      \t\"360000002\")\r\n\t    (object Attribute\r\n\t\ttool       \t\"Oracle8\"\r\n\t\tname       \t\"default__Project\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"DDLScriptFilename\"\r\n\t\t\tvalue      \t\"DDL1.SQL\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"DropClause\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"PrimaryKeyColumnName\"\r\n\t\t\tvalue      \t\"_ID\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"PrimaryKeyColumnType\"\r\n\t\t\tvalue      \t\"NUMBER(5,0)\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"SchemaNamePrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"SchemaNameSuffix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"TableNamePrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"TableNameSuffix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"TypeNamePrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"TypeNameSuffix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"ViewNamePrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"ViewNameSuffix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"VarrayNamePrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"VarrayNameSuffix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"NestedTableNamePrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"NestedTableNameSuffix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"ObjectTableNamePrefix\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"ObjectTableNameSuffix\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Oracle8\"\r\n\t\tname       \t\"default__Module-Spec\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"IsSchema\"\r\n\t\t\tvalue      \tFALSE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Oracle8\"\r\n\t\tname       \t\"default__Class\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"OID\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"WhereClause\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"CheckConstraint\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"CollectionTypeLength\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"CollectionTypePrecision\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"CollectionTypeScale\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"CollectionOfREFS\"\r\n\t\t\tvalue      \tFALSE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Oracle8\"\r\n\t\tname       \t\"default__Operation\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"MethodKind\"\r\n\t\t\tvalue      \t(\"MethodKindSet\" 1903))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"OverloadID\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"OrderNumber\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"IsReadNoDataState\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"IsReadNoProcessState\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"IsWriteNoDataState\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"IsWriteNoProcessState\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"IsSelfish\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"TriggerType\"\r\n\t\t\tvalue      \t(\"TriggerTypeSet\" 1801))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"TriggerEvent\"\r\n\t\t\tvalue      \t(\"TriggerEventSet\" 1601))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"TriggerText\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"TriggerReferencingNames\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"TriggerForEach\"\r\n\t\t\tvalue      \t(\"TriggerForEachSet\" 1701))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"TriggerWhenClause\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"MethodKindSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"MapMethod\"\r\n\t\t\t\tvalue      \t1901)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"OrderMethod\"\r\n\t\t\t\tvalue      \t1902)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"Function\"\r\n\t\t\t\tvalue      \t1903)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"Procedure\"\r\n\t\t\t\tvalue      \t1904)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"Operator\"\r\n\t\t\t\tvalue      \t1905)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"Constructor\"\r\n\t\t\t\tvalue      \t1906)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"Destructor\"\r\n\t\t\t\tvalue      \t1907)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"Trigger\"\r\n\t\t\t\tvalue      \t1908)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"Calculated\"\r\n\t\t\t\tvalue      \t1909)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"TriggerTypeSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"AFTER\"\r\n\t\t\t\tvalue      \t1801)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"BEFORE\"\r\n\t\t\t\tvalue      \t1802)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"INSTEAD OF\"\r\n\t\t\t\tvalue      \t1803)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"TriggerForEachSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"ROW\"\r\n\t\t\t\tvalue      \t1701)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"STATEMENT\"\r\n\t\t\t\tvalue      \t1702)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"TriggerEventSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"INSERT\"\r\n\t\t\t\tvalue      \t1601)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"UPDATE\"\r\n\t\t\t\tvalue      \t1602)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"DELETE\"\r\n\t\t\t\tvalue      \t1603)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"INSERT OR UPDATE\"\r\n\t\t\t\tvalue      \t1604)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"INSERT OR DELETE\"\r\n\t\t\t\tvalue      \t1605)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"UPDATE OR DELETE\"\r\n\t\t\t\tvalue      \t1606)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Oracle8\"\r\n\t\t\t\tname       \t\"INSERT OR UPDATE OR DELETE\"\r\n\t\t\t\tvalue      \t1607)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Oracle8\"\r\n\t\tname       \t\"default__Role\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"OrderNumber\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Oracle8\"\r\n\t\tname       \t\"default__Attribute\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"OrderNumber\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"IsUnique\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"NullsAllowed\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"Length\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"Precision\"\r\n\t\t\tvalue      \t\"2\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"Scale\"\r\n\t\t\tvalue      \t\"6\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"IsIndex\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"IsPrimaryKey\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"CompositeUnique\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Oracle8\"\r\n\t\t\tname       \t\"CheckConstraint\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Oracle8\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"ComponentTest\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"Rose Model Integrator\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"TopLink\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"Version Control\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE)\r\n\t    (object Attribute\r\n\t\ttool       \t\"Visual Basic\"\r\n\t\tname       \t\"propertyId\"\r\n\t\tvalue      \t\"783606378\")\r\n\t    (object Attribute\r\n\t\ttool       \t\"Visual Basic\"\r\n\t\tname       \t\"default__Class\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"UpdateCode\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"UpdateModel\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"InstancingSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\t\tname       \t\"Private\"\r\n\t\t\t\tvalue      \t221)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\t\tname       \t\"PublicNotCreatable\"\r\n\t\t\t\tvalue      \t213)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\t\tname       \t\"SingleUse\"\r\n\t\t\t\tvalue      \t214)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\t\tname       \t\"GlobalSingleUse\"\r\n\t\t\t\tvalue      \t215)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\t\tname       \t\"MultiUse\"\r\n\t\t\t\tvalue      \t219)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\t\tname       \t\"GlobalMultiUse\"\r\n\t\t\t\tvalue      \t220)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"BaseSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\t\tname       \t\"(none)\"\r\n\t\t\t\tvalue      \t222)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\t\tname       \t\"0\"\r\n\t\t\t\tvalue      \t223)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\t\tname       \t\"1\"\r\n\t\t\t\tvalue      \t224)))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"OptionBase\"\r\n\t\t\tvalue      \t(\"BaseSet\" 222))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"OptionExplicit\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"OptionCompare\"\r\n\t\t\tvalue      \t(\"CompareSet\" 202))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"Instancing\"\r\n\t\t\tvalue      \t(\"InstancingSet\" 219))\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"CompareSet\"\r\n\t\t\tvalue      \t(list Attribute_Set\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\t\tname       \t\"(none)\"\r\n\t\t\t\tvalue      \t202)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\t\tname       \t\"Binary\"\r\n\t\t\t\tvalue      \t203)\r\n\t\t\t    (object Attribute\r\n\t\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\t\tname       \t\"Text\"\r\n\t\t\t\tvalue      \t204)))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Visual Basic\"\r\n\t\tname       \t\"default__Operation\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"LibraryName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"AliasName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"IsStatic\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"ProcedureID\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"ReplaceExistingBody\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"DefaultBody\"\r\n\t\t\tvalue      \t(value Text \"\"))))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Visual Basic\"\r\n\t\tname       \t\"default__Attribute\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"New\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"WithEvents\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"ProcedureID\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"PropertyName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"Subscript\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Visual Basic\"\r\n\t\tname       \t\"default__Role\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"UpdateCode\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"New\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"WithEvents\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"FullName\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"ProcedureID\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"PropertyName\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"Subscript\"\r\n\t\t\tvalue      \t\"\")))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Visual Basic\"\r\n\t\tname       \t\"default__Inherit\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"ImplementsDelegation\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"FullName\"\r\n\t\t\tvalue      \tFALSE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Visual Basic\"\r\n\t\tname       \t\"default__Param\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"ByVal\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"ByRef\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"Optional\"\r\n\t\t\tvalue      \tFALSE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"ParamArray\"\r\n\t\t\tvalue      \tFALSE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Visual Basic\"\r\n\t\tname       \t\"default__Module-Spec\"\r\n\t\tvalue      \t(list Attribute_Set\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"ProjectFile\"\r\n\t\t\tvalue      \t\"\")\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"UpdateCode\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"UpdateModel\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"ImportReferences\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"QuickImport\"\r\n\t\t\tvalue      \tTRUE)\r\n\t\t    (object Attribute\r\n\t\t\ttool       \t\"Visual Basic\"\r\n\t\t\tname       \t\"ImportBinary\"\r\n\t\t\tvalue      \tFALSE)))\r\n\t    (object Attribute\r\n\t\ttool       \t\"Visual Basic\"\r\n\t\tname       \t\"HiddenTool\"\r\n\t\tvalue      \tFALSE))\r\n\tquid       \t\"39C9260C00D9\"))\r\n"
  },
  {
    "path": "src/ReadMe.md",
    "content": "### 电子商务项目taoshop\n@version版本1.0.0\n本开源项目拟采用B2C的商业模式，采用SpringBoot+SpringCloud或者Dubbo技术栈实现微服务，实现一款分布式集群的高性能电商系统。(开发中...)"
  },
  {
    "path": "src/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>com.muses.taoshop</groupId>\n  <artifactId>taoshop</artifactId>\n  <version>1.0-SNAPSHOT</version>\n  <packaging>pom</packaging>\n  <name>taoshop</name>\n\n  <parent>\n    <groupId>org.springframework.boot</groupId>\n    <artifactId>spring-boot-starter-parent</artifactId>\n    <version>1.5.7.RELEASE</version>\n  </parent>\n\n  <properties>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n\n    <!-- 模块版本 -->\n    <taoshop-web-portal.version>1.0</taoshop-web-portal.version>\n\n    <!-- 外部依赖 -->\n    <log4j.version>1.2.17</log4j.version>\n    <mysql.version>5.1.27</mysql.version>\n    <mybatis.version>3.4.0</mybatis.version>\n    <mybatis.spring.version>1.3.0</mybatis.spring.version>\n    <mybatis.springboot.version>1.3.1</mybatis.springboot.version>\n    <mysql-connector.version>5.1.39</mysql-connector.version>\n    <spring-boot.version>1.5.7.RELEASE</spring-boot.version>\n    <druid.version>1.1.2</druid.version>\n    <github.pagehelper.version>4.2.1</github.pagehelper.version>\n    <fastjson.version>1.2.7</fastjson.version>\n    <lombok.version>1.16.10</lombok.version>\n  </properties>\n\n  <modules>\n    <module>taoshop-quartz</module>\n    <module>taoshop-search</module>\n    <module>taoshop-common</module>\n    <module>taoshop-provider-api</module>\n    <module>taoshop-provider</module>\n    <module>taoshop-manager</module>\n    <module>taoshop-portal</module>\n    <module>taoshop-cms</module>\n    <module>taoshop-order</module>\n      <module>taoshop-sso</module>\n  </modules>\n\n  <build>\n    <resources>\n      <resource>\n        <directory>src/main/java</directory>\n        <includes>\n          <include>**/*.xml</include>\n        </includes>\n          <filtering>true</filtering>\n      </resource>\n    </resources>\n    <plugins>\n      <!-- 设置源文件编译 -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <version>3.6.1</version>\n        <configuration>\n          <source>1.8</source>\n          <target>1.8</target>\n          <compilerVersion>1.8</compilerVersion>\n          <encoding>UTF-8</encoding>\n          <skipMain></skipMain>\n          <annotationProcessorPaths>\n            <path>\n              <groupId>org.projectlombok</groupId>\n              <artifactId>lombok</artifactId>\n              <version>${lombok.version}</version>\n            </path>\n          </annotationProcessorPaths>\n\n        </configuration>\n      </plugin>\n\n      <!-- 解决资源文件的编码问题 -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-resources-plugin</artifactId>\n        <version>3.0.2</version>\n        <configuration>\n          <encoding>UTF-8</encoding>\n        </configuration>\n      </plugin>\n\n    </plugins>\n  </build>\n\n\n  <dependencies>\n    <!-- Spring boot -->\n    <dependency>\n      <groupId>org.springframework.boot</groupId>\n      <artifactId>spring-boot-starter-web</artifactId>\n      <version>${spring-boot.version}</version>\n    </dependency>\n\n    <!-- redis -->\n    <dependency>\n      <groupId>org.springframework.boot</groupId>\n      <artifactId>spring-boot-starter-data-redis</artifactId>\n      <version>${spring-boot.version}</version>\n    </dependency>\n\n    <!-- springboot mybatis-->\n    <dependency>\n      <groupId>org.mybatis.spring.boot</groupId>\n      <artifactId>mybatis-spring-boot-starter</artifactId>\n      <version>${mybatis.springboot.version}</version>\n    </dependency>\n\n   <!-- 热部署-->\n    <dependency>\n      <groupId>org.springframework.boot</groupId>\n      <artifactId>spring-boot-devtools</artifactId>\n      <optional>true</optional>\n    </dependency>\n\n    <!--  alibaba druid -->\n    <dependency>\n      <groupId>com.alibaba</groupId>\n      <artifactId>druid</artifactId>\n      <version>${druid.version}</version>\n    </dependency>\n    <dependency>\n      <groupId>com.alibaba</groupId>\n      <artifactId>druid-spring-boot-starter</artifactId>\n      <version>${druid.version}</version>\n    </dependency>\n\n    <!-- Themeleaf -->\n    <dependency>\n      <groupId>org.springframework.boot</groupId>\n      <artifactId>spring-boot-starter-thymeleaf</artifactId>\n    </dependency>\n\n    <!-- pagehelper -->\n    <dependency>\n      <groupId>com.github.pagehelper</groupId>\n      <artifactId>pagehelper</artifactId>\n      <version>${github.pagehelper.version}</version>\n    </dependency>\n\n    <!-- mysql -->\n    <dependency>\n      <groupId>mysql</groupId>\n      <artifactId>mysql-connector-java</artifactId>\n      <version>${mysql-connector.version}</version>\n    </dependency>\n\n    <!-- fastjson -->\n    <dependency>\n      <groupId>com.alibaba</groupId>\n      <artifactId>fastjson</artifactId>\n      <version>1.2.35</version>\n    </dependency>\n\n    <!-- lombok -->\n    <dependency>\n      <groupId>org.projectlombok</groupId>\n      <artifactId>lombok</artifactId>\n      <version>${lombok.version}</version>\n    </dependency>\n\n    <!-- 其他工具包-->\n    <dependency>\n      <groupId>commons-fileupload</groupId>\n      <artifactId>commons-fileupload</artifactId>\n      <version>1.2.2</version>\n    </dependency>\n    <dependency>\n      <groupId>commons-io</groupId>\n      <artifactId>commons-io</artifactId>\n      <version>2.4</version>\n    </dependency>\n    <dependency>\n      <groupId>commons-codec</groupId>\n      <artifactId>commons-codec</artifactId>\n      <version>1.9</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.commons</groupId>\n      <artifactId>commons-lang3</artifactId>\n      <version>3.5</version>\n    </dependency>\n  </dependencies>\n  <!--  设定Maven主仓库为阿里私服 -->\n  <repositories>\n    <repository>\n      <id>repos</id>\n      <name>Repository</name>\n      <url>http://maven.aliyun.com/nexus/content/groups/public</url>\n    </repository>\n  </repositories>\n\n  <!--  设定插件仓库 -->\n  <pluginRepositories>\n    <pluginRepository>\n      <id>pluginsRepos</id>\n      <name>PluginsRepository</name>\n      <url>http://maven.aliyun.com/nexus/content/groups/public</url>\n    </pluginRepository>\n  </pluginRepositories>\n\n</project>"
  },
  {
    "path": "src/taoshop-cms/ReadMe.md",
    "content": "### CMS系统"
  },
  {
    "path": "src/taoshop-cms/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <parent>\n        <artifactId>taoshop</artifactId>\n        <groupId>com.muses.taoshop</groupId>\n        <version>1.0-SNAPSHOT</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n\n    <artifactId>taoshop-cms</artifactId>\n    <version>1.0-SNAPSHOT</version>\n    <packaging>war</packaging>\n\n    <name>taoshop-cms Maven Webapp</name>\n    <url>http://www.example.com</url>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n        <maven.compiler.source>1.7</maven.compiler.source>\n        <maven.compiler.target>1.7</maven.compiler.target>\n    </properties>\n\n    <dependencies>\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <version>4.11</version>\n            <scope>test</scope>\n        </dependency>\n    </dependencies>\n\n    <build>\n        <finalName>taoshop-cms</finalName>\n        <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->\n            <plugins>\n                <plugin>\n                    <artifactId>maven-clean-plugin</artifactId>\n                    <version>3.0.0</version>\n                </plugin>\n                <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->\n                <plugin>\n                    <artifactId>maven-resources-plugin</artifactId>\n                    <version>3.0.2</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-compiler-plugin</artifactId>\n                    <version>3.7.0</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-surefire-plugin</artifactId>\n                    <version>2.20.1</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-war-plugin</artifactId>\n                    <version>3.2.0</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-install-plugin</artifactId>\n                    <version>2.5.2</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-deploy-plugin</artifactId>\n                    <version>2.8.2</version>\n                </plugin>\n            </plugins>\n        </pluginManagement>\n    </build>\n</project>\n"
  },
  {
    "path": "src/taoshop-cms/src/main/webapp/WEB-INF/web.xml",
    "content": "<!DOCTYPE web-app PUBLIC\n \"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN\"\n \"http://java.sun.com/dtd/web-app_2_3.dtd\" >\n\n<web-app>\n  <display-name>Archetype Created Web Application</display-name>\n</web-app>\n"
  },
  {
    "path": "src/taoshop-cms/src/main/webapp/index.jsp",
    "content": "<html>\n<body>\n<h2>Hello World!</h2>\n</body>\n</html>\n"
  },
  {
    "path": "src/taoshop-common/ReadMe.md",
    "content": "### 电商平台通用工程\n"
  },
  {
    "path": "src/taoshop-common/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <parent>\n        <artifactId>taoshop</artifactId>\n        <groupId>com.muses.taoshop</groupId>\n        <version>1.0-SNAPSHOT</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>com.muses.taoshop.common</groupId>\n    <artifactId>taoshop-common</artifactId>\n    <packaging>pom</packaging>\n    <!--<version>1.0-SNAPSHOT</version>-->\n    <modules>\n        <module>taoshop-common-rpc</module>\n        <module>taoshop-common-cache</module>\n        <module>taoshop-common-core</module>\n        <module>taoshop-security-core</module>\n    </modules>\n\n    <name>taoshop-common</name>\n    <url>http://www.example.com</url>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n        <maven.compiler.source>1.7</maven.compiler.source>\n        <maven.compiler.target>1.7</maven.compiler.target>\n    </properties>\n\n    <dependencies>\n\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <version>4.11</version>\n            <scope>test</scope>\n        </dependency>\n    </dependencies>\n\n\n\n</project>\n"
  },
  {
    "path": "src/taoshop-common/taoshop-common-cache/ReadMe.md",
    "content": "###缓存框架\n"
  },
  {
    "path": "src/taoshop-common/taoshop-common-cache/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n\n    <parent>\n        <artifactId>taoshop-common</artifactId>\n        <groupId>com.muses.taoshop.common</groupId>\n        <version>1.0-SNAPSHOT</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n\n    <artifactId>taoshop-common-cache</artifactId>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    </properties>\n\n\n    <dependencies>\n       <!-- <dependency>\n            <groupId>com.efun.framework</groupId>\n            <artifactId>efun-base-common</artifactId>\n            <version>${project.parent.version}</version>\n        </dependency>-->\n\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-cache</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-data-redis</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>com.github.ben-manes.caffeine</groupId>\n            <artifactId>caffeine</artifactId>\n        </dependency>\n    </dependencies>\n</project>"
  },
  {
    "path": "src/taoshop-common/taoshop-common-core/ReadMe.md",
    "content": "###电商平台通用工程\n包括统一异常处理类，Mybatis数据库相关的通用类"
  },
  {
    "path": "src/taoshop-common/taoshop-common-core/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <parent>\n        <artifactId>taoshop-common</artifactId>\n        <groupId>com.muses.taoshop.common</groupId>\n        <version>1.0-SNAPSHOT</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n\n    <artifactId>taoshop-common-core</artifactId>\n\n    <name>taoshop-common-core</name>\n    <url>http://www.example.com</url>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    </properties>\n\n    <dependencies>\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <version>4.11</version>\n            <scope>test</scope>\n        </dependency>\n    </dependencies>\n\n\n</project>\n"
  },
  {
    "path": "src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/base/Constants.java",
    "content": "package com.muses.taoshop.common.core.base;\n\nimport java.util.Locale;\n\n/**\n * @description Constants类，项目的基本信息配置\n * @author Nicky\n * @date 2017年3月6日\n */\npublic class Constants {\n\n\t//定义统一Locale.CHINA,程序中所有和Locale相关操作均默认使用此Locale\n\tpublic static final Locale LOCALE_CHINA = Locale.CHINA;\n\t\n\t//验证码Session\n\tpublic static final String SESSION_SECURITY_CODE = \"sessionSecCode\";\n\t//用户信息Session\n\tpublic static final String SESSION_USER = \"sessionUser\";\n\t//角色权限Session\n\tpublic static final String SESSION_ROLE_RIGHTS = \"sessionRoleRights\";\n\t//所有菜单Session\n\tpublic static final String SESSION_ALLMENU = \"sessionAllMenu\";\n\t//权限Session\n\tpublic static final String SESSION_RIGHTS = \"sessionRights\";\n\t\n\t//页面分页数量\n\tpublic static final Integer PAGE_SIZE = 6;\n\t//页面排序数量\n\tpublic static final Integer SORT_SIZE = 3;\n\t\n\t//登录URL\n\tpublic static final String URL_LOGIN = \"/login.do\";\t\t\t\n\t\n\t//登录过滤的正则表达式\n\tpublic static final String REGEXP_PATH = \".*/((login)|(logout)|(toblog)|(search)|(getArchiveArticles)|(code)|(plugins)|(upload)|(static)).*\";\t//不对匹配该值的访问路径拦截（正则）\n\n\t//Lucene索引的路径\n\tpublic static final String LUCENE_INDEX_PATH = \"D:\\\\lucene\";\n}"
  },
  {
    "path": "src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/base/ResultStatus.java",
    "content": "package com.muses.taoshop.common.core.base;\n\n/**\n * <pre>\n *  返回结果枚举类 TODO 代补充完善\n * </pre>\n *\n * @author nicky.ma\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期:     修改内容:\n * </pre>\n */\npublic enum ResultStatus {\n\n    //TODO add result status\n    OK(\"200\",\"OK\",\"成功\"),\n    VALIDATION_ERROR(\"400\",\"Validation Error\",\"参数校验异常\"),\n    AUTHENTICATION_ERROR(\"300\",\"Authentication Error\",\"身份认证异常\");\n\n    private final String statusCode;\n\n    private final String resonPhrase;\n\n    private final String message;\n\n    private ResultStatus(String statusCode, String resonPhrase, String message) {\n        this.statusCode = statusCode;\n        this.resonPhrase = resonPhrase;\n        this.message = message;\n    }\n}\n"
  },
  {
    "path": "src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/database/annotation/AnnotationConstants.java",
    "content": "package com.muses.taoshop.common.core.database.annotation;\n\nimport org.springframework.core.io.support.ResourcePatternResolver;\nimport org.springframework.util.ClassUtils;\n\nimport static com.muses.taoshop.common.core.database.config.BaseConfig.ENTITY_PACKAGES;\n\n/**\n * <pre>\n *  配置类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.12.01 18:30    修改内容:\n * </pre>\n */\npublic class AnnotationConstants {\n\n    public static final String DEFAULT_RESOURCE_PATTERN = \"**/*.class\";\n\n    public final static String PACKAGE_PATTERN =\n            ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX\n            + ClassUtils.convertClassNameToResourcePath(ENTITY_PACKAGES)\n            + DEFAULT_RESOURCE_PATTERN;\n\n}\n"
  },
  {
    "path": "src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/database/annotation/MybatisRepository.java",
    "content": "package com.muses.taoshop.common.core.database.annotation;\n\nimport org.apache.ibatis.annotations.Mapper;\nimport org.springframework.stereotype.Component;\n\nimport java.lang.annotation.*;\n\n/**\n * <pre>\n *  定义一个元注解类扫描repository接口类\n *  @see @link org.mybatis.spring.mapper.MapperScannerConfigurer}\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期:     修改内容:\n * </pre>\n */\n@Documented\n@Target(ElementType.TYPE)\n@Retention(RetentionPolicy.RUNTIME)\n@Component\n@Mapper\npublic @interface MybatisRepository {\n    String value() default \"\";\n}\n"
  },
  {
    "path": "src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/database/annotation/TypeAliasesPackageScanner.java",
    "content": "package com.muses.taoshop.common.core.database.annotation;\n\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.context.ConfigurableApplicationContext;\nimport org.springframework.core.io.support.PathMatchingResourcePatternResolver;\nimport org.springframework.core.io.support.ResourcePatternResolver;\n\nimport java.io.IOException;\nimport java.util.*;\n\nimport org.springframework.core.io.Resource;\nimport org.springframework.core.type.classreading.CachingMetadataReaderFactory;\nimport org.springframework.core.type.classreading.MetadataReader;\nimport org.springframework.core.type.classreading.MetadataReaderFactory;\nimport org.springframework.stereotype.Component;\nimport org.springframework.util.CollectionUtils;\nimport org.thymeleaf.util.StringUtils;\n\nimport static com.muses.taoshop.common.core.database.annotation.AnnotationConstants.PACKAGE_PATTERN;\n\n/**\n * <pre>\n *  TypeAlicsesPackage的扫描类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.12.01 18:23    修改内容:\n * </pre>\n */\n@Component\npublic class TypeAliasesPackageScanner {\n\n    protected final static Logger LOGGER = LoggerFactory.getLogger(TypeAliasesPackageScanner.class);\n    private static ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();\n   /* private TypeFilter[] entityTypeFilters = new TypeFilter[]{new AnnotationTypeFilter(Entity.class, false),\n            new AnnotationTypeFilter(Embeddable.class, false),\n            new AnnotationTypeFilter(MappedSuperclass.class, false),\n            new AnnotationTypeFilter(org.hibernate.annotations.Entity.class, false)};*/\n\n\n    public static String getTypeAliasesPackages() {\n        Set<String> packageNames = new TreeSet<String>();\n        //TreeSet packageNames = new TreeSet();\n        String typeAliasesPackage =\"\";\n        try {\n            //加载所有的资源\n            Resource[] resources = resourcePatternResolver.getResources(PACKAGE_PATTERN);\n            MetadataReaderFactory readerFactory = new CachingMetadataReaderFactory(resourcePatternResolver);\n            //遍历资源\n            for (Resource resource : resources) {\n                if (resource.isReadable()) {\n                    MetadataReader reader = readerFactory.getMetadataReader(resource);\n                    String className = reader.getClassMetadata().getClassName();\n                    //eg:com.muses.taoshop.item.entity.ItemBrand\n                    LOGGER.info(\"className : {} \"+className);\n                    try{\n                        //eg:com.muses.taoshop.item.entity\n                        LOGGER.info(\"packageName : {} \"+Class.forName(className).getPackage().getName());\n                        packageNames.add(Class.forName(className).getPackage().getName());\n                    }catch (ClassNotFoundException e){\n                        LOGGER.error(\"classNotFoundException : {} \"+e);\n                    }\n                }\n            }\n        } catch (IOException e) {\n            LOGGER.error(\"ioException =>: {} \" + e);\n        }\n        //集合不为空的情况，拼装一下数据\n        if (!CollectionUtils.isEmpty(packageNames)) {\n            typeAliasesPackage = StringUtils.join(packageNames.toArray() , ConfigurableApplicationContext.CONFIG_LOCATION_DELIMITERS);\n        }else{\n            LOGGER.info(\"set empty,size:{} \"+packageNames.size());\n        }\n        return typeAliasesPackage;\n    }\n\n    \n}\n"
  },
  {
    "path": "src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/database/config/BaseConfig.java",
    "content": "package com.muses.taoshop.common.core.database.config;\n\n/**\n * <pre>\n *  基本配置类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期:     修改内容:\n * </pre>\n */\npublic class BaseConfig {\n\n    /**\n     * 设置主数据源名称\n     */\n    public static final String DATA_SOURCE_NAME = \"shop\";\n\n    /**\n     * 加载配置文件信息\n     */\n    public static final String DATA_SOURCE_PROPERTIES = \"spring.datasource.shop\";\n\n    /**\n     * repository 所在包\n     */\n    public static final String REPOSITORY_PACKAGES = \"com.muses.taoshop.**.repository\";\n\n    /**\n     * mapper 所在包\n     */\n    public static final String MAPPER_PACKAGES = \"com.muses.taoshop.**.mapper\";\n\n    /**\n     * 实体类 所在包\n     */\n    public static final String ENTITY_PACKAGES = \"com.muses.taoshop.*.entity\";\n\n    /**\n     * 自定义TypeHandler\n     */\n    public static final String TYPE_HANDLERS_PACKAGES = \"com.muses.taoshop.common.core.database.typehandlers\";\n\n    /**\n     * Mybatis session 工厂\n     */\n    public static final String SQL_SESSION_FACTORY = \"sqlSessionFactory\";\n\n    /**\n     * Mybatis 事务管理器\n     */\n    public static final String MYBATIS_TRANSACTION_MANAGER = \"mybatisTransactionManager\";\n\n    /**\n     * Jedis连接池\n     */\n    public static final String JEDIS_POOL = \"jedisPool\";\n\n    /**\n     * Jedis连接池配置\n     */\n    public static final String JEDIS_POOL_CONFIG = \"jedisPoolConfig\";\n\n}\n"
  },
  {
    "path": "src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/database/config/DataSourceConfig.java",
    "content": "package com.muses.taoshop.common.core.database.config;\n\nimport com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;\nimport org.springframework.boot.context.properties.ConfigurationProperties;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\n\nimport javax.sql.DataSource;\n\nimport static com.muses.taoshop.common.core.database.config.BaseConfig.DATA_SOURCE_NAME;\nimport static com.muses.taoshop.common.core.database.config.BaseConfig.DATA_SOURCE_PROPERTIES;\n\n\n/**\n * <pre>\n *  DataSource配置类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期:     修改内容:\n * </pre>\n */\n@Configuration\npublic class DataSourceConfig {\n\n    @Bean(name = DATA_SOURCE_NAME)\n    @ConfigurationProperties(prefix = DATA_SOURCE_PROPERTIES)\n    public DataSource dataSource() {\n        return DruidDataSourceBuilder.create().build();\n    }\n}\n"
  },
  {
    "path": "src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/database/config/MybatisConfig.java",
    "content": "package com.muses.taoshop.common.core.database.config;\n\nimport com.muses.taoshop.common.core.database.annotation.MybatisRepository;\nimport com.muses.taoshop.common.core.database.annotation.TypeAliasesPackageScanner;\nimport org.apache.ibatis.io.VFS;\nimport org.apache.ibatis.plugin.Interceptor;\nimport org.apache.ibatis.session.SqlSessionFactory;\nimport org.mybatis.spring.SqlSessionFactoryBean;\nimport org.mybatis.spring.annotation.MapperScan;\nimport org.mybatis.spring.boot.autoconfigure.SpringBootVFS;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.beans.factory.annotation.Qualifier;\nimport org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;\nimport org.springframework.boot.context.properties.ConfigurationProperties;\nimport org.springframework.context.annotation.*;\nimport org.springframework.core.io.support.PathMatchingResourcePatternResolver;\nimport org.springframework.core.io.support.ResourcePatternResolver;\n\nimport org.springframework.jdbc.datasource.DataSourceTransactionManager;\nimport org.springframework.transaction.annotation.EnableTransactionManagement;\nimport javax.sql.DataSource;\n\nimport static com.muses.taoshop.common.core.database.config.BaseConfig.*;\n\n/**\n * <pre>\n *  Mybatis配置类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期:     修改内容:\n * </pre>\n */\n@MapperScan(\n        basePackages = MAPPER_PACKAGES,\n        annotationClass = MybatisRepository.class,\n        sqlSessionFactoryRef = SQL_SESSION_FACTORY\n)\n@ComponentScan\n@EnableTransactionManagement\n@Configuration\npublic class MybatisConfig {\n\n\n    @Autowired\n    MybatisSqlInterceptor mybatisSqlInterceptor;\n\n    TypeAliasesPackageScanner packageScanner = new TypeAliasesPackageScanner();\n\n    @Bean(name = DATA_SOURCE_NAME)\n    @ConfigurationProperties(prefix = DATA_SOURCE_PROPERTIES)\n    @Primary\n    public DataSource dataSource(){\n        return DataSourceBuilder.create().build();\n    }\n\n    @Primary\n    @Bean(name = SQL_SESSION_FACTORY)\n    public SqlSessionFactory sqlSessionFactory(@Qualifier(DATA_SOURCE_NAME)DataSource dataSource)throws Exception{\n        //SpringBoot默认使用DefaultVFS进行扫描，但是没有扫描到jar里的实体类\n        VFS.addImplClass(SpringBootVFS.class);\n        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();\n        factoryBean.setPlugins(new Interceptor[]{mybatisSqlInterceptor});\n        factoryBean.setDataSource(dataSource);\n        //factoryBean.setConfigLocation(new ClassPathResource(\"mybatis-config.xml\"));\n        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();\n        try{\n            factoryBean.setMapperLocations(resolver.getResources(\"classpath*:/mybatis/*Mapper.xml\"));\n            String typeAliasesPackage = packageScanner.getTypeAliasesPackages();\n            factoryBean.setTypeAliasesPackage(typeAliasesPackage);\n            SqlSessionFactory sqlSessionFactory = factoryBean.getObject();\n            return sqlSessionFactory;\n        }catch (Exception e){\n            e.printStackTrace();\n            throw new RuntimeException();\n        }\n    }\n\n    @Bean(name = MYBATIS_TRANSACTION_MANAGER)\n    public DataSourceTransactionManager transactionManager(@Qualifier(DATA_SOURCE_NAME)DataSource dataSource) {\n        return new DataSourceTransactionManager(dataSource);\n    }\n\n\n}"
  },
  {
    "path": "src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/database/config/MybatisSqlInterceptor.java",
    "content": "package com.muses.taoshop.common.core.database.config;\n\nimport org.apache.commons.lang3.StringUtils;\nimport org.apache.ibatis.executor.Executor;\nimport org.apache.ibatis.mapping.BoundSql;\nimport org.apache.ibatis.mapping.MappedStatement;\nimport org.apache.ibatis.plugin.*;\nimport org.apache.ibatis.session.ResultHandler;\nimport org.apache.ibatis.session.RowBounds;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.stereotype.Component;\n\n\nimport java.util.Properties;\n\n/**\n * <pre>\n *  Mybatis SQL拦截器\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期:     修改内容:\n * </pre>\n */\n@Component\n@Intercepts(@Signature(type = Executor.class, method = \"query\",\n        args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class}))\npublic class MybatisSqlInterceptor implements Interceptor {\n\n    Logger  LOGGER = LoggerFactory.getLogger(MybatisSqlInterceptor.class);\n    @Override\n    public Object intercept(Invocation invocation) throws Throwable {\n        // 拦截sql\n        Object[] args = invocation.getArgs();\n        MappedStatement statement = (MappedStatement) args[0];\n        Object parameterObject = args[1];\n        BoundSql boundSql = statement.getBoundSql(parameterObject);\n        String sql = boundSql.getSql();\n        LOGGER.info(\"获取到的SQL：{}\"+sql);\n        if (StringUtils.isBlank(sql)) {\n            return invocation.proceed();\n        }\n        // 返回\n        return invocation.proceed();\n    }\n \n    @Override\n    public Object plugin(Object obj) {\n        return Plugin.wrap(obj, this);\n    }\n \n    @Override\n    public void setProperties(Properties arg0) {}\n\n}"
  },
  {
    "path": "src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/database/typehandlers/Spring2BooleanTypeHandler.java",
    "content": "package com.muses.taoshop.common.core.database.typehandlers;\n\nimport org.apache.ibatis.type.JdbcType;\nimport org.apache.ibatis.type.TypeHandler;\n\nimport java.sql.CallableStatement;\nimport java.sql.PreparedStatement;\nimport java.sql.ResultSet;\nimport java.sql.SQLException;\n\n/**\n * <pre>\n *  将数据库中的\"Y\"和\"N\"类型转为boolean类型\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期:2018.05.26     修改内容:\n * </pre>\n */\npublic class Spring2BooleanTypeHandler implements TypeHandler<Object>{\n\n\n    /**\n     *\n     *(non-Javadoc)\n     * @see org.apache.ibatis.type.TypeHandler#getResult(java.sql.ResultSet, int)\n     */\n    @Override\n    public void setParameter(PreparedStatement preparedStatement, int i, Object o, JdbcType jdbcType) throws SQLException {\n\n    }\n\n    /**\n     * (non-Javadoc)\n     * @see org.apache.ibatis.type.TypeHandler#getResult(java.sql.ResultSet, int)\n     */\n    @Override\n    public Object getResult(ResultSet resultSet, String s) throws SQLException {\n        boolean flag ;\n        if(resultSet.getString(s).equals(\"Y\")){\n            flag = true;\n        }else{\n            flag = false;\n        }\n        return flag;\n    }\n\n    /**\n     *\n     *(non-Javadoc)\n     * @see org.apache.ibatis.type.TypeHandler#getResult(java.sql.ResultSet, int)\n     */\n    @Override\n    public Object getResult(ResultSet resultSet, int i) throws SQLException {\n        boolean flag;\n        if(resultSet.getString(i).equals(\"Y\")){\n            flag = true;\n        }else{\n            flag = false;\n        }\n        return flag;\n    }\n\n    /**\n     * (non-Javadoc)\n     * @see org.apache.ibatis.type.TypeHandler#getResult(java.sql.ResultSet, int)\n     */\n    @Override\n    public Object getResult(CallableStatement callableStatement, int i) throws SQLException {\n        return callableStatement.getString(i);\n    }\n\n}\n"
  },
  {
    "path": "src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/database/typehandlers/UnixLong2DateTypeHandler.java",
    "content": "package com.muses.taoshop.common.core.database.typehandlers;\n\nimport org.apache.ibatis.type.BaseTypeHandler;\nimport org.apache.ibatis.type.JdbcType;\nimport org.apache.ibatis.type.TypeHandler;\n\nimport java.sql.CallableStatement;\nimport java.sql.PreparedStatement;\nimport java.sql.ResultSet;\nimport java.sql.SQLException;\nimport java.text.DateFormat;\nimport java.text.ParseException;\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\n\n/**\n * <pre>\n *  类型转换 Long => Date\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.06.18 14:04    修改内容:\n * </pre>\n */\npublic class UnixLong2DateTypeHandler implements TypeHandler<Date> {\n\n\n    @Override\n    public void setParameter(PreparedStatement preparedStatement, int i, Date o, JdbcType jdbcType) throws SQLException {\n    }\n\n    @Override\n    public Date getResult(ResultSet resultSet, String s) throws SQLException {\n        long unixlongTime = resultSet.getLong(s);\n        Date date = new Date(unixlongTime*1000);\n        return date;\n    }\n\n    @Override\n    public Date getResult(ResultSet resultSet, int i) throws SQLException {\n        long unixlongTime = resultSet.getLong(i);\n        Date date = new Date(unixlongTime*1000);\n        return date;\n    }\n\n    @Override\n    public Date getResult(CallableStatement callableStatement, int i) throws SQLException {\n        return callableStatement.getDate(i);\n    }\n}\n"
  },
  {
    "path": "src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/exception/CommonException.java",
    "content": "package com.muses.taoshop.common.core.exception;\n\n/**\n * <pre>\n *  TODO 实现统一异常处理类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期:     修改内容:\n * </pre>\n */\npublic class CommonException {\n\n}\n"
  },
  {
    "path": "src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/util/DateUtils.java",
    "content": "package com.muses.taoshop.common.core.util;\n\nimport java.text.DateFormat;\nimport java.text.ParseException;\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\n\n/**\n * <pre>\n *  日期处理工具类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.06.18 14:28    修改内容:\n * </pre>\n */\npublic class DateUtils {\n\n\n    public static Date doParse(String date){\n        DateFormat dateFormat = new SimpleDateFormat();\n        try {\n            return dateFormat.parse(date);\n        } catch (ParseException e) {\n            e.printStackTrace();\n            throw new RuntimeException(e);\n        }\n    }\n\n\n}\n"
  },
  {
    "path": "src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/util/JsonDateSerializer.java",
    "content": "package com.muses.taoshop.common.core.util;\n\nimport com.fasterxml.jackson.core.JsonGenerator;\nimport com.fasterxml.jackson.core.JsonProcessingException;\nimport com.fasterxml.jackson.databind.JsonSerializer;\nimport com.fasterxml.jackson.databind.SerializerProvider;\n\nimport java.io.IOException;\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\n\npublic class JsonDateSerializer extends JsonSerializer<Date> {\n   private SimpleDateFormat dateFormat=new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\");\n   @Override  \n   public void serialize(Date date, JsonGenerator gen, SerializerProvider provider)  throws IOException, JsonProcessingException {\n       String value = dateFormat.format(date);  \n       gen.writeString(value);  \n   }  \n}  "
  },
  {
    "path": "src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/util/SerializeUtils.java",
    "content": "package com.muses.taoshop.common.core.util;\n\nimport java.io.*;\n\n/**\n * <pre>\n *  序列化工具类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期:2018.05.26     修改内容:\n * </pre>\n */\npublic class SerializeUtils {\n\n    /**\n     * 序列化对象\n     * @param obj\n     *      创建一个对象\n     * @return\n     *      字节流byte\n     */\n    public static byte[] doSerialize(Object obj){\n        ObjectOutputStream oos = null;\n        ByteArrayOutputStream baos = null;\n\n        baos = new ByteArrayOutputStream();\n\n        try {\n            oos = new ObjectOutputStream(baos);\n            oos.writeObject(obj);\n\n            byte[] byteArray = baos.toByteArray();\n            return  byteArray;\n        } catch (IOException e) {\n            e.printStackTrace();\n        }\n        return null;\n    }\n\n    /**\n     * 反序列化对象\n     * @param byteArray\n     *          字节流byte\n     * @return\n     *          返回一个对象\n     */\n    public static Object unSerialize(byte[] byteArray){\n        ByteArrayInputStream bais = null;\n        bais = new ByteArrayInputStream(byteArray);\n        try {\n            ObjectInputStream ois = new ObjectInputStream(bais);\n            return  ois.readObject();\n        } catch (IOException e) {\n            e.printStackTrace();\n        } catch (ClassNotFoundException e) {\n            e.printStackTrace();\n        }\n        return null;\n    }\n}\n"
  },
  {
    "path": "src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/util/UUIDGenerator.java",
    "content": "package com.muses.taoshop.common.core.util;\n\n/**\n * <pre>\n *  UUID生成器\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.06.18 14:15    修改内容:\n * </pre>\n */\npublic class UUIDGenerator {\n\n\n\n}\n"
  },
  {
    "path": "src/taoshop-common/taoshop-common-core/src/test/java/org/muses/commo/AppTest.java",
    "content": "package org.muses.commo;\n\nimport static org.junit.Assert.assertTrue;\n\nimport org.junit.Test;\n\n/**\n * Unit test for simple App.\n */\npublic class AppTest \n{\n    /**\n     * Rigorous Test :-)\n     */\n    @Test\n    public void shouldAnswerWithTrue()\n    {\n        assertTrue( true );\n    }\n}\n"
  },
  {
    "path": "src/taoshop-common/taoshop-common-core/src/test/java/org/muses/commo/MybatisSqlInterceptor.java",
    "content": "package org.muses.commo;\nimport org.apache.commons.lang3.StringUtils;\nimport org.apache.ibatis.executor.Executor;\nimport org.apache.ibatis.mapping.BoundSql;\nimport org.apache.ibatis.mapping.MappedStatement;\nimport org.apache.ibatis.mapping.SqlCommandType;\nimport org.apache.ibatis.mapping.SqlSource;\nimport org.apache.ibatis.plugin.*;\nimport org.apache.ibatis.reflection.DefaultReflectorFactory;\nimport org.apache.ibatis.reflection.MetaObject;\nimport org.apache.ibatis.reflection.factory.DefaultObjectFactory;\nimport org.apache.ibatis.reflection.wrapper.DefaultObjectWrapperFactory;\nimport org.apache.ibatis.session.ResultHandler;\nimport org.apache.ibatis.session.RowBounds;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.stereotype.Component;\n\nimport java.sql.SQLException;\nimport java.util.Properties;\n\n@Component\n@Intercepts(@Signature(type = Executor.class, method = \"query\",\n        args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class}))\npublic class MybatisSqlInterceptor implements Interceptor {\n\n    Logger  logger = LoggerFactory.getLogger(MybatisSqlInterceptor.class);\n    @Override\n    public Object intercept(Invocation invocation) throws Throwable {\n        // 获取sql\n        String sql = getSqlByInvocation(invocation);\n        logger.info(\"获取到的SQL：{}\"+sql);\n        if (StringUtils.isBlank(sql)) {\n            return invocation.proceed();\n        }\n        // sql交由处理类处理  对sql语句进行处理  此处是范例  不做任何处理\n        String sql2Reset = sql;\n \n        // 包装sql后，重置到invocation中\n        resetSql2Invocation(invocation, sql2Reset);\n \n        // 返回，继续执行\n        return invocation.proceed();\n    }\n \n    @Override\n    public Object plugin(Object obj) {\n        return Plugin.wrap(obj, this);\n    }\n \n    @Override\n    public void setProperties(Properties arg0) {\n        // doSomething\n    }\n \n    /**\n     * 获取sql语句\n     * @param invocation\n     * @return\n     */\n    private String getSqlByInvocation(Invocation invocation) {\n        final Object[] args = invocation.getArgs();\n        MappedStatement ms = (MappedStatement) args[0];\n        Object parameterObject = args[1];\n        BoundSql boundSql = ms.getBoundSql(parameterObject);\n        return boundSql.getSql();\n    }\n \n    /**\n     * 包装sql后，重置到invocation中\n     * @param invocation\n     * @param sql\n     * @throws SQLException\n     */\n    private void resetSql2Invocation(Invocation invocation, String sql) throws SQLException {\n        final Object[] args = invocation.getArgs();\n        MappedStatement statement = (MappedStatement) args[0];\n        Object parameterObject = args[1];\n        BoundSql boundSql = statement.getBoundSql(parameterObject);\n        MappedStatement newStatement = newMappedStatement(statement, new BoundSqlSqlSource(boundSql));\n        MetaObject msObject =  MetaObject.forObject(newStatement, new DefaultObjectFactory(), new DefaultObjectWrapperFactory(),new DefaultReflectorFactory());\n        msObject.setValue(\"sqlSource.boundSql.sql\", sql);\n        args[0] = newStatement;\n    }\n \n    private MappedStatement newMappedStatement(MappedStatement ms, SqlSource newSqlSource) {\n        MappedStatement.Builder builder =\n                new MappedStatement.Builder(ms.getConfiguration(), ms.getId(), newSqlSource, ms.getSqlCommandType());\n        builder.resource(ms.getResource());\n        builder.fetchSize(ms.getFetchSize());\n        builder.statementType(ms.getStatementType());\n        builder.keyGenerator(ms.getKeyGenerator());\n        if (ms.getKeyProperties() != null && ms.getKeyProperties().length != 0) {\n            StringBuilder keyProperties = new StringBuilder();\n            for (String keyProperty : ms.getKeyProperties()) {\n                keyProperties.append(keyProperty).append(\",\");\n            }\n            keyProperties.delete(keyProperties.length() - 1, keyProperties.length());\n            builder.keyProperty(keyProperties.toString());\n        }\n        builder.timeout(ms.getTimeout());\n        builder.parameterMap(ms.getParameterMap());\n        builder.resultMaps(ms.getResultMaps());\n        builder.resultSetType(ms.getResultSetType());\n        builder.cache(ms.getCache());\n        builder.flushCacheRequired(ms.isFlushCacheRequired());\n        builder.useCache(ms.isUseCache());\n \n        return builder.build();\n    }\n \n    private String getOperateType(Invocation invocation) {\n        final Object[] args = invocation.getArgs();\n        MappedStatement ms = (MappedStatement) args[0];\n        SqlCommandType commondType = ms.getSqlCommandType();\n        if (commondType.compareTo(SqlCommandType.SELECT) == 0) {\n            return \"select\";\n        }\n        if (commondType.compareTo(SqlCommandType.INSERT) == 0) {\n            return \"insert\";\n        }\n        if (commondType.compareTo(SqlCommandType.UPDATE) == 0) {\n            return \"update\";\n        }\n        if (commondType.compareTo(SqlCommandType.DELETE) == 0) {\n            return \"delete\";\n        }\n        return null;\n    }\n//    定义一个内部辅助类，作用是包装sq\n    class BoundSqlSqlSource implements SqlSource {\n        private BoundSql boundSql;\n        public BoundSqlSqlSource(BoundSql boundSql) {\n            this.boundSql = boundSql;\n        }\n        @Override\n        public BoundSql getBoundSql(Object parameterObject) {\n            return boundSql;\n        }\n    }\n}"
  },
  {
    "path": "src/taoshop-common/taoshop-common-core/src/test/java/org/muses/commo/RedisWithReentrantLock.java",
    "content": "package org.muses.commo;\n\nimport redis.clients.jedis.Jedis;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\npublic class RedisWithReentrantLock {\n\n  private ThreadLocal<Map<String, Integer>> lockers = new ThreadLocal<>();\n\n  private Jedis jedis;\n\n  public RedisWithReentrantLock(Jedis jedis) {\n    this.jedis = jedis;\n  }\n\n  private boolean _lock(String key) {\n    return jedis.set(key, \"\", \"nx\", \"ex\", 5L) != null;\n  }\n\n  private void _unlock(String key) {\n    jedis.del(key);\n  }\n\n  private Map<String, Integer> currentLockers() {\n    Map<String, Integer> refs = lockers.get();\n    if (refs != null) {\n      return refs;\n    }\n    lockers.set(new HashMap<>());\n    return lockers.get();\n  }\n\n  public boolean lock(String key) {\n    Map<String, Integer> refs = currentLockers();\n    Integer refCnt = refs.get(key);\n    if (refCnt != null) {\n      refs.put(key, refCnt + 1);\n      return true;\n    }\n    boolean ok = this._lock(key);\n    if (!ok) {\n      return false;\n    }\n    refs.put(key, 1);\n    return true;\n  }\n\n  public boolean unlock(String key) {\n    Map<String, Integer> refs = currentLockers();\n    Integer refCnt = refs.get(key);\n    if (refCnt == null) {\n      return false;\n    }\n    refCnt -= 1;\n    if (refCnt > 0) {\n      refs.put(key, refCnt);\n    } else {\n      refs.remove(key);\n      this._unlock(key);\n    }\n    return true;\n  }\n\n  public static void main(String[] args) {\n    Jedis jedis = new Jedis();\n    RedisWithReentrantLock redis = new RedisWithReentrantLock(jedis);\n    System.out.println(redis.lock(\"codehole\"));\n    System.out.println(redis.lock(\"codehole\"));\n    System.out.println(redis.unlock(\"codehole\"));\n    System.out.println(redis.unlock(\"codehole\"));\n  }\n\n}"
  },
  {
    "path": "src/taoshop-common/taoshop-common-rpc/ReadMe.md",
    "content": "### 项目RPC工程"
  },
  {
    "path": "src/taoshop-common/taoshop-common-rpc/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <parent>\n        <artifactId>taoshop-common</artifactId>\n        <groupId>com.muses.taoshop.common</groupId>\n        <version>1.0-SNAPSHOT</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n\n    <artifactId>taoshop-common-rpc</artifactId>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n        <maven.compiler.source>1.7</maven.compiler.source>\n        <maven.compiler.target>1.7</maven.compiler.target>\n        <dubbo.version>2.5.6</dubbo.version>\n    </properties>\n\n    <dependencies>\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <version>4.11</version>\n            <scope>test</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>com.alibaba</groupId>\n            <artifactId>dubbo</artifactId>\n            <version>${dubbo.version}</version>\n        </dependency>\n\n    </dependencies>\n\n    <build>\n        <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->\n            <plugins>\n                <plugin>\n                    <artifactId>maven-clean-plugin</artifactId>\n                    <version>3.0.0</version>\n                </plugin>\n                <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->\n                <plugin>\n                    <artifactId>maven-resources-plugin</artifactId>\n                    <version>3.0.2</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-compiler-plugin</artifactId>\n                    <version>3.7.0</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-surefire-plugin</artifactId>\n                    <version>2.20.1</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-jar-plugin</artifactId>\n                    <version>3.0.2</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-install-plugin</artifactId>\n                    <version>2.5.2</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-deploy-plugin</artifactId>\n                    <version>2.8.2</version>\n                </plugin>\n            </plugins>\n        </pluginManagement>\n    </build>\n</project>\n"
  },
  {
    "path": "src/taoshop-common/taoshop-common-rpc/src/main/java/org/muses/common/App.java",
    "content": "package org.muses.common;\n\n\n/**\n * Hello world!\n *\n */\npublic class App \n{\n\n    public static void main( String[] args )\n    {\n        System.out.println( \"Hello World!\" );\n    }\n}\n"
  },
  {
    "path": "src/taoshop-common/taoshop-common-rpc/src/test/java/org/muses/common/AppTest.java",
    "content": "package org.muses.common;\n\nimport static org.junit.Assert.assertTrue;\n\nimport org.junit.Test;\n\n/**\n * Unit test for simple App.\n */\npublic class AppTest \n{\n    /**\n     * Rigorous Test :-)\n     */\n    @Test\n    public void shouldAnswerWithTrue()\n    {\n        assertTrue( true );\n    }\n}\n"
  },
  {
    "path": "src/taoshop-common/taoshop-security-core/ReadMe.md",
    "content": "### 电商平台安全核心服务"
  },
  {
    "path": "src/taoshop-common/taoshop-security-core/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <parent>\n        <artifactId>taoshop-common</artifactId>\n        <groupId>com.muses.taoshop.common</groupId>\n        <version>1.0-SNAPSHOT</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n\n    <artifactId>taoshop-security-core</artifactId>\n\n    <properties>\n        <poi.version>3.7</poi.version>\n        <shiro.version>1.2.4</shiro.version>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n        <maven.compiler.source>1.7</maven.compiler.source>\n        <maven.compiler.target>1.7</maven.compiler.target>\n    </properties>\n\n    <dependencies>\n        <!--shiro start-->\n        <dependency>\n            <groupId>org.apache.shiro</groupId>\n            <artifactId>shiro-all</artifactId>\n            <version>${shiro.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.shiro</groupId>\n            <artifactId>shiro-spring</artifactId>\n            <version>${shiro.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.shiro</groupId>\n            <artifactId>shiro-ehcache</artifactId>\n            <version>${shiro.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.shiro</groupId>\n            <artifactId>shiro-cas</artifactId>\n            <version>${shiro.version}</version>\n        </dependency>\n        <!-- shiro end-->\n    </dependencies>\n\n    <build>\n        <resources>\n            <resource>\n                <directory>src/main/java</directory>\n                <includes>\n                    <include>**/*.xml</include>\n                </includes>\n                <filtering>true</filtering>\n            </resource>\n        </resources>\n        <plugins>\n            <!-- 设置源文件编译 -->\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-compiler-plugin</artifactId>\n                <version>3.6.1</version>\n                <configuration>\n                    <source>1.8</source>\n                    <target>1.8</target>\n                    <compilerVersion>1.8</compilerVersion>\n                    <encoding>UTF-8</encoding>\n                    <skipMain></skipMain>\n                    <annotationProcessorPaths>\n                        <path>\n                            <groupId>org.projectlombok</groupId>\n                            <artifactId>lombok</artifactId>\n                            <version>${lombok.version}</version>\n                        </path>\n                    </annotationProcessorPaths>\n\n                </configuration>\n            </plugin>\n\n            <!-- 解决资源文件的编码问题 -->\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-resources-plugin</artifactId>\n                <version>3.0.2</version>\n                <configuration>\n                    <encoding>UTF-8</encoding>\n                </configuration>\n            </plugin>\n\n        </plugins>\n    </build>\n</project>\n"
  },
  {
    "path": "src/taoshop-common/taoshop-security-core/src/main/java/com/muses/taoshop/common/cas/casRealm/ShiroCasRealm.java",
    "content": "package com.muses.taoshop.common.cas.casRealm;\n\nimport org.apache.shiro.cas.CasRealm;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\nimport javax.annotation.PostConstruct;\n\n/**\n * <pre>\n *  CASRealm类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.11.03 16:59    修改内容:\n * </pre>\n */\npublic class ShiroCasRealm extends CasRealm{\n\n    private static final Logger log = LoggerFactory.getLogger(ShiroCasRealm.class);\n\n    @PostConstruct\n    public void initProperty() {\n\n    }\n\n}\n"
  },
  {
    "path": "src/taoshop-common/taoshop-security-core/src/main/java/com/muses/taoshop/common/cas/config/CasConfiguration.java",
    "content": "package com.muses.taoshop.common.cas.config;\n\nimport com.muses.taoshop.common.security.core.shiro.realm.CommonShiroRealm;\nimport org.jasig.cas.client.session.SingleSignOutHttpSessionListener;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.boot.web.servlet.FilterRegistrationBean;\nimport org.springframework.boot.web.servlet.ServletListenerRegistrationBean;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\n\n/**\n * <pre>\n *  单点登录配置类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.10.28 22:33    修改内容:\n * </pre>\n */\n@Configuration\npublic class CasConfiguration {\n\n    private static final Logger log = LoggerFactory.getLogger(CasConfiguration.class);\n\n    @Bean\n    public CommonShiroRealm getShiroRealm() {\n        CommonShiroRealm commonShiroRealm = new CommonShiroRealm();\n        return commonShiroRealm;\n    }\n\n    /**\n     * 单点登出监听器\n     * @return\n     */\n    @Bean\n    public ServletListenerRegistrationBean servletListenerRegistrationBean() {\n        ServletListenerRegistrationBean registrationBean = new ServletListenerRegistrationBean();\n        registrationBean.setListener(new SingleSignOutHttpSessionListener());\n        registrationBean.setEnabled(true);\n        return registrationBean;\n    }\n\n\n\n}\n"
  },
  {
    "path": "src/taoshop-common/taoshop-security-core/src/main/java/com/muses/taoshop/common/cas/constant/CasConsts.java",
    "content": "package com.muses.taoshop.common.cas.constant;\n\n/**\n * <pre>\n *  单点登录配置类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.10.28 22:40    修改内容:\n * </pre>\n */\npublic class CasConsts {\n    //CAS server地址\n    public static final String CAS_SERVER_URL_PREFIX = \"http://127.0.0.1:8080/cas\";\n\n    //单点登录地址\n    public static final String CAS_SERVER_LOGIN_URL = CAS_SERVER_URL_PREFIX + \"/login\";\n\n    //单点登出地址\n    public static final String CAS_SERVER_LOGOUT_URL = CAS_SERVER_LOGIN_URL + \"/logout\";\n\n    //对外提供的服务地址\n    public static final String SERVER_URL_PREFIX = \"http://127.0.0.1:8080/\";\n\n    //casFilter utlPattern\n    public static final String CAS_FILTER_URL_PATTERN = \"/cas\";\n\n    //登录地址\n    public static final String LOGIN_URL = CAS_SERVER_LOGIN_URL + \"?server=\" +SERVER_URL_PREFIX + CAS_FILTER_URL_PATTERN;\n\n    //登出地址\n    public static final String LOGOUT_URL = CAS_SERVER_LOGOUT_URL + \"?server=\" + SERVER_URL_PREFIX;\n\n    //登录成功地址\n    public static final String LOGIN_SUCCESS_URL = \"/toIndex\";\n\n    //权限认证失败跳转地址\n    public static final String UNUATHORIZED_URL = \"/error/403.html\";\n\n}\n\n"
  },
  {
    "path": "src/taoshop-common/taoshop-security-core/src/main/java/com/muses/taoshop/common/security/core/filter/SysAccessControllerFilter.java",
    "content": "package com.muses.taoshop.common.security.core.filter;\n\n\nimport com.alibaba.fastjson.JSON;\nimport org.apache.shiro.cache.Cache;\nimport org.apache.shiro.cache.CacheManager;\nimport org.apache.shiro.session.Session;\nimport org.apache.shiro.session.mgt.DefaultSessionKey;\nimport org.apache.shiro.session.mgt.SessionManager;\nimport org.apache.shiro.subject.Subject;\nimport org.apache.shiro.web.filter.AccessControlFilter;\nimport org.apache.shiro.web.util.WebUtils;\n\n\nimport javax.servlet.ServletRequest;\nimport javax.servlet.ServletResponse;\nimport javax.servlet.http.HttpServletRequest;\nimport java.io.IOException;\nimport java.io.PrintWriter;\nimport java.io.Serializable;\nimport java.util.Deque;\nimport java.util.HashMap;\nimport java.util.LinkedList;\nimport java.util.Map;\n\npublic class SysAccessControllerFilter extends AccessControlFilter{\n\n    private String url;//被提出后，重定向的url\n    private boolean isKickoutAfter = false;//\n    private int maxSession = 1;\n\n    private SessionManager sessionManager;\n    private Cache<String,Deque<Serializable>> cache;\n\n    public void setUrl(String url){\n        this.url = url;\n    }\n\n    public void setKickoutAfter(boolean isKickoutAfter){\n        this.isKickoutAfter = isKickoutAfter;\n    }\n\n    public void setMaxSession(int maxSession){\n        this.maxSession = maxSession;\n    }\n\n    public void setSessionManager(SessionManager sessionManager){\n        this.sessionManager = sessionManager;\n    }\n\n    public void setCacheManager(CacheManager cacheManager){\n        this.cache = cacheManager.getCache(\"\");\n    }\n\n    @Override\n    protected boolean isAccessAllowed(ServletRequest servletRequest, ServletResponse servletResponse, Object o) throws Exception {\n        return false;\n    }\n\n    @Override\n    protected boolean onAccessDenied(ServletRequest servletRequest, ServletResponse servletResponse) throws Exception {\n        Subject subject = getSubject(servletRequest,servletResponse);\n        if(!subject.isAuthenticated() && ! subject.isRemembered()){\n            return true;\n        }\n        Session session = subject.getSession();\n//        User user = (User)subject.getPrincipal();\n//        String username = user.getUsername();\n        String username = \"\";\n        Serializable sessionId = session.getId();\n\n        //读取缓存\n        Deque<Serializable> deque = cache.get(username);\n\n        //new一个空队列\n        if(deque == null){\n            deque = new LinkedList<Serializable>();\n        }\n\n        //如果队列里没有此sessionId，且用户没有被踢出；放入队列\n        if(!deque.contains(sessionId) && session.getAttribute(\"kickout\") == null) {\n            //将sessionId存入队列\n            deque.push(sessionId);\n            //将用户的sessionId队列缓存\n            cache.put(username, deque);\n        }\n\n        //如果队列里的sessionId数超出最大会话数，开始踢人\n        while(deque.size() > maxSession) {\n            Serializable kickoutSessionId = null;\n            if(isKickoutAfter) { //如果踢出后者\n                kickoutSessionId = deque.removeFirst();\n                //踢出后再更新下缓存队列\n                cache.put(username, deque);\n            } else { //否则踢出前者\n                kickoutSessionId = deque.removeLast();\n                //踢出后再更新下缓存队列\n                cache.put(username, deque);\n            }\n\n\n\n            try {\n                //获取被踢出的sessionId的session对象\n                Session kickoutSession = sessionManager.getSession(new DefaultSessionKey(kickoutSessionId));\n                if(kickoutSession != null) {\n                    //设置会话的kickout属性表示踢出了\n                    kickoutSession.setAttribute(\"kickout\", true);\n                }\n            } catch (Exception e) {//ignore exception\n            }\n        }\n\n        //如果被踢出了，直接退出，重定向到踢出后的地址\n        if ((Boolean)session.getAttribute(\"kickout\")!=null&&(Boolean)session.getAttribute(\"kickout\") == true) {\n            //会话被踢出了\n            try {\n                //退出登录\n                subject.logout();\n            } catch (Exception e) { //ignore\n            }\n            saveRequest(servletRequest);\n\n            Map<String, String> resultMap = new HashMap<String, String>();\n            //判断是不是Ajax请求\n            if (\"XMLHttpRequest\".equalsIgnoreCase(((HttpServletRequest) servletRequest).getHeader(\"X-Requested-With\"))) {\n                resultMap.put(\"user_status\", \"300\");\n                resultMap.put(\"message\", \"您已经在其他地方登录，请重新登录！\");\n                //输出json串\n                out(servletResponse, resultMap);\n            }else{\n                //重定向\n                WebUtils.issueRedirect(servletRequest, servletResponse, url);\n            }\n            return false;\n        }\n        return true;\n    }\n\n    private void out(ServletResponse hresponse, Map<String, String> resultMap)\n            throws IOException {\n        try {\n            hresponse.setContentType(\"UTF-8\");\n            PrintWriter out = hresponse.getWriter();\n            out.println(JSON.toJSON(resultMap));\n            out.flush();\n            out.close();\n        } catch (Exception e) {\n            System.err.println(\"KickoutSessionFilter.class 输出JSON异常，可以忽略。\");\n        }\n    }\n}"
  },
  {
    "path": "src/taoshop-common/taoshop-security-core/src/main/java/com/muses/taoshop/common/security/core/shiro/realm/CommonShiroRealm.java",
    "content": "package com.muses.taoshop.common.security.core.shiro.realm;\n\nimport javax.annotation.Resource;\n\nimport org.apache.shiro.authc.AuthenticationException;\nimport org.apache.shiro.authc.AuthenticationInfo;\nimport org.apache.shiro.authc.AuthenticationToken;\nimport org.apache.shiro.authc.LockedAccountException;\nimport org.apache.shiro.authc.SimpleAuthenticationInfo;\nimport org.apache.shiro.authc.UnknownAccountException;\nimport org.apache.shiro.authz.AuthorizationInfo;\nimport org.apache.shiro.authz.SimpleAuthorizationInfo;\nimport org.apache.shiro.realm.AuthorizingRealm;\nimport org.apache.shiro.subject.PrincipalCollection;\n\n\n/**\n * @description 基于Shiro框架的权限安全认证和授权\n * @author Nicky\n * @date 2017年3月12日\n */\npublic class CommonShiroRealm extends AuthorizingRealm {\n\n\t/**注解引入业务类**/\n//\t@Resource\n//\tUserService userService;\n\t\n\t/**\n\t * 登录信息和用户验证信息验证(non-Javadoc)\n\t * @see org.apache.shiro.realm.AuthenticatingRealm#doGetAuthenticationInfo(AuthenticationToken)\n\t */\n\t@Override\n\tprotected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {\n\n\t\t String username = (String)token.getPrincipal();  \t\t\t\t//得到用户名 \n\t     String password = new String((char[])token.getCredentials()); \t//得到密码\n\t     \n//\t     User user = userService.findByUsername(username);\n\n\t     /**检测是否有此用户 **/\n//\t     if(user == null){\n//\t    \t throw new UnknownAccountException();//没有找到账号异常\n//\t     }\n\t     /**检验账号是否被锁定 **/\n//\t     if(Boolean.TRUE.equals(user.getLocked())){\n//\t    \t throw new LockedAccountException();//抛出账号锁定异常\n//\t     }\n\t     /**AuthenticatingRealm使用CredentialsMatcher进行密码匹配**/\n\t     if(null != username && null != password){\n\t    \t return new SimpleAuthenticationInfo(username, password, getName());\n\t     }else{\n\t    \t return null;\n\t     }\n\t     \n\t}\n\t\n\t/**\n\t * 授权查询回调函数, 进行鉴权但缓存中无用户的授权信息时调用,负责在应用程序中决定用户的访问控制的方法(non-Javadoc)\n\t * @see AuthorizingRealm#doGetAuthorizationInfo(PrincipalCollection)\n\t */\n\t@Override\n\tprotected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection pc) {\n\t\tString username = (String)pc.getPrimaryPrincipal();\n\t\tSimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo();\n//\t    authorizationInfo.setRoles(userService.getRoles(username));\n//\t    authorizationInfo.setStringPermissions(userService.getPermissions(username));\n\t\tSystem.out.println(\"Shiro授权\");\n\t    return authorizationInfo;\n\t}\n\t\n\t @Override\n\t public void clearCachedAuthorizationInfo(PrincipalCollection principals) {\n\t\t super.clearCachedAuthorizationInfo(principals);\n\t }\n\n\t @Override\n\t public void clearCachedAuthenticationInfo(PrincipalCollection principals) {\n\t     super.clearCachedAuthenticationInfo(principals);\n\t }\n\n\t @Override\n\t public void clearCache(PrincipalCollection principals) {\n\t      super.clearCache(principals);\n\t }\n\n}\n"
  },
  {
    "path": "src/taoshop-common/taoshop-security-core/src/main/java/com/muses/taoshop/common/security/core/utils/AESUtil.java",
    "content": "package com.muses.taoshop.common.security.core.utils;\n\nimport sun.misc.BASE64Encoder;\n\nimport java.security.SecureRandom;\nimport java.text.SimpleDateFormat;\n\nimport javax.crypto.Cipher;\nimport javax.crypto.KeyGenerator;\nimport javax.crypto.SecretKey;\nimport javax.crypto.spec.SecretKeySpec;\n/**\n * <pre>\n *  AES加密工具类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.05.20    修改内容:\n * </pre>\n */\npublic class AESUtil {\n\n    /**\n     * 加密\n     * @param content\n     * @param encryptKey\n     * @return\n     * @throws Exception\n     */\n    public static byte[] aesEncryptToBytes(String content, String encryptKey) throws Exception {\n        KeyGenerator kgen = KeyGenerator.getInstance(\"AES\");\n        //防止linux下 随机生成key\n        SecureRandom secureRandom = SecureRandom.getInstance(\"SHA1PRNG\" );\n        secureRandom.setSeed(encryptKey.getBytes());\n        kgen.init(128, secureRandom);\n        SecretKey secretKey = kgen.generateKey();\n        byte[] enCodeFormat = secretKey.getEncoded();\n        SecretKeySpec key = new SecretKeySpec(enCodeFormat, \"AES\");\n        Cipher cipher = Cipher.getInstance(\"AES\");// 创建密码器\n        byte[] byteContent = content.getBytes(\"utf-8\");\n        cipher.init(Cipher.ENCRYPT_MODE, key);// 初始化\n        return cipher.doFinal(byteContent);\n    }\n\n    public static String aesEncrypt(String content, String encryptKey) throws Exception {\n        return base64Encode(aesEncryptToBytes(content, encryptKey));\n    }\n\n    /**\n     * 解密\n     * @param encryptBytes\n     * @param decryptKey\n     * @return\n     * @throws Exception\n     */\n    public static String aesDecryptByBytes(byte[] encryptBytes, String decryptKey) throws Exception {\n\n        KeyGenerator kgen = KeyGenerator.getInstance(\"AES\");\n        //防止linux下 随机生成key\n        SecureRandom secureRandom = SecureRandom.getInstance(\"SHA1PRNG\" );\n        secureRandom.setSeed(decryptKey.getBytes());\n        kgen.init(128, secureRandom);\n        SecretKey secretKey = kgen.generateKey();\n        byte[] enCodeFormat = secretKey.getEncoded();\n        SecretKeySpec key = new SecretKeySpec(enCodeFormat, \"AES\");\n        Cipher cipher = Cipher.getInstance(\"AES\");// 创建密码器\n        cipher.init(Cipher.DECRYPT_MODE, key);// 初始化\n        byte[] result = cipher.doFinal(encryptBytes);\n\n        return new String(result);\n    }\n\n    public static String base64Encode(byte[] bytes) {\n        return new BASE64Encoder().encode(bytes);\n    }\n}\n"
  },
  {
    "path": "src/taoshop-manager/ReadMe.md",
    "content": "### 电商平台后台维护系统"
  },
  {
    "path": "src/taoshop-manager/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <parent>\n        <artifactId>taoshop</artifactId>\n        <groupId>com.muses.taoshop</groupId>\n        <version>1.0-SNAPSHOT</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n    <groupId>com.muses.taoshop.manager</groupId>\n    <artifactId>taoshop-manager</artifactId>\n    <version>1.0-SNAPSHOT</version>\n    <modules>\n        <module>taoshop-manager-web</module>\n        <module>taoshop-manager-api</module>\n        <module>taoshop-manager-service</module>\n    </modules>\n    <packaging>pom</packaging>\n\n    <url>http://www.example.com</url>\n\n    <distributionManagement>\n        <site>\n            <id>website</id>\n            <url>scp://webhost.company.com/www/website</url>\n        </site>\n    </distributionManagement>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    </properties>\n\n    <build>\n        <resources>\n            <resource>\n                <directory>src/main/java</directory>\n                <includes>\n                    <include>**/*.xml</include>\n                </includes>\n                <filtering>true</filtering>\n            </resource>\n        </resources>\n        <plugins>\n            <!-- 设置源文件编译 -->\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-compiler-plugin</artifactId>\n                <version>3.6.1</version>\n                <configuration>\n                    <source>1.8</source>\n                    <target>1.8</target>\n                    <compilerVersion>1.8</compilerVersion>\n                    <encoding>UTF-8</encoding>\n                    <skipMain></skipMain>\n                    <annotationProcessorPaths>\n                        <path>\n                            <groupId>org.projectlombok</groupId>\n                            <artifactId>lombok</artifactId>\n                            <version>${lombok.version}</version>\n                        </path>\n                    </annotationProcessorPaths>\n\n                </configuration>\n            </plugin>\n\n            <!-- 解决资源文件的编码问题 -->\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-resources-plugin</artifactId>\n                <version>3.0.2</version>\n                <configuration>\n                    <encoding>UTF-8</encoding>\n                </configuration>\n            </plugin>\n\n        </plugins>\n    </build>\n\n\n</project>\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-api/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <parent>\n        <artifactId>taoshop-manager</artifactId>\n        <groupId>com.muses.taoshop.manager</groupId>\n        <version>1.0-SNAPSHOT</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>com.muses.taoshop.manager</groupId>\n    <artifactId>taoshop-manager-api</artifactId>\n    <version>1.0-SNAPSHOT</version>\n\n    <name>taoshop-manager-api</name>\n    <url>http://www.example.com</url>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n        <maven.compiler.source>1.7</maven.compiler.source>\n        <maven.compiler.target>1.7</maven.compiler.target>\n    </properties>\n\n    <dependencies>\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <version>4.11</version>\n            <scope>test</scope>\n        </dependency>\n    </dependencies>\n\n\n</project>\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-api/src/main/java/com/muses/taoshop/manager/entity/ItemOrders.java",
    "content": "package com.muses.taoshop.manager.entity;\n\nimport lombok.Data;\n\n/**\n * <pre>\n *  订单实体类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.09.22 11:09    修改内容:\n * </pre>\n */\n@Data\npublic class ItemOrders {\n\n}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-api/src/main/java/com/muses/taoshop/manager/entity/Menu.java",
    "content": "package com.muses.taoshop.manager.entity;\n\nimport lombok.Data;\n\nimport java.util.List;\n\n/**\n * <pre>\n *  菜单信息实体类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.09.22 12:32    修改内容:\n * </pre>\n */\n@Data\npublic class Menu {\n    /**\n     * 菜单Id\n     **\n     */\n    private int menuId;\n\n    /**\n     * 上级Id\n     *\n     */\n    private int parentId;\n\n    /**\n     * 菜单名称\n     *\n     */\n    private String menuName;\n\n    /**\n     * 菜单图标\n     */\n    private String menuIcon;\n\n    /**\n     * 菜单uri\n     */\n    private String menuUrl;\n\n    /**\n     * 菜单类型\n     */\n    private String menuType;\n\n    /** 菜单排序**/\n    private String menuOrder;\n\n    /**\n     * 菜单排序\n     */\n    private String menuStatus;\n\n    /**\n     * 子级菜单\n     */\n    private List<Menu> subMenu;\n\n    private String target;\n\n    /**\n     * 是否有子级菜单\n     */\n    private boolean hasSubMenu = false;\n}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-api/src/main/java/com/muses/taoshop/manager/entity/Operation.java",
    "content": "package com.muses.taoshop.manager.entity;\n\nimport lombok.Data;\n\n/**\n * <pre>\n *  Operation类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.09.22 15:25    修改内容:\n * </pre>\n */\n@Data\npublic class Operation {\n    private int id;\n    private String desc;\n    private String name;\n    private String operation;\n    private static final long serialVersionUID = 1L;\n}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-api/src/main/java/com/muses/taoshop/manager/entity/Permission.java",
    "content": "package com.muses.taoshop.manager.entity;\n\nimport lombok.Data;\n\nimport java.util.HashSet;\nimport java.util.Set;\n\n/**\n * <pre>\n *  权限信息实体类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.09.22 14:28    修改内容:\n * </pre>\n */\n@Data\npublic class Permission {\n    private int id;\n    private String pdesc;\n    private String name;\n\n    private Menu menu;\n\n    private Set<Operation> operations = new HashSet<Operation>();\n}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-api/src/main/java/com/muses/taoshop/manager/entity/SysRole.java",
    "content": "package com.muses.taoshop.manager.entity;\n\nimport lombok.Data;\n\nimport java.util.HashSet;\nimport java.util.Set;\n\n/**\n * <pre>\n *  角色信息实体类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.09.22 13:31    修改内容:\n * </pre>\n */\n@Data\npublic class SysRole {\n    /** 角色Id**/\n    private int roleId;\n\n    /** 角色描述**/\n    private String roleDesc;\n\n    /** 角色名称**/\n    private String roleName;\n\n    /** 角色标志**/\n    private String role;\n\n    private Set<Permission> permissions = new HashSet<Permission>();\n}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-api/src/main/java/com/muses/taoshop/manager/entity/SysUser.java",
    "content": "package com.muses.taoshop.manager.entity;\n\nimport lombok.Data;\n\nimport java.util.Date;\nimport java.util.Set;\n\n/**\n * <pre>\n *  系统用户\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.07.01 18:51    修改内容:\n * </pre>\n */\n@Data\npublic class SysUser {\n\n    /**\n     *  用户id\n     */\n    private int id;\n\n    /**\n     * 用户名\n     */\n    private String username;\n\n    /**\n     * 密码\n     */\n    private String password;\n\n    /**\n     * 手机号\n     */\n    private String phone;\n\n    /**\n     * 性别\n     */\n    private String sex;\n\n    /**\n     * 电子邮箱\n     */\n    private String email;\n\n    /**\n     * 备注\n     */\n    private String mark;\n\n    /**\n     * 用户级别\n     */\n    private String rank;\n\n    /**\n     * 上次登录时间\n     */\n    private Date lastLogin;\n\n    /**\n     * 登录的IP地址\n     */\n    private String loginIp;\n\n    /**\n     * 头像图片地址\n     */\n    private String imageUrl;\n\n    /**\n     * 注册时间\n     */\n    private Date regTime;\n\n    /**\n     *  账号是否被锁定\n     */\n    private Boolean locked = Boolean.FALSE;\n\n    /**\n     * 权限\n     */\n    private String rights;\n\n    private Set<SysRole> roles;\n\n\n}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-api/src/main/java/com/muses/taoshop/manager/service/IItemOrdersService.java",
    "content": "package com.muses.taoshop.manager.service;\n\n/**\n * <pre>\n *  订单管理\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.09.22 11:10    修改内容:\n * </pre>\n */\npublic interface IItemOrdersService {\n}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-api/src/main/java/com/muses/taoshop/manager/service/IMenuService.java",
    "content": "package com.muses.taoshop.manager.service;\n\n\nimport com.muses.taoshop.manager.entity.Menu;\n\nimport java.util.List;\n\npublic interface IMenuService {\n    /**\n     * 根据权限id获取菜单\n     * @param permissionId\n     * @return\n     */\n    Menu listMenu(int permissionId);\n\n    /**\n     * 权限菜单获取，即根据用户角色获取用户可以查看的菜单\n     * @return\n     */\n    List<Menu> listPermissionMenu(int userId);\n}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-api/src/main/java/com/muses/taoshop/manager/service/ISysPermissionService.java",
    "content": "package com.muses.taoshop.manager.service;\n\n\nimport com.muses.taoshop.manager.entity.Permission;\n\nimport java.util.List;\nimport java.util.Set;\n\npublic interface ISysPermissionService {\n    /**\n     * 获取角色所有权限\n     * @return\n     */\n    Set<Permission> getRolePermissions(int roleId);\n}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-api/src/main/java/com/muses/taoshop/manager/service/ISysRoleService.java",
    "content": "package com.muses.taoshop.manager.service;\n\nimport com.muses.taoshop.manager.entity.SysRole;\n\nimport java.util.List;\nimport java.util.Set;\n\n/**\n * <pre>\n *  角色业务接口\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.10.21 21:57    修改内容:\n * </pre>\n */\npublic interface ISysRoleService {\n    /**\n     * 获取所有用户角色\n     * @return\n     */\n    Set<SysRole> getUserRoles(int userId);\n}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-api/src/main/java/com/muses/taoshop/manager/service/ISysUserService.java",
    "content": "package com.muses.taoshop.manager.service;\n\nimport com.muses.taoshop.manager.entity.SysRole;\nimport com.muses.taoshop.manager.entity.SysUser;\n\nimport java.util.Set;\n\n/**\n * <pre>\n *  系统用户信息处理接口类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.07.01 19:09    修改内容:\n * </pre>\n */\npublic interface ISysUserService {\n    /**\n     * 通过用户名和密码获取用户信息\n     * @param username\n     * @param password\n     * @return\n     */\n    SysUser getSysUser(String username , String password);\n\n    /**\n     * 获取用户角色\n     * @param username\n     * @return\n     */\n    Set<String> getRoles(String username) ;\n\n    /**\n     * 获取用户权限\n     * @param username\n     * @return\n     */\n    Set<String> getPermissions(String username);\n\n    /**\n     * 通过用户名获取用户信息\n     * @param username\n     * @return\n     */\n    SysUser getUserInfoByUsername(String username);\n\n    /**\n     * 通过用户id获取用户角色集合\n     * @param userId\n     * @return\n     */\n    @Deprecated\n    Set<SysRole> getUserRoles(int userId);\n}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-api/src/test/java/com/muses/taoshop/AppTest.java",
    "content": "package com.muses.taoshop;\n\nimport static org.junit.Assert.assertTrue;\n\nimport org.junit.Test;\n\n/**\n * Unit test for simple App.\n */\npublic class AppTest \n{\n    /**\n     * Rigorous Test :-)\n     */\n    @Test\n    public void shouldAnswerWithTrue()\n    {\n        assertTrue( true );\n    }\n}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-service/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <parent>\n        <artifactId>taoshop-manager</artifactId>\n        <groupId>com.muses.taoshop.manager</groupId>\n        <version>1.0-SNAPSHOT</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>com.muses.taoshop.manager</groupId>\n    <artifactId>taoshop-manager-service</artifactId>\n    <version>1.0-SNAPSHOT</version>\n\n    <name>taoshop-manager-service</name>\n\n    <url>http://www.example.com</url>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n        <maven.compiler.source>1.7</maven.compiler.source>\n        <maven.compiler.target>1.7</maven.compiler.target>\n    </properties>\n\n    <dependencies>\n        <dependency>\n            <groupId>com.muses.taoshop.manager</groupId>\n            <artifactId>taoshop-manager-api</artifactId>\n            <version>1.0-SNAPSHOT</version>\n        </dependency>\n        <dependency>\n            <groupId>com.muses.taoshop.common</groupId>\n            <artifactId>taoshop-common-core</artifactId>\n            <version>1.0-SNAPSHOT</version>\n        </dependency>\n        <!--<dependency>\n            <groupId>com.muses.taoshop.common</groupId>\n            <artifactId>taoshop-security-core</artifactId>\n            <version>1.0-SNAPSHOT</version>\n        </dependency>-->\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <version>4.11</version>\n            <scope>test</scope>\n        </dependency>\n    </dependencies>\n\n\n</project>\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-service/src/main/java/com/muses/taoshop/manager/mapper/ItemOrdersMapper.java",
    "content": "package com.muses.taoshop.manager.mapper;\n\n/**\n * <pre>\n *  订单管理\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.09.22 11:10    修改内容:\n * </pre>\n */\npublic interface ItemOrdersMapper {\n\n}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-service/src/main/java/com/muses/taoshop/manager/mapper/SysMenuMapper.java",
    "content": "package com.muses.taoshop.manager.mapper;\n\nimport com.muses.taoshop.common.core.database.annotation.MybatisRepository;\nimport com.muses.taoshop.manager.entity.Menu;\nimport org.apache.ibatis.annotations.Param;\n\nimport java.util.List;\n\n/**\n * <pre>\n *  菜单管理\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.09.22 12:33    修改内容:\n * </pre>\n */\n@MybatisRepository\npublic interface SysMenuMapper {\n\n    Menu listMenu(@Param(\"permissionId\") int permissionId);\n\n    List<Menu> listPermissionMenu(@Param(\"userId\")int userId);\n}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-service/src/main/java/com/muses/taoshop/manager/mapper/SysPermissionMapper.java",
    "content": "package com.muses.taoshop.manager.mapper;\n\nimport com.muses.taoshop.common.core.database.annotation.MybatisRepository;\nimport com.muses.taoshop.manager.entity.Permission;\n\nimport java.util.List;\n\n@MybatisRepository\npublic interface SysPermissionMapper {\n    List<Permission> listRolePermission(int roleId);\n}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-service/src/main/java/com/muses/taoshop/manager/mapper/SysRoleMapper.java",
    "content": "package com.muses.taoshop.manager.mapper;\n\nimport com.muses.taoshop.common.core.database.annotation.MybatisRepository;\nimport com.muses.taoshop.manager.entity.SysRole;\nimport org.apache.ibatis.annotations.Param;\n\nimport java.util.List;\n\n/**\n * <pre>\n *  角色操作Mapper接口\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.10.21 21:55    修改内容:\n * </pre>\n */\n@MybatisRepository\npublic interface SysRoleMapper {\n\n    List<SysRole> listUserRole(@Param(\"userId\")int userId);\n\n}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-service/src/main/java/com/muses/taoshop/manager/mapper/SysUserMapper.java",
    "content": "package com.muses.taoshop.manager.mapper;\n\nimport com.muses.taoshop.common.core.database.annotation.MybatisRepository;\nimport com.muses.taoshop.manager.entity.SysUser;\nimport org.apache.ibatis.annotations.Param;\n\n/**\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.07.08 11:17    修改内容:\n * </pre>\n */\n@MybatisRepository\npublic interface SysUserMapper {\n\n    SysUser getSysUserInfo(@Param(\"username\")String username, @Param(\"password\")String password);\n\n    SysUser getUserInfoByUsername(@Param(\"username\") String username);\n}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-service/src/main/java/com/muses/taoshop/manager/service/ItemOrdersServiceImpl.java",
    "content": "package com.muses.taoshop.manager.service;\n\nimport org.springframework.stereotype.Service;\n\n/**\n * <pre>\n *  订单管理业务接口\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.09.22 11:11    修改内容:\n * </pre>\n */\n@Service\npublic class ItemOrdersServiceImpl {\n\n}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-service/src/main/java/com/muses/taoshop/manager/service/MenuServiceImpl.java",
    "content": "package com.muses.taoshop.manager.service;\n\nimport com.muses.taoshop.manager.entity.Menu;\nimport com.muses.taoshop.manager.mapper.SysMenuMapper;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport java.util.List;\n\n/**\n * <pre>\n *  菜单管理业务接口\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.09.22 12:34    修改内容:\n * </pre>\n */\n@Service\npublic class MenuServiceImpl implements IMenuService{\n\n    @Autowired\n    SysMenuMapper sysMenuMapper;\n    /**\n     * 根据权限id获取菜单\n     * @param permissionId\n     * @return\n     */\n    @Override\n    public Menu listMenu(int permissionId) {\n        return sysMenuMapper.listMenu(permissionId);\n    }\n\n    /**\n     * 权限菜单获取，即根据用户角色获取用户可以查看的菜单\n     *\n     * @return\n     */\n    @Override\n    public List<Menu> listPermissionMenu(int userId) {\n        return sysMenuMapper.listPermissionMenu(userId);\n    }\n}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-service/src/main/java/com/muses/taoshop/manager/service/SysPermissionServiceImpl.java",
    "content": "package com.muses.taoshop.manager.service;\n\nimport com.muses.taoshop.manager.entity.Permission;\nimport com.muses.taoshop.manager.mapper.SysPermissionMapper;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Set;\n\n/**\n * <pre>\n *  权限业务接口\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.10.21 23:34    修改内容:\n * </pre>\n */\n@Service\npublic class SysPermissionServiceImpl implements ISysPermissionService{\n\n    @Autowired\n    SysPermissionMapper sysPermissionMapper;\n\n    @Override\n    public Set<Permission> getRolePermissions(int roleId) {\n        List<Permission> permissionList = sysPermissionMapper.listRolePermission(roleId);\n        Set<Permission> permissions = new HashSet<Permission>(permissionList);\n        return permissions;\n    }\n}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-service/src/main/java/com/muses/taoshop/manager/service/SysRoleServiceImpl.java",
    "content": "package com.muses.taoshop.manager.service;\n\nimport com.muses.taoshop.manager.entity.SysRole;\nimport com.muses.taoshop.manager.mapper.SysRoleMapper;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Set;\n\n/**\n * <pre>\n *  角色业务类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.10.21 21:59    修改内容:\n * </pre>\n */\n@Service\npublic class SysRoleServiceImpl implements ISysRoleService {\n\n    @Autowired\n    SysRoleMapper sysRoleMapper;\n\n    /**\n     * 通过用户id获取用户角色\n     *\n     * @param userId\n     * @return\n     */\n    @Override\n    public Set<SysRole> getUserRoles(int userId) {\n        List<SysRole> roleList = sysRoleMapper.listUserRole(userId);\n        Set<SysRole> roles = new HashSet<>(roleList);\n        return roles;\n    }\n}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-service/src/main/java/com/muses/taoshop/manager/service/SysUserServiceImpl.java",
    "content": "package com.muses.taoshop.manager.service;\n\nimport com.muses.taoshop.manager.entity.Operation;\nimport com.muses.taoshop.manager.entity.Permission;\nimport com.muses.taoshop.manager.entity.SysRole;\nimport com.muses.taoshop.manager.mapper.SysRoleMapper;\nimport com.muses.taoshop.manager.mapper.SysUserMapper;\nimport com.muses.taoshop.manager.entity.SysUser;\nimport com.muses.taoshop.manager.service.ISysUserService;\nimport org.apache.catalina.User;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport javax.management.relation.Role;\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Set;\n\n/**\n * <pre>\n *  用户信息管理业务类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.07.08 11:15    修改内容:\n * </pre>\n */\n@Service\npublic class SysUserServiceImpl implements ISysUserService{\n\n    @Autowired\n    SysUserMapper sysUserMapper;\n    @Autowired\n    SysRoleMapper sysRoleMapper;\n\n    @Override\n    public SysUser getSysUser(String username , String password) {\n        return sysUserMapper.getSysUserInfo(username , password);\n    }\n\n    /**\n     * 获取用户角色\n     * @param username\n     * @return\n     */\n    @Override\n    public Set<String> getRoles(String username) {\n        SysUser user = this.getUserInfoByUsername(username);\n        Set<SysRole> roles = user.getRoles();\n        Set<String>  roleStrs = new HashSet<String>();\n        for(SysRole r : roles){\n            roleStrs.add(r.getRole());\n        }\n        return roleStrs;\n    }\n\n    /**\n     * 通过用户id获取用户角色集合\n     * @param userId\n     * @return\n     */\n    @Override\n    public Set<SysRole> getUserRoles(int userId) {\n        List<SysRole> roleList = sysRoleMapper.listUserRole(userId);\n        Set<SysRole> roles = new HashSet<>(roleList);\n        return roles;\n    }\n\n    /**\n     * 获取用户权限\n     * @param username\n     * @return\n     */\n    public Set<String> getPermissions(String username) {\n        SysUser user = this.getUserInfoByUsername(username);\n        Set<SysRole> roles = user.getRoles();\n        /* 创建一个HashSet来存放角色权限信息 */\n        Set<String> permissions = new HashSet<String>();\n        for(SysRole r : roles) {\n            for (Permission p : r.getPermissions()){\n                for(Operation o : p.getOperations()){\n                    permissions.add(o.getOperation());\n                }\n            }\n        }\n        return permissions;\n    }\n\n    /**\n     * 通过用户名获取用户信息\n     *\n     * @param username\n     * @return\n     */\n    @Override\n    @Deprecated\n    public SysUser getUserInfoByUsername(String username) {\n        return sysUserMapper.getUserInfoByUsername(username);\n    }\n}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-service/src/main/resources/mybatis/SysMenuMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.muses.taoshop.manager.mapper.SysMenuMapper\">\n    <!-- 根据权限id获取菜单-->\n  <select id=\"listMenu\" parameterType=\"Integer\" resultType=\"Menu\">\n        SELECT\n          m.*\n        FROM\n          sys_menu m\n          LEFT JOIN sys_permission p\n            ON p.menuId = m.menuId\n        WHERE p.id = #{permissionId}\n  </select>\n    <!-- 获取权限菜单 -->\n    <select id=\"listPermissionMenu\" parameterType=\"Integer\" resultType=\"Menu\">\n        SELECT\n          m.*\n        FROM\n          sys_menu m\n        WHERE m.menuId IN\n          (SELECT\n            p.menuId\n          FROM\n            sys_permission p\n            LEFT JOIN sys_role_permission rp\n              ON rp.permissionId = p.id\n          WHERE rp.roleId IN\n            (SELECT\n              ur.roleId\n            FROM\n              sys_user_role ur\n              LEFT JOIN sys_role r\n                ON r.roleId = ur.roleId\n            WHERE ur.userId = #{userId}))\n    </select>\n\n</mapper>"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-service/src/main/resources/mybatis/SysPermissionMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.muses.taoshop.manager.mapper.SysPermissionMapper\">\n\n  <select id=\"listRolePermission\" parameterType=\"Integer\" resultType=\"Permission\">\n        SELECT\n          p.*\n        FROM\n          sys_role_permission rp\n          LEFT JOIN sys_permission p\n            ON p.id = rp.permissionId\n        WHERE rp.roleId = #{roleId}\n  </select>\n\n</mapper>"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-service/src/main/resources/mybatis/SysRoleMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.muses.taoshop.manager.mapper.SysRoleMapper\">\n\n  <sql id=\"BaseColumn\">\n    roleId, roleName, roleDesc, role\n  </sql>\n\n  <select id=\"listUserRole\" parameterType=\"Integer\" resultType=\"SysRole\">\n        SELECT\n          r.*\n        FROM\n          sys_user_role ur\n        LEFT JOIN sys_role r\n          ON r.roleId = ur.roleId\n        WHERE ur.userId = #{userId}\n  </select>\n\n</mapper>"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-service/src/main/resources/mybatis/SysUserMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.muses.taoshop.manager.mapper.SysUserMapper\">\n  <resultMap id=\"BaseResultMap\" type=\"com.muses.taoshop.manager.entity.SysUser\">\n    <id column=\"id\" jdbcType=\"INTEGER\" property=\"id\" />\n    <result column=\"username\" jdbcType=\"VARCHAR\" property=\"username\" />\n    <result column=\"password\" jdbcType=\"VARCHAR\" property=\"password\" />\n    <result column=\"phone\" jdbcType=\"VARCHAR\" property=\"phone\" />\n    <result column=\"sex\" jdbcType=\"VARCHAR\" property=\"sex\" />\n    <result column=\"email\" jdbcType=\"VARCHAR\" property=\"email\" />\n    <result column=\"mark\" jdbcType=\"VARCHAR\" property=\"mark\" />\n    <result column=\"rank\" jdbcType=\"VARCHAR\" property=\"rank\" />\n    <result column=\"lastLogin\" jdbcType=\"DATE\" property=\"lastlogin\" />\n    <result column=\"loginIp\" jdbcType=\"VARCHAR\" property=\"loginip\" />\n    <result column=\"imageUrl\" jdbcType=\"VARCHAR\" property=\"imageurl\" />\n    <result column=\"regTime\" jdbcType=\"DATE\" property=\"regtime\" />\n    <result column=\"locked\" jdbcType=\"BIT\" property=\"locked\" />\n    <result column=\"rights\" jdbcType=\"VARCHAR\" property=\"rights\" />\n  </resultMap>\n\n  <sql id=\"BaseColumn\">\n    id, username, password, phone, sex, email, mark, rank, lastLogin, loginIp, imageUrl, \n    regTime, locked, rights\n  </sql>\n\n  <select id=\"getSysUserInfo\" parameterType=\"String\" resultType=\"SysUser\">\n    select \n    <include refid=\"BaseColumn\" />\n    from sys_user\n    where username = #{username}\n    and password = #{password}\n  </select>\n  \n  <select id=\"getUserInfoByUsername\" parameterType=\"String\" resultType=\"SysUser\">\n    select\n    <include refid=\"BaseColumn\" />\n    from sys_user\n    where username = #{username}\n  </select>\n\n\n\n</mapper>"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-service/src/test/java/com/muses/taoshop/AppTest.java",
    "content": "package com.muses.taoshop;\n\nimport static org.junit.Assert.assertTrue;\n\nimport org.junit.Test;\n\n/**\n * Unit test for simple App.\n */\npublic class AppTest \n{\n    /**\n     * Rigorous Test :-)\n     */\n    @Test\n    public void shouldAnswerWithTrue()\n    {\n        assertTrue( true );\n    }\n}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/ReadMe.md",
    "content": "### 电商维护系统Web"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <parent>\n        <artifactId>taoshop-manager</artifactId>\n        <groupId>com.muses.taoshop.manager</groupId>\n        <version>1.0-SNAPSHOT</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>com.muses.taoshop.manager</groupId>\n    <artifactId>taoshop-manager-web</artifactId>\n    <version>1.0-SNAPSHOT</version>\n    <packaging>war</packaging>\n\n    <name>taoshop-manager-web Maven Webapp</name>\n\n    <url>http://www.example.com</url>\n\n    <properties>\n        <poi.version>3.7</poi.version>\n        <shiro.version>1.2.3</shiro.version>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    </properties>\n\n    <dependencies>\n        <!-- 热部署-->\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-devtools</artifactId>\n            <optional>true</optional>\n        </dependency>\n\n\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-thymeleaf</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>com.muses.taoshop.manager</groupId>\n            <artifactId>taoshop-manager-service</artifactId>\n            <version>1.0-SNAPSHOT</version>\n        </dependency>\n        <!--shiro start-->\n        <dependency>\n            <groupId>org.apache.shiro</groupId>\n            <artifactId>shiro-all</artifactId>\n            <version>${shiro.version}</version>\n        </dependency>\n        <!-- shiro end-->\n\n\n\n        <!-- poi start-->\n        <dependency>\n            <groupId>org.apache.poi</groupId>\n            <artifactId>poi</artifactId>\n            <version>${poi.version}</version>\n        </dependency>\n        <!-- poi end-->\n        <!-- email start-->\n        <dependency>\n            <groupId>com.sun.mail</groupId>\n            <artifactId>javax.mail</artifactId>\n            <version>1.5.6</version>\n        </dependency>\n        <!-- email end-->\n    </dependencies>\n\n    <build>\n        <resources>\n            <resource>\n                <directory>src/main/java</directory>\n                <includes>\n                    <include>**/*.xml</include>\n                </includes>\n                <filtering>true</filtering>\n            </resource>\n        </resources>\n        <plugins>\n            <!-- 设置源文件编译 -->\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-compiler-plugin</artifactId>\n                <version>3.6.1</version>\n                <configuration>\n                    <source>1.8</source>\n                    <target>1.8</target>\n                    <compilerVersion>1.8</compilerVersion>\n                    <encoding>UTF-8</encoding>\n                    <skipMain></skipMain>\n                    <annotationProcessorPaths>\n                        <path>\n                            <groupId>org.projectlombok</groupId>\n                            <artifactId>lombok</artifactId>\n                            <version>${lombok.version}</version>\n                        </path>\n                    </annotationProcessorPaths>\n\n                </configuration>\n            </plugin>\n\n            <!-- 解决资源文件的编码问题 -->\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-resources-plugin</artifactId>\n                <version>3.0.2</version>\n                <configuration>\n                    <encoding>UTF-8</encoding>\n                </configuration>\n            </plugin>\n\n        </plugins>\n    </build>\n</project>\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/WebApplication.java",
    "content": "package com.muses.taoshop.manager;\n\n\n\nimport org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration;\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.EnableAutoConfiguration;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;\nimport org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;\nimport org.springframework.cache.annotation.EnableCaching;\nimport org.springframework.scheduling.annotation.EnableAsync;\nimport org.springframework.scheduling.annotation.EnableScheduling;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.transaction.annotation.EnableTransactionManagement;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\n/**\n *\n * <pre>\n *  SpringBoot启动配置类\n * </pre>\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期:     修改内容:\n * </pre>\n */\n@Controller\n@EnableScheduling//开启对计划任务的支持\n@EnableTransactionManagement//开启对事务管理配置的支持\n@EnableCaching\n@EnableAsync//开启对异步方法的支持\n@EnableAutoConfiguration\n@SpringBootApplication(exclude={DataSourceAutoConfiguration.class,\n        MybatisAutoConfiguration.class,\n        DataSourceTransactionManagerAutoConfiguration.class})\npublic class WebApplication {\n\n    @RequestMapping(\"/doTest1\")\n    @ResponseBody\n    String doTest(){\n        System.out.println(Thread.currentThread().getName());\n        String threadName = Thread.currentThread().getName();\n        return threadName;\n    }\n\n    public static void main(String[] args) throws Exception {\n        SpringApplication.run(WebApplication.class, args);\n    }\n}"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/config/MybatisConfig.java",
    "content": "package com.muses.taoshop.manager.config;\n\nimport com.muses.taoshop.common.core.database.annotation.MybatisRepository;\nimport org.apache.ibatis.session.SqlSessionFactory;\nimport org.mybatis.spring.SqlSessionFactoryBean;\nimport org.mybatis.spring.annotation.MapperScan;\nimport org.springframework.beans.factory.annotation.Qualifier;\nimport org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;\nimport org.springframework.boot.context.properties.ConfigurationProperties;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.context.annotation.Primary;\nimport org.springframework.core.io.Resource;\nimport org.springframework.core.io.support.PathMatchingResourcePatternResolver;\nimport org.springframework.core.io.support.ResourcePatternResolver;\nimport org.springframework.core.type.classreading.CachingMetadataReaderFactory;\nimport org.springframework.core.type.classreading.MetadataReader;\nimport org.springframework.core.type.classreading.MetadataReaderFactory;\nimport org.springframework.jdbc.datasource.DataSourceTransactionManager;\nimport org.springframework.transaction.annotation.EnableTransactionManagement;\nimport org.springframework.util.ClassUtils;\n\nimport javax.sql.DataSource;\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.HashSet;\nimport java.util.List;\n\nimport static com.muses.taoshop.common.core.database.config.BaseConfig.*;\n\n\n/**\n * <pre>\n *  Mybatis配置类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期:     修改内容:\n * </pre>\n */\n\n@MapperScan(\n        basePackages = MAPPER_PACKAGES,\n        annotationClass = MybatisRepository.class,\n        sqlSessionFactoryRef = SQL_SESSION_FACTORY\n)\n@EnableTransactionManagement\n@Configuration\n//@ConditionalOnClass({ SqlSessionFactory.class, SqlSessionFactoryBean.class })\n//@ConditionalOnBean(DataSource.class)\n//@EnableConfigurationProperties(MybatisProperties.class)\n//@AutoConfigureAfter(DataSourceAutoConfiguration.class)\npublic class MybatisConfig {\n\n    @Bean(name = DATA_SOURCE_NAME)\n    @ConfigurationProperties(prefix = DATA_SOURCE_PROPERTIES)\n    @Primary\n    public DataSource dataSource(){\n        return DataSourceBuilder.create().build();\n    }\n\n    @Primary\n    @Bean(name = SQL_SESSION_FACTORY)\n    public SqlSessionFactory sqlSessionFactory(@Qualifier(DATA_SOURCE_NAME)DataSource dataSource)throws Exception{\n        //SpringBoot默认使用DefaultVFS进行扫描，但是没有扫描到jar里的实体类\n        //VFS.addImplClass(SpringBootVFS.class);\n        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();\n        factoryBean.setDataSource(dataSource);\n        //factoryBean.setConfigLocation(new ClassPathResource(\"mybatis-config.xml\"));\n        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();\n        try{\n            factoryBean.setMapperLocations(resolver.getResources(\"classpath*:/mybatis/*Mapper.xml\"));\n            String typeAliasesPackage=setTypeAliasesPackage(ENTITY_PACKAGES);\n            factoryBean.setTypeAliasesPackage(typeAliasesPackage);\n            SqlSessionFactory sqlSessionFactory = factoryBean.getObject();\n            return sqlSessionFactory;\n        }catch (Exception e){\n            e.printStackTrace();\n            throw new RuntimeException();\n        }\n    }\n\n    @Bean(name = MYBATIS_TRANSACTION_MANAGER)\n    public DataSourceTransactionManager transactionManager(@Qualifier(DATA_SOURCE_NAME)DataSource dataSource) {\n        return new DataSourceTransactionManager(dataSource);\n    }\n\n    static final String DEFAULT_RESOURCE_PATTERN = \"**/*.class\";\n\n    public static String setTypeAliasesPackage(String typeAliasesPackage) {\n        ResourcePatternResolver resolver = (ResourcePatternResolver) new PathMatchingResourcePatternResolver();\n        MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(\n                resolver);\n        typeAliasesPackage = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX\n                + ClassUtils.convertClassNameToResourcePath(typeAliasesPackage)\n                + \"/\" + DEFAULT_RESOURCE_PATTERN;\n        try {\n            List<String> result = new ArrayList<String>();\n            Resource[] resources = resolver.getResources(typeAliasesPackage);\n            if (resources != null && resources.length > 0) {\n                MetadataReader metadataReader = null;\n                for (Resource resource : resources) {\n                    if (resource.isReadable()) {\n                        metadataReader = metadataReaderFactory\n                                .getMetadataReader(resource);\n                        try {\n//                            System.out.println(Class.forName(metadataReader.getClassMetadata().getClassName()).getPackage().getName());\n                            result.add(Class\n                                    .forName(\n                                            metadataReader.getClassMetadata()\n                                                    .getClassName())\n                                    .getPackage().getName());\n                        } catch (ClassNotFoundException e) {\n                            e.printStackTrace();\n                        }\n                    }\n                }\n            }\n            if (result.size() > 0) {\n                HashSet<String> h = new HashSet<String>(result);\n                result.clear();\n                result.addAll(h);\n                typeAliasesPackage=String.join(\",\",(String[]) result.toArray(new String[0]));\n//                System.out.println(typeAliasesPackage);\n            } else {\n                throw new RuntimeException(\n                        \"mybatis typeAliasesPackage 路径扫描错误,参数typeAliasesPackage:\"\n                                + typeAliasesPackage + \"未找到任何包\");\n            }\n        } catch (IOException e) {\n            e.printStackTrace();\n        }\n        return typeAliasesPackage;\n    }\n\n}"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/config/ShiroConfig.java",
    "content": "package com.muses.taoshop.manager.config;\n\n\nimport com.muses.taoshop.manager.core.shiro.ShiroRealm;\nimport org.apache.shiro.mgt.SecurityManager;\nimport org.apache.shiro.spring.web.ShiroFilterFactoryBean;\nimport org.apache.shiro.web.mgt.DefaultWebSecurityManager;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\n\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\n/**\n * <pre>\n *  Shiro配置类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期:     修改内容:\n * </pre>\n */\n@Configuration\npublic class ShiroConfig {\n    @Bean\n    public ShiroFilterFactoryBean shirFilter(SecurityManager securityManager) {\n        ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();\n        shiroFilterFactoryBean.setSecurityManager(securityManager);\n\n        //拦截器.\n        Map<String,String> filterChainDefinitionMap = new LinkedHashMap<>();\n        // 配置不会被拦截的链接 顺序判断\n        filterChainDefinitionMap.put(\"/static/**\", \"anon\");\n        filterChainDefinitionMap.put(\"/upload/**\", \"anon\");\n        filterChainDefinitionMap.put(\"/plugins/**\", \"anon\");\n        filterChainDefinitionMap.put(\"/templates/**\", \"anon\");\n        filterChainDefinitionMap.put(\"/admin/code/api/generate\", \"anon\");\n        filterChainDefinitionMap.put(\"/admin/login/api/toLogin\", \"anon\");\n        filterChainDefinitionMap.put(\"/admin/login/api/loginCheck\", \"anon\");\n        filterChainDefinitionMap.put(\"/**\", \"authc\");\n\n        shiroFilterFactoryBean.setLoginUrl(\"/admin/login/api/toLogin\");\n        shiroFilterFactoryBean.setSuccessUrl(\"/admin/login/api/toIndex\");\n        shiroFilterFactoryBean.setUnauthorizedUrl(\"/admin/login/api/toIndex\");\n        shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);\n        return shiroFilterFactoryBean;\n    }\n\n    @Bean\n    public ShiroRealm myShiroRealm(){\n        ShiroRealm myShiroRealm = new ShiroRealm();\n        return myShiroRealm;\n    }\n\n\n    @Bean\n    public SecurityManager securityManager(){\n        DefaultWebSecurityManager securityManager =  new DefaultWebSecurityManager();\n        securityManager.setRealm(myShiroRealm());\n        return securityManager;\n    }\n\n    /**\n     * 限制同一账号登录同时登录人数控制\n     * @return\n     */\n//    public SysAccessControllerFilter kickoutSessionControlFilter(){\n//        SysAccessControllerFilter filter = new SysAccessControllerFilter();\n//        //使用cacheManager获取相应的cache来缓存用户登录的会话；用于保存用户—会话之间的关系的；\n//        //这里我们还是用之前shiro使用的redisManager()实现的cacheManager()缓存管理\n//        //也可以重新另写一个，重新配置缓存时间之类的自定义缓存属性\n////        filter.setCacheManager(cacheManager());\n////        //用于根据会话ID，获取会话进行踢出操作的；\n////        filter.setSessionManager(sessionManager());\n//        //是否踢出后来登录的，默认是false；即后者登录的用户踢出前者登录的用户；踢出顺序。\n//        filter.setKickoutAfter(false);\n//        //同一个用户最大的会话数，默认1；比如2的意思是同一个用户允许最多同时两个人登录；\n//        filter.setMaxSession(1);\n//        //被踢出后重定向到的地址；\n//        filter.setUrl(\"/admin/login/api/toLogin\");\n//        return filter;\n//    }\n\n}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/config/ThymeleafConfig.java",
    "content": "package com.muses.taoshop.manager.config;\n\nimport org.springframework.beans.BeansException;\nimport org.springframework.context.ApplicationContext;\nimport org.springframework.context.ApplicationContextAware;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.format.FormatterRegistrar;\nimport org.springframework.format.FormatterRegistry;\nimport org.springframework.format.datetime.DateFormatter;\nimport org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;\n\nimport java.text.DateFormat;\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\nimport java.util.Locale;\n\n/**\n * <pre>\n * Thymeleaf模板引擎配置\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.09.22 10:50    修改内容:\n * </pre>\n */\n@Configuration\npublic class ThymeleafConfig extends WebMvcConfigurerAdapter implements ApplicationContextAware{\n\n    @Override\n    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {\n\n    }\n\n    @Override\n    public void addFormatters(final FormatterRegistry registry){\n        super.addFormatters(registry);\n        registry.addFormatter(dateFormatter());\n    }\n\n    @Bean\n    public DateFormatter dateFormatter(){\n        return new MyDateFormatter();\n    }\n\n    class MyDateFormatter extends DateFormatter {\n        @Override\n        public String print(Date date, Locale locale) {\n            //return super.print(date, locale);\n            return new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\").format(date);\n        }\n    }\n}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/config/WebConfig.java",
    "content": "package com.muses.taoshop.manager.config;\n\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.util.ResourceUtils;\nimport org.springframework.web.servlet.config.annotation.EnableWebMvc;\nimport org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;\nimport org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;\n\n@EnableWebMvc\n@Configuration\npublic class WebConfig extends WebMvcConfigurerAdapter {\n  \n    @Override  \n    public void addResourceHandlers(ResourceHandlerRegistry registry) {\n  \n        registry.addResourceHandler(\"/templates/**\").addResourceLocations(ResourceUtils.CLASSPATH_URL_PREFIX+\"/templates/\");\n        registry.addResourceHandler(\"/static/**\").addResourceLocations(ResourceUtils.CLASSPATH_URL_PREFIX+\"/static/\");\n        registry.addResourceHandler(\"/plugins/**\").addResourceLocations(ResourceUtils.CLASSPATH_URL_PREFIX+\"/static/\");\n        super.addResourceHandlers(registry);\n    }  \n  \n}  "
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/core/Constants.java",
    "content": "package com.muses.taoshop.manager.core;\n\nimport java.util.Locale;\n\n/**\n * <pre>\n *  Constants类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.07.08 11:00    修改内容:\n * </pre>\n */\npublic class Constants {\n    //定义统一Locale.CHINA,程序中所有和Locale相关操作均默认使用此Locale\n    public static final Locale LOCALE_CHINA = Locale.CHINA;\n\n    //验证码Session\n    public static final String SESSION_SECURITY_CODE = \"sessionSecCode\";\n    //用户信息Session\n    public static final String SESSION_USER = \"sessionUser\";\n    //角色权限Session\n    public static final String SESSION_ROLE_RIGHTS = \"sessionRoleRights\";\n    //所有菜单Session\n    public static final String SESSION_ALLMENU = \"sessionAllMenu\";\n    //权限Session\n    public static final String SESSION_RIGHTS = \"sessionRights\";\n\n    //页面分页数量\n    public static final Integer PAGE_SIZE = 6;\n    //页面排序数量\n    public static final Integer SORT_SIZE = 3;\n\n    //登录URL\n    public static final String URL_LOGIN = \"/login.do\";\n\n    //登录过滤的正则表达式\n    public static final String REGEXP_PATH = \".*/((login)|(logout)|(toblog)|(search)|(getArchiveArticles)|(code)|(plugins)|(upload)|(static)).*\";\t//不对匹配该值的访问路径拦截（正则）\n\n    //Lucene索引的路径\n    public static final String LUCENE_INDEX_PATH = \"D:\\\\lucene\";\n}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/core/shiro/ShiroRealm.java",
    "content": "package com.muses.taoshop.manager.core.shiro;\n\nimport com.muses.taoshop.manager.entity.SysUser;\nimport com.muses.taoshop.manager.service.ISysUserService;\nimport org.apache.shiro.authc.*;\nimport org.apache.shiro.authz.AuthorizationInfo;\nimport org.apache.shiro.authz.SimpleAuthorizationInfo;\nimport org.apache.shiro.realm.AuthorizingRealm;\nimport org.apache.shiro.subject.PrincipalCollection;\n\nimport javax.annotation.Resource;\n\n\n/**\n * <pre>\n *  权限认证和授权\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.09.22 12:34    修改内容:\n * </pre>\n */\npublic class ShiroRealm extends AuthorizingRealm {\n\n\t/**注解引入业务类**/\n\t@Resource\n\tISysUserService userService;\n\t\n\t/**\n\t * 登录信息和用户验证信息验证(non-Javadoc)\n\t * @see org.apache.shiro.realm.AuthenticatingRealm#doGetAuthenticationInfo(AuthenticationToken)\n\t */\n\t@Override\n\tprotected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {\n\n\t\t String username = (String)token.getPrincipal();  \t\t\t\t//得到用户名 \n\t     String password = new String((char[])token.getCredentials()); \t//得到密码\n\t     \n\t     SysUser user = userService.getUserInfoByUsername(username);\n\n\t     /* 检测是否有此用户 */\n\t     if(user == null){\n\t    \t throw new UnknownAccountException();//没有找到账号异常\n\t     }\n\t     /* 检验账号是否被锁定 */\n\t     if(Boolean.TRUE.equals(user.getLocked())){\n\t    \t throw new LockedAccountException();//抛出账号锁定异常\n\t     }\n\t     /* AuthenticatingRealm使用CredentialsMatcher进行密码匹配 */\n\t     if(null != username && null != password){\n\t    \t return new SimpleAuthenticationInfo(username, password, getName());\n\t     }else{\n\t    \t return null;\n\t     }\n\t     \n\t}\n\t\n\t/**\n\t * 授权查询回调函数, 进行鉴权但缓存中无用户的授权信息时调用,负责在应用程序中决定用户的访问控制的方法(non-Javadoc)\n\t * @see AuthorizingRealm#doGetAuthorizationInfo(PrincipalCollection)\n\t */\n\t@Override\n\tprotected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection pc) {\n\t\tString username = (String)pc.getPrimaryPrincipal();\n\t\tSimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo();\n\t    authorizationInfo.setRoles(userService.getRoles(username));\n\t    authorizationInfo.setStringPermissions(userService.getPermissions(username));\n\t    return authorizationInfo;\n\t}\n\t\n\t @Override\n\t public void clearCachedAuthorizationInfo(PrincipalCollection principals) {\n\t\t super.clearCachedAuthorizationInfo(principals);\n\t }\n\n\t @Override\n\t public void clearCachedAuthenticationInfo(PrincipalCollection principals) {\n\t     super.clearCachedAuthenticationInfo(principals);\n\t }\n\n\t @Override\n\t public void clearCache(PrincipalCollection principals) {\n\t      super.clearCache(principals);\n\t }\n\n}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/util/MenuTreeUtil.java",
    "content": "package com.muses.taoshop.manager.util;\n\n\nimport com.muses.taoshop.manager.entity.Menu;\n\nimport java.util.ArrayList;\nimport java.util.LinkedHashMap;\nimport java.util.List;\nimport java.util.Map;\n\npublic class MenuTreeUtil {\n\n    public List<Menu> menuCommon;\n    public List<Menu> list = new ArrayList<Menu>();\n      \n    public List<Menu> menuList(List<Menu> menus){\n        this.menuCommon = menus;\n        for (Menu x : menus) {\n            Menu m = new Menu();\n            if(x.getParentId()==0){\n                m.setParentId(x.getParentId());\n                m.setMenuId(x.getMenuId());\n                m.setMenuName(x.getMenuName());\n                m.setMenuIcon(x.getMenuIcon());\n                m.setMenuUrl(x.getMenuUrl());\n                m.setSubMenu(menuChild(x.getMenuId()));\n                list.add(m);\n            }  \n        }     \n        return list;  \n    }  \n   \n    public List<Menu> menuChild(int id){\n        List<Menu> lists = new ArrayList<Menu>();\n        for(Menu a:menuCommon){\n            Menu m = new Menu();\n            if(a.getParentId() == id){\n                m.setParentId(a.getParentId());\n                m.setMenuId(a.getMenuId());\n                m.setMenuName(a.getMenuName());\n                m.setMenuIcon(a.getMenuIcon());\n                m.setMenuUrl(a.getMenuUrl());\n                lists.add(m);\n            }  \n        }  \n        return lists; \n    }  \n\n}"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/web/controller/BaseController.java",
    "content": "package com.muses.taoshop.manager.web.controller;\n\n\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.web.context.request.RequestContextHolder;\nimport org.springframework.web.context.request.ServletRequestAttributes;\nimport org.springframework.web.servlet.ModelAndView;\n\nimport javax.servlet.http.HttpServletRequest;\n\n/**\n * <pre>\n *  基础控制类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.06.18 00:12    修改内容:\n * </pre>\n */\npublic class BaseController {\n    public Logger log = LoggerFactory.getLogger(BaseController.class);\n\n    public void debug(String message , Exception e){\n        log.debug(message , e);\n    }\n\n    public void info(String message,Exception e){\n        log.info(message , e);\n    }\n\n    public void error(String message,Exception e){\n        log.error(message , e);\n    }\n\n    /***\n     * 获取request值\n     * @return\n     */\n    public HttpServletRequest getRequest() {\n        return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();\n    }\n\n    /**\n     * 得到ModelAndView\n     */\n    public ModelAndView getModelAndView(){\n        return new ModelAndView();\n    }\n\n}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/web/controller/CodeController.java",
    "content": "package com.muses.taoshop.manager.web.controller;\n\nimport com.muses.taoshop.manager.core.Constants;\nimport org.apache.shiro.SecurityUtils;\nimport org.apache.shiro.session.Session;\nimport org.apache.shiro.subject.Subject;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.RequestMapping;\n\nimport javax.imageio.ImageIO;\nimport javax.servlet.ServletOutputStream;\nimport javax.servlet.http.HttpServletResponse;\nimport java.awt.*;\nimport java.awt.font.FontRenderContext;\nimport java.awt.geom.Rectangle2D;\nimport java.awt.image.BufferedImage;\nimport java.io.ByteArrayOutputStream;\nimport java.io.IOException;\nimport java.util.Random;\n\n\n@Controller\n@RequestMapping(\"/admin/code/api\")\npublic class CodeController {\n\n\t@RequestMapping(\"/generate\")\n\tpublic void generate(HttpServletResponse response){\n\t\tByteArrayOutputStream output = new ByteArrayOutputStream();\n\t\tString code = drawImg(output);\n\t\t\n\t\tSubject currentUser = SecurityUtils.getSubject();  \n\t\tSession session = currentUser.getSession();\n\t\tsession.setAttribute(Constants.SESSION_SECURITY_CODE, code);\n\n\t\ttry {\n\t\t\tServletOutputStream out = response.getOutputStream();\n\t\t\toutput.writeTo(out);\n\t\t} catch (IOException e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t}\n\t\n\t/**\n\t * 绘画验证码\n\t * @param output\n\t * @return\n\t */\n\tprivate String drawImg(ByteArrayOutputStream output){\n\t\tString code = \"\";\n\t\t//随机产生4个字符\n\t\tfor(int i=0; i<4; i++){\n\t\t\tcode += randomChar();\n\t\t}\n\t\tint width = 70;\n\t\tint height = 25;\n\t\tBufferedImage bi = new BufferedImage(width,height,BufferedImage.TYPE_3BYTE_BGR);\n\t\tFont font = new Font(\"Times New Roman\",Font.PLAIN,20);\n\t\t//调用Graphics2D绘画验证码\n\t\tGraphics2D g = bi.createGraphics();\n\t\tg.setFont(font);\n\t\tColor color = new Color(66,2,82);\n\t\tg.setColor(color);\n\t\tg.setBackground(new Color(226,226,240));\n\t\tg.clearRect(0, 0, width, height);\n\t\tFontRenderContext context = g.getFontRenderContext();\n\t\tRectangle2D bounds = font.getStringBounds(code, context);\n\t\tdouble x = (width - bounds.getWidth()) / 2;\n\t\tdouble y = (height - bounds.getHeight()) / 2;\n\t\tdouble ascent = bounds.getY();\n\t\tdouble baseY = y - ascent;\n\t\tg.drawString(code, (int)x, (int)baseY);\n\t\tg.dispose();\n\t\ttry {\n\t\t\tImageIO.write(bi, \"jpg\", output);\n\t\t} catch (IOException e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t\treturn code;\n\t}\n\t\n\t/**\n\t * 随机参数一个字符\n\t * @return\n\t */\n\tprivate char randomChar(){\n\t\tRandom r = new Random();\n\t\tString s = \"ABCDEFGHJKLMNPRSTUVWXYZ0123456789\";\n\t\treturn s.charAt(r.nextInt(s.length()));\n\t}\n\n\t/**\n\t * 获取随机颜色值\n\t * @param fc\n\t * @param bc\n\t * @return\n\t */\n\tColor getRandColor(int fc,int bc){\n\t\tRandom random=new Random();\n\t\tif(fc>255) fc=255;\n\t\tif(bc>255) bc=255;\n\t\tint r=fc+random.nextInt(bc-fc);\n\t\tint g=fc+random.nextInt(bc-fc);\n\t\tint b=fc+random.nextInt(bc-fc);\n\t\treturn new Color(r,g,b);\n\t}\n}"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/web/controller/LoginController.java",
    "content": "package com.muses.taoshop.manager.web.controller;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.muses.taoshop.manager.core.Constants;\nimport com.muses.taoshop.manager.entity.Menu;\nimport com.muses.taoshop.manager.entity.Permission;\nimport com.muses.taoshop.manager.entity.SysRole;\nimport com.muses.taoshop.manager.entity.SysUser;\nimport com.muses.taoshop.manager.service.IMenuService;\nimport com.muses.taoshop.manager.service.ISysPermissionService;\nimport com.muses.taoshop.manager.service.ISysRoleService;\nimport com.muses.taoshop.manager.service.ISysUserService;\nimport com.muses.taoshop.manager.util.MenuTreeUtil;\nimport org.apache.commons.lang3.StringUtils;\nimport org.apache.shiro.SecurityUtils;\nimport org.apache.shiro.authc.UsernamePasswordToken;\nimport org.apache.shiro.crypto.hash.SimpleHash;\nimport org.apache.shiro.session.Session;\nimport org.apache.shiro.subject.Subject;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.util.CollectionUtils;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.ResponseBody;\nimport org.springframework.web.servlet.ModelAndView;\n\nimport javax.imageio.ImageIO;\nimport javax.naming.AuthenticationException;\nimport javax.servlet.ServletOutputStream;\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\n\nimport java.awt.*;\nimport java.awt.font.FontRenderContext;\nimport java.awt.geom.Rectangle2D;\nimport java.awt.image.BufferedImage;\nimport java.io.ByteArrayOutputStream;\nimport java.io.IOException;\nimport java.util.*;\nimport java.util.List;\n\n/**\n * <pre>\n *  登录控制类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.07.01 21:01    修改内容:\n * </pre>\n */\n@Controller\n@RequestMapping(\"/admin/login/api\")\npublic class LoginController extends BaseController {\n\n    @Autowired\n    ISysUserService iSysUserService;\n    @Autowired\n    ISysRoleService iSysRoleService;\n    @Autowired\n    ISysPermissionService iSysPermissionService;\n    @Autowired\n    IMenuService iMenuService;\n\n    @RequestMapping(value = \"/toLogin\")\n    @GetMapping\n    public ModelAndView toLogin(){\n        ModelAndView mv = this.getModelAndView();\n        mv.setViewName(\"login\");\n        return mv;\n    }\n\n    /**\n     * 基于Shiro框架的登录验证,页面发送JSON请求数据，\n     * 服务端进行登录验证之后，返回Json响应数据，\"success\"表示验证成功\n     * @param request\n     * @return\n     * @throws Exception\n     */\n    @RequestMapping(value=\"/loginCheck\", produces=\"application/json;charset=UTF-8\")\n    @ResponseBody\n    public String loginCheck(HttpServletRequest request)throws AuthenticationException {\n        JSONObject obj = new JSONObject();\n        String errInfo = \"\";//错误信息\n        String logindata[] = request.getParameter(\"LOGINDATA\").split(\",\");\n        if(logindata != null && logindata.length == 3){\n            //获取Shiro管理的Session\n            Subject subject = SecurityUtils.getSubject();\n            Session session = subject.getSession();\n            String codeSession = (String)session.getAttribute(Constants.SESSION_SECURITY_CODE);\n            String code = logindata[2];\n            /**检测页面验证码是否为空，调用工具类检测**/\n            if(StringUtils.isEmpty(code)){\n                errInfo = \"nullcode\";\n            }else{\n                String username = logindata[0];\n                String password = logindata[1];\n                if(StringUtils.isNotEmpty(codeSession)/*&&code.equalsIgnoreCase(codeSession)*/){\n                    //Shiro框架SHA加密\n                    String passwordsha = new SimpleHash(\"SHA-1\",username,password).toString();\n                    System.out.println(passwordsha);\n                    //检测用户名和密码是否正确\n                    SysUser user = iSysUserService.getSysUser(username,passwordsha);\n                    if(user != null){\n                        if(Boolean.TRUE.equals(user.getLocked())){\n                            errInfo = \"locked\";\n                        }else{\n                            //Shiro添加会话\n                            session.setAttribute(\"username\", username);\n                            session.setAttribute(Constants.SESSION_USER, user);\n                            //删除验证码Session\n                            session.removeAttribute(Constants.SESSION_SECURITY_CODE);\n                            //保存登录IP\n                            //getRemortIP(username);\n                            /**Shiro加入身份验证**/\n                            Subject sub = SecurityUtils.getSubject();\n                            UsernamePasswordToken token = new UsernamePasswordToken(username,password);\n                            sub.login(token);\n                            log.info(\"登录成功！\");\n                        }\n                    }else{\n                        //账号或者密码错误\n                        errInfo = \"uerror\";\n                    }\n                    if(StringUtils.isEmpty(errInfo)){\n                        errInfo = \"success\";\n                    }\n                }else{\n                    //缺少参数\n                    errInfo=\"codeerror\";\n                }\n            }\n        }\n        obj.put(\"result\", errInfo);\n        return obj.toString();\n    }\n\n    /**\n     * 后台管理系统主页\n     * @return\n     * @throws Exception\n     */\n    @RequestMapping(value=\"/toIndex\")\n    public ModelAndView toMain() throws AuthenticationException{\n        log.info(\"跳转到系统主页=>\");\n        ModelAndView mv = this.getModelAndView();\n        /* E1：获取Shiro管理的用户Session */\n        Subject subject = SecurityUtils.getSubject();\n        Session session = subject.getSession();\n        SysUser user = (SysUser)session.getAttribute(Constants.SESSION_USER);\n        /* E2：获取用户具有的角色权限 */\n        if(user != null){\n            Set<SysRole> roles = iSysRoleService.getUserRoles(user.getId());\n            Set<Permission> permissions = new HashSet<Permission>();\n            if(!CollectionUtils.isEmpty(roles)) {\n                for (SysRole r : roles) {\n                    Set<Permission> permissionSet = iSysPermissionService.getRolePermissions(r.getRoleId());\n                    permissions.addAll(permissionSet);\n                }\n            }\n            log.info(\"权限集合:{}\"+permissions.toString());\n            List<Menu> menuList = new ArrayList<Menu>();\n            for(Permission p : permissions){\n                Menu menu = iMenuService.listMenu(p.getId());\n                menuList.add(menu);\n            }\n            /* E3：获取权限对应的菜单信息*/\n            //方法二: 直接通过SQL获取权限菜单\n            //menuList = iMenuService.listPermissionMenu(user.getId());\n            log.info(\"用户可以查看的菜单个数:{}\"+menuList.size());\n            MenuTreeUtil treeUtil = new MenuTreeUtil();\n            if(!CollectionUtils.isEmpty(menuList)) {\n                List<Menu> treemenus= treeUtil.menuList(menuList);\n                mv.addObject(\"menus\",treemenus);\n                mv.setViewName(\"admin/frame/index\");\n            }\n        }else{\n            //会话失效，返回登录界面\n            mv.setViewName(\"login\");\n        }\n\n        return mv;\n    }\n\n    /**\n     * 注销登录\n     * @return\n     */\n    @RequestMapping(value=\"/logout\")\n    public ModelAndView logout(){\n        ModelAndView mv = this.getModelAndView();\n        /* Shiro管理Session */\n        Subject sub = SecurityUtils.getSubject();\n        Session session = sub.getSession();\n        session.removeAttribute(Constants.SESSION_USER);\n        session.removeAttribute(Constants.SESSION_SECURITY_CODE);\n        /* Shiro销毁登录 */\n        Subject subject = SecurityUtils.getSubject();\n        subject.logout();\n        /* 返回后台系统登录界面 */\n        mv.setViewName(\"login\");\n        return mv;\n    }\n\n\n}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/web/controller/item/OrderController.java",
    "content": "package com.muses.taoshop.manager.web.controller.item;\n\nimport com.muses.taoshop.manager.web.controller.BaseController;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.servlet.ModelAndView;\n\n/**\n * <pre>\n *  订单管理控制类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.09.22 11:08    修改内容:\n * </pre>\n */\n@Controller\n@RequestMapping(\"/admin/order/api\")\npublic class OrderController extends BaseController{\n\n\n    /**\n     * 跳转订单管理页面\n     * @return\n     */\n    @GetMapping(value = \"/toOrder\")\n    public ModelAndView toOrder() {\n        ModelAndView mv = this.getModelAndView();\n        mv.setViewName(\"admin/order/order_list\");\n        return mv;\n    }\n\n\n\n}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/web/controller/menu/MenuController.java",
    "content": "package com.muses.taoshop.manager.web.controller.menu;\n\nimport org.springframework.stereotype.Controller;\n\n/**\n * <pre>\n *  菜单管理\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.09.22 12:34    修改内容:\n * </pre>\n */\n@Controller\npublic class MenuController {\n\n\n}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/web/controller/userCenter/UserController.java",
    "content": "package com.muses.taoshop.manager.web.controller.userCenter;\n\nimport com.muses.taoshop.manager.web.controller.BaseController;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.servlet.ModelAndView;\n\n/**\n * <pre>\n *  用户中心控制类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.08.11 11:06    修改内容:\n * </pre>\n */\n@Controller\n@RequestMapping(\"/admin/user/api\")\npublic class UserController extends BaseController {\n\n    /**\n     * 跳转到用户中心\n     * @return\n     */\n    @GetMapping(value = \"/toUserCenter\")\n    public ModelAndView toUserCenter() {\n        ModelAndView mv = this.getModelAndView();\n        mv.setViewName(\"admin/user/user_center\");\n        return mv;\n    }\n\n\n}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/application.yml",
    "content": "server:\n  port: 8082\n#logging:\n#  config: classpath:logback.xml\n#  level:\n#    com.muses.taoshop.*.mapper: trace\n\nspring:\n  datasource:\n\n    # 主数据源\n    shop:\n      url: jdbc:mysql://127.0.0.1:3306/taoshop?autoReconnect=true&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false\n      username: root\n      password: root\n\n    driver-class-name: com.mysql.jdbc.Driver\n    type: com.alibaba.druid.pool.DruidDataSource\n\n    # 连接池设置\n    druid:\n      initial-size: 5\n      min-idle: 5\n      max-active: 20\n      # 配置获取连接等待超时的时间\n      max-wait: 60000\n      # 配置间隔多久才进行一次检测，检测需要关闭的空闲连接，单位是毫秒\n      time-between-eviction-runs-millis: 60000\n      # 配置一个连接在池中最小生存的时间，单位是毫秒\n      min-evictable-idle-time-millis: 300000\n      # Oracle请使用select 1 from dual\n      validation-query: SELECT 'x'\n      test-while-idle: true\n      test-on-borrow: false\n      test-on-return: false\n      # 打开PSCache，并且指定每个连接上PSCache的大小\n      pool-prepared-statements: true\n      max-pool-prepared-statement-per-connection-size: 20\n      # 配置监控统计拦截的filters，去掉后监控界面sql无法统计，'wall'用于防火墙\n      filters: stat,wall,slf4j\n      # 通过connectProperties属性来打开mergeSql功能；慢SQL记录\n      connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000\n      # 合并多个DruidDataSource的监控数据\n      use-global-data-source-stat: true\n\n#  jpa:\n#    database: mysql\n#    hibernate:\n#      show_sql: true\n#      format_sql: true\n#      ddl-auto: none\n#      naming:\n#        physical-strategy: org.hibernate.boot.entity.naming.PhysicalNamingStrategyStandardImpl\n\n#  mvc:\n#    view:\n#      prefix: /WEB-INF/jsp/\n#      suffix: .jsp\n\n  #添加Thymeleaf配置\n  thymeleaf:\n    cache: false\n    prefix: classpath:/templates/\n    suffix: .html\n    mode: HTML5\n    encoding: UTF-8\n    content-type: text/html\n\n  #Jedis配置\n#  jedis :\n#    pool :\n#      host : 127.0.0.1\n#      port : 6379\n#      password : redispassword\n#      timeout : 0\n#      config :\n#        maxTotal : 100\n#        maxIdle : 10\n#        maxWaitMillis : 100000\n\n\n\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/datepicker/css/bootstrap-datepicker.css",
    "content": "/*!\n * Datepicker for Bootstrap v1.5.1 (https://github.com/eternicode/bootstrap-datepicker)\n *\n * Copyright 2012 Stefan Petre\n * Improvements by Andrew Rowls\n * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)\n */\n.datepicker {\n  padding: 4px;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n  direction: ltr;\n}\n.datepicker-inline {\n  width: 220px;\n}\n.datepicker.datepicker-rtl {\n  direction: rtl;\n}\n.datepicker.datepicker-rtl table tr td span {\n  float: right;\n}\n.datepicker-dropdown {\n  top: 0;\n  left: 0;\n}\n.datepicker-dropdown:before {\n  content: '';\n  display: inline-block;\n  border-left: 7px solid transparent;\n  border-right: 7px solid transparent;\n  border-bottom: 7px solid #999999;\n  border-top: 0;\n  border-bottom-color: rgba(0, 0, 0, 0.2);\n  position: absolute;\n}\n.datepicker-dropdown:after {\n  content: '';\n  display: inline-block;\n  border-left: 6px solid transparent;\n  border-right: 6px solid transparent;\n  border-bottom: 6px solid #ffffff;\n  border-top: 0;\n  position: absolute;\n}\n.datepicker-dropdown.datepicker-orient-left:before {\n  left: 6px;\n}\n.datepicker-dropdown.datepicker-orient-left:after {\n  left: 7px;\n}\n.datepicker-dropdown.datepicker-orient-right:before {\n  right: 6px;\n}\n.datepicker-dropdown.datepicker-orient-right:after {\n  right: 7px;\n}\n.datepicker-dropdown.datepicker-orient-bottom:before {\n  top: -7px;\n}\n.datepicker-dropdown.datepicker-orient-bottom:after {\n  top: -6px;\n}\n.datepicker-dropdown.datepicker-orient-top:before {\n  bottom: -7px;\n  border-bottom: 0;\n  border-top: 7px solid #999999;\n}\n.datepicker-dropdown.datepicker-orient-top:after {\n  bottom: -6px;\n  border-bottom: 0;\n  border-top: 6px solid #ffffff;\n}\n.datepicker > div {\n  display: none;\n}\n.datepicker table {\n  margin: 0;\n  -webkit-touch-callout: none;\n  -webkit-user-select: none;\n  -khtml-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n.datepicker td,\n.datepicker th {\n  text-align: center;\n  width: 20px;\n  height: 20px;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n  border: none;\n}\n.table-striped .datepicker table tr td,\n.table-striped .datepicker table tr th {\n  background-color: transparent;\n}\n.datepicker table tr td.day:hover,\n.datepicker table tr td.day.focused {\n  background: #eeeeee;\n  cursor: pointer;\n}\n.datepicker table tr td.old,\n.datepicker table tr td.new {\n  color: #999999;\n}\n.datepicker table tr td.disabled,\n.datepicker table tr td.disabled:hover {\n  background: none;\n  color: #999999;\n  cursor: default;\n}\n.datepicker table tr td.highlighted {\n  background: #d9edf7;\n  border-radius: 0;\n}\n.datepicker table tr td.today,\n.datepicker table tr td.today:hover,\n.datepicker table tr td.today.disabled,\n.datepicker table tr td.today.disabled:hover {\n  background-color: #fde19a;\n  background-image: -moz-linear-gradient(to bottom, #fdd49a, #fdf59a);\n  background-image: -ms-linear-gradient(to bottom, #fdd49a, #fdf59a);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a));\n  background-image: -webkit-linear-gradient(to bottom, #fdd49a, #fdf59a);\n  background-image: -o-linear-gradient(to bottom, #fdd49a, #fdf59a);\n  background-image: linear-gradient(to bottom, #fdd49a, #fdf59a);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);\n  border-color: #fdf59a #fdf59a #fbed50;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  color: #000;\n}\n.datepicker table tr td.today:hover,\n.datepicker table tr td.today:hover:hover,\n.datepicker table tr td.today.disabled:hover,\n.datepicker table tr td.today.disabled:hover:hover,\n.datepicker table tr td.today:active,\n.datepicker table tr td.today:hover:active,\n.datepicker table tr td.today.disabled:active,\n.datepicker table tr td.today.disabled:hover:active,\n.datepicker table tr td.today.active,\n.datepicker table tr td.today:hover.active,\n.datepicker table tr td.today.disabled.active,\n.datepicker table tr td.today.disabled:hover.active,\n.datepicker table tr td.today.disabled,\n.datepicker table tr td.today:hover.disabled,\n.datepicker table tr td.today.disabled.disabled,\n.datepicker table tr td.today.disabled:hover.disabled,\n.datepicker table tr td.today[disabled],\n.datepicker table tr td.today:hover[disabled],\n.datepicker table tr td.today.disabled[disabled],\n.datepicker table tr td.today.disabled:hover[disabled] {\n  background-color: #fdf59a;\n}\n.datepicker table tr td.today:active,\n.datepicker table tr td.today:hover:active,\n.datepicker table tr td.today.disabled:active,\n.datepicker table tr td.today.disabled:hover:active,\n.datepicker table tr td.today.active,\n.datepicker table tr td.today:hover.active,\n.datepicker table tr td.today.disabled.active,\n.datepicker table tr td.today.disabled:hover.active {\n  background-color: #fbf069 \\9;\n}\n.datepicker table tr td.today:hover:hover {\n  color: #000;\n}\n.datepicker table tr td.today.active:hover {\n  color: #fff;\n}\n.datepicker table tr td.range,\n.datepicker table tr td.range:hover,\n.datepicker table tr td.range.disabled,\n.datepicker table tr td.range.disabled:hover {\n  background: #eeeeee;\n  -webkit-border-radius: 0;\n  -moz-border-radius: 0;\n  border-radius: 0;\n}\n.datepicker table tr td.range.today,\n.datepicker table tr td.range.today:hover,\n.datepicker table tr td.range.today.disabled,\n.datepicker table tr td.range.today.disabled:hover {\n  background-color: #f3d17a;\n  background-image: -moz-linear-gradient(to bottom, #f3c17a, #f3e97a);\n  background-image: -ms-linear-gradient(to bottom, #f3c17a, #f3e97a);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f3c17a), to(#f3e97a));\n  background-image: -webkit-linear-gradient(to bottom, #f3c17a, #f3e97a);\n  background-image: -o-linear-gradient(to bottom, #f3c17a, #f3e97a);\n  background-image: linear-gradient(to bottom, #f3c17a, #f3e97a);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3c17a', endColorstr='#f3e97a', GradientType=0);\n  border-color: #f3e97a #f3e97a #edde34;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  -webkit-border-radius: 0;\n  -moz-border-radius: 0;\n  border-radius: 0;\n}\n.datepicker table tr td.range.today:hover,\n.datepicker table tr td.range.today:hover:hover,\n.datepicker table tr td.range.today.disabled:hover,\n.datepicker table tr td.range.today.disabled:hover:hover,\n.datepicker table tr td.range.today:active,\n.datepicker table tr td.range.today:hover:active,\n.datepicker table tr td.range.today.disabled:active,\n.datepicker table tr td.range.today.disabled:hover:active,\n.datepicker table tr td.range.today.active,\n.datepicker table tr td.range.today:hover.active,\n.datepicker table tr td.range.today.disabled.active,\n.datepicker table tr td.range.today.disabled:hover.active,\n.datepicker table tr td.range.today.disabled,\n.datepicker table tr td.range.today:hover.disabled,\n.datepicker table tr td.range.today.disabled.disabled,\n.datepicker table tr td.range.today.disabled:hover.disabled,\n.datepicker table tr td.range.today[disabled],\n.datepicker table tr td.range.today:hover[disabled],\n.datepicker table tr td.range.today.disabled[disabled],\n.datepicker table tr td.range.today.disabled:hover[disabled] {\n  background-color: #f3e97a;\n}\n.datepicker table tr td.range.today:active,\n.datepicker table tr td.range.today:hover:active,\n.datepicker table tr td.range.today.disabled:active,\n.datepicker table tr td.range.today.disabled:hover:active,\n.datepicker table tr td.range.today.active,\n.datepicker table tr td.range.today:hover.active,\n.datepicker table tr td.range.today.disabled.active,\n.datepicker table tr td.range.today.disabled:hover.active {\n  background-color: #efe24b \\9;\n}\n.datepicker table tr td.selected,\n.datepicker table tr td.selected:hover,\n.datepicker table tr td.selected.disabled,\n.datepicker table tr td.selected.disabled:hover {\n  background-color: #9e9e9e;\n  background-image: -moz-linear-gradient(to bottom, #b3b3b3, #808080);\n  background-image: -ms-linear-gradient(to bottom, #b3b3b3, #808080);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b3b3b3), to(#808080));\n  background-image: -webkit-linear-gradient(to bottom, #b3b3b3, #808080);\n  background-image: -o-linear-gradient(to bottom, #b3b3b3, #808080);\n  background-image: linear-gradient(to bottom, #b3b3b3, #808080);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3', endColorstr='#808080', GradientType=0);\n  border-color: #808080 #808080 #595959;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  color: #fff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.datepicker table tr td.selected:hover,\n.datepicker table tr td.selected:hover:hover,\n.datepicker table tr td.selected.disabled:hover,\n.datepicker table tr td.selected.disabled:hover:hover,\n.datepicker table tr td.selected:active,\n.datepicker table tr td.selected:hover:active,\n.datepicker table tr td.selected.disabled:active,\n.datepicker table tr td.selected.disabled:hover:active,\n.datepicker table tr td.selected.active,\n.datepicker table tr td.selected:hover.active,\n.datepicker table tr td.selected.disabled.active,\n.datepicker table tr td.selected.disabled:hover.active,\n.datepicker table tr td.selected.disabled,\n.datepicker table tr td.selected:hover.disabled,\n.datepicker table tr td.selected.disabled.disabled,\n.datepicker table tr td.selected.disabled:hover.disabled,\n.datepicker table tr td.selected[disabled],\n.datepicker table tr td.selected:hover[disabled],\n.datepicker table tr td.selected.disabled[disabled],\n.datepicker table tr td.selected.disabled:hover[disabled] {\n  background-color: #808080;\n}\n.datepicker table tr td.selected:active,\n.datepicker table tr td.selected:hover:active,\n.datepicker table tr td.selected.disabled:active,\n.datepicker table tr td.selected.disabled:hover:active,\n.datepicker table tr td.selected.active,\n.datepicker table tr td.selected:hover.active,\n.datepicker table tr td.selected.disabled.active,\n.datepicker table tr td.selected.disabled:hover.active {\n  background-color: #666666 \\9;\n}\n.datepicker table tr td.active,\n.datepicker table tr td.active:hover,\n.datepicker table tr td.active.disabled,\n.datepicker table tr td.active.disabled:hover {\n  background-color: #006dcc;\n  background-image: -moz-linear-gradient(to bottom, #0088cc, #0044cc);\n  background-image: -ms-linear-gradient(to bottom, #0088cc, #0044cc);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));\n  background-image: -webkit-linear-gradient(to bottom, #0088cc, #0044cc);\n  background-image: -o-linear-gradient(to bottom, #0088cc, #0044cc);\n  background-image: linear-gradient(to bottom, #0088cc, #0044cc);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);\n  border-color: #0044cc #0044cc #002a80;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  color: #fff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.datepicker table tr td.active:hover,\n.datepicker table tr td.active:hover:hover,\n.datepicker table tr td.active.disabled:hover,\n.datepicker table tr td.active.disabled:hover:hover,\n.datepicker table tr td.active:active,\n.datepicker table tr td.active:hover:active,\n.datepicker table tr td.active.disabled:active,\n.datepicker table tr td.active.disabled:hover:active,\n.datepicker table tr td.active.active,\n.datepicker table tr td.active:hover.active,\n.datepicker table tr td.active.disabled.active,\n.datepicker table tr td.active.disabled:hover.active,\n.datepicker table tr td.active.disabled,\n.datepicker table tr td.active:hover.disabled,\n.datepicker table tr td.active.disabled.disabled,\n.datepicker table tr td.active.disabled:hover.disabled,\n.datepicker table tr td.active[disabled],\n.datepicker table tr td.active:hover[disabled],\n.datepicker table tr td.active.disabled[disabled],\n.datepicker table tr td.active.disabled:hover[disabled] {\n  background-color: #0044cc;\n}\n.datepicker table tr td.active:active,\n.datepicker table tr td.active:hover:active,\n.datepicker table tr td.active.disabled:active,\n.datepicker table tr td.active.disabled:hover:active,\n.datepicker table tr td.active.active,\n.datepicker table tr td.active:hover.active,\n.datepicker table tr td.active.disabled.active,\n.datepicker table tr td.active.disabled:hover.active {\n  background-color: #003399 \\9;\n}\n.datepicker table tr td span {\n  display: block;\n  width: 23%;\n  height: 54px;\n  line-height: 54px;\n  float: left;\n  margin: 1%;\n  cursor: pointer;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n}\n.datepicker table tr td span:hover {\n  background: #eeeeee;\n}\n.datepicker table tr td span.disabled,\n.datepicker table tr td span.disabled:hover {\n  background: none;\n  color: #999999;\n  cursor: default;\n}\n.datepicker table tr td span.active,\n.datepicker table tr td span.active:hover,\n.datepicker table tr td span.active.disabled,\n.datepicker table tr td span.active.disabled:hover {\n  background-color: #006dcc;\n  background-image: -moz-linear-gradient(to bottom, #0088cc, #0044cc);\n  background-image: -ms-linear-gradient(to bottom, #0088cc, #0044cc);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));\n  background-image: -webkit-linear-gradient(to bottom, #0088cc, #0044cc);\n  background-image: -o-linear-gradient(to bottom, #0088cc, #0044cc);\n  background-image: linear-gradient(to bottom, #0088cc, #0044cc);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);\n  border-color: #0044cc #0044cc #002a80;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  color: #fff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.datepicker table tr td span.active:hover,\n.datepicker table tr td span.active:hover:hover,\n.datepicker table tr td span.active.disabled:hover,\n.datepicker table tr td span.active.disabled:hover:hover,\n.datepicker table tr td span.active:active,\n.datepicker table tr td span.active:hover:active,\n.datepicker table tr td span.active.disabled:active,\n.datepicker table tr td span.active.disabled:hover:active,\n.datepicker table tr td span.active.active,\n.datepicker table tr td span.active:hover.active,\n.datepicker table tr td span.active.disabled.active,\n.datepicker table tr td span.active.disabled:hover.active,\n.datepicker table tr td span.active.disabled,\n.datepicker table tr td span.active:hover.disabled,\n.datepicker table tr td span.active.disabled.disabled,\n.datepicker table tr td span.active.disabled:hover.disabled,\n.datepicker table tr td span.active[disabled],\n.datepicker table tr td span.active:hover[disabled],\n.datepicker table tr td span.active.disabled[disabled],\n.datepicker table tr td span.active.disabled:hover[disabled] {\n  background-color: #0044cc;\n}\n.datepicker table tr td span.active:active,\n.datepicker table tr td span.active:hover:active,\n.datepicker table tr td span.active.disabled:active,\n.datepicker table tr td span.active.disabled:hover:active,\n.datepicker table tr td span.active.active,\n.datepicker table tr td span.active:hover.active,\n.datepicker table tr td span.active.disabled.active,\n.datepicker table tr td span.active.disabled:hover.active {\n  background-color: #003399 \\9;\n}\n.datepicker table tr td span.old,\n.datepicker table tr td span.new {\n  color: #999999;\n}\n.datepicker .datepicker-switch {\n  width: 145px;\n}\n.datepicker .datepicker-switch,\n.datepicker .prev,\n.datepicker .next,\n.datepicker tfoot tr th {\n  cursor: pointer;\n}\n.datepicker .datepicker-switch:hover,\n.datepicker .prev:hover,\n.datepicker .next:hover,\n.datepicker tfoot tr th:hover {\n  background: #eeeeee;\n}\n.datepicker .cw {\n  font-size: 10px;\n  width: 12px;\n  padding: 0 2px 0 5px;\n  vertical-align: middle;\n}\n.input-append.date .add-on,\n.input-prepend.date .add-on {\n  cursor: pointer;\n}\n.input-append.date .add-on i,\n.input-prepend.date .add-on i {\n  margin-top: 3px;\n}\n.input-daterange input {\n  text-align: center;\n}\n.input-daterange input:first-child {\n  -webkit-border-radius: 3px 0 0 3px;\n  -moz-border-radius: 3px 0 0 3px;\n  border-radius: 3px 0 0 3px;\n}\n.input-daterange input:last-child {\n  -webkit-border-radius: 0 3px 3px 0;\n  -moz-border-radius: 0 3px 3px 0;\n  border-radius: 0 3px 3px 0;\n}\n.input-daterange .add-on {\n  display: inline-block;\n  width: auto;\n  min-width: 16px;\n  height: 18px;\n  padding: 4px 5px;\n  font-weight: normal;\n  line-height: 18px;\n  text-align: center;\n  text-shadow: 0 1px 0 #ffffff;\n  vertical-align: middle;\n  background-color: #eeeeee;\n  border: 1px solid #ccc;\n  margin-left: -5px;\n  margin-right: -5px;\n}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/datepicker/css/bootstrap.css",
    "content": "/*!\n * Bootstrap v3.3.5 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n@font-face {\n  font-family: 'Glyphicons Halflings';\n\n  src: url('../fonts/glyphicons-halflings-regular.eot');\n  src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n  position: relative;\n  top: 1px;\n  display: inline-block;\n  font-family: 'Glyphicons Halflings';\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1;\n\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n  content: \"\\2a\";\n}\n.glyphicon-plus:before {\n  content: \"\\2b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n  content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n  content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n  content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n  content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n  content: \"\\270f\";\n}\n.glyphicon-glass:before {\n  content: \"\\e001\";\n}\n.glyphicon-music:before {\n  content: \"\\e002\";\n}\n.glyphicon-search:before {\n  content: \"\\e003\";\n}\n.glyphicon-heart:before {\n  content: \"\\e005\";\n}\n.glyphicon-star:before {\n  content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n  content: \"\\e007\";\n}\n.glyphicon-user:before {\n  content: \"\\e008\";\n}\n.glyphicon-film:before {\n  content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n  content: \"\\e010\";\n}\n.glyphicon-th:before {\n  content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n  content: \"\\e012\";\n}\n.glyphicon-ok:before {\n  content: \"\\e013\";\n}\n.glyphicon-remove:before {\n  content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n  content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n  content: \"\\e016\";\n}\n.glyphicon-off:before {\n  content: \"\\e017\";\n}\n.glyphicon-signal:before {\n  content: \"\\e018\";\n}\n.glyphicon-cog:before {\n  content: \"\\e019\";\n}\n.glyphicon-trash:before {\n  content: \"\\e020\";\n}\n.glyphicon-home:before {\n  content: \"\\e021\";\n}\n.glyphicon-file:before {\n  content: \"\\e022\";\n}\n.glyphicon-time:before {\n  content: \"\\e023\";\n}\n.glyphicon-road:before {\n  content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n  content: \"\\e025\";\n}\n.glyphicon-download:before {\n  content: \"\\e026\";\n}\n.glyphicon-upload:before {\n  content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n  content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n  content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n  content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n  content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n  content: \"\\e032\";\n}\n.glyphicon-lock:before {\n  content: \"\\e033\";\n}\n.glyphicon-flag:before {\n  content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n  content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n  content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n  content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n  content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n  content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n  content: \"\\e040\";\n}\n.glyphicon-tag:before {\n  content: \"\\e041\";\n}\n.glyphicon-tags:before {\n  content: \"\\e042\";\n}\n.glyphicon-book:before {\n  content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n  content: \"\\e044\";\n}\n.glyphicon-print:before {\n  content: \"\\e045\";\n}\n.glyphicon-camera:before {\n  content: \"\\e046\";\n}\n.glyphicon-font:before {\n  content: \"\\e047\";\n}\n.glyphicon-bold:before {\n  content: \"\\e048\";\n}\n.glyphicon-italic:before {\n  content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n  content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n  content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n  content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n  content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n  content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n  content: \"\\e055\";\n}\n.glyphicon-list:before {\n  content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n  content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n  content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n  content: \"\\e059\";\n}\n.glyphicon-picture:before {\n  content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n  content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n  content: \"\\e063\";\n}\n.glyphicon-tint:before {\n  content: \"\\e064\";\n}\n.glyphicon-edit:before {\n  content: \"\\e065\";\n}\n.glyphicon-share:before {\n  content: \"\\e066\";\n}\n.glyphicon-check:before {\n  content: \"\\e067\";\n}\n.glyphicon-move:before {\n  content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n  content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n  content: \"\\e070\";\n}\n.glyphicon-backward:before {\n  content: \"\\e071\";\n}\n.glyphicon-play:before {\n  content: \"\\e072\";\n}\n.glyphicon-pause:before {\n  content: \"\\e073\";\n}\n.glyphicon-stop:before {\n  content: \"\\e074\";\n}\n.glyphicon-forward:before {\n  content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n  content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n  content: \"\\e077\";\n}\n.glyphicon-eject:before {\n  content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n  content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n  content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n  content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n  content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n  content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n  content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n  content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n  content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n  content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n  content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n  content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n  content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n  content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n  content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n  content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n  content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n  content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n  content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n  content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n  content: \"\\e101\";\n}\n.glyphicon-gift:before {\n  content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n  content: \"\\e103\";\n}\n.glyphicon-fire:before {\n  content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n  content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n  content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n  content: \"\\e107\";\n}\n.glyphicon-plane:before {\n  content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n  content: \"\\e109\";\n}\n.glyphicon-random:before {\n  content: \"\\e110\";\n}\n.glyphicon-comment:before {\n  content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n  content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n  content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n  content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n  content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n  content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n  content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n  content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n  content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n  content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n  content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n  content: \"\\e122\";\n}\n.glyphicon-bell:before {\n  content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n  content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n  content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n  content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n  content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n  content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n  content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n  content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n  content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n  content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n  content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n  content: \"\\e134\";\n}\n.glyphicon-globe:before {\n  content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n  content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n  content: \"\\e137\";\n}\n.glyphicon-filter:before {\n  content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n  content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n  content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n  content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n  content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n  content: \"\\e143\";\n}\n.glyphicon-link:before {\n  content: \"\\e144\";\n}\n.glyphicon-phone:before {\n  content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n  content: \"\\e146\";\n}\n.glyphicon-usd:before {\n  content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n  content: \"\\e149\";\n}\n.glyphicon-sort:before {\n  content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n  content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n  content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n  content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n  content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n  content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n  content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n  content: \"\\e157\";\n}\n.glyphicon-expand:before {\n  content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n  content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n  content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n  content: \"\\e161\";\n}\n.glyphicon-flash:before {\n  content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n  content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n  content: \"\\e164\";\n}\n.glyphicon-record:before {\n  content: \"\\e165\";\n}\n.glyphicon-save:before {\n  content: \"\\e166\";\n}\n.glyphicon-open:before {\n  content: \"\\e167\";\n}\n.glyphicon-saved:before {\n  content: \"\\e168\";\n}\n.glyphicon-import:before {\n  content: \"\\e169\";\n}\n.glyphicon-export:before {\n  content: \"\\e170\";\n}\n.glyphicon-send:before {\n  content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n  content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n  content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n  content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n  content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n  content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n  content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n  content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n  content: \"\\e179\";\n}\n.glyphicon-header:before {\n  content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n  content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n  content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n  content: \"\\e183\";\n}\n.glyphicon-tower:before {\n  content: \"\\e184\";\n}\n.glyphicon-stats:before {\n  content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n  content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n  content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n  content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n  content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n  content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n  content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n  content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n  content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n  content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n  content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n  content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n  content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n  content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n  content: \"\\e200\";\n}\n.glyphicon-cd:before {\n  content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n  content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n  content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n  content: \"\\e204\";\n}\n.glyphicon-copy:before {\n  content: \"\\e205\";\n}\n.glyphicon-paste:before {\n  content: \"\\e206\";\n}\n.glyphicon-alert:before {\n  content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n  content: \"\\e210\";\n}\n.glyphicon-king:before {\n  content: \"\\e211\";\n}\n.glyphicon-queen:before {\n  content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n  content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n  content: \"\\e214\";\n}\n.glyphicon-knight:before {\n  content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n  content: \"\\e216\";\n}\n.glyphicon-tent:before {\n  content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n  content: \"\\e218\";\n}\n.glyphicon-bed:before {\n  content: \"\\e219\";\n}\n.glyphicon-apple:before {\n  content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n  content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n  content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n  content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n  content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n  content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n  content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n  content: \"\\e227\";\n}\n.glyphicon-btc:before {\n  content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n  content: \"\\e227\";\n}\n.glyphicon-yen:before {\n  content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n  content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n  content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n  content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n  content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n  content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n  content: \"\\e232\";\n}\n.glyphicon-education:before {\n  content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n  content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n  content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n  content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n  content: \"\\e237\";\n}\n.glyphicon-oil:before {\n  content: \"\\e238\";\n}\n.glyphicon-grain:before {\n  content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n  content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n  content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n  content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n  content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n  content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n  content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n  content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n  content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n  content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n  content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n  content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n  content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n  content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n  content: \"\\e253\";\n}\n.glyphicon-console:before {\n  content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n  content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n  content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n  content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n  content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n  content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n  content: \"\\e260\";\n}\n\n\n\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n  width: 100%;\n}\n.fade {\n  opacity: 0;\n  -webkit-transition: opacity .15s linear;\n       -o-transition: opacity .15s linear;\n          transition: opacity .15s linear;\n}\n.fade.in {\n  opacity: 1;\n}\n.collapse {\n  display: none;\n}\n.collapse.in {\n  display: block;\n}\ntr.collapse.in {\n  display: table-row;\n}\ntbody.collapse.in {\n  display: table-row-group;\n}\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  -webkit-transition-timing-function: ease;\n       -o-transition-timing-function: ease;\n          transition-timing-function: ease;\n  -webkit-transition-duration: .35s;\n       -o-transition-duration: .35s;\n          transition-duration: .35s;\n  -webkit-transition-property: height, visibility;\n       -o-transition-property: height, visibility;\n          transition-property: height, visibility;\n}\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 2px;\n  vertical-align: middle;\n  border-top: 4px dashed;\n  border-top: 4px solid \\9;\n  border-right: 4px solid transparent;\n  border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n  position: relative;\n}\n.dropdown-toggle:focus {\n  outline: 0;\n}\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  display: none;\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0;\n  font-size: 14px;\n  text-align: left;\n  list-style: none;\n  background-color: #fff;\n  -webkit-background-clip: padding-box;\n          background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, .15);\n  border-radius: 4px;\n  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n          box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n}\n.dropdown-menu.pull-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu .divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n  display: block;\n  padding: 3px 20px;\n  clear: both;\n  font-weight: normal;\n  line-height: 1.42857143;\n  color: #333;\n  white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  color: #262626;\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #337ab7;\n  outline: 0;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  color: #777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  text-decoration: none;\n  cursor: not-allowed;\n  background-color: transparent;\n  background-image: none;\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.open > .dropdown-menu {\n  display: block;\n}\n.open > a {\n  outline: 0;\n}\n.dropdown-menu-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu-left {\n  right: auto;\n  left: 0;\n}\n.dropdown-header {\n  display: block;\n  padding: 3px 20px;\n  font-size: 12px;\n  line-height: 1.42857143;\n  color: #777;\n  white-space: nowrap;\n}\n.dropdown-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 990;\n}\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n  content: \"\";\n  border-top: 0;\n  border-bottom: 4px dashed;\n  border-bottom: 4px solid \\9;\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n  top: auto;\n  bottom: 100%;\n  margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n  .navbar-right .dropdown-menu {\n    right: 0;\n    left: auto;\n  }\n  .navbar-right .dropdown-menu-left {\n    right: auto;\n    left: 0;\n  }\n}\n\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n}\n.input-group {\n  position: relative;\n  display: table;\n  border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n  float: none;\n  padding-right: 0;\n  padding-left: 0;\n}\n.input-group .form-control {\n  position: relative;\n  z-index: 2;\n  float: left;\n  width: 100%;\n  margin-bottom: 0;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n  display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n  width: 1%;\n  white-space: nowrap;\n  vertical-align: middle;\n}\n.input-group-addon {\n  padding: 6px 12px;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 1;\n  color: #555;\n  text-align: center;\n  background-color: #eee;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\n.input-group-addon.input-sm {\n  padding: 5px 10px;\n  font-size: 12px;\n  border-radius: 3px;\n}\n.input-group-addon.input-lg {\n  padding: 10px 16px;\n  font-size: 18px;\n  border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n  margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.input-group-addon:first-child {\n  border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.input-group-addon:last-child {\n  border-left: 0;\n}\n.input-group-btn {\n  position: relative;\n  font-size: 0;\n  white-space: nowrap;\n}\n.input-group-btn > .btn {\n  position: relative;\n}\n.input-group-btn > .btn + .btn {\n  margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n  z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n  margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n  z-index: 2;\n  margin-left: -1px;\n}\n\n\n.list-group-item-text {\n  margin-bottom: 0;\n  line-height: 1.3;\n}\n.panel {\n  margin-bottom: 20px;\n  background-color: #fff;\n  border: 1px solid transparent;\n  border-radius: 4px;\n  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);\n          box-shadow: 0 1px 1px rgba(0, 0, 0, .05);\n}\n.panel-body {\n  padding: 15px;\n}\n.panel-heading {\n  padding: 10px 15px;\n  border-bottom: 1px solid transparent;\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n  color: inherit;\n}\n.panel-title {\n  margin-top: 0;\n  margin-bottom: 0;\n  font-size: 16px;\n  color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n  color: inherit;\n}\n.panel-footer {\n  padding: 10px 15px;\n  background-color: #f5f5f5;\n  border-top: 1px solid #ddd;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n  margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n  border-width: 1px 0;\n  border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n  border-top: 0;\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n  border-bottom: 0;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n  border-top-width: 0;\n}\n.list-group + .panel-footer {\n  border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n  margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n  padding-right: 15px;\n  padding-left: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n  border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n  border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n  border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n  border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n  border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n  border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n  border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n  border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n  border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n  border-bottom: 0;\n}\n.panel > .table-responsive {\n  margin-bottom: 0;\n  border: 0;\n}\n.panel-group {\n  margin-bottom: 20px;\n}\n.panel-group .panel {\n  margin-bottom: 0;\n  border-radius: 4px;\n}\n.panel-group .panel + .panel {\n  margin-top: 5px;\n}\n.panel-group .panel-heading {\n  border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n  border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n  border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n  border-bottom: 1px solid #ddd;\n}\n.panel-default {\n  border-color: #ddd;\n}\n.panel-default > .panel-heading {\n  color: #333;\n  background-color: #f5f5f5;\n  border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n  color: #f5f5f5;\n  background-color: #333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ddd;\n}\n.panel-primary {\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #337ab7;\n}\n.panel-success {\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n  color: #dff0d8;\n  background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #d6e9c6;\n}\n.panel-info {\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n  color: #d9edf7;\n  background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #bce8f1;\n}\n.panel-warning {\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n  color: #fcf8e3;\n  background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #faebcc;\n}\n.panel-danger {\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n  color: #f2dede;\n  background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n  position: relative;\n  display: block;\n  height: 0;\n  padding: 0;\n  overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  border: 0;\n}\n.embed-responsive-16by9 {\n  padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n  padding-bottom: 75%;\n}\n/*# sourceMappingURL=bootstrap.css.map */\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/datepicker/js/bootstrap-datepicker.js",
    "content": "/*!\n * Datepicker for Bootstrap v1.5.1 (https://github.com/eternicode/bootstrap-datepicker)\n *\n * Copyright 2012 Stefan Petre\n * Improvements by Andrew Rowls\n * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)\n */(function(factory){\n    if (typeof define === \"function\" && define.amd) {\n        define([\"jquery\"], factory);\n    } else if (typeof exports === 'object') {\n        factory(require('jquery'));\n    } else {\n        factory(jQuery);\n    }\n}(function($, undefined){\n\n\tfunction UTCDate(){\n\t\treturn new Date(Date.UTC.apply(Date, arguments));\n\t}\n\tfunction UTCToday(){\n\t\tvar today = new Date();\n\t\treturn UTCDate(today.getFullYear(), today.getMonth(), today.getDate());\n\t}\n\tfunction isUTCEquals(date1, date2) {\n\t\treturn (\n\t\t\tdate1.getUTCFullYear() === date2.getUTCFullYear() &&\n\t\t\tdate1.getUTCMonth() === date2.getUTCMonth() &&\n\t\t\tdate1.getUTCDate() === date2.getUTCDate()\n\t\t);\n\t}\n\tfunction alias(method){\n\t\treturn function(){\n\t\t\treturn this[method].apply(this, arguments);\n\t\t};\n\t}\n\tfunction isValidDate(d) {\n\t\treturn d && !isNaN(d.getTime());\n\t}\n\n\tvar DateArray = (function(){\n\t\tvar extras = {\n\t\t\tget: function(i){\n\t\t\t\treturn this.slice(i)[0];\n\t\t\t},\n\t\t\tcontains: function(d){\n\t\t\t\t// Array.indexOf is not cross-browser;\n\t\t\t\t// $.inArray doesn't work with Dates\n\t\t\t\tvar val = d && d.valueOf();\n\t\t\t\tfor (var i=0, l=this.length; i < l; i++)\n\t\t\t\t\tif (this[i].valueOf() === val)\n\t\t\t\t\t\treturn i;\n\t\t\t\treturn -1;\n\t\t\t},\n\t\t\tremove: function(i){\n\t\t\t\tthis.splice(i,1);\n\t\t\t},\n\t\t\treplace: function(new_array){\n\t\t\t\tif (!new_array)\n\t\t\t\t\treturn;\n\t\t\t\tif (!$.isArray(new_array))\n\t\t\t\t\tnew_array = [new_array];\n\t\t\t\tthis.clear();\n\t\t\t\tthis.push.apply(this, new_array);\n\t\t\t},\n\t\t\tclear: function(){\n\t\t\t\tthis.length = 0;\n\t\t\t},\n\t\t\tcopy: function(){\n\t\t\t\tvar a = new DateArray();\n\t\t\t\ta.replace(this);\n\t\t\t\treturn a;\n\t\t\t}\n\t\t};\n\n\t\treturn function(){\n\t\t\tvar a = [];\n\t\t\ta.push.apply(a, arguments);\n\t\t\t$.extend(a, extras);\n\t\t\treturn a;\n\t\t};\n\t})();\n\n\n\t// Picker object\n\n\tvar Datepicker = function(element, options){\n\t\t$(element).data('datepicker', this);\n\t\tthis._process_options(options);\n\n\t\tthis.dates = new DateArray();\n\t\tthis.viewDate = this.o.defaultViewDate;\n\t\tthis.focusDate = null;\n\n\t\tthis.element = $(element);\n\t\tthis.isInline = false;\n\t\tthis.isInput = this.element.is('input');\n\t\tthis.component = this.element.hasClass('date') ? this.element.find('.add-on, .input-group-addon, .btn') : false;\n\t\tthis.hasInput = this.component && this.element.find('input').length;\n\t\tif (this.component && this.component.length === 0)\n\t\t\tthis.component = false;\n\n\t\tthis.picker = $(DPGlobal.template);\n\t\tthis._buildEvents();\n\t\tthis._attachEvents();\n\n\t\tif (this.isInline){\n\t\t\tthis.picker.addClass('datepicker-inline').appendTo(this.element);\n\t\t}\n\t\telse {\n\t\t\tthis.picker.addClass('datepicker-dropdown dropdown-menu');\n\t\t}\n\n\t\tif (this.o.rtl){\n\t\t\tthis.picker.addClass('datepicker-rtl');\n\t\t}\n\n\t\tthis.viewMode = this.o.startView;\n\n\t\tif (this.o.calendarWeeks)\n\t\t\tthis.picker.find('thead .datepicker-title, tfoot .today, tfoot .clear')\n\t\t\t\t\t\t.attr('colspan', function(i, val){\n\t\t\t\t\t\t\treturn parseInt(val) + 1;\n\t\t\t\t\t\t});\n\n\t\tthis._allow_update = false;\n\n\t\tthis.setStartDate(this._o.startDate);\n\t\tthis.setEndDate(this._o.endDate);\n\t\tthis.setDaysOfWeekDisabled(this.o.daysOfWeekDisabled);\n\t\tthis.setDaysOfWeekHighlighted(this.o.daysOfWeekHighlighted);\n\t\tthis.setDatesDisabled(this.o.datesDisabled);\n\n\t\tthis.fillDow();\n\t\tthis.fillMonths();\n\n\t\tthis._allow_update = true;\n\n\t\tthis.update();\n\t\tthis.showMode();\n\n\t\tif (this.isInline){\n\t\t\tthis.show();\n\t\t}\n\t};\n\n\tDatepicker.prototype = {\n\t\tconstructor: Datepicker,\n\n\t\t_process_options: function(opts){\n\t\t\t// Store raw options for reference\n\t\t\tthis._o = $.extend({}, this._o, opts);\n\t\t\t// Processed options\n\t\t\tvar o = this.o = $.extend({}, this._o);\n\n\t\t\t// Check if \"de-DE\" style date is available, if not language should\n\t\t\t// fallback to 2 letter code eg \"de\"\n\t\t\tvar lang = o.language;\n\t\t\tif (!dates[lang]){\n\t\t\t\tlang = lang.split('-')[0];\n\t\t\t\tif (!dates[lang])\n\t\t\t\t\tlang = defaults.language;\n\t\t\t}\n\t\t\to.language = lang;\n\n\t\t\tswitch (o.startView){\n\t\t\t\tcase 2:\n\t\t\t\tcase 'decade':\n\t\t\t\t\to.startView = 2;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\tcase 'year':\n\t\t\t\t\to.startView = 1;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\to.startView = 0;\n\t\t\t}\n\n\t\t\tswitch (o.minViewMode){\n\t\t\t\tcase 1:\n\t\t\t\tcase 'months':\n\t\t\t\t\to.minViewMode = 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\tcase 'years':\n\t\t\t\t\to.minViewMode = 2;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\to.minViewMode = 0;\n\t\t\t}\n\n\t\t\tswitch (o.maxViewMode) {\n\t\t\t\tcase 0:\n\t\t\t\tcase 'days':\n\t\t\t\t\to.maxViewMode = 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\tcase 'months':\n\t\t\t\t\to.maxViewMode = 1;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\to.maxViewMode = 2;\n\t\t\t}\n\n\t\t\to.startView = Math.min(o.startView, o.maxViewMode);\n\t\t\to.startView = Math.max(o.startView, o.minViewMode);\n\n\t\t\t// true, false, or Number > 0\n\t\t\tif (o.multidate !== true){\n\t\t\t\to.multidate = Number(o.multidate) || false;\n\t\t\t\tif (o.multidate !== false)\n\t\t\t\t\to.multidate = Math.max(0, o.multidate);\n\t\t\t}\n\t\t\to.multidateSeparator = String(o.multidateSeparator);\n\n\t\t\to.weekStart %= 7;\n\t\t\to.weekEnd = (o.weekStart + 6) % 7;\n\n\t\t\tvar format = DPGlobal.parseFormat(o.format);\n\t\t\tif (o.startDate !== -Infinity){\n\t\t\t\tif (!!o.startDate){\n\t\t\t\t\tif (o.startDate instanceof Date)\n\t\t\t\t\t\to.startDate = this._local_to_utc(this._zero_time(o.startDate));\n\t\t\t\t\telse\n\t\t\t\t\t\to.startDate = DPGlobal.parseDate(o.startDate, format, o.language);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\to.startDate = -Infinity;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (o.endDate !== Infinity){\n\t\t\t\tif (!!o.endDate){\n\t\t\t\t\tif (o.endDate instanceof Date)\n\t\t\t\t\t\to.endDate = this._local_to_utc(this._zero_time(o.endDate));\n\t\t\t\t\telse\n\t\t\t\t\t\to.endDate = DPGlobal.parseDate(o.endDate, format, o.language);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\to.endDate = Infinity;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\to.daysOfWeekDisabled = o.daysOfWeekDisabled||[];\n\t\t\tif (!$.isArray(o.daysOfWeekDisabled))\n\t\t\t\to.daysOfWeekDisabled = o.daysOfWeekDisabled.split(/[,\\s]*/);\n\t\t\to.daysOfWeekDisabled = $.map(o.daysOfWeekDisabled, function(d){\n\t\t\t\treturn parseInt(d, 10);\n\t\t\t});\n\n\t\t\to.daysOfWeekHighlighted = o.daysOfWeekHighlighted||[];\n\t\t\tif (!$.isArray(o.daysOfWeekHighlighted))\n\t\t\t\to.daysOfWeekHighlighted = o.daysOfWeekHighlighted.split(/[,\\s]*/);\n\t\t\to.daysOfWeekHighlighted = $.map(o.daysOfWeekHighlighted, function(d){\n\t\t\t\treturn parseInt(d, 10);\n\t\t\t});\n\n\t\t\to.datesDisabled = o.datesDisabled||[];\n\t\t\tif (!$.isArray(o.datesDisabled)) {\n\t\t\t\tvar datesDisabled = [];\n\t\t\t\tdatesDisabled.push(DPGlobal.parseDate(o.datesDisabled, format, o.language));\n\t\t\t\to.datesDisabled = datesDisabled;\n\t\t\t}\n\t\t\to.datesDisabled = $.map(o.datesDisabled,function(d){\n\t\t\t\treturn DPGlobal.parseDate(d, format, o.language);\n\t\t\t});\n\n\t\t\tvar plc = String(o.orientation).toLowerCase().split(/\\s+/g),\n\t\t\t\t_plc = o.orientation.toLowerCase();\n\t\t\tplc = $.grep(plc, function(word){\n\t\t\t\treturn /^auto|left|right|top|bottom$/.test(word);\n\t\t\t});\n\t\t\to.orientation = {x: 'auto', y: 'auto'};\n\t\t\tif (!_plc || _plc === 'auto')\n\t\t\t\t; // no action\n\t\t\telse if (plc.length === 1){\n\t\t\t\tswitch (plc[0]){\n\t\t\t\t\tcase 'top':\n\t\t\t\t\tcase 'bottom':\n\t\t\t\t\t\to.orientation.y = plc[0];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'left':\n\t\t\t\t\tcase 'right':\n\t\t\t\t\t\to.orientation.x = plc[0];\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\t_plc = $.grep(plc, function(word){\n\t\t\t\t\treturn /^left|right$/.test(word);\n\t\t\t\t});\n\t\t\t\to.orientation.x = _plc[0] || 'auto';\n\n\t\t\t\t_plc = $.grep(plc, function(word){\n\t\t\t\t\treturn /^top|bottom$/.test(word);\n\t\t\t\t});\n\t\t\t\to.orientation.y = _plc[0] || 'auto';\n\t\t\t}\n\t\t\tif (o.defaultViewDate) {\n\t\t\t\tvar year = o.defaultViewDate.year || new Date().getFullYear();\n\t\t\t\tvar month = o.defaultViewDate.month || 0;\n\t\t\t\tvar day = o.defaultViewDate.day || 1;\n\t\t\t\to.defaultViewDate = UTCDate(year, month, day);\n\t\t\t} else {\n\t\t\t\to.defaultViewDate = UTCToday();\n\t\t\t}\n\t\t},\n\t\t_events: [],\n\t\t_secondaryEvents: [],\n\t\t_applyEvents: function(evs){\n\t\t\tfor (var i=0, el, ch, ev; i < evs.length; i++){\n\t\t\t\tel = evs[i][0];\n\t\t\t\tif (evs[i].length === 2){\n\t\t\t\t\tch = undefined;\n\t\t\t\t\tev = evs[i][1];\n\t\t\t\t}\n\t\t\t\telse if (evs[i].length === 3){\n\t\t\t\t\tch = evs[i][1];\n\t\t\t\t\tev = evs[i][2];\n\t\t\t\t}\n\t\t\t\tel.on(ev, ch);\n\t\t\t}\n\t\t},\n\t\t_unapplyEvents: function(evs){\n\t\t\tfor (var i=0, el, ev, ch; i < evs.length; i++){\n\t\t\t\tel = evs[i][0];\n\t\t\t\tif (evs[i].length === 2){\n\t\t\t\t\tch = undefined;\n\t\t\t\t\tev = evs[i][1];\n\t\t\t\t}\n\t\t\t\telse if (evs[i].length === 3){\n\t\t\t\t\tch = evs[i][1];\n\t\t\t\t\tev = evs[i][2];\n\t\t\t\t}\n\t\t\t\tel.off(ev, ch);\n\t\t\t}\n\t\t},\n\t\t_buildEvents: function(){\n            var events = {\n                keyup: $.proxy(function(e){\n                    if ($.inArray(e.keyCode, [27, 37, 39, 38, 40, 32, 13, 9]) === -1)\n                        this.update();\n                }, this),\n                keydown: $.proxy(this.keydown, this),\n                paste: $.proxy(this.paste, this)\n            };\n\n            if (this.o.showOnFocus === true) {\n                events.focus = $.proxy(this.show, this);\n            }\n\n            if (this.isInput) { // single input\n                this._events = [\n                    [this.element, events]\n                ];\n            }\n            else if (this.component && this.hasInput) { // component: input + button\n                this._events = [\n                    // For components that are not readonly, allow keyboard nav\n                    [this.element.find('input'), events],\n                    [this.component, {\n                        click: $.proxy(this.show, this)\n                    }]\n                ];\n            }\n\t\t\telse if (this.element.is('div')){  // inline datepicker\n\t\t\t\tthis.isInline = true;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._events = [\n\t\t\t\t\t[this.element, {\n\t\t\t\t\t\tclick: $.proxy(this.show, this)\n\t\t\t\t\t}]\n\t\t\t\t];\n\t\t\t}\n\t\t\tthis._events.push(\n\t\t\t\t// Component: listen for blur on element descendants\n\t\t\t\t[this.element, '*', {\n\t\t\t\t\tblur: $.proxy(function(e){\n\t\t\t\t\t\tthis._focused_from = e.target;\n\t\t\t\t\t}, this)\n\t\t\t\t}],\n\t\t\t\t// Input: listen for blur on element\n\t\t\t\t[this.element, {\n\t\t\t\t\tblur: $.proxy(function(e){\n\t\t\t\t\t\tthis._focused_from = e.target;\n\t\t\t\t\t}, this)\n\t\t\t\t}]\n\t\t\t);\n\n\t\t\tif (this.o.immediateUpdates) {\n\t\t\t\t// Trigger input updates immediately on changed year/month\n\t\t\t\tthis._events.push([this.element, {\n\t\t\t\t\t'changeYear changeMonth': $.proxy(function(e){\n\t\t\t\t\t\tthis.update(e.date);\n\t\t\t\t\t}, this)\n\t\t\t\t}]);\n\t\t\t}\n\n\t\t\tthis._secondaryEvents = [\n\t\t\t\t[this.picker, {\n\t\t\t\t\tclick: $.proxy(this.click, this)\n\t\t\t\t}],\n\t\t\t\t[$(window), {\n\t\t\t\t\tresize: $.proxy(this.place, this)\n\t\t\t\t}],\n\t\t\t\t[$(document), {\n\t\t\t\t\tmousedown: $.proxy(function(e){\n\t\t\t\t\t\t// Clicked outside the datepicker, hide it\n\t\t\t\t\t\tif (!(\n\t\t\t\t\t\t\tthis.element.is(e.target) ||\n\t\t\t\t\t\t\tthis.element.find(e.target).length ||\n\t\t\t\t\t\t\tthis.picker.is(e.target) ||\n\t\t\t\t\t\t\tthis.picker.find(e.target).length ||\n\t\t\t\t\t\t\tthis.picker.hasClass('datepicker-inline')\n\t\t\t\t\t\t)){\n\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this)\n\t\t\t\t}]\n\t\t\t];\n\t\t},\n\t\t_attachEvents: function(){\n\t\t\tthis._detachEvents();\n\t\t\tthis._applyEvents(this._events);\n\t\t},\n\t\t_detachEvents: function(){\n\t\t\tthis._unapplyEvents(this._events);\n\t\t},\n\t\t_attachSecondaryEvents: function(){\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis._applyEvents(this._secondaryEvents);\n\t\t},\n\t\t_detachSecondaryEvents: function(){\n\t\t\tthis._unapplyEvents(this._secondaryEvents);\n\t\t},\n\t\t_trigger: function(event, altdate){\n\t\t\tvar date = altdate || this.dates.get(-1),\n\t\t\t\tlocal_date = this._utc_to_local(date);\n\n\t\t\tthis.element.trigger({\n\t\t\t\ttype: event,\n\t\t\t\tdate: local_date,\n\t\t\t\tdates: $.map(this.dates, this._utc_to_local),\n\t\t\t\tformat: $.proxy(function(ix, format){\n\t\t\t\t\tif (arguments.length === 0){\n\t\t\t\t\t\tix = this.dates.length - 1;\n\t\t\t\t\t\tformat = this.o.format;\n\t\t\t\t\t}\n\t\t\t\t\telse if (typeof ix === 'string'){\n\t\t\t\t\t\tformat = ix;\n\t\t\t\t\t\tix = this.dates.length - 1;\n\t\t\t\t\t}\n\t\t\t\t\tformat = format || this.o.format;\n\t\t\t\t\tvar date = this.dates.get(ix);\n\t\t\t\t\treturn DPGlobal.formatDate(date, format, this.o.language);\n\t\t\t\t}, this)\n\t\t\t});\n\t\t},\n\n\t\tshow: function(){\n      var element = this.component ? this.element.find('input') : this.element;\n\t\t\tif (element.attr('readonly') && this.o.enableOnReadonly === false)\n\t\t\t\treturn;\n\t\t\tif (!this.isInline)\n\t\t\t\tthis.picker.appendTo(this.o.container);\n\t\t\tthis.place();\n\t\t\tthis.picker.show();\n\t\t\tthis._attachSecondaryEvents();\n\t\t\tthis._trigger('show');\n\t\t\tif ((window.navigator.msMaxTouchPoints || 'ontouchstart' in document) && this.o.disableTouchKeyboard) {\n\t\t\t\t$(this.element).blur();\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\thide: function(){\n\t\t\tif (this.isInline)\n\t\t\t\treturn this;\n\t\t\tif (!this.picker.is(':visible'))\n\t\t\t\treturn this;\n\t\t\tthis.focusDate = null;\n\t\t\tthis.picker.hide().detach();\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis.viewMode = this.o.startView;\n\t\t\tthis.showMode();\n\n\t\t\tif (\n\t\t\t\tthis.o.forceParse &&\n\t\t\t\t(\n\t\t\t\t\tthis.isInput && this.element.val() ||\n\t\t\t\t\tthis.hasInput && this.element.find('input').val()\n\t\t\t\t)\n\t\t\t)\n\t\t\t\tthis.setValue();\n\t\t\tthis._trigger('hide');\n\t\t\treturn this;\n\t\t},\n\n\t\tremove: function(){\n\t\t\tthis.hide();\n\t\t\tthis._detachEvents();\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis.picker.remove();\n\t\t\tdelete this.element.data().datepicker;\n\t\t\tif (!this.isInput){\n\t\t\t\tdelete this.element.data().date;\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\tpaste: function(evt){\n\t\t\tvar dateString;\n\t\t\tif (evt.originalEvent.clipboardData && evt.originalEvent.clipboardData.types\n\t\t\t\t&& $.inArray('text/plain', evt.originalEvent.clipboardData.types) !== -1) {\n\t\t\t\tdateString = evt.originalEvent.clipboardData.getData('text/plain');\n\t\t\t}\n\t\t\telse if (window.clipboardData) {\n\t\t\t\tdateString = window.clipboardData.getData('Text');\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.setDate(dateString);\n\t\t\tthis.update();\n\t\t\tevt.preventDefault();\n\t\t},\n\n\t\t_utc_to_local: function(utc){\n\t\t\treturn utc && new Date(utc.getTime() + (utc.getTimezoneOffset()*60000));\n\t\t},\n\t\t_local_to_utc: function(local){\n\t\t\treturn local && new Date(local.getTime() - (local.getTimezoneOffset()*60000));\n\t\t},\n\t\t_zero_time: function(local){\n\t\t\treturn local && new Date(local.getFullYear(), local.getMonth(), local.getDate());\n\t\t},\n\t\t_zero_utc_time: function(utc){\n\t\t\treturn utc && new Date(Date.UTC(utc.getUTCFullYear(), utc.getUTCMonth(), utc.getUTCDate()));\n\t\t},\n\n\t\tgetDates: function(){\n\t\t\treturn $.map(this.dates, this._utc_to_local);\n\t\t},\n\n\t\tgetUTCDates: function(){\n\t\t\treturn $.map(this.dates, function(d){\n\t\t\t\treturn new Date(d);\n\t\t\t});\n\t\t},\n\n\t\tgetDate: function(){\n\t\t\treturn this._utc_to_local(this.getUTCDate());\n\t\t},\n\n\t\tgetUTCDate: function(){\n\t\t\tvar selected_date = this.dates.get(-1);\n\t\t\tif (typeof selected_date !== 'undefined') {\n\t\t\t\treturn new Date(selected_date);\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\n\t\tclearDates: function(){\n\t\t\tvar element;\n\t\t\tif (this.isInput) {\n\t\t\t\telement = this.element;\n\t\t\t} else if (this.component) {\n\t\t\t\telement = this.element.find('input');\n\t\t\t}\n\n\t\t\tif (element) {\n\t\t\t\telement.val('');\n\t\t\t}\n\n\t\t\tthis.update();\n\t\t\tthis._trigger('changeDate');\n\n\t\t\tif (this.o.autoclose) {\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t},\n\t\tsetDates: function(){\n\t\t\tvar args = $.isArray(arguments[0]) ? arguments[0] : arguments;\n\t\t\tthis.update.apply(this, args);\n\t\t\tthis._trigger('changeDate');\n\t\t\tthis.setValue();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetUTCDates: function(){\n\t\t\tvar args = $.isArray(arguments[0]) ? arguments[0] : arguments;\n\t\t\tthis.update.apply(this, $.map(args, this._utc_to_local));\n\t\t\tthis._trigger('changeDate');\n\t\t\tthis.setValue();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDate: alias('setDates'),\n\t\tsetUTCDate: alias('setUTCDates'),\n\n\t\tsetValue: function(){\n\t\t\tvar formatted = this.getFormattedDate();\n\t\t\tif (!this.isInput){\n\t\t\t\tif (this.component){\n\t\t\t\t\tthis.element.find('input').val(formatted);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.element.val(formatted);\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\tgetFormattedDate: function(format){\n\t\t\tif (format === undefined)\n\t\t\t\tformat = this.o.format;\n\n\t\t\tvar lang = this.o.language;\n\t\t\treturn $.map(this.dates, function(d){\n\t\t\t\treturn DPGlobal.formatDate(d, format, lang);\n\t\t\t}).join(this.o.multidateSeparator);\n\t\t},\n\n\t\tsetStartDate: function(startDate){\n\t\t\tthis._process_options({startDate: startDate});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetEndDate: function(endDate){\n\t\t\tthis._process_options({endDate: endDate});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDaysOfWeekDisabled: function(daysOfWeekDisabled){\n\t\t\tthis._process_options({daysOfWeekDisabled: daysOfWeekDisabled});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDaysOfWeekHighlighted: function(daysOfWeekHighlighted){\n\t\t\tthis._process_options({daysOfWeekHighlighted: daysOfWeekHighlighted});\n\t\t\tthis.update();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDatesDisabled: function(datesDisabled){\n\t\t\tthis._process_options({datesDisabled: datesDisabled});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t},\n\n\t\tplace: function(){\n\t\t\tif (this.isInline)\n\t\t\t\treturn this;\n\t\t\tvar calendarWidth = this.picker.outerWidth(),\n\t\t\t\tcalendarHeight = this.picker.outerHeight(),\n\t\t\t\tvisualPadding = 10,\n\t\t\t\tcontainer = $(this.o.container),\n\t\t\t\twindowWidth = container.width(),\n\t\t\t\tscrollTop = this.o.container === 'body' ? $(document).scrollTop() : container.scrollTop(),\n\t\t\t\tappendOffset = container.offset();\n\n\t\t\tvar parentsZindex = [];\n\t\t\tthis.element.parents().each(function(){\n\t\t\t\tvar itemZIndex = $(this).css('z-index');\n\t\t\t\tif (itemZIndex !== 'auto' && itemZIndex !== 0) parentsZindex.push(parseInt(itemZIndex));\n\t\t\t});\n\t\t\tvar zIndex = Math.max.apply(Math, parentsZindex) + this.o.zIndexOffset;\n\t\t\tvar offset = this.component ? this.component.parent().offset() : this.element.offset();\n\t\t\tvar height = this.component ? this.component.outerHeight(true) : this.element.outerHeight(false);\n\t\t\tvar width = this.component ? this.component.outerWidth(true) : this.element.outerWidth(false);\n\t\t\tvar left = offset.left - appendOffset.left,\n\t\t\t\ttop = offset.top - appendOffset.top;\n\n\t\t\tif (this.o.container !== 'body') {\n\t\t\t\ttop += scrollTop;\n\t\t\t}\n\n\t\t\tthis.picker.removeClass(\n\t\t\t\t'datepicker-orient-top datepicker-orient-bottom '+\n\t\t\t\t'datepicker-orient-right datepicker-orient-left'\n\t\t\t);\n\n\t\t\tif (this.o.orientation.x !== 'auto'){\n\t\t\t\tthis.picker.addClass('datepicker-orient-' + this.o.orientation.x);\n\t\t\t\tif (this.o.orientation.x === 'right')\n\t\t\t\t\tleft -= calendarWidth - width;\n\t\t\t}\n\t\t\t// auto x orientation is best-placement: if it crosses a window\n\t\t\t// edge, fudge it sideways\n\t\t\telse {\n\t\t\t\tif (offset.left < 0) {\n\t\t\t\t\t// component is outside the window on the left side. Move it into visible range\n\t\t\t\t\tthis.picker.addClass('datepicker-orient-left');\n\t\t\t\t\tleft -= offset.left - visualPadding;\n\t\t\t\t} else if (left + calendarWidth > windowWidth) {\n\t\t\t\t\t// the calendar passes the widow right edge. Align it to component right side\n\t\t\t\t\tthis.picker.addClass('datepicker-orient-right');\n\t\t\t\t\tleft += width - calendarWidth;\n\t\t\t\t} else {\n\t\t\t\t\t// Default to left\n\t\t\t\t\tthis.picker.addClass('datepicker-orient-left');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// auto y orientation is best-situation: top or bottom, no fudging,\n\t\t\t// decision based on which shows more of the calendar\n\t\t\tvar yorient = this.o.orientation.y,\n\t\t\t\ttop_overflow;\n\t\t\tif (yorient === 'auto'){\n\t\t\t\ttop_overflow = -scrollTop + top - calendarHeight;\n\t\t\t\tyorient = top_overflow < 0 ? 'bottom' : 'top';\n\t\t\t}\n\n\t\t\tthis.picker.addClass('datepicker-orient-' + yorient);\n\t\t\tif (yorient === 'top')\n\t\t\t\ttop -= calendarHeight + parseInt(this.picker.css('padding-top'));\n\t\t\telse\n\t\t\t\ttop += height;\n\n\t\t\tif (this.o.rtl) {\n\t\t\t\tvar right = windowWidth - (left + width);\n\t\t\t\tthis.picker.css({\n\t\t\t\t\ttop: top,\n\t\t\t\t\tright: right,\n\t\t\t\t\tzIndex: zIndex\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.picker.css({\n\t\t\t\t\ttop: top,\n\t\t\t\t\tleft: left,\n\t\t\t\t\tzIndex: zIndex\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\t_allow_update: true,\n\t\tupdate: function(){\n\t\t\tif (!this._allow_update)\n\t\t\t\treturn this;\n\n\t\t\tvar oldDates = this.dates.copy(),\n\t\t\t\tdates = [],\n\t\t\t\tfromArgs = false;\n\t\t\tif (arguments.length){\n\t\t\t\t$.each(arguments, $.proxy(function(i, date){\n\t\t\t\t\tif (date instanceof Date)\n\t\t\t\t\t\tdate = this._local_to_utc(date);\n\t\t\t\t\tdates.push(date);\n\t\t\t\t}, this));\n\t\t\t\tfromArgs = true;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdates = this.isInput\n\t\t\t\t\t\t? this.element.val()\n\t\t\t\t\t\t: this.element.data('date') || this.element.find('input').val();\n\t\t\t\tif (dates && this.o.multidate)\n\t\t\t\t\tdates = dates.split(this.o.multidateSeparator);\n\t\t\t\telse\n\t\t\t\t\tdates = [dates];\n\t\t\t\tdelete this.element.data().date;\n\t\t\t}\n\n\t\t\tdates = $.map(dates, $.proxy(function(date){\n\t\t\t\treturn DPGlobal.parseDate(date, this.o.format, this.o.language);\n\t\t\t}, this));\n\t\t\tdates = $.grep(dates, $.proxy(function(date){\n\t\t\t\treturn (\n\t\t\t\t\t!this.dateWithinRange(date) ||\n\t\t\t\t\t!date\n\t\t\t\t);\n\t\t\t}, this), true);\n\t\t\tthis.dates.replace(dates);\n\n\t\t\tif (this.dates.length)\n\t\t\t\tthis.viewDate = new Date(this.dates.get(-1));\n\t\t\telse if (this.viewDate < this.o.startDate)\n\t\t\t\tthis.viewDate = new Date(this.o.startDate);\n\t\t\telse if (this.viewDate > this.o.endDate)\n\t\t\t\tthis.viewDate = new Date(this.o.endDate);\n\t\t\telse\n\t\t\t\tthis.viewDate = this.o.defaultViewDate;\n\n\t\t\tif (fromArgs){\n\t\t\t\t// setting date by clicking\n\t\t\t\tthis.setValue();\n\t\t\t}\n\t\t\telse if (dates.length){\n\t\t\t\t// setting date by typing\n\t\t\t\tif (String(oldDates) !== String(this.dates))\n\t\t\t\t\tthis._trigger('changeDate');\n\t\t\t}\n\t\t\tif (!this.dates.length && oldDates.length)\n\t\t\t\tthis._trigger('clearDate');\n\n\t\t\tthis.fill();\n\t\t\tthis.element.change();\n\t\t\treturn this;\n\t\t},\n\n\t\tfillDow: function(){\n\t\t\tvar dowCnt = this.o.weekStart,\n\t\t\t\thtml = '<tr>';\n\t\t\tif (this.o.calendarWeeks){\n\t\t\t\tthis.picker.find('.datepicker-days .datepicker-switch')\n\t\t\t\t\t.attr('colspan', function(i, val){\n\t\t\t\t\t\treturn parseInt(val) + 1;\n\t\t\t\t\t});\n\t\t\t\thtml += '<th class=\"cw\">&#160;</th>';\n\t\t\t}\n\t\t\twhile (dowCnt < this.o.weekStart + 7){\n\t\t\t\thtml += '<th class=\"dow\">'+dates[this.o.language].daysMin[(dowCnt++)%7]+'</th>';\n\t\t\t}\n\t\t\thtml += '</tr>';\n\t\t\tthis.picker.find('.datepicker-days thead').append(html);\n\t\t},\n\n\t\tfillMonths: function(){\n\t\t\tvar html = '',\n\t\t\ti = 0;\n\t\t\twhile (i < 12){\n\t\t\t\thtml += '<span class=\"month\">'+dates[this.o.language].monthsShort[i++]+'</span>';\n\t\t\t}\n\t\t\tthis.picker.find('.datepicker-months td').html(html);\n\t\t},\n\n\t\tsetRange: function(range){\n\t\t\tif (!range || !range.length)\n\t\t\t\tdelete this.range;\n\t\t\telse\n\t\t\t\tthis.range = $.map(range, function(d){\n\t\t\t\t\treturn d.valueOf();\n\t\t\t\t});\n\t\t\tthis.fill();\n\t\t},\n\n\t\tgetClassNames: function(date){\n\t\t\tvar cls = [],\n\t\t\t\tyear = this.viewDate.getUTCFullYear(),\n\t\t\t\tmonth = this.viewDate.getUTCMonth(),\n\t\t\t\ttoday = new Date();\n\t\t\tif (date.getUTCFullYear() < year || (date.getUTCFullYear() === year && date.getUTCMonth() < month)){\n\t\t\t\tcls.push('old');\n\t\t\t}\n\t\t\telse if (date.getUTCFullYear() > year || (date.getUTCFullYear() === year && date.getUTCMonth() > month)){\n\t\t\t\tcls.push('new');\n\t\t\t}\n\t\t\tif (this.focusDate && date.valueOf() === this.focusDate.valueOf())\n\t\t\t\tcls.push('focused');\n\t\t\t// Compare internal UTC date with local today, not UTC today\n\t\t\tif (this.o.todayHighlight &&\n\t\t\t\tdate.getUTCFullYear() === today.getFullYear() &&\n\t\t\t\tdate.getUTCMonth() === today.getMonth() &&\n\t\t\t\tdate.getUTCDate() === today.getDate()){\n\t\t\t\tcls.push('today');\n\t\t\t}\n\t\t\tif (this.dates.contains(date) !== -1)\n\t\t\t\tcls.push('active');\n\t\t\tif (!this.dateWithinRange(date) || this.dateIsDisabled(date)){\n\t\t\t\tcls.push('disabled');\n\t\t\t}\n\t\t\tif ($.inArray(date.getUTCDay(), this.o.daysOfWeekHighlighted) !== -1){\n\t\t\t\tcls.push('highlighted');\n\t\t\t}\n\n\t\t\tif (this.range){\n\t\t\t\tif (date > this.range[0] && date < this.range[this.range.length-1]){\n\t\t\t\t\tcls.push('range');\n\t\t\t\t}\n\t\t\t\tif ($.inArray(date.valueOf(), this.range) !== -1){\n\t\t\t\t\tcls.push('selected');\n\t\t\t\t}\n\t\t\t\tif (date.valueOf() === this.range[0]){\n          cls.push('range-start');\n        }\n        if (date.valueOf() === this.range[this.range.length-1]){\n          cls.push('range-end');\n        }\n\t\t\t}\n\t\t\treturn cls;\n\t\t},\n\n\t\tfill: function(){\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getUTCFullYear(),\n\t\t\t\tmonth = d.getUTCMonth(),\n\t\t\t\tstartYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,\n\t\t\t\tstartMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,\n\t\t\t\tendYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,\n\t\t\t\tendMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,\n\t\t\t\ttodaytxt = dates[this.o.language].today || dates['en'].today || '',\n\t\t\t\tcleartxt = dates[this.o.language].clear || dates['en'].clear || '',\n\t\t\t\ttitleFormat = dates[this.o.language].titleFormat || dates['en'].titleFormat,\n\t\t\t\ttooltip;\n\t\t\tif (isNaN(year) || isNaN(month))\n\t\t\t\treturn;\n\t\t\tthis.picker.find('.datepicker-days thead .datepicker-switch')\n\t\t\t\t\t\t.text(DPGlobal.formatDate(new UTCDate(year, month), titleFormat, this.o.language));\n\t\t\tthis.picker.find('tfoot .today')\n\t\t\t\t\t\t.text(todaytxt)\n\t\t\t\t\t\t.toggle(this.o.todayBtn !== false);\n\t\t\tthis.picker.find('tfoot .clear')\n\t\t\t\t\t\t.text(cleartxt)\n\t\t\t\t\t\t.toggle(this.o.clearBtn !== false);\n\t\t\tthis.picker.find('thead .datepicker-title')\n\t\t\t\t\t\t.text(this.o.title)\n\t\t\t\t\t\t.toggle(this.o.title !== '');\n\t\t\tthis.updateNavArrows();\n\t\t\tthis.fillMonths();\n\t\t\tvar prevMonth = UTCDate(year, month-1, 28),\n\t\t\t\tday = DPGlobal.getDaysInMonth(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth());\n\t\t\tprevMonth.setUTCDate(day);\n\t\t\tprevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.o.weekStart + 7)%7);\n\t\t\tvar nextMonth = new Date(prevMonth);\n\t\t\tif (prevMonth.getUTCFullYear() < 100){\n        nextMonth.setUTCFullYear(prevMonth.getUTCFullYear());\n      }\n\t\t\tnextMonth.setUTCDate(nextMonth.getUTCDate() + 42);\n\t\t\tnextMonth = nextMonth.valueOf();\n\t\t\tvar html = [];\n\t\t\tvar clsName;\n\t\t\twhile (prevMonth.valueOf() < nextMonth){\n\t\t\t\tif (prevMonth.getUTCDay() === this.o.weekStart){\n\t\t\t\t\thtml.push('<tr>');\n\t\t\t\t\tif (this.o.calendarWeeks){\n\t\t\t\t\t\t// ISO 8601: First week contains first thursday.\n\t\t\t\t\t\t// ISO also states week starts on Monday, but we can be more abstract here.\n\t\t\t\t\t\tvar\n\t\t\t\t\t\t\t// Start of current week: based on weekstart/current date\n\t\t\t\t\t\t\tws = new Date(+prevMonth + (this.o.weekStart - prevMonth.getUTCDay() - 7) % 7 * 864e5),\n\t\t\t\t\t\t\t// Thursday of this week\n\t\t\t\t\t\t\tth = new Date(Number(ws) + (7 + 4 - ws.getUTCDay()) % 7 * 864e5),\n\t\t\t\t\t\t\t// First Thursday of year, year from thursday\n\t\t\t\t\t\t\tyth = new Date(Number(yth = UTCDate(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay())%7*864e5),\n\t\t\t\t\t\t\t// Calendar week: ms between thursdays, div ms per day, div 7 days\n\t\t\t\t\t\t\tcalWeek =  (th - yth) / 864e5 / 7 + 1;\n\t\t\t\t\t\thtml.push('<td class=\"cw\">'+ calWeek +'</td>');\n\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tclsName = this.getClassNames(prevMonth);\n\t\t\t\tclsName.push('day');\n\n\t\t\t\tif (this.o.beforeShowDay !== $.noop){\n\t\t\t\t\tvar before = this.o.beforeShowDay(this._utc_to_local(prevMonth));\n\t\t\t\t\tif (before === undefined)\n\t\t\t\t\t\tbefore = {};\n\t\t\t\t\telse if (typeof(before) === 'boolean')\n\t\t\t\t\t\tbefore = {enabled: before};\n\t\t\t\t\telse if (typeof(before) === 'string')\n\t\t\t\t\t\tbefore = {classes: before};\n\t\t\t\t\tif (before.enabled === false)\n\t\t\t\t\t\tclsName.push('disabled');\n\t\t\t\t\tif (before.classes)\n\t\t\t\t\t\tclsName = clsName.concat(before.classes.split(/\\s+/));\n\t\t\t\t\tif (before.tooltip)\n\t\t\t\t\t\ttooltip = before.tooltip;\n\t\t\t\t}\n\n\t\t\t\tclsName = $.unique(clsName);\n\t\t\t\thtml.push('<td class=\"'+clsName.join(' ')+'\"' + (tooltip ? ' title=\"'+tooltip+'\"' : '') + '>'+prevMonth.getUTCDate() + '</td>');\n\t\t\t\ttooltip = null;\n\t\t\t\tif (prevMonth.getUTCDay() === this.o.weekEnd){\n\t\t\t\t\thtml.push('</tr>');\n\t\t\t\t}\n\t\t\t\tprevMonth.setUTCDate(prevMonth.getUTCDate()+1);\n\t\t\t}\n\t\t\tthis.picker.find('.datepicker-days tbody').empty().append(html.join(''));\n\n\t\t\tvar monthsTitle = dates[this.o.language].monthsTitle || dates['en'].monthsTitle || 'Months';\n\t\t\tvar months = this.picker.find('.datepicker-months')\n\t\t\t\t\t\t.find('.datepicker-switch')\n\t\t\t\t\t\t\t.text(this.o.maxViewMode < 2 ? monthsTitle : year)\n\t\t\t\t\t\t\t.end()\n\t\t\t\t\t\t.find('span').removeClass('active');\n\n\t\t\t$.each(this.dates, function(i, d){\n\t\t\t\tif (d.getUTCFullYear() === year)\n\t\t\t\t\tmonths.eq(d.getUTCMonth()).addClass('active');\n\t\t\t});\n\n\t\t\tif (year < startYear || year > endYear){\n\t\t\t\tmonths.addClass('disabled');\n\t\t\t}\n\t\t\tif (year === startYear){\n\t\t\t\tmonths.slice(0, startMonth).addClass('disabled');\n\t\t\t}\n\t\t\tif (year === endYear){\n\t\t\t\tmonths.slice(endMonth+1).addClass('disabled');\n\t\t\t}\n\n\t\t\tif (this.o.beforeShowMonth !== $.noop){\n\t\t\t\tvar that = this;\n\t\t\t\t$.each(months, function(i, month){\n\t\t\t\t\tif (!$(month).hasClass('disabled')) {\n\t\t\t\t\t\tvar moDate = new Date(year, i, 1);\n\t\t\t\t\t\tvar before = that.o.beforeShowMonth(moDate);\n\t\t\t\t\t\tif (before === false)\n\t\t\t\t\t\t\t$(month).addClass('disabled');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thtml = '';\n\t\t\tyear = parseInt(year/10, 10) * 10;\n\t\t\tvar yearCont = this.picker.find('.datepicker-years')\n\t\t\t\t\t\t\t\t.find('.datepicker-switch')\n\t\t\t\t\t\t\t\t\t.text(year + '-' + (year + 9))\n\t\t\t\t\t\t\t\t\t.end()\n\t\t\t\t\t\t\t\t.find('td');\n\t\t\tyear -= 1;\n\t\t\tvar years = $.map(this.dates, function(d){\n\t\t\t\t\treturn d.getUTCFullYear();\n\t\t\t\t}),\n\t\t\t\tclasses;\n\t\t\tfor (var i = -1; i < 11; i++){\n\t\t\t\tclasses = ['year'];\n\t\t\t\ttooltip = null;\n\n\t\t\t\tif (i === -1)\n\t\t\t\t\tclasses.push('old');\n\t\t\t\telse if (i === 10)\n\t\t\t\t\tclasses.push('new');\n\t\t\t\tif ($.inArray(year, years) !== -1)\n\t\t\t\t\tclasses.push('active');\n\t\t\t\tif (year < startYear || year > endYear)\n\t\t\t\t\tclasses.push('disabled');\n\n\t\t\t\tif (this.o.beforeShowYear !== $.noop) {\n\t\t\t\t\tvar yrBefore = this.o.beforeShowYear(new Date(year, 0, 1));\n\t\t\t\t\tif (yrBefore === undefined)\n\t\t\t\t\t\tyrBefore = {};\n\t\t\t\t\telse if (typeof(yrBefore) === 'boolean')\n\t\t\t\t\t\tyrBefore = {enabled: yrBefore};\n\t\t\t\t\telse if (typeof(yrBefore) === 'string')\n\t\t\t\t\t\tyrBefore = {classes: yrBefore};\n\t\t\t\t\tif (yrBefore.enabled === false)\n\t\t\t\t\t\tclasses.push('disabled');\n\t\t\t\t\tif (yrBefore.classes)\n\t\t\t\t\t\tclasses = classes.concat(yrBefore.classes.split(/\\s+/));\n\t\t\t\t\tif (yrBefore.tooltip)\n\t\t\t\t\t\ttooltip = yrBefore.tooltip;\n\t\t\t\t}\n\n\t\t\t\thtml += '<span class=\"' + classes.join(' ') + '\"' + (tooltip ? ' title=\"'+tooltip+'\"' : '') + '>' + year + '</span>';\n\t\t\t\tyear += 1;\n\t\t\t}\n\t\t\tyearCont.html(html);\n\t\t},\n\n\t\tupdateNavArrows: function(){\n\t\t\tif (!this._allow_update)\n\t\t\t\treturn;\n\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getUTCFullYear(),\n\t\t\t\tmonth = d.getUTCMonth();\n\t\t\tswitch (this.viewMode){\n\t\t\t\tcase 0:\n\t\t\t\t\tif (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear() && month <= this.o.startDate.getUTCMonth()){\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'hidden'});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tif (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear() && month >= this.o.endDate.getUTCMonth()){\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'hidden'});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\tcase 2:\n\t\t\t\t\tif (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear() || this.o.maxViewMode < 2){\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'hidden'});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tif (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear() || this.o.maxViewMode < 2){\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'hidden'});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\n\t\tclick: function(e){\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\tvar target = $(e.target).closest('span, td, th'),\n\t\t\t\tyear, month, day;\n\t\t\tif (target.length === 1){\n\t\t\t\tswitch (target[0].nodeName.toLowerCase()){\n\t\t\t\t\tcase 'th':\n\t\t\t\t\t\tswitch (target[0].className){\n\t\t\t\t\t\t\tcase 'datepicker-switch':\n\t\t\t\t\t\t\t\tthis.showMode(1);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'prev':\n\t\t\t\t\t\t\tcase 'next':\n\t\t\t\t\t\t\t\tvar dir = DPGlobal.modes[this.viewMode].navStep * (target[0].className === 'prev' ? -1 : 1);\n\t\t\t\t\t\t\t\tswitch (this.viewMode){\n\t\t\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\t\t\tthis.viewDate = this.moveMonth(this.viewDate, dir);\n\t\t\t\t\t\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t\t\tthis.viewDate = this.moveYear(this.viewDate, dir);\n\t\t\t\t\t\t\t\t\t\tif (this.viewMode === 1)\n\t\t\t\t\t\t\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'today':\n\t\t\t\t\t\t\t\tthis.showMode(-2);\n\t\t\t\t\t\t\t\tvar which = this.o.todayBtn === 'linked' ? null : 'view';\n\t\t\t\t\t\t\t\tthis._setDate(UTCToday(), which);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'clear':\n\t\t\t\t\t\t\t\tthis.clearDates();\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'span':\n\t\t\t\t\t\tif (!target.hasClass('disabled')){\n\t\t\t\t\t\t\tthis.viewDate.setUTCDate(1);\n\t\t\t\t\t\t\tif (target.hasClass('month')){\n\t\t\t\t\t\t\t\tday = 1;\n\t\t\t\t\t\t\t\tmonth = target.parent().find('span').index(target);\n\t\t\t\t\t\t\t\tyear = this.viewDate.getUTCFullYear();\n\t\t\t\t\t\t\t\tthis.viewDate.setUTCMonth(month);\n\t\t\t\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n\t\t\t\t\t\t\t\tif (this.o.minViewMode === 1){\n\t\t\t\t\t\t\t\t\tthis._setDate(UTCDate(year, month, day));\n\t\t\t\t\t\t\t\t\tthis.showMode();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tthis.showMode(-1);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tday = 1;\n\t\t\t\t\t\t\t\tmonth = 0;\n\t\t\t\t\t\t\t\tyear = parseInt(target.text(), 10)||0;\n\t\t\t\t\t\t\t\tthis.viewDate.setUTCFullYear(year);\n\t\t\t\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n\t\t\t\t\t\t\t\tif (this.o.minViewMode === 2){\n\t\t\t\t\t\t\t\t\tthis._setDate(UTCDate(year, month, day));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.showMode(-1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'td':\n\t\t\t\t\t\tif (target.hasClass('day') && !target.hasClass('disabled')){\n\t\t\t\t\t\t\tday = parseInt(target.text(), 10)||1;\n\t\t\t\t\t\t\tyear = this.viewDate.getUTCFullYear();\n\t\t\t\t\t\t\tmonth = this.viewDate.getUTCMonth();\n\t\t\t\t\t\t\tif (target.hasClass('old')){\n\t\t\t\t\t\t\t\tif (month === 0){\n\t\t\t\t\t\t\t\t\tmonth = 11;\n\t\t\t\t\t\t\t\t\tyear -= 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tmonth -= 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (target.hasClass('new')){\n\t\t\t\t\t\t\t\tif (month === 11){\n\t\t\t\t\t\t\t\t\tmonth = 0;\n\t\t\t\t\t\t\t\t\tyear += 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tmonth += 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis._setDate(UTCDate(year, month, day));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.picker.is(':visible') && this._focused_from){\n\t\t\t\t$(this._focused_from).focus();\n\t\t\t}\n\t\t\tdelete this._focused_from;\n\t\t},\n\n\t\t_toggle_multidate: function(date){\n\t\t\tvar ix = this.dates.contains(date);\n\t\t\tif (!date){\n\t\t\t\tthis.dates.clear();\n\t\t\t}\n\n\t\t\tif (ix !== -1){\n\t\t\t\tif (this.o.multidate === true || this.o.multidate > 1 || this.o.toggleActive){\n\t\t\t\t\tthis.dates.remove(ix);\n\t\t\t\t}\n\t\t\t} else if (this.o.multidate === false) {\n\t\t\t\tthis.dates.clear();\n\t\t\t\tthis.dates.push(date);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.dates.push(date);\n\t\t\t}\n\n\t\t\tif (typeof this.o.multidate === 'number')\n\t\t\t\twhile (this.dates.length > this.o.multidate)\n\t\t\t\t\tthis.dates.remove(0);\n\t\t},\n\n\t\t_setDate: function(date, which){\n\t\t\tif (!which || which === 'date')\n\t\t\t\tthis._toggle_multidate(date && new Date(date));\n\t\t\tif (!which || which === 'view')\n\t\t\t\tthis.viewDate = date && new Date(date);\n\n\t\t\tthis.fill();\n\t\t\tthis.setValue();\n\t\t\tif (!which || which !== 'view') {\n\t\t\t\tthis._trigger('changeDate');\n\t\t\t}\n\t\t\tvar element;\n\t\t\tif (this.isInput){\n\t\t\t\telement = this.element;\n\t\t\t}\n\t\t\telse if (this.component){\n\t\t\t\telement = this.element.find('input');\n\t\t\t}\n\t\t\tif (element){\n\t\t\t\telement.change();\n\t\t\t}\n\t\t\tif (this.o.autoclose && (!which || which === 'date')){\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t},\n\n\t\tmoveDay: function(date, dir){\n\t\t\tvar newDate = new Date(date);\n\t\t\tnewDate.setUTCDate(date.getUTCDate() + dir);\n\n\t\t\treturn newDate;\n\t\t},\n\n\t\tmoveWeek: function(date, dir){\n\t\t\treturn this.moveDay(date, dir * 7);\n\t\t},\n\n\t\tmoveMonth: function(date, dir){\n\t\t\tif (!isValidDate(date))\n\t\t\t\treturn this.o.defaultViewDate;\n\t\t\tif (!dir)\n\t\t\t\treturn date;\n\t\t\tvar new_date = new Date(date.valueOf()),\n\t\t\t\tday = new_date.getUTCDate(),\n\t\t\t\tmonth = new_date.getUTCMonth(),\n\t\t\t\tmag = Math.abs(dir),\n\t\t\t\tnew_month, test;\n\t\t\tdir = dir > 0 ? 1 : -1;\n\t\t\tif (mag === 1){\n\t\t\t\ttest = dir === -1\n\t\t\t\t\t// If going back one month, make sure month is not current month\n\t\t\t\t\t// (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)\n\t\t\t\t\t? function(){\n\t\t\t\t\t\treturn new_date.getUTCMonth() === month;\n\t\t\t\t\t}\n\t\t\t\t\t// If going forward one month, make sure month is as expected\n\t\t\t\t\t// (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)\n\t\t\t\t\t: function(){\n\t\t\t\t\t\treturn new_date.getUTCMonth() !== new_month;\n\t\t\t\t\t};\n\t\t\t\tnew_month = month + dir;\n\t\t\t\tnew_date.setUTCMonth(new_month);\n\t\t\t\t// Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11\n\t\t\t\tif (new_month < 0 || new_month > 11)\n\t\t\t\t\tnew_month = (new_month + 12) % 12;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// For magnitudes >1, move one month at a time...\n\t\t\t\tfor (var i=0; i < mag; i++)\n\t\t\t\t\t// ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...\n\t\t\t\t\tnew_date = this.moveMonth(new_date, dir);\n\t\t\t\t// ...then reset the day, keeping it in the new month\n\t\t\t\tnew_month = new_date.getUTCMonth();\n\t\t\t\tnew_date.setUTCDate(day);\n\t\t\t\ttest = function(){\n\t\t\t\t\treturn new_month !== new_date.getUTCMonth();\n\t\t\t\t};\n\t\t\t}\n\t\t\t// Common date-resetting loop -- if date is beyond end of month, make it\n\t\t\t// end of month\n\t\t\twhile (test()){\n\t\t\t\tnew_date.setUTCDate(--day);\n\t\t\t\tnew_date.setUTCMonth(new_month);\n\t\t\t}\n\t\t\treturn new_date;\n\t\t},\n\n\t\tmoveYear: function(date, dir){\n\t\t\treturn this.moveMonth(date, dir*12);\n\t\t},\n\n\t\tmoveAvailableDate: function(date, dir, fn){\n\t\t\tdo {\n\t\t\t\tdate = this[fn](date, dir);\n\n\t\t\t\tif (!this.dateWithinRange(date))\n\t\t\t\t\treturn false;\n\n\t\t\t\tfn = 'moveDay';\n\t\t\t}\n\t\t\twhile (this.dateIsDisabled(date));\n\n\t\t\treturn date;\n\t\t},\n\n\t\tweekOfDateIsDisabled: function(date){\n\t\t\treturn $.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1;\n\t\t},\n\n\t\tdateIsDisabled: function(date){\n\t\t\treturn (\n\t\t\t\tthis.weekOfDateIsDisabled(date) ||\n\t\t\t\t$.grep(this.o.datesDisabled, function(d){\n\t\t\t\t\treturn isUTCEquals(date, d);\n\t\t\t\t}).length > 0\n\t\t\t);\n\t\t},\n\n\t\tdateWithinRange: function(date){\n\t\t\treturn date >= this.o.startDate && date <= this.o.endDate;\n\t\t},\n\n\t\tkeydown: function(e){\n\t\t\tif (!this.picker.is(':visible')){\n\t\t\t\tif (e.keyCode === 40 || e.keyCode === 27) { // allow down to re-show picker\n\t\t\t\t\tthis.show();\n\t\t\t\t\te.stopPropagation();\n        }\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar dateChanged = false,\n\t\t\t\tdir, newViewDate,\n\t\t\t\tfocusDate = this.focusDate || this.viewDate;\n\t\t\tswitch (e.keyCode){\n\t\t\t\tcase 27: // escape\n\t\t\t\t\tif (this.focusDate){\n\t\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.hide();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 37: // left\n\t\t\t\tcase 38: // up\n\t\t\t\tcase 39: // right\n\t\t\t\tcase 40: // down\n\t\t\t\t\tif (!this.o.keyboardNavigation || this.o.daysOfWeekDisabled.length === 7)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdir = e.keyCode === 37 || e.keyCode === 38 ? -1 : 1;\n\t\t\t\t\tif (e.ctrlKey){\n\t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear');\n\n\t\t\t\t\t\tif (newViewDate)\n\t\t\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n\t\t\t\t\t}\n\t\t\t\t\telse if (e.shiftKey){\n\t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth');\n\n\t\t\t\t\t\tif (newViewDate)\n\t\t\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n\t\t\t\t\t}\n\t\t\t\t\telse if (e.keyCode === 37 || e.keyCode === 39){\n\t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveDay');\n\t\t\t\t\t}\n\t\t\t\t\telse if (!this.weekOfDateIsDisabled(focusDate)){\n\t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveWeek');\n\t\t\t\t\t}\n\t\t\t\t\tif (newViewDate){\n\t\t\t\t\t\tthis.focusDate = this.viewDate = newViewDate;\n\t\t\t\t\t\tthis.setValue();\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 13: // enter\n\t\t\t\t\tif (!this.o.forceParse)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tfocusDate = this.focusDate || this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tif (this.o.keyboardNavigation) {\n\t\t\t\t\t\tthis._toggle_multidate(focusDate);\n\t\t\t\t\t\tdateChanged = true;\n\t\t\t\t\t}\n\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tthis.setValue();\n\t\t\t\t\tthis.fill();\n\t\t\t\t\tif (this.picker.is(':visible')){\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\tif (this.o.autoclose)\n\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 9: // tab\n\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tthis.fill();\n\t\t\t\t\tthis.hide();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (dateChanged){\n\t\t\t\tif (this.dates.length)\n\t\t\t\t\tthis._trigger('changeDate');\n\t\t\t\telse\n\t\t\t\t\tthis._trigger('clearDate');\n\t\t\t\tvar element;\n\t\t\t\tif (this.isInput){\n\t\t\t\t\telement = this.element;\n\t\t\t\t}\n\t\t\t\telse if (this.component){\n\t\t\t\t\telement = this.element.find('input');\n\t\t\t\t}\n\t\t\t\tif (element){\n\t\t\t\t\telement.change();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tshowMode: function(dir){\n\t\t\tif (dir){\n\t\t\t\tthis.viewMode = Math.max(this.o.minViewMode, Math.min(this.o.maxViewMode, this.viewMode + dir));\n\t\t\t}\n\t\t\tthis.picker\n\t\t\t\t.children('div')\n\t\t\t\t.hide()\n\t\t\t\t.filter('.datepicker-' + DPGlobal.modes[this.viewMode].clsName)\n\t\t\t\t\t.show();\n\t\t\tthis.updateNavArrows();\n\t\t}\n\t};\n\n\tvar DateRangePicker = function(element, options){\n\t\t$(element).data('datepicker', this);\n\t\tthis.element = $(element);\n\t\tthis.inputs = $.map(options.inputs, function(i){\n\t\t\treturn i.jquery ? i[0] : i;\n\t\t});\n\t\tdelete options.inputs;\n\n\t\tdatepickerPlugin.call($(this.inputs), options)\n\t\t\t.on('changeDate', $.proxy(this.dateUpdated, this));\n\n\t\tthis.pickers = $.map(this.inputs, function(i){\n\t\t\treturn $(i).data('datepicker');\n\t\t});\n\t\tthis.updateDates();\n\t};\n\tDateRangePicker.prototype = {\n\t\tupdateDates: function(){\n\t\t\tthis.dates = $.map(this.pickers, function(i){\n\t\t\t\treturn i.getUTCDate();\n\t\t\t});\n\t\t\tthis.updateRanges();\n\t\t},\n\t\tupdateRanges: function(){\n\t\t\tvar range = $.map(this.dates, function(d){\n\t\t\t\treturn d.valueOf();\n\t\t\t});\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tp.setRange(range);\n\t\t\t});\n\t\t},\n\t\tdateUpdated: function(e){\n\t\t\t// `this.updating` is a workaround for preventing infinite recursion\n\t\t\t// between `changeDate` triggering and `setUTCDate` calling.  Until\n\t\t\t// there is a better mechanism.\n\t\t\tif (this.updating)\n\t\t\t\treturn;\n\t\t\tthis.updating = true;\n\n\t\t\tvar dp = $(e.target).data('datepicker');\n\n\t\t\tif (typeof(dp) === \"undefined\") {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar new_date = dp.getUTCDate(),\n\t\t\t\ti = $.inArray(e.target, this.inputs),\n\t\t\t\tj = i - 1,\n\t\t\t\tk = i + 1,\n\t\t\t\tl = this.inputs.length;\n\t\t\tif (i === -1)\n\t\t\t\treturn;\n\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tif (!p.getUTCDate())\n\t\t\t\t\tp.setUTCDate(new_date);\n\t\t\t});\n\n\t\t\tif (new_date < this.dates[j]){\n\t\t\t\t// Date being moved earlier/left\n\t\t\t\twhile (j >= 0 && new_date < this.dates[j]){\n\t\t\t\t\tthis.pickers[j--].setUTCDate(new_date);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (new_date > this.dates[k]){\n\t\t\t\t// Date being moved later/right\n\t\t\t\twhile (k < l && new_date > this.dates[k]){\n\t\t\t\t\tthis.pickers[k++].setUTCDate(new_date);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.updateDates();\n\n\t\t\tdelete this.updating;\n\t\t},\n\t\tremove: function(){\n\t\t\t$.map(this.pickers, function(p){ p.remove(); });\n\t\t\tdelete this.element.data().datepicker;\n\t\t}\n\t};\n\n\tfunction opts_from_el(el, prefix){\n\t\t// Derive options from element data-attrs\n\t\tvar data = $(el).data(),\n\t\t\tout = {}, inkey,\n\t\t\treplace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])');\n\t\tprefix = new RegExp('^' + prefix.toLowerCase());\n\t\tfunction re_lower(_,a){\n\t\t\treturn a.toLowerCase();\n\t\t}\n\t\tfor (var key in data)\n\t\t\tif (prefix.test(key)){\n\t\t\t\tinkey = key.replace(replace, re_lower);\n\t\t\t\tout[inkey] = data[key];\n\t\t\t}\n\t\treturn out;\n\t}\n\n\tfunction opts_from_locale(lang){\n\t\t// Derive options from locale plugins\n\t\tvar out = {};\n\t\t// Check if \"de-DE\" style date is available, if not language should\n\t\t// fallback to 2 letter code eg \"de\"\n\t\tif (!dates[lang]){\n\t\t\tlang = lang.split('-')[0];\n\t\t\tif (!dates[lang])\n\t\t\t\treturn;\n\t\t}\n\t\tvar d = dates[lang];\n\t\t$.each(locale_opts, function(i,k){\n\t\t\tif (k in d)\n\t\t\t\tout[k] = d[k];\n\t\t});\n\t\treturn out;\n\t}\n\n\tvar old = $.fn.datepicker;\n\tvar datepickerPlugin = function(option){\n\t\tvar args = Array.apply(null, arguments);\n\t\targs.shift();\n\t\tvar internal_return;\n\t\tthis.each(function(){\n\t\t\tvar $this = $(this),\n\t\t\t\tdata = $this.data('datepicker'),\n\t\t\t\toptions = typeof option === 'object' && option;\n\t\t\tif (!data){\n\t\t\t\tvar elopts = opts_from_el(this, 'date'),\n\t\t\t\t\t// Preliminary otions\n\t\t\t\t\txopts = $.extend({}, defaults, elopts, options),\n\t\t\t\t\tlocopts = opts_from_locale(xopts.language),\n\t\t\t\t\t// Options priority: js args, data-attrs, locales, defaults\n\t\t\t\t\topts = $.extend({}, defaults, locopts, elopts, options);\n\t\t\t\tif ($this.hasClass('input-daterange') || opts.inputs){\n\t\t\t\t\t$.extend(opts, {\n\t\t\t\t\t\tinputs: opts.inputs || $this.find('input').toArray()\n\t\t\t\t\t});\n\t\t\t\t\tdata = new DateRangePicker(this, opts);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdata = new Datepicker(this, opts);\n\t\t\t\t}\n\t\t\t\t$this.data('datepicker', data);\n\t\t\t}\n\t\t\tif (typeof option === 'string' && typeof data[option] === 'function'){\n\t\t\t\tinternal_return = data[option].apply(data, args);\n\t\t\t}\n\t\t});\n\n\t\tif (\n\t\t\tinternal_return === undefined ||\n\t\t\tinternal_return instanceof Datepicker ||\n\t\t\tinternal_return instanceof DateRangePicker\n\t\t)\n\t\t\treturn this;\n\n\t\tif (this.length > 1)\n\t\t\tthrow new Error('Using only allowed for the collection of a single element (' + option + ' function)');\n\t\telse\n\t\t\treturn internal_return;\n\t};\n\t$.fn.datepicker = datepickerPlugin;\n\n\tvar defaults = $.fn.datepicker.defaults = {\n\t\tautoclose: false,\n\t\tbeforeShowDay: $.noop,\n\t\tbeforeShowMonth: $.noop,\n\t\tbeforeShowYear: $.noop,\n\t\tcalendarWeeks: false,\n\t\tclearBtn: false,\n\t\ttoggleActive: false,\n\t\tdaysOfWeekDisabled: [],\n\t\tdaysOfWeekHighlighted: [],\n\t\tdatesDisabled: [],\n\t\tendDate: Infinity,\n\t\tforceParse: true,\n\t\tformat: 'mm/dd/yyyy',\n\t\tkeyboardNavigation: true,\n\t\tlanguage: 'en',\n\t\tminViewMode: 0,\n\t\tmaxViewMode: 2,\n\t\tmultidate: false,\n\t\tmultidateSeparator: ',',\n\t\torientation: \"auto\",\n\t\trtl: false,\n\t\tstartDate: -Infinity,\n\t\tstartView: 0,\n\t\ttodayBtn: false,\n\t\ttodayHighlight: false,\n\t\tweekStart: 0,\n\t\tdisableTouchKeyboard: false,\n\t\tenableOnReadonly: true,\n\t\tshowOnFocus: true,\n\t\tzIndexOffset: 10,\n\t\tcontainer: 'body',\n\t\timmediateUpdates: false,\n\t\ttitle: ''\n\t};\n\tvar locale_opts = $.fn.datepicker.locale_opts = [\n\t\t'format',\n\t\t'rtl',\n\t\t'weekStart'\n\t];\n\t$.fn.datepicker.Constructor = Datepicker;\n\tvar dates = $.fn.datepicker.dates = {\n\t\ten: {\n\t\t\tdays: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n\t\t\tdaysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n\t\t\tdaysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n\t\t\tmonths: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\t\ttoday: \"Today\",\n\t\t\tclear: \"Clear\",\n\t\t\ttitleFormat: \"MM yyyy\"\n\t\t}\n\t};\n\n\tvar DPGlobal = {\n\t\tmodes: [\n\t\t\t{\n\t\t\t\tclsName: 'days',\n\t\t\t\tnavFnc: 'Month',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tclsName: 'months',\n\t\t\t\tnavFnc: 'FullYear',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tclsName: 'years',\n\t\t\t\tnavFnc: 'FullYear',\n\t\t\t\tnavStep: 10\n\t\t}],\n\t\tisLeapYear: function(year){\n\t\t\treturn (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0));\n\t\t},\n\t\tgetDaysInMonth: function(year, month){\n\t\t\treturn [31, (DPGlobal.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];\n\t\t},\n\t\tvalidParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g,\n\t\tnonpunctuation: /[^ -\\/:-@\\[\\u3400-\\u9fff-`{-~\\t\\n\\r]+/g,\n\t\tparseFormat: function(format){\n\t\t\tif (typeof format.toValue === 'function' && typeof format.toDisplay === 'function')\n                return format;\n            // IE treats \\0 as a string end in inputs (truncating the value),\n\t\t\t// so it's a bad format delimiter, anyway\n\t\t\tvar separators = format.replace(this.validParts, '\\0').split('\\0'),\n\t\t\t\tparts = format.match(this.validParts);\n\t\t\tif (!separators || !separators.length || !parts || parts.length === 0){\n\t\t\t\tthrow new Error(\"Invalid date format.\");\n\t\t\t}\n\t\t\treturn {separators: separators, parts: parts};\n\t\t},\n\t\tparseDate: function(date, format, language){\n\t\t\tif (!date)\n\t\t\t\treturn undefined;\n\t\t\tif (date instanceof Date)\n\t\t\t\treturn date;\n\t\t\tif (typeof format === 'string')\n\t\t\t\tformat = DPGlobal.parseFormat(format);\n\t\t\tif (format.toValue)\n                return format.toValue(date, format, language);\n            var part_re = /([\\-+]\\d+)([dmwy])/,\n\t\t\t\tparts = date.match(/([\\-+]\\d+)([dmwy])/g),\n\t\t\t\tfn_map = {\n\t\t\t\t\td: 'moveDay',\n\t\t\t\t\tm: 'moveMonth',\n\t\t\t\t\tw: 'moveWeek',\n\t\t\t\t\ty: 'moveYear'\n\t\t\t\t},\n\t\t\t\tpart, dir, i, fn;\n\t\t\tif (/^[\\-+]\\d+[dmwy]([\\s,]+[\\-+]\\d+[dmwy])*$/.test(date)){\n\t\t\t\tdate = new Date();\n\t\t\t\tfor (i=0; i < parts.length; i++){\n\t\t\t\t\tpart = part_re.exec(parts[i]);\n\t\t\t\t\tdir = parseInt(part[1]);\n\t\t\t\t\tfn = fn_map[part[2]];\n\t\t\t\t\tdate = Datepicker.prototype[fn](date, dir);\n\t\t\t\t}\n\t\t\t\treturn UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n\t\t\t}\n\t\t\tparts = date && date.match(this.nonpunctuation) || [];\n\t\t\tdate = new Date();\n\t\t\tvar parsed = {},\n\t\t\t\tsetters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'],\n\t\t\t\tsetters_map = {\n\t\t\t\t\tyyyy: function(d,v){\n\t\t\t\t\t\treturn d.setUTCFullYear(v);\n\t\t\t\t\t},\n\t\t\t\t\tyy: function(d,v){\n\t\t\t\t\t\treturn d.setUTCFullYear(2000+v);\n\t\t\t\t\t},\n\t\t\t\t\tm: function(d,v){\n\t\t\t\t\t\tif (isNaN(d))\n\t\t\t\t\t\t\treturn d;\n\t\t\t\t\t\tv -= 1;\n\t\t\t\t\t\twhile (v < 0) v += 12;\n\t\t\t\t\t\tv %= 12;\n\t\t\t\t\t\td.setUTCMonth(v);\n\t\t\t\t\t\twhile (d.getUTCMonth() !== v)\n\t\t\t\t\t\t\td.setUTCDate(d.getUTCDate()-1);\n\t\t\t\t\t\treturn d;\n\t\t\t\t\t},\n\t\t\t\t\td: function(d,v){\n\t\t\t\t\t\treturn d.setUTCDate(v);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tval, filtered;\n\t\t\tsetters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];\n\t\t\tsetters_map['dd'] = setters_map['d'];\n\t\t\tdate = UTCToday();\n\t\t\tvar fparts = format.parts.slice();\n\t\t\t// Remove noop parts\n\t\t\tif (parts.length !== fparts.length){\n\t\t\t\tfparts = $(fparts).filter(function(i,p){\n\t\t\t\t\treturn $.inArray(p, setters_order) !== -1;\n\t\t\t\t}).toArray();\n\t\t\t}\n\t\t\t// Process remainder\n\t\t\tfunction match_part(){\n\t\t\t\tvar m = this.slice(0, parts[i].length),\n\t\t\t\t\tp = parts[i].slice(0, m.length);\n\t\t\t\treturn m.toLowerCase() === p.toLowerCase();\n\t\t\t}\n\t\t\tif (parts.length === fparts.length){\n\t\t\t\tvar cnt;\n\t\t\t\tfor (i=0, cnt = fparts.length; i < cnt; i++){\n\t\t\t\t\tval = parseInt(parts[i], 10);\n\t\t\t\t\tpart = fparts[i];\n\t\t\t\t\tif (isNaN(val)){\n\t\t\t\t\t\tswitch (part){\n\t\t\t\t\t\t\tcase 'MM':\n\t\t\t\t\t\t\t\tfiltered = $(dates[language].months).filter(match_part);\n\t\t\t\t\t\t\t\tval = $.inArray(filtered[0], dates[language].months) + 1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'M':\n\t\t\t\t\t\t\t\tfiltered = $(dates[language].monthsShort).filter(match_part);\n\t\t\t\t\t\t\t\tval = $.inArray(filtered[0], dates[language].monthsShort) + 1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tparsed[part] = val;\n\t\t\t\t}\n\t\t\t\tvar _date, s;\n\t\t\t\tfor (i=0; i < setters_order.length; i++){\n\t\t\t\t\ts = setters_order[i];\n\t\t\t\t\tif (s in parsed && !isNaN(parsed[s])){\n\t\t\t\t\t\t_date = new Date(date);\n\t\t\t\t\t\tsetters_map[s](_date, parsed[s]);\n\t\t\t\t\t\tif (!isNaN(_date))\n\t\t\t\t\t\t\tdate = _date;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn date;\n\t\t},\n\t\tformatDate: function(date, format, language){\n\t\t\tif (!date)\n\t\t\t\treturn '';\n\t\t\tif (typeof format === 'string')\n\t\t\t\tformat = DPGlobal.parseFormat(format);\n\t\t\tif (format.toDisplay)\n                return format.toDisplay(date, format, language);\n            var val = {\n\t\t\t\td: date.getUTCDate(),\n\t\t\t\tD: dates[language].daysShort[date.getUTCDay()],\n\t\t\t\tDD: dates[language].days[date.getUTCDay()],\n\t\t\t\tm: date.getUTCMonth() + 1,\n\t\t\t\tM: dates[language].monthsShort[date.getUTCMonth()],\n\t\t\t\tMM: dates[language].months[date.getUTCMonth()],\n\t\t\t\tyy: date.getUTCFullYear().toString().substring(2),\n\t\t\t\tyyyy: date.getUTCFullYear()\n\t\t\t};\n\t\t\tval.dd = (val.d < 10 ? '0' : '') + val.d;\n\t\t\tval.mm = (val.m < 10 ? '0' : '') + val.m;\n\t\t\tdate = [];\n\t\t\tvar seps = $.extend([], format.separators);\n\t\t\tfor (var i=0, cnt = format.parts.length; i <= cnt; i++){\n\t\t\t\tif (seps.length)\n\t\t\t\t\tdate.push(seps.shift());\n\t\t\t\tdate.push(val[format.parts[i]]);\n\t\t\t}\n\t\t\treturn date.join('');\n\t\t},\n\t\theadTemplate: '<thead>'+\n\t\t\t              '<tr>'+\n\t\t\t                '<th colspan=\"7\" class=\"datepicker-title\"></th>'+\n\t\t\t              '</tr>'+\n\t\t\t\t\t\t\t'<tr>'+\n\t\t\t\t\t\t\t\t'<th class=\"prev\">&#171;</th>'+\n\t\t\t\t\t\t\t\t'<th colspan=\"5\" class=\"datepicker-switch\"></th>'+\n\t\t\t\t\t\t\t\t'<th class=\"next\">&#187;</th>'+\n\t\t\t\t\t\t\t'</tr>'+\n\t\t\t\t\t\t'</thead>',\n\t\tcontTemplate: '<tbody><tr><td colspan=\"7\"></td></tr></tbody>',\n\t\tfootTemplate: '<tfoot>'+\n\t\t\t\t\t\t\t'<tr>'+\n\t\t\t\t\t\t\t\t'<th colspan=\"7\" class=\"today\"></th>'+\n\t\t\t\t\t\t\t'</tr>'+\n\t\t\t\t\t\t\t'<tr>'+\n\t\t\t\t\t\t\t\t'<th colspan=\"7\" class=\"clear\"></th>'+\n\t\t\t\t\t\t\t'</tr>'+\n\t\t\t\t\t\t'</tfoot>'\n\t};\n\tDPGlobal.template = '<div class=\"datepicker\">'+\n\t\t\t\t\t\t\t'<div class=\"datepicker-days\">'+\n\t\t\t\t\t\t\t\t'<table class=\" table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\t'<tbody></tbody>'+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t\t'<div class=\"datepicker-months\">'+\n\t\t\t\t\t\t\t\t'<table class=\"table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t\t'<div class=\"datepicker-years\">'+\n\t\t\t\t\t\t\t\t'<table class=\"table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t'</div>';\n\n\t$.fn.datepicker.DPGlobal = DPGlobal;\n\n\n\t/* DATEPICKER NO CONFLICT\n\t* =================== */\n\n\t$.fn.datepicker.noConflict = function(){\n\t\t$.fn.datepicker = old;\n\t\treturn this;\n\t};\n\n\t/* DATEPICKER VERSION\n\t * =================== */\n\t$.fn.datepicker.version = '1.5.1';\n\n\t/* DATEPICKER DATA-API\n\t* ================== */\n\n\t$(document).on(\n\t\t'focus.datepicker.data-api click.datepicker.data-api',\n\t\t'[data-provide=\"datepicker\"]',\n\t\tfunction(e){\n\t\t\tvar $this = $(this);\n\t\t\tif ($this.data('datepicker'))\n\t\t\t\treturn;\n\t\t\te.preventDefault();\n\t\t\t// component click requires us to explicitly show it\n\t\t\tdatepickerPlugin.call($this, 'show');\n\t\t}\n\t);\n\t$(function(){\n\t\tdatepickerPlugin.call($('[data-provide=\"datepicker-inline\"]'));\n\t});\n\n}));\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/css/select2.css",
    "content": ".select2-container {\n  box-sizing: border-box;\n  display: inline-block;\n  margin: 0;\n  position: relative;\n  vertical-align: middle; }\n  .select2-container .select2-selection--single {\n    box-sizing: border-box;\n    cursor: pointer;\n    display: block;\n    height: 28px;\n    user-select: none;\n    -webkit-user-select: none; }\n    .select2-container .select2-selection--single .select2-selection__rendered {\n      display: block;\n      padding-left: 8px;\n      padding-right: 20px;\n      overflow: hidden;\n      text-overflow: ellipsis;\n      white-space: nowrap; }\n    .select2-container .select2-selection--single .select2-selection__clear {\n      position: relative; }\n  .select2-container[dir=\"rtl\"] .select2-selection--single .select2-selection__rendered {\n    padding-right: 8px;\n    padding-left: 20px; }\n  .select2-container .select2-selection--multiple {\n    box-sizing: border-box;\n    cursor: pointer;\n    display: block;\n    min-height: 32px;\n    user-select: none;\n    -webkit-user-select: none; }\n    .select2-container .select2-selection--multiple .select2-selection__rendered {\n      display: inline-block;\n      overflow: hidden;\n      padding-left: 8px;\n      text-overflow: ellipsis;\n      white-space: nowrap; }\n  .select2-container .select2-search--inline {\n    float: left; }\n    .select2-container .select2-search--inline .select2-search__field {\n      box-sizing: border-box;\n      border: none;\n      font-size: 100%;\n      margin-top: 5px;\n      padding: 0; }\n      .select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button {\n        -webkit-appearance: none; }\n\n.select2-dropdown {\n  background-color: white;\n  border: 1px solid #aaa;\n  border-radius: 4px;\n  box-sizing: border-box;\n  display: block;\n  position: absolute;\n  left: -100000px;\n  width: 100%;\n  z-index: 1051; }\n\n.select2-results {\n  display: block; }\n\n.select2-results__options {\n  list-style: none;\n  margin: 0;\n  padding: 0; }\n\n.select2-results__option {\n  padding: 6px;\n  user-select: none;\n  -webkit-user-select: none; }\n  .select2-results__option[aria-selected] {\n    cursor: pointer; }\n\n.select2-container--open .select2-dropdown {\n  left: 0; }\n\n.select2-container--open .select2-dropdown--above {\n  border-bottom: none;\n  border-bottom-left-radius: 0;\n  border-bottom-right-radius: 0; }\n\n.select2-container--open .select2-dropdown--below {\n  border-top: none;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0; }\n\n.select2-search--dropdown {\n  display: block;\n  padding: 4px; }\n  .select2-search--dropdown .select2-search__field {\n    padding: 4px;\n    width: 100%;\n    box-sizing: border-box; }\n    .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button {\n      -webkit-appearance: none; }\n  .select2-search--dropdown.select2-search--hide {\n    display: none; }\n\n.select2-close-mask {\n  border: 0;\n  margin: 0;\n  padding: 0;\n  display: block;\n  position: fixed;\n  left: 0;\n  top: 0;\n  min-height: 100%;\n  min-width: 100%;\n  height: auto;\n  width: auto;\n  opacity: 0;\n  z-index: 99;\n  background-color: #fff;\n  filter: alpha(opacity=0); }\n\n.select2-hidden-accessible {\n  border: 0 !important;\n  clip: rect(0 0 0 0) !important;\n  height: 1px !important;\n  margin: -1px !important;\n  overflow: hidden !important;\n  padding: 0 !important;\n  position: absolute !important;\n  width: 1px !important; }\n\n.select2-container--default .select2-selection--single {\n  background-color: #fff;\n  border: 1px solid #aaa;\n  border-radius: 4px; }\n  .select2-container--default .select2-selection--single .select2-selection__rendered {\n    color: #444;\n    line-height: 28px; }\n  .select2-container--default .select2-selection--single .select2-selection__clear {\n    cursor: pointer;\n    float: right;\n    font-weight: bold; }\n  .select2-container--default .select2-selection--single .select2-selection__placeholder {\n    color: #999; }\n  .select2-container--default .select2-selection--single .select2-selection__arrow {\n    height: 26px;\n    position: absolute;\n    top: 1px;\n    right: 1px;\n    width: 20px; }\n    .select2-container--default .select2-selection--single .select2-selection__arrow b {\n      border-color: #888 transparent transparent transparent;\n      border-style: solid;\n      border-width: 5px 4px 0 4px;\n      height: 0;\n      left: 50%;\n      margin-left: -4px;\n      margin-top: -2px;\n      position: absolute;\n      top: 50%;\n      width: 0; }\n\n.select2-container--default[dir=\"rtl\"] .select2-selection--single .select2-selection__clear {\n  float: left; }\n\n.select2-container--default[dir=\"rtl\"] .select2-selection--single .select2-selection__arrow {\n  left: 1px;\n  right: auto; }\n\n.select2-container--default.select2-container--disabled .select2-selection--single {\n  background-color: #eee;\n  cursor: default; }\n  .select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear {\n    display: none; }\n\n.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b {\n  border-color: transparent transparent #888 transparent;\n  border-width: 0 4px 5px 4px; }\n\n.select2-container--default .select2-selection--multiple {\n  background-color: white;\n  border: 1px solid #aaa;\n  border-radius: 4px;\n  cursor: text; }\n  .select2-container--default .select2-selection--multiple .select2-selection__rendered {\n    box-sizing: border-box;\n    list-style: none;\n    margin: 0;\n    padding: 0 5px;\n    width: 100%; }\n  .select2-container--default .select2-selection--multiple .select2-selection__placeholder {\n    color: #999;\n    margin-top: 5px;\n    float: left; }\n  .select2-container--default .select2-selection--multiple .select2-selection__clear {\n    cursor: pointer;\n    float: right;\n    font-weight: bold;\n    margin-top: 5px;\n    margin-right: 10px; }\n  .select2-container--default .select2-selection--multiple .select2-selection__choice {\n    background-color: #e4e4e4;\n    border: 1px solid #aaa;\n    border-radius: 4px;\n    cursor: default;\n    float: left;\n    margin-right: 5px;\n    margin-top: 5px;\n    padding: 0 5px; }\n  .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\n    color: #999;\n    cursor: pointer;\n    display: inline-block;\n    font-weight: bold;\n    margin-right: 2px; }\n    .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {\n      color: #333; }\n\n.select2-container--default[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir=\"rtl\"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--default[dir=\"rtl\"] .select2-selection--multiple .select2-search--inline {\n  float: right; }\n\n.select2-container--default[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice {\n  margin-left: 5px;\n  margin-right: auto; }\n\n.select2-container--default[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice__remove {\n  margin-left: 2px;\n  margin-right: auto; }\n\n.select2-container--default.select2-container--focus .select2-selection--multiple {\n  border: solid black 1px;\n  outline: 0; }\n\n.select2-container--default.select2-container--disabled .select2-selection--multiple {\n  background-color: #eee;\n  cursor: default; }\n\n.select2-container--default.select2-container--disabled .select2-selection__choice__remove {\n  display: none; }\n\n.select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0; }\n\n.select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple {\n  border-bottom-left-radius: 0;\n  border-bottom-right-radius: 0; }\n\n.select2-container--default .select2-search--dropdown .select2-search__field {\n  border: 1px solid #aaa; }\n\n.select2-container--default .select2-search--inline .select2-search__field {\n  background: transparent;\n  border: none;\n  outline: 0;\n  box-shadow: none;\n  -webkit-appearance: textfield; }\n\n.select2-container--default .select2-results > .select2-results__options {\n  max-height: 200px;\n  overflow-y: auto; }\n\n.select2-container--default .select2-results__option[role=group] {\n  padding: 0; }\n\n.select2-container--default .select2-results__option[aria-disabled=true] {\n  color: #999; }\n\n.select2-container--default .select2-results__option[aria-selected=true] {\n  background-color: #ddd; }\n\n.select2-container--default .select2-results__option .select2-results__option {\n  padding-left: 1em; }\n  .select2-container--default .select2-results__option .select2-results__option .select2-results__group {\n    padding-left: 0; }\n  .select2-container--default .select2-results__option .select2-results__option .select2-results__option {\n    margin-left: -1em;\n    padding-left: 2em; }\n    .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\n      margin-left: -2em;\n      padding-left: 3em; }\n      .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\n        margin-left: -3em;\n        padding-left: 4em; }\n        .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\n          margin-left: -4em;\n          padding-left: 5em; }\n          .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\n            margin-left: -5em;\n            padding-left: 6em; }\n\n.select2-container--default .select2-results__option--highlighted[aria-selected] {\n  background-color: #5897fb;\n  color: white; }\n\n.select2-container--default .select2-results__group {\n  cursor: default;\n  display: block;\n  padding: 6px; }\n\n.select2-container--classic .select2-selection--single {\n  background-color: #f7f7f7;\n  border: 1px solid #aaa;\n  border-radius: 4px;\n  outline: 0;\n  background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%);\n  background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%);\n  background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }\n  .select2-container--classic .select2-selection--single:focus {\n    border: 1px solid #5897fb; }\n  .select2-container--classic .select2-selection--single .select2-selection__rendered {\n    color: #444;\n    line-height: 28px; }\n  .select2-container--classic .select2-selection--single .select2-selection__clear {\n    cursor: pointer;\n    float: right;\n    font-weight: bold;\n    margin-right: 10px; }\n  .select2-container--classic .select2-selection--single .select2-selection__placeholder {\n    color: #999; }\n  .select2-container--classic .select2-selection--single .select2-selection__arrow {\n    background-color: #ddd;\n    border: none;\n    border-left: 1px solid #aaa;\n    border-top-right-radius: 4px;\n    border-bottom-right-radius: 4px;\n    height: 26px;\n    position: absolute;\n    top: 1px;\n    right: 1px;\n    width: 20px;\n    background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%);\n    background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%);\n    background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%);\n    background-repeat: repeat-x;\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); }\n    .select2-container--classic .select2-selection--single .select2-selection__arrow b {\n      border-color: #888 transparent transparent transparent;\n      border-style: solid;\n      border-width: 5px 4px 0 4px;\n      height: 0;\n      left: 50%;\n      margin-left: -4px;\n      margin-top: -2px;\n      position: absolute;\n      top: 50%;\n      width: 0; }\n\n.select2-container--classic[dir=\"rtl\"] .select2-selection--single .select2-selection__clear {\n  float: left; }\n\n.select2-container--classic[dir=\"rtl\"] .select2-selection--single .select2-selection__arrow {\n  border: none;\n  border-right: 1px solid #aaa;\n  border-radius: 0;\n  border-top-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  left: 1px;\n  right: auto; }\n\n.select2-container--classic.select2-container--open .select2-selection--single {\n  border: 1px solid #5897fb; }\n  .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow {\n    background: transparent;\n    border: none; }\n    .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b {\n      border-color: transparent transparent #888 transparent;\n      border-width: 0 4px 5px 4px; }\n\n.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single {\n  border-top: none;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n  background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%);\n  background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%);\n  background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }\n\n.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single {\n  border-bottom: none;\n  border-bottom-left-radius: 0;\n  border-bottom-right-radius: 0;\n  background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%);\n  background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%);\n  background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); }\n\n.select2-container--classic .select2-selection--multiple {\n  background-color: white;\n  border: 1px solid #aaa;\n  border-radius: 4px;\n  cursor: text;\n  outline: 0; }\n  .select2-container--classic .select2-selection--multiple:focus {\n    border: 1px solid #5897fb; }\n  .select2-container--classic .select2-selection--multiple .select2-selection__rendered {\n    list-style: none;\n    margin: 0;\n    padding: 0 5px; }\n  .select2-container--classic .select2-selection--multiple .select2-selection__clear {\n    display: none; }\n  .select2-container--classic .select2-selection--multiple .select2-selection__choice {\n    background-color: #e4e4e4;\n    border: 1px solid #aaa;\n    border-radius: 4px;\n    cursor: default;\n    float: left;\n    margin-right: 5px;\n    margin-top: 5px;\n    padding: 0 5px; }\n  .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove {\n    color: #888;\n    cursor: pointer;\n    display: inline-block;\n    font-weight: bold;\n    margin-right: 2px; }\n    .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover {\n      color: #555; }\n\n.select2-container--classic[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice {\n  float: right; }\n\n.select2-container--classic[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice {\n  margin-left: 5px;\n  margin-right: auto; }\n\n.select2-container--classic[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice__remove {\n  margin-left: 2px;\n  margin-right: auto; }\n\n.select2-container--classic.select2-container--open .select2-selection--multiple {\n  border: 1px solid #5897fb; }\n\n.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple {\n  border-top: none;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0; }\n\n.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple {\n  border-bottom: none;\n  border-bottom-left-radius: 0;\n  border-bottom-right-radius: 0; }\n\n.select2-container--classic .select2-search--dropdown .select2-search__field {\n  border: 1px solid #aaa;\n  outline: 0; }\n\n.select2-container--classic .select2-search--inline .select2-search__field {\n  outline: 0;\n  box-shadow: none; }\n\n.select2-container--classic .select2-dropdown {\n  background-color: white;\n  border: 1px solid transparent; }\n\n.select2-container--classic .select2-dropdown--above {\n  border-bottom: none; }\n\n.select2-container--classic .select2-dropdown--below {\n  border-top: none; }\n\n.select2-container--classic .select2-results > .select2-results__options {\n  max-height: 200px;\n  overflow-y: auto; }\n\n.select2-container--classic .select2-results__option[role=group] {\n  padding: 0; }\n\n.select2-container--classic .select2-results__option[aria-disabled=true] {\n  color: grey; }\n\n.select2-container--classic .select2-results__option--highlighted[aria-selected] {\n  background-color: #3875d7;\n  color: white; }\n\n.select2-container--classic .select2-results__group {\n  cursor: default;\n  display: block;\n  padding: 6px; }\n\n.select2-container--classic.select2-container--open .select2-dropdown {\n  border-color: #5897fb; }\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/ar.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/ar\",[],function(){return{errorLoading:function(){return\"لا يمكن تحميل النتائج\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"الرجاء حذف \"+t+\" عناصر\";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"الرجاء إضافة \"+t+\" عناصر\";return n},loadingMore:function(){return\"جاري تحميل نتائج إضافية...\"},maximumSelected:function(e){var t=\"تستطيع إختيار \"+e.maximum+\" بنود فقط\";return t},noResults:function(){return\"لم يتم العثور على أي نتائج\"},searching:function(){return\"جاري البحث…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/az.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/az\",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return t+\" simvol silin\"},inputTooShort:function(e){var t=e.minimum-e.input.length;return t+\" simvol daxil edin\"},loadingMore:function(){return\"Daha çox nəticə yüklənir…\"},maximumSelected:function(e){return\"Sadəcə \"+e.maximum+\" element seçə bilərsiniz\"},noResults:function(){return\"Nəticə tapılmadı\"},searching:function(){return\"Axtarılır…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/bg.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/bg\",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Моля въведете с \"+t+\" по-малко символ\";return t>1&&(n+=\"a\"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Моля въведете още \"+t+\" символ\";return t>1&&(n+=\"a\"),n},loadingMore:function(){return\"Зареждат се още…\"},maximumSelected:function(e){var t=\"Можете да направите до \"+e.maximum+\" \";return e.maximum>1?t+=\"избора\":t+=\"избор\",t},noResults:function(){return\"Няма намерени съвпадения\"},searching:function(){return\"Търсене…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/ca.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/ca\",[],function(){return{errorLoading:function(){return\"La càrrega ha fallat\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Si us plau, elimina \"+t+\" car\";return t==1?n+=\"àcter\":n+=\"àcters\",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Si us plau, introdueix \"+t+\" car\";return t==1?n+=\"àcter\":n+=\"àcters\",n},loadingMore:function(){return\"Carregant més resultats…\"},maximumSelected:function(e){var t=\"Només es pot seleccionar \"+e.maximum+\" element\";return e.maximum!=1&&(t+=\"s\"),t},noResults:function(){return\"No s'han trobat resultats\"},searching:function(){return\"Cercant…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/cs.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/cs\",[],function(){function e(e,t){switch(e){case 2:return t?\"dva\":\"dvě\";case 3:return\"tři\";case 4:return\"čtyři\"}return\"\"}return{errorLoading:function(){return\"Výsledky nemohly být načteny.\"},inputTooLong:function(t){var n=t.input.length-t.maximum;return n==1?\"Prosím zadejte o jeden znak méně\":n<=4?\"Prosím zadejte o \"+e(n,!0)+\" znaky méně\":\"Prosím zadejte o \"+n+\" znaků méně\"},inputTooShort:function(t){var n=t.minimum-t.input.length;return n==1?\"Prosím zadejte ještě jeden znak\":n<=4?\"Prosím zadejte ještě další \"+e(n,!0)+\" znaky\":\"Prosím zadejte ještě dalších \"+n+\" znaků\"},loadingMore:function(){return\"Načítají se další výsledky…\"},maximumSelected:function(t){var n=t.maximum;return n==1?\"Můžete zvolit jen jednu položku\":n<=4?\"Můžete zvolit maximálně \"+e(n,!1)+\" položky\":\"Můžete zvolit maximálně \"+n+\" položek\"},noResults:function(){return\"Nenalezeny žádné položky\"},searching:function(){return\"Vyhledávání…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/da.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/da\",[],function(){return{errorLoading:function(){return\"Resultaterne kunne ikke indlæses.\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Angiv venligst \"+t+\" tegn mindre\";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Angiv venligst \"+t+\" tegn mere\";return n},loadingMore:function(){return\"Indlæser flere resultater…\"},maximumSelected:function(e){var t=\"Du kan kun vælge \"+e.maximum+\" emne\";return e.maximum!=1&&(t+=\"r\"),t},noResults:function(){return\"Ingen resultater fundet\"},searching:function(){return\"Søger…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/de.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/de\",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return\"Bitte \"+t+\" Zeichen weniger eingeben\"},inputTooShort:function(e){var t=e.minimum-e.input.length;return\"Bitte \"+t+\" Zeichen mehr eingeben\"},loadingMore:function(){return\"Lade mehr Ergebnisse…\"},maximumSelected:function(e){var t=\"Sie können nur \"+e.maximum+\" Eintr\";return e.maximum===1?t+=\"ag\":t+=\"äge\",t+=\" auswählen\",t},noResults:function(){return\"Keine Übereinstimmungen gefunden\"},searching:function(){return\"Suche…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/en.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/en\",[],function(){return{errorLoading:function(){return\"The results could not be loaded.\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Please delete \"+t+\" character\";return t!=1&&(n+=\"s\"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Please enter \"+t+\" or more characters\";return n},loadingMore:function(){return\"Loading more results…\"},maximumSelected:function(e){var t=\"You can only select \"+e.maximum+\" item\";return e.maximum!=1&&(t+=\"s\"),t},noResults:function(){return\"No results found\"},searching:function(){return\"Searching…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/es.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/es\",[],function(){return{errorLoading:function(){return\"La carga falló\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Por favor, elimine \"+t+\" car\";return t==1?n+=\"ácter\":n+=\"acteres\",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Por favor, introduzca \"+t+\" car\";return t==1?n+=\"ácter\":n+=\"acteres\",n},loadingMore:function(){return\"Cargando más resultados…\"},maximumSelected:function(e){var t=\"Sólo puede seleccionar \"+e.maximum+\" elemento\";return e.maximum!=1&&(t+=\"s\"),t},noResults:function(){return\"No se encontraron resultados\"},searching:function(){return\"Buscando…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/et.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/et\",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Sisesta \"+t+\" täht\";return t!=1&&(n+=\"e\"),n+=\" vähem\",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Sisesta \"+t+\" täht\";return t!=1&&(n+=\"e\"),n+=\" rohkem\",n},loadingMore:function(){return\"Laen tulemusi…\"},maximumSelected:function(e){var t=\"Saad vaid \"+e.maximum+\" tulemus\";return e.maximum==1?t+=\"e\":t+=\"t\",t+=\" valida\",t},noResults:function(){return\"Tulemused puuduvad\"},searching:function(){return\"Otsin…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/eu.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/eu\",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Idatzi \";return t==1?n+=\"karaktere bat\":n+=t+\" karaktere\",n+=\" gutxiago\",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Idatzi \";return t==1?n+=\"karaktere bat\":n+=t+\" karaktere\",n+=\" gehiago\",n},loadingMore:function(){return\"Emaitza gehiago kargatzen…\"},maximumSelected:function(e){return e.maximum===1?\"Elementu bakarra hauta dezakezu\":e.maximum+\" elementu hauta ditzakezu soilik\"},noResults:function(){return\"Ez da bat datorrenik aurkitu\"},searching:function(){return\"Bilatzen…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/fa.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/fa\",[],function(){return{errorLoading:function(){return\"امکان بارگذاری نتایج وجود ندارد.\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"لطفاً \"+t+\" کاراکتر را حذف نمایید\";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"لطفاً تعداد \"+t+\" کاراکتر یا بیشتر وارد نمایید\";return n},loadingMore:function(){return\"در حال بارگذاری نتایج بیشتر...\"},maximumSelected:function(e){var t=\"شما تنها می‌توانید \"+e.maximum+\" آیتم را انتخاب نمایید\";return t},noResults:function(){return\"هیچ نتیجه‌ای یافت نشد\"},searching:function(){return\"در حال جستجو...\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/fi.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/fi\",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return\"Ole hyvä ja anna \"+t+\" merkkiä vähemmän\"},inputTooShort:function(e){var t=e.minimum-e.input.length;return\"Ole hyvä ja anna \"+t+\" merkkiä lisää\"},loadingMore:function(){return\"Ladataan lisää tuloksia…\"},maximumSelected:function(e){return\"Voit valita ainoastaan \"+e.maximum+\" kpl\"},noResults:function(){return\"Ei tuloksia\"},searching:function(){}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/fr.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/fr\",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Supprimez \"+t+\" caractère\";return t!==1&&(n+=\"s\"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Saisissez \"+t+\" caractère\";return t!==1&&(n+=\"s\"),n},loadingMore:function(){return\"Chargement de résultats supplémentaires…\"},maximumSelected:function(e){var t=\"Vous pouvez seulement sélectionner \"+e.maximum+\" élément\";return e.maximum!==1&&(t+=\"s\"),t},noResults:function(){return\"Aucun résultat trouvé\"},searching:function(){return\"Recherche en cours…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/gl.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/gl\",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Elimine \";return t===1?n+=\"un carácter\":n+=t+\" caracteres\",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Engada \";return t===1?n+=\"un carácter\":n+=t+\" caracteres\",n},loadingMore:function(){return\"Cargando máis resultados…\"},maximumSelected:function(e){var t=\"Só pode \";return e.maximum===1?t+=\"un elemento\":t+=e.maximum+\" elementos\",t},noResults:function(){return\"Non se atoparon resultados\"},searching:function(){return\"Buscando…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/he.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/he\",[],function(){return{errorLoading:function(){return\"שגיאה בטעינת התוצאות\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"נא למחוק \";return t===1?n+=\"תו אחד\":n+=t+\" תווים\",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"נא להכניס \";return t===1?n+=\"תו אחד\":n+=t+\" תווים\",n+=\" או יותר\",n},loadingMore:function(){return\"טוען תוצאות נוספות…\"},maximumSelected:function(e){var t=\"באפשרותך לבחור עד \";return e.maximum===1?t+=\"פריט אחד\":t+=e.maximum+\" פריטים\",t},noResults:function(){return\"לא נמצאו תוצאות\"},searching:function(){return\"מחפש…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/hi.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/hi\",[],function(){return{errorLoading:function(){return\"परिणामों को लोड नहीं किया जा सका।\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+\" अक्षर को हटा दें\";return t>1&&(n=t+\" अक्षरों को हटा दें \"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"कृपया \"+t+\" या अधिक अक्षर दर्ज करें\";return n},loadingMore:function(){return\"अधिक परिणाम लोड हो रहे है...\"},maximumSelected:function(e){var t=\"आप केवल \"+e.maximum+\" आइटम का चयन कर सकते हैं\";return t},noResults:function(){return\"कोई परिणाम नहीं मिला\"},searching:function(){return\"खोज रहा है...\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/hr.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/hr\",[],function(){function e(e){var t=\" \"+e+\" znak\";return e%10<5&&e%10>0&&(e%100<5||e%100>19)?e%10>1&&(t+=\"a\"):t+=\"ova\",t}return{errorLoading:function(){return\"Preuzimanje nije uspjelo.\"},inputTooLong:function(t){var n=t.input.length-t.maximum;return\"Unesite \"+e(n)},inputTooShort:function(t){var n=t.minimum-t.input.length;return\"Unesite još \"+e(n)},loadingMore:function(){return\"Učitavanje rezultata…\"},maximumSelected:function(e){return\"Maksimalan broj odabranih stavki je \"+e.maximum},noResults:function(){return\"Nema rezultata\"},searching:function(){return\"Pretraga…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/hu.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/hu\",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return\"Túl hosszú. \"+t+\" karakterrel több, mint kellene.\"},inputTooShort:function(e){var t=e.minimum-e.input.length;return\"Túl rövid. Még \"+t+\" karakter hiányzik.\"},loadingMore:function(){return\"Töltés…\"},maximumSelected:function(e){return\"Csak \"+e.maximum+\" elemet lehet kiválasztani.\"},noResults:function(){return\"Nincs találat.\"},searching:function(){return\"Keresés…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/id.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/id\",[],function(){return{errorLoading:function(){return\"Data tidak boleh diambil.\"},inputTooLong:function(e){var t=e.input.length-e.maximum;return\"Hapuskan \"+t+\" huruf\"},inputTooShort:function(e){var t=e.minimum-e.input.length;return\"Masukkan \"+t+\" huruf lagi\"},loadingMore:function(){return\"Mengambil data…\"},maximumSelected:function(e){return\"Anda hanya dapat memilih \"+e.maximum+\" pilihan\"},noResults:function(){return\"Tidak ada data yang sesuai\"},searching:function(){return\"Mencari…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/is.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/is\",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Vinsamlegast styttið texta um \"+t+\" staf\";return t<=1?n:n+\"i\"},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Vinsamlegast skrifið \"+t+\" staf\";return t>1&&(n+=\"i\"),n+=\" í viðbót\",n},loadingMore:function(){return\"Sæki fleiri niðurstöður…\"},maximumSelected:function(e){return\"Þú getur aðeins valið \"+e.maximum+\" atriði\"},noResults:function(){return\"Ekkert fannst\"},searching:function(){return\"Leita…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/it.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/it\",[],function(){return{errorLoading:function(){return\"I risultati non possono essere caricati.\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Per favore cancella \"+t+\" caratter\";return t!==1?n+=\"i\":n+=\"e\",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Per favore inserisci \"+t+\" o più caratteri\";return n},loadingMore:function(){return\"Caricando più risultati…\"},maximumSelected:function(e){var t=\"Puoi selezionare solo \"+e.maximum+\" element\";return e.maximum!==1?t+=\"i\":t+=\"o\",t},noResults:function(){return\"Nessun risultato trovato\"},searching:function(){return\"Sto cercando…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/ja.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/ja\",[],function(){return{errorLoading:function(){return\"結果が読み込まれませんでした\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+\" 文字を削除してください\";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"少なくとも \"+t+\" 文字を入力してください\";return n},loadingMore:function(){return\"読み込み中…\"},maximumSelected:function(e){var t=e.maximum+\" 件しか選択できません\";return t},noResults:function(){return\"対象が見つかりません\"},searching:function(){return\"検索しています…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/ko.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/ko\",[],function(){return{errorLoading:function(){return\"결과를 불러올 수 없습니다.\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"너무 깁니다. \"+t+\" 글자 지워주세요.\";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"너무 짧습니다. \"+t+\" 글자 더 입력해주세요.\";return n},loadingMore:function(){return\"불러오는 중…\"},maximumSelected:function(e){var t=\"최대 \"+e.maximum+\"개까지만 선택 가능합니다.\";return t},noResults:function(){return\"결과가 없습니다.\"},searching:function(){return\"검색 중…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/lt.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/lt\",[],function(){function e(e,t,n,r){return e%100>9&&e%100<21||e%10===0?e%10>1?n:r:t}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r=\"Pašalinkite \"+n+\" simbol\";return r+=e(n,\"ių\",\"ius\",\"į\"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r=\"Įrašykite dar \"+n+\" simbol\";return r+=e(n,\"ių\",\"ius\",\"į\"),r},loadingMore:function(){return\"Kraunama daugiau rezultatų…\"},maximumSelected:function(t){var n=\"Jūs galite pasirinkti tik \"+t.maximum+\" element\";return n+=e(t.maximum,\"ų\",\"us\",\"ą\"),n},noResults:function(){return\"Atitikmenų nerasta\"},searching:function(){return\"Ieškoma…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/lv.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/lv\",[],function(){function e(e,t,n,r){return e===11?t:e%10===1?n:r}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r=\"Lūdzu ievadiet par  \"+n;return r+=\" simbol\"+e(n,\"iem\",\"u\",\"iem\"),r+\" mazāk\"},inputTooShort:function(t){var n=t.minimum-t.input.length,r=\"Lūdzu ievadiet vēl \"+n;return r+=\" simbol\"+e(n,\"us\",\"u\",\"us\"),r},loadingMore:function(){return\"Datu ielāde…\"},maximumSelected:function(t){var n=\"Jūs varat izvēlēties ne vairāk kā \"+t.maximum;return n+=\" element\"+e(t.maximum,\"us\",\"u\",\"us\"),n},noResults:function(){return\"Sakritību nav\"},searching:function(){return\"Meklēšana…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/mk.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/mk\",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Ве молиме внесете \"+e.maximum+\" помалку карактер\";return e.maximum!==1&&(n+=\"и\"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Ве молиме внесете уште \"+e.maximum+\" карактер\";return e.maximum!==1&&(n+=\"и\"),n},loadingMore:function(){return\"Вчитување резултати…\"},maximumSelected:function(e){var t=\"Можете да изберете само \"+e.maximum+\" ставк\";return e.maximum===1?t+=\"а\":t+=\"и\",t},noResults:function(){return\"Нема пронајдено совпаѓања\"},searching:function(){return\"Пребарување…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/ms.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/ms\",[],function(){return{errorLoading:function(){return\"Keputusan tidak berjaya dimuatkan.\"},inputTooLong:function(e){var t=e.input.length-e.maximum;return\"Sila hapuskan \"+t+\" aksara\"},inputTooShort:function(e){var t=e.minimum-e.input.length;return\"Sila masukkan \"+t+\" atau lebih aksara\"},loadingMore:function(){return\"Sedang memuatkan keputusan…\"},maximumSelected:function(e){return\"Anda hanya boleh memilih \"+e.maximum+\" pilihan\"},noResults:function(){return\"Tiada padanan yang ditemui\"},searching:function(){return\"Mencari…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/nb.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/nb\",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return\"Vennligst fjern \"+t+\" tegn\"},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Vennligst skriv inn \";return t>1?n+=\" flere tegn\":n+=\" tegn til\",n},loadingMore:function(){return\"Laster flere resultater…\"},maximumSelected:function(e){return\"Du kan velge maks \"+e.maximum+\" elementer\"},noResults:function(){return\"Ingen treff\"},searching:function(){return\"Søker…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/nl.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/nl\",[],function(){return{errorLoading:function(){return\"De resultaten konden niet worden geladen.\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Gelieve \"+t+\" karakters te verwijderen\";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Gelieve \"+t+\" of meer karakters in te voeren\";return n},loadingMore:function(){return\"Meer resultaten laden…\"},maximumSelected:function(e){var t=e.maximum==1?\"kan\":\"kunnen\",n=\"Er \"+t+\" maar \"+e.maximum+\" item\";return e.maximum!=1&&(n+=\"s\"),n+=\" worden geselecteerd\",n},noResults:function(){return\"Geen resultaten gevonden…\"},searching:function(){return\"Zoeken…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/pl.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/pl\",[],function(){var e=[\"znak\",\"znaki\",\"znaków\"],t=[\"element\",\"elementy\",\"elementów\"],n=function(t,n){if(t===1)return n[0];if(t>1&&t<=4)return n[1];if(t>=5)return n[2]};return{errorLoading:function(){return\"Nie można załadować wyników.\"},inputTooLong:function(t){var r=t.input.length-t.maximum;return\"Usuń \"+r+\" \"+n(r,e)},inputTooShort:function(t){var r=t.minimum-t.input.length;return\"Podaj przynajmniej \"+r+\" \"+n(r,e)},loadingMore:function(){return\"Trwa ładowanie…\"},maximumSelected:function(e){return\"Możesz zaznaczyć tylko \"+e.maximum+\" \"+n(e.maximum,t)},noResults:function(){return\"Brak wyników\"},searching:function(){return\"Trwa wyszukiwanie…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/pt-BR.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/pt-BR\",[],function(){return{errorLoading:function(){return\"Os resultados não puderam ser carregados.\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Apague \"+t+\" caracter\";return t!=1&&(n+=\"es\"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Digite \"+t+\" ou mais caracteres\";return n},loadingMore:function(){return\"Carregando mais resultados…\"},maximumSelected:function(e){var t=\"Você só pode selecionar \"+e.maximum+\" ite\";return e.maximum==1?t+=\"m\":t+=\"ns\",t},noResults:function(){return\"Nenhum resultado encontrado\"},searching:function(){return\"Buscando…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/pt.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/pt\",[],function(){return{errorLoading:function(){return\"Os resultados não puderam ser carregados.\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Por favor apague \"+t+\" \";return n+=t!=1?\"caracteres\":\"carácter\",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Introduza \"+t+\" ou mais caracteres\";return n},loadingMore:function(){return\"A carregar mais resultados…\"},maximumSelected:function(e){var t=\"Apenas pode seleccionar \"+e.maximum+\" \";return t+=e.maximum!=1?\"itens\":\"item\",t},noResults:function(){return\"Sem resultados\"},searching:function(){return\"A procurar…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/ro.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/ro\",[],function(){return{errorLoading:function(){return\"Rezultatele nu au putut fi incărcate.\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Vă rugăm să ștergeți\"+t+\" caracter\";return t!==1&&(n+=\"e\"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Vă rugăm să introduceți \"+t+\"sau mai multe caractere\";return n},loadingMore:function(){return\"Se încarcă mai multe rezultate…\"},maximumSelected:function(e){var t=\"Aveți voie să selectați cel mult \"+e.maximum;return t+=\" element\",e.maximum!==1&&(t+=\"e\"),t},noResults:function(){return\"Nu au fost găsite rezultate\"},searching:function(){return\"Căutare…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/ru.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/ru\",[],function(){function e(e,t,n,r){return e%10<5&&e%10>0&&e%100<5||e%100>20?e%10>1?n:t:r}return{errorLoading:function(){return\"Невозможно загрузить результаты\"},inputTooLong:function(t){var n=t.input.length-t.maximum,r=\"Пожалуйста, введите на \"+n+\" символ\";return r+=e(n,\"\",\"a\",\"ов\"),r+=\" меньше\",r},inputTooShort:function(t){var n=t.minimum-t.input.length,r=\"Пожалуйста, введите еще хотя бы \"+n+\" символ\";return r+=e(n,\"\",\"a\",\"ов\"),r},loadingMore:function(){return\"Загрузка данных…\"},maximumSelected:function(t){var n=\"Вы можете выбрать не более \"+t.maximum+\" элемент\";return n+=e(t.maximum,\"\",\"a\",\"ов\"),n},noResults:function(){return\"Совпадений не найдено\"},searching:function(){return\"Поиск…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/sk.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/sk\",[],function(){var e={2:function(e){return e?\"dva\":\"dve\"},3:function(){return\"tri\"},4:function(){return\"štyri\"}};return{inputTooLong:function(t){var n=t.input.length-t.maximum;return n==1?\"Prosím, zadajte o jeden znak menej\":n>=2&&n<=4?\"Prosím, zadajte o \"+e[n](!0)+\" znaky menej\":\"Prosím, zadajte o \"+n+\" znakov menej\"},inputTooShort:function(t){var n=t.minimum-t.input.length;return n==1?\"Prosím, zadajte ešte jeden znak\":n<=4?\"Prosím, zadajte ešte ďalšie \"+e[n](!0)+\" znaky\":\"Prosím, zadajte ešte ďalších \"+n+\" znakov\"},loadingMore:function(){return\"Loading more results…\"},maximumSelected:function(t){return t.maximum==1?\"Môžete zvoliť len jednu položku\":t.maximum>=2&&t.maximum<=4?\"Môžete zvoliť najviac \"+e[t.maximum](!1)+\" položky\":\"Môžete zvoliť najviac \"+t.maximum+\" položiek\"},noResults:function(){return\"Nenašli sa žiadne položky\"},searching:function(){return\"Vyhľadávanie…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/sr-Cyrl.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/sr-Cyrl\",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return\"Преузимање није успело.\"},inputTooLong:function(t){var n=t.input.length-t.maximum,r=\"Обришите \"+n+\" симбол\";return r+=e(n,\"\",\"а\",\"а\"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r=\"Укуцајте бар још \"+n+\" симбол\";return r+=e(n,\"\",\"а\",\"а\"),r},loadingMore:function(){return\"Преузимање још резултата…\"},maximumSelected:function(t){var n=\"Можете изабрати само \"+t.maximum+\" ставк\";return n+=e(t.maximum,\"у\",\"е\",\"и\"),n},noResults:function(){return\"Ништа није пронађено\"},searching:function(){return\"Претрага…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/sr.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/sr\",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return\"Preuzimanje nije uspelo.\"},inputTooLong:function(t){var n=t.input.length-t.maximum,r=\"Obrišite \"+n+\" simbol\";return r+=e(n,\"\",\"a\",\"a\"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r=\"Ukucajte bar još \"+n+\" simbol\";return r+=e(n,\"\",\"a\",\"a\"),r},loadingMore:function(){return\"Preuzimanje još rezultata…\"},maximumSelected:function(t){var n=\"Možete izabrati samo \"+t.maximum+\" stavk\";return n+=e(t.maximum,\"u\",\"e\",\"i\"),n},noResults:function(){return\"Ništa nije pronađeno\"},searching:function(){return\"Pretraga…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/sv.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/sv\",[],function(){return{errorLoading:function(){return\"Resultat kunde inte laddas.\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Vänligen sudda ut \"+t+\" tecken\";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Vänligen skriv in \"+t+\" eller fler tecken\";return n},loadingMore:function(){return\"Laddar fler resultat…\"},maximumSelected:function(e){var t=\"Du kan max välja \"+e.maximum+\" element\";return t},noResults:function(){return\"Inga träffar\"},searching:function(){return\"Söker…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/th.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/th\",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"โปรดลบออก \"+t+\" ตัวอักษร\";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"โปรดพิมพ์เพิ่มอีก \"+t+\" ตัวอักษร\";return n},loadingMore:function(){return\"กำลังค้นข้อมูลเพิ่ม…\"},maximumSelected:function(e){var t=\"คุณสามารถเลือกได้ไม่เกิน \"+e.maximum+\" รายการ\";return t},noResults:function(){return\"ไม่พบข้อมูล\"},searching:function(){return\"กำลังค้นข้อมูล…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/tr.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/tr\",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+\" karakter daha girmelisiniz\";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"En az \"+t+\" karakter daha girmelisiniz\";return n},loadingMore:function(){return\"Daha fazla…\"},maximumSelected:function(e){var t=\"Sadece \"+e.maximum+\" seçim yapabilirsiniz\";return t},noResults:function(){return\"Sonuç bulunamadı\"},searching:function(){return\"Aranıyor…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/uk.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/uk\",[],function(){function e(e,t,n,r){return e%100>10&&e%100<15?r:e%10===1?t:e%10>1&&e%10<5?n:r}return{errorLoading:function(){return\"Неможливо завантажити результати\"},inputTooLong:function(t){var n=t.input.length-t.maximum;return\"Будь ласка, видаліть \"+n+\" \"+e(t.maximum,\"літеру\",\"літери\",\"літер\")},inputTooShort:function(e){var t=e.minimum-e.input.length;return\"Будь ласка, введіть \"+t+\" або більше літер\"},loadingMore:function(){return\"Завантаження інших результатів…\"},maximumSelected:function(t){return\"Ви можете вибрати лише \"+t.maximum+\" \"+e(t.maximum,\"пункт\",\"пункти\",\"пунктів\")},noResults:function(){return\"Нічого не знайдено\"},searching:function(){return\"Пошук…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/vi.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/vi\",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Vui lòng nhập ít hơn \"+t+\" ký tự\";return t!=1&&(n+=\"s\"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Vui lòng nhập nhiều hơn \"+t+' ký tự\"';return n},loadingMore:function(){return\"Đang lấy thêm kết quả…\"},maximumSelected:function(e){var t=\"Chỉ có thể chọn được \"+e.maximum+\" lựa chọn\";return t},noResults:function(){return\"Không tìm thấy kết quả\"},searching:function(){return\"Đang tìm…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/zh-CN.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/zh-CN\",[],function(){return{errorLoading:function(){return\"无法载入结果。\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"请删除\"+t+\"个字符\";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"请再输入至少\"+t+\"个字符\";return n},loadingMore:function(){return\"载入更多结果…\"},maximumSelected:function(e){var t=\"最多只能选择\"+e.maximum+\"个项目\";return t},noResults:function(){return\"未找到结果\"},searching:function(){return\"搜索中…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/zh-TW.js",
    "content": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/zh-TW\",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"請刪掉\"+t+\"個字元\";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"請再輸入\"+t+\"個字元\";return n},loadingMore:function(){return\"載入中…\"},maximumSelected:function(e){var t=\"你只能選擇最多\"+e.maximum+\"項\";return t},noResults:function(){return\"沒有找到相符的項目\"},searching:function(){return\"搜尋中…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/select2.full.js",
    "content": "/*!\n * Select2 4.0.2\n * https://select2.github.io\n *\n * Released under the MIT license\n * https://github.com/select2/select2/blob/master/LICENSE.md\n */\n(function (factory) {\n  if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module.\n    define(['jquery'], factory);\n  } else if (typeof exports === 'object') {\n    // Node/CommonJS\n    factory(require('jquery'));\n  } else {\n    // Browser globals\n    factory(jQuery);\n  }\n}(function (jQuery) {\n  // This is needed so we can catch the AMD loader configuration and use it\n  // The inner file should be wrapped (by `banner.start.js`) in a function that\n  // returns the AMD loader references.\n  var S2 =\n(function () {\n  // Restore the Select2 AMD loader so it can be used\n  // Needed mostly in the language files, where the loader is not inserted\n  if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {\n    var S2 = jQuery.fn.select2.amd;\n  }\nvar S2;(function () { if (!S2 || !S2.requirejs) {\nif (!S2) { S2 = {}; } else { require = S2; }\n/**\n * @license almond 0.3.1 Copyright (c) 2011-2014, The Dojo Foundation All Rights Reserved.\n * Available via the MIT or new BSD license.\n * see: http://github.com/jrburke/almond for details\n */\n//Going sloppy to avoid 'use strict' string cost, but strict practices should\n//be followed.\n/*jslint sloppy: true */\n/*global setTimeout: false */\n\nvar requirejs, require, define;\n(function (undef) {\n    var main, req, makeMap, handlers,\n        defined = {},\n        waiting = {},\n        config = {},\n        defining = {},\n        hasOwn = Object.prototype.hasOwnProperty,\n        aps = [].slice,\n        jsSuffixRegExp = /\\.js$/;\n\n    function hasProp(obj, prop) {\n        return hasOwn.call(obj, prop);\n    }\n\n    /**\n     * Given a relative module name, like ./something, normalize it to\n     * a real name that can be mapped to a path.\n     * @param {String} name the relative name\n     * @param {String} baseName a real name that the name arg is relative\n     * to.\n     * @returns {String} normalized name\n     */\n    function normalize(name, baseName) {\n        var nameParts, nameSegment, mapValue, foundMap, lastIndex,\n            foundI, foundStarMap, starI, i, j, part,\n            baseParts = baseName && baseName.split(\"/\"),\n            map = config.map,\n            starMap = (map && map['*']) || {};\n\n        //Adjust any relative paths.\n        if (name && name.charAt(0) === \".\") {\n            //If have a base name, try to normalize against it,\n            //otherwise, assume it is a top-level require that will\n            //be relative to baseUrl in the end.\n            if (baseName) {\n                name = name.split('/');\n                lastIndex = name.length - 1;\n\n                // Node .js allowance:\n                if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n                    name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n                }\n\n                //Lop off the last part of baseParts, so that . matches the\n                //\"directory\" and not name of the baseName's module. For instance,\n                //baseName of \"one/two/three\", maps to \"one/two/three.js\", but we\n                //want the directory, \"one/two\" for this normalization.\n                name = baseParts.slice(0, baseParts.length - 1).concat(name);\n\n                //start trimDots\n                for (i = 0; i < name.length; i += 1) {\n                    part = name[i];\n                    if (part === \".\") {\n                        name.splice(i, 1);\n                        i -= 1;\n                    } else if (part === \"..\") {\n                        if (i === 1 && (name[2] === '..' || name[0] === '..')) {\n                            //End of the line. Keep at least one non-dot\n                            //path segment at the front so it can be mapped\n                            //correctly to disk. Otherwise, there is likely\n                            //no path mapping for a path starting with '..'.\n                            //This can still fail, but catches the most reasonable\n                            //uses of ..\n                            break;\n                        } else if (i > 0) {\n                            name.splice(i - 1, 2);\n                            i -= 2;\n                        }\n                    }\n                }\n                //end trimDots\n\n                name = name.join(\"/\");\n            } else if (name.indexOf('./') === 0) {\n                // No baseName, so this is ID is resolved relative\n                // to baseUrl, pull off the leading dot.\n                name = name.substring(2);\n            }\n        }\n\n        //Apply map config if available.\n        if ((baseParts || starMap) && map) {\n            nameParts = name.split('/');\n\n            for (i = nameParts.length; i > 0; i -= 1) {\n                nameSegment = nameParts.slice(0, i).join(\"/\");\n\n                if (baseParts) {\n                    //Find the longest baseName segment match in the config.\n                    //So, do joins on the biggest to smallest lengths of baseParts.\n                    for (j = baseParts.length; j > 0; j -= 1) {\n                        mapValue = map[baseParts.slice(0, j).join('/')];\n\n                        //baseName segment has  config, find if it has one for\n                        //this name.\n                        if (mapValue) {\n                            mapValue = mapValue[nameSegment];\n                            if (mapValue) {\n                                //Match, update name to the new value.\n                                foundMap = mapValue;\n                                foundI = i;\n                                break;\n                            }\n                        }\n                    }\n                }\n\n                if (foundMap) {\n                    break;\n                }\n\n                //Check for a star map match, but just hold on to it,\n                //if there is a shorter segment match later in a matching\n                //config, then favor over this star map.\n                if (!foundStarMap && starMap && starMap[nameSegment]) {\n                    foundStarMap = starMap[nameSegment];\n                    starI = i;\n                }\n            }\n\n            if (!foundMap && foundStarMap) {\n                foundMap = foundStarMap;\n                foundI = starI;\n            }\n\n            if (foundMap) {\n                nameParts.splice(0, foundI, foundMap);\n                name = nameParts.join('/');\n            }\n        }\n\n        return name;\n    }\n\n    function makeRequire(relName, forceSync) {\n        return function () {\n            //A version of a require function that passes a moduleName\n            //value for items that may need to\n            //look up paths relative to the moduleName\n            var args = aps.call(arguments, 0);\n\n            //If first arg is not require('string'), and there is only\n            //one arg, it is the array form without a callback. Insert\n            //a null so that the following concat is correct.\n            if (typeof args[0] !== 'string' && args.length === 1) {\n                args.push(null);\n            }\n            return req.apply(undef, args.concat([relName, forceSync]));\n        };\n    }\n\n    function makeNormalize(relName) {\n        return function (name) {\n            return normalize(name, relName);\n        };\n    }\n\n    function makeLoad(depName) {\n        return function (value) {\n            defined[depName] = value;\n        };\n    }\n\n    function callDep(name) {\n        if (hasProp(waiting, name)) {\n            var args = waiting[name];\n            delete waiting[name];\n            defining[name] = true;\n            main.apply(undef, args);\n        }\n\n        if (!hasProp(defined, name) && !hasProp(defining, name)) {\n            throw new Error('No ' + name);\n        }\n        return defined[name];\n    }\n\n    //Turns a plugin!resource to [plugin, resource]\n    //with the plugin being undefined if the name\n    //did not have a plugin prefix.\n    function splitPrefix(name) {\n        var prefix,\n            index = name ? name.indexOf('!') : -1;\n        if (index > -1) {\n            prefix = name.substring(0, index);\n            name = name.substring(index + 1, name.length);\n        }\n        return [prefix, name];\n    }\n\n    /**\n     * Makes a name map, normalizing the name, and using a plugin\n     * for normalization if necessary. Grabs a ref to plugin\n     * too, as an optimization.\n     */\n    makeMap = function (name, relName) {\n        var plugin,\n            parts = splitPrefix(name),\n            prefix = parts[0];\n\n        name = parts[1];\n\n        if (prefix) {\n            prefix = normalize(prefix, relName);\n            plugin = callDep(prefix);\n        }\n\n        //Normalize according\n        if (prefix) {\n            if (plugin && plugin.normalize) {\n                name = plugin.normalize(name, makeNormalize(relName));\n            } else {\n                name = normalize(name, relName);\n            }\n        } else {\n            name = normalize(name, relName);\n            parts = splitPrefix(name);\n            prefix = parts[0];\n            name = parts[1];\n            if (prefix) {\n                plugin = callDep(prefix);\n            }\n        }\n\n        //Using ridiculous property names for space reasons\n        return {\n            f: prefix ? prefix + '!' + name : name, //fullName\n            n: name,\n            pr: prefix,\n            p: plugin\n        };\n    };\n\n    function makeConfig(name) {\n        return function () {\n            return (config && config.config && config.config[name]) || {};\n        };\n    }\n\n    handlers = {\n        require: function (name) {\n            return makeRequire(name);\n        },\n        exports: function (name) {\n            var e = defined[name];\n            if (typeof e !== 'undefined') {\n                return e;\n            } else {\n                return (defined[name] = {});\n            }\n        },\n        module: function (name) {\n            return {\n                id: name,\n                uri: '',\n                exports: defined[name],\n                config: makeConfig(name)\n            };\n        }\n    };\n\n    main = function (name, deps, callback, relName) {\n        var cjsModule, depName, ret, map, i,\n            args = [],\n            callbackType = typeof callback,\n            usingExports;\n\n        //Use name if no relName\n        relName = relName || name;\n\n        //Call the callback to define the module, if necessary.\n        if (callbackType === 'undefined' || callbackType === 'function') {\n            //Pull out the defined dependencies and pass the ordered\n            //values to the callback.\n            //Default to [require, exports, module] if no deps\n            deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\n            for (i = 0; i < deps.length; i += 1) {\n                map = makeMap(deps[i], relName);\n                depName = map.f;\n\n                //Fast path CommonJS standard dependencies.\n                if (depName === \"require\") {\n                    args[i] = handlers.require(name);\n                } else if (depName === \"exports\") {\n                    //CommonJS module spec 1.1\n                    args[i] = handlers.exports(name);\n                    usingExports = true;\n                } else if (depName === \"module\") {\n                    //CommonJS module spec 1.1\n                    cjsModule = args[i] = handlers.module(name);\n                } else if (hasProp(defined, depName) ||\n                           hasProp(waiting, depName) ||\n                           hasProp(defining, depName)) {\n                    args[i] = callDep(depName);\n                } else if (map.p) {\n                    map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\n                    args[i] = defined[depName];\n                } else {\n                    throw new Error(name + ' missing ' + depName);\n                }\n            }\n\n            ret = callback ? callback.apply(defined[name], args) : undefined;\n\n            if (name) {\n                //If setting exports via \"module\" is in play,\n                //favor that over return value and exports. After that,\n                //favor a non-undefined return value over exports use.\n                if (cjsModule && cjsModule.exports !== undef &&\n                        cjsModule.exports !== defined[name]) {\n                    defined[name] = cjsModule.exports;\n                } else if (ret !== undef || !usingExports) {\n                    //Use the return value from the function.\n                    defined[name] = ret;\n                }\n            }\n        } else if (name) {\n            //May just be an object definition for the module. Only\n            //worry about defining if have a module name.\n            defined[name] = callback;\n        }\n    };\n\n    requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\n        if (typeof deps === \"string\") {\n            if (handlers[deps]) {\n                //callback in this case is really relName\n                return handlers[deps](callback);\n            }\n            //Just return the module wanted. In this scenario, the\n            //deps arg is the module name, and second arg (if passed)\n            //is just the relName.\n            //Normalize module name, if it contains . or ..\n            return callDep(makeMap(deps, callback).f);\n        } else if (!deps.splice) {\n            //deps is a config object, not an array.\n            config = deps;\n            if (config.deps) {\n                req(config.deps, config.callback);\n            }\n            if (!callback) {\n                return;\n            }\n\n            if (callback.splice) {\n                //callback is an array, which means it is a dependency list.\n                //Adjust args if there are dependencies\n                deps = callback;\n                callback = relName;\n                relName = null;\n            } else {\n                deps = undef;\n            }\n        }\n\n        //Support require(['a'])\n        callback = callback || function () {};\n\n        //If relName is a function, it is an errback handler,\n        //so remove it.\n        if (typeof relName === 'function') {\n            relName = forceSync;\n            forceSync = alt;\n        }\n\n        //Simulate async callback;\n        if (forceSync) {\n            main(undef, deps, callback, relName);\n        } else {\n            //Using a non-zero value because of concern for what old browsers\n            //do, and latest browsers \"upgrade\" to 4 if lower value is used:\n            //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\n            //If want a value immediately, use require('id') instead -- something\n            //that works in almond on the global level, but not guaranteed and\n            //unlikely to work in other AMD implementations.\n            setTimeout(function () {\n                main(undef, deps, callback, relName);\n            }, 4);\n        }\n\n        return req;\n    };\n\n    /**\n     * Just drops the config on the floor, but returns req in case\n     * the config return value is used.\n     */\n    req.config = function (cfg) {\n        return req(cfg);\n    };\n\n    /**\n     * Expose module registry for debugging and tooling\n     */\n    requirejs._defined = defined;\n\n    define = function (name, deps, callback) {\n        if (typeof name !== 'string') {\n            throw new Error('See almond README: incorrect module build, no module name');\n        }\n\n        //This module may not have dependencies\n        if (!deps.splice) {\n            //deps is not an array, so probably means\n            //an object literal or factory function for\n            //the value. Adjust args.\n            callback = deps;\n            deps = [];\n        }\n\n        if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n            waiting[name] = [name, deps, callback];\n        }\n    };\n\n    define.amd = {\n        jQuery: true\n    };\n}());\n\nS2.requirejs = requirejs;S2.require = require;S2.define = define;\n}\n}());\nS2.define(\"almond\", function(){});\n\n/* global jQuery:false, $:false */\nS2.define('jquery',[],function () {\n  var _$ = jQuery || $;\n\n  if (_$ == null && console && console.error) {\n    console.error(\n      'Select2: An instance of jQuery or a jQuery-compatible library was not ' +\n      'found. Make sure that you are including jQuery before Select2 on your ' +\n      'web page.'\n    );\n  }\n\n  return _$;\n});\n\nS2.define('select2/utils',[\n  'jquery'\n], function ($) {\n  var Utils = {};\n\n  Utils.Extend = function (ChildClass, SuperClass) {\n    var __hasProp = {}.hasOwnProperty;\n\n    function BaseConstructor () {\n      this.constructor = ChildClass;\n    }\n\n    for (var key in SuperClass) {\n      if (__hasProp.call(SuperClass, key)) {\n        ChildClass[key] = SuperClass[key];\n      }\n    }\n\n    BaseConstructor.prototype = SuperClass.prototype;\n    ChildClass.prototype = new BaseConstructor();\n    ChildClass.__super__ = SuperClass.prototype;\n\n    return ChildClass;\n  };\n\n  function getMethods (theClass) {\n    var proto = theClass.prototype;\n\n    var methods = [];\n\n    for (var methodName in proto) {\n      var m = proto[methodName];\n\n      if (typeof m !== 'function') {\n        continue;\n      }\n\n      if (methodName === 'constructor') {\n        continue;\n      }\n\n      methods.push(methodName);\n    }\n\n    return methods;\n  }\n\n  Utils.Decorate = function (SuperClass, DecoratorClass) {\n    var decoratedMethods = getMethods(DecoratorClass);\n    var superMethods = getMethods(SuperClass);\n\n    function DecoratedClass () {\n      var unshift = Array.prototype.unshift;\n\n      var argCount = DecoratorClass.prototype.constructor.length;\n\n      var calledConstructor = SuperClass.prototype.constructor;\n\n      if (argCount > 0) {\n        unshift.call(arguments, SuperClass.prototype.constructor);\n\n        calledConstructor = DecoratorClass.prototype.constructor;\n      }\n\n      calledConstructor.apply(this, arguments);\n    }\n\n    DecoratorClass.displayName = SuperClass.displayName;\n\n    function ctr () {\n      this.constructor = DecoratedClass;\n    }\n\n    DecoratedClass.prototype = new ctr();\n\n    for (var m = 0; m < superMethods.length; m++) {\n        var superMethod = superMethods[m];\n\n        DecoratedClass.prototype[superMethod] =\n          SuperClass.prototype[superMethod];\n    }\n\n    var calledMethod = function (methodName) {\n      // Stub out the original method if it's not decorating an actual method\n      var originalMethod = function () {};\n\n      if (methodName in DecoratedClass.prototype) {\n        originalMethod = DecoratedClass.prototype[methodName];\n      }\n\n      var decoratedMethod = DecoratorClass.prototype[methodName];\n\n      return function () {\n        var unshift = Array.prototype.unshift;\n\n        unshift.call(arguments, originalMethod);\n\n        return decoratedMethod.apply(this, arguments);\n      };\n    };\n\n    for (var d = 0; d < decoratedMethods.length; d++) {\n      var decoratedMethod = decoratedMethods[d];\n\n      DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\n    }\n\n    return DecoratedClass;\n  };\n\n  var Observable = function () {\n    this.listeners = {};\n  };\n\n  Observable.prototype.on = function (event, callback) {\n    this.listeners = this.listeners || {};\n\n    if (event in this.listeners) {\n      this.listeners[event].push(callback);\n    } else {\n      this.listeners[event] = [callback];\n    }\n  };\n\n  Observable.prototype.trigger = function (event) {\n    var slice = Array.prototype.slice;\n\n    this.listeners = this.listeners || {};\n\n    if (event in this.listeners) {\n      this.invoke(this.listeners[event], slice.call(arguments, 1));\n    }\n\n    if ('*' in this.listeners) {\n      this.invoke(this.listeners['*'], arguments);\n    }\n  };\n\n  Observable.prototype.invoke = function (listeners, params) {\n    for (var i = 0, len = listeners.length; i < len; i++) {\n      listeners[i].apply(this, params);\n    }\n  };\n\n  Utils.Observable = Observable;\n\n  Utils.generateChars = function (length) {\n    var chars = '';\n\n    for (var i = 0; i < length; i++) {\n      var randomChar = Math.floor(Math.random() * 36);\n      chars += randomChar.toString(36);\n    }\n\n    return chars;\n  };\n\n  Utils.bind = function (func, context) {\n    return function () {\n      func.apply(context, arguments);\n    };\n  };\n\n  Utils._convertData = function (data) {\n    for (var originalKey in data) {\n      var keys = originalKey.split('-');\n\n      var dataLevel = data;\n\n      if (keys.length === 1) {\n        continue;\n      }\n\n      for (var k = 0; k < keys.length; k++) {\n        var key = keys[k];\n\n        // Lowercase the first letter\n        // By default, dash-separated becomes camelCase\n        key = key.substring(0, 1).toLowerCase() + key.substring(1);\n\n        if (!(key in dataLevel)) {\n          dataLevel[key] = {};\n        }\n\n        if (k == keys.length - 1) {\n          dataLevel[key] = data[originalKey];\n        }\n\n        dataLevel = dataLevel[key];\n      }\n\n      delete data[originalKey];\n    }\n\n    return data;\n  };\n\n  Utils.hasScroll = function (index, el) {\n    // Adapted from the function created by @ShadowScripter\n    // and adapted by @BillBarry on the Stack Exchange Code Review website.\n    // The original code can be found at\n    // http://codereview.stackexchange.com/q/13338\n    // and was designed to be used with the Sizzle selector engine.\n\n    var $el = $(el);\n    var overflowX = el.style.overflowX;\n    var overflowY = el.style.overflowY;\n\n    //Check both x and y declarations\n    if (overflowX === overflowY &&\n        (overflowY === 'hidden' || overflowY === 'visible')) {\n      return false;\n    }\n\n    if (overflowX === 'scroll' || overflowY === 'scroll') {\n      return true;\n    }\n\n    return ($el.innerHeight() < el.scrollHeight ||\n      $el.innerWidth() < el.scrollWidth);\n  };\n\n  Utils.escapeMarkup = function (markup) {\n    var replaceMap = {\n      '\\\\': '&#92;',\n      '&': '&amp;',\n      '<': '&lt;',\n      '>': '&gt;',\n      '\"': '&quot;',\n      '\\'': '&#39;',\n      '/': '&#47;'\n    };\n\n    // Do not try to escape the markup if it's not a string\n    if (typeof markup !== 'string') {\n      return markup;\n    }\n\n    return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n      return replaceMap[match];\n    });\n  };\n\n  // Append an array of jQuery nodes to a given element.\n  Utils.appendMany = function ($element, $nodes) {\n    // jQuery 1.7.x does not support $.fn.append() with an array\n    // Fall back to a jQuery object collection using $.fn.add()\n    if ($.fn.jquery.substr(0, 3) === '1.7') {\n      var $jqNodes = $();\n\n      $.map($nodes, function (node) {\n        $jqNodes = $jqNodes.add(node);\n      });\n\n      $nodes = $jqNodes;\n    }\n\n    $element.append($nodes);\n  };\n\n  return Utils;\n});\n\nS2.define('select2/results',[\n  'jquery',\n  './utils'\n], function ($, Utils) {\n  function Results ($element, options, dataAdapter) {\n    this.$element = $element;\n    this.data = dataAdapter;\n    this.options = options;\n\n    Results.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(Results, Utils.Observable);\n\n  Results.prototype.render = function () {\n    var $results = $(\n      '<ul class=\"select2-results__options\" role=\"tree\"></ul>'\n    );\n\n    if (this.options.get('multiple')) {\n      $results.attr('aria-multiselectable', 'true');\n    }\n\n    this.$results = $results;\n\n    return $results;\n  };\n\n  Results.prototype.clear = function () {\n    this.$results.empty();\n  };\n\n  Results.prototype.displayMessage = function (params) {\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    this.clear();\n    this.hideLoading();\n\n    var $message = $(\n      '<li role=\"treeitem\" aria-live=\"assertive\"' +\n      ' class=\"select2-results__option\"></li>'\n    );\n\n    var message = this.options.get('translations').get(params.message);\n\n    $message.append(\n      escapeMarkup(\n        message(params.args)\n      )\n    );\n\n    $message[0].className += ' select2-results__message';\n\n    this.$results.append($message);\n  };\n\n  Results.prototype.hideMessages = function () {\n    this.$results.find('.select2-results__message').remove();\n  };\n\n  Results.prototype.append = function (data) {\n    this.hideLoading();\n\n    var $options = [];\n\n    if (data.results == null || data.results.length === 0) {\n      if (this.$results.children().length === 0) {\n        this.trigger('results:message', {\n          message: 'noResults'\n        });\n      }\n\n      return;\n    }\n\n    data.results = this.sort(data.results);\n\n    for (var d = 0; d < data.results.length; d++) {\n      var item = data.results[d];\n\n      var $option = this.option(item);\n\n      $options.push($option);\n    }\n\n    this.$results.append($options);\n  };\n\n  Results.prototype.position = function ($results, $dropdown) {\n    var $resultsContainer = $dropdown.find('.select2-results');\n    $resultsContainer.append($results);\n  };\n\n  Results.prototype.sort = function (data) {\n    var sorter = this.options.get('sorter');\n\n    return sorter(data);\n  };\n\n  Results.prototype.setClasses = function () {\n    var self = this;\n\n    this.data.current(function (selected) {\n      var selectedIds = $.map(selected, function (s) {\n        return s.id.toString();\n      });\n\n      var $options = self.$results\n        .find('.select2-results__option[aria-selected]');\n\n      $options.each(function () {\n        var $option = $(this);\n\n        var item = $.data(this, 'data');\n\n        // id needs to be converted to a string when comparing\n        var id = '' + item.id;\n\n        if ((item.element != null && item.element.selected) ||\n            (item.element == null && $.inArray(id, selectedIds) > -1)) {\n          $option.attr('aria-selected', 'true');\n        } else {\n          $option.attr('aria-selected', 'false');\n        }\n      });\n\n      var $selected = $options.filter('[aria-selected=true]');\n\n      // Check if there are any selected options\n      if ($selected.length > 0) {\n        // If there are selected options, highlight the first\n        $selected.first().trigger('mouseenter');\n      } else {\n        // If there are no selected options, highlight the first option\n        // in the dropdown\n        $options.first().trigger('mouseenter');\n      }\n    });\n  };\n\n  Results.prototype.showLoading = function (params) {\n    this.hideLoading();\n\n    var loadingMore = this.options.get('translations').get('searching');\n\n    var loading = {\n      disabled: true,\n      loading: true,\n      text: loadingMore(params)\n    };\n    var $loading = this.option(loading);\n    $loading.className += ' loading-results';\n\n    this.$results.prepend($loading);\n  };\n\n  Results.prototype.hideLoading = function () {\n    this.$results.find('.loading-results').remove();\n  };\n\n  Results.prototype.option = function (data) {\n    var option = document.createElement('li');\n    option.className = 'select2-results__option';\n\n    var attrs = {\n      'role': 'treeitem',\n      'aria-selected': 'false'\n    };\n\n    if (data.disabled) {\n      delete attrs['aria-selected'];\n      attrs['aria-disabled'] = 'true';\n    }\n\n    if (data.id == null) {\n      delete attrs['aria-selected'];\n    }\n\n    if (data._resultId != null) {\n      option.id = data._resultId;\n    }\n\n    if (data.title) {\n      option.title = data.title;\n    }\n\n    if (data.children) {\n      attrs.role = 'group';\n      attrs['aria-label'] = data.text;\n      delete attrs['aria-selected'];\n    }\n\n    for (var attr in attrs) {\n      var val = attrs[attr];\n\n      option.setAttribute(attr, val);\n    }\n\n    if (data.children) {\n      var $option = $(option);\n\n      var label = document.createElement('strong');\n      label.className = 'select2-results__group';\n\n      var $label = $(label);\n      this.template(data, label);\n\n      var $children = [];\n\n      for (var c = 0; c < data.children.length; c++) {\n        var child = data.children[c];\n\n        var $child = this.option(child);\n\n        $children.push($child);\n      }\n\n      var $childrenContainer = $('<ul></ul>', {\n        'class': 'select2-results__options select2-results__options--nested'\n      });\n\n      $childrenContainer.append($children);\n\n      $option.append(label);\n      $option.append($childrenContainer);\n    } else {\n      this.template(data, option);\n    }\n\n    $.data(option, 'data', data);\n\n    return option;\n  };\n\n  Results.prototype.bind = function (container, $container) {\n    var self = this;\n\n    var id = container.id + '-results';\n\n    this.$results.attr('id', id);\n\n    container.on('results:all', function (params) {\n      self.clear();\n      self.append(params.data);\n\n      if (container.isOpen()) {\n        self.setClasses();\n      }\n    });\n\n    container.on('results:append', function (params) {\n      self.append(params.data);\n\n      if (container.isOpen()) {\n        self.setClasses();\n      }\n    });\n\n    container.on('query', function (params) {\n      self.hideMessages();\n      self.showLoading(params);\n    });\n\n    container.on('select', function () {\n      if (!container.isOpen()) {\n        return;\n      }\n\n      self.setClasses();\n    });\n\n    container.on('unselect', function () {\n      if (!container.isOpen()) {\n        return;\n      }\n\n      self.setClasses();\n    });\n\n    container.on('open', function () {\n      // When the dropdown is open, aria-expended=\"true\"\n      self.$results.attr('aria-expanded', 'true');\n      self.$results.attr('aria-hidden', 'false');\n\n      self.setClasses();\n      self.ensureHighlightVisible();\n    });\n\n    container.on('close', function () {\n      // When the dropdown is closed, aria-expended=\"false\"\n      self.$results.attr('aria-expanded', 'false');\n      self.$results.attr('aria-hidden', 'true');\n      self.$results.removeAttr('aria-activedescendant');\n    });\n\n    container.on('results:toggle', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      if ($highlighted.length === 0) {\n        return;\n      }\n\n      $highlighted.trigger('mouseup');\n    });\n\n    container.on('results:select', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      if ($highlighted.length === 0) {\n        return;\n      }\n\n      var data = $highlighted.data('data');\n\n      if ($highlighted.attr('aria-selected') == 'true') {\n        self.trigger('close', {});\n      } else {\n        self.trigger('select', {\n          data: data\n        });\n      }\n    });\n\n    container.on('results:previous', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      var $options = self.$results.find('[aria-selected]');\n\n      var currentIndex = $options.index($highlighted);\n\n      // If we are already at te top, don't move further\n      if (currentIndex === 0) {\n        return;\n      }\n\n      var nextIndex = currentIndex - 1;\n\n      // If none are highlighted, highlight the first\n      if ($highlighted.length === 0) {\n        nextIndex = 0;\n      }\n\n      var $next = $options.eq(nextIndex);\n\n      $next.trigger('mouseenter');\n\n      var currentOffset = self.$results.offset().top;\n      var nextTop = $next.offset().top;\n      var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\n\n      if (nextIndex === 0) {\n        self.$results.scrollTop(0);\n      } else if (nextTop - currentOffset < 0) {\n        self.$results.scrollTop(nextOffset);\n      }\n    });\n\n    container.on('results:next', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      var $options = self.$results.find('[aria-selected]');\n\n      var currentIndex = $options.index($highlighted);\n\n      var nextIndex = currentIndex + 1;\n\n      // If we are at the last option, stay there\n      if (nextIndex >= $options.length) {\n        return;\n      }\n\n      var $next = $options.eq(nextIndex);\n\n      $next.trigger('mouseenter');\n\n      var currentOffset = self.$results.offset().top +\n        self.$results.outerHeight(false);\n      var nextBottom = $next.offset().top + $next.outerHeight(false);\n      var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\n\n      if (nextIndex === 0) {\n        self.$results.scrollTop(0);\n      } else if (nextBottom > currentOffset) {\n        self.$results.scrollTop(nextOffset);\n      }\n    });\n\n    container.on('results:focus', function (params) {\n      params.element.addClass('select2-results__option--highlighted');\n    });\n\n    container.on('results:message', function (params) {\n      self.displayMessage(params);\n    });\n\n    if ($.fn.mousewheel) {\n      this.$results.on('mousewheel', function (e) {\n        var top = self.$results.scrollTop();\n\n        var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\n\n        var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\n        var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\n\n        if (isAtTop) {\n          self.$results.scrollTop(0);\n\n          e.preventDefault();\n          e.stopPropagation();\n        } else if (isAtBottom) {\n          self.$results.scrollTop(\n            self.$results.get(0).scrollHeight - self.$results.height()\n          );\n\n          e.preventDefault();\n          e.stopPropagation();\n        }\n      });\n    }\n\n    this.$results.on('mouseup', '.select2-results__option[aria-selected]',\n      function (evt) {\n      var $this = $(this);\n\n      var data = $this.data('data');\n\n      if ($this.attr('aria-selected') === 'true') {\n        if (self.options.get('multiple')) {\n          self.trigger('unselect', {\n            originalEvent: evt,\n            data: data\n          });\n        } else {\n          self.trigger('close', {});\n        }\n\n        return;\n      }\n\n      self.trigger('select', {\n        originalEvent: evt,\n        data: data\n      });\n    });\n\n    this.$results.on('mouseenter', '.select2-results__option[aria-selected]',\n      function (evt) {\n      var data = $(this).data('data');\n\n      self.getHighlightedResults()\n          .removeClass('select2-results__option--highlighted');\n\n      self.trigger('results:focus', {\n        data: data,\n        element: $(this)\n      });\n    });\n  };\n\n  Results.prototype.getHighlightedResults = function () {\n    var $highlighted = this.$results\n    .find('.select2-results__option--highlighted');\n\n    return $highlighted;\n  };\n\n  Results.prototype.destroy = function () {\n    this.$results.remove();\n  };\n\n  Results.prototype.ensureHighlightVisible = function () {\n    var $highlighted = this.getHighlightedResults();\n\n    if ($highlighted.length === 0) {\n      return;\n    }\n\n    var $options = this.$results.find('[aria-selected]');\n\n    var currentIndex = $options.index($highlighted);\n\n    var currentOffset = this.$results.offset().top;\n    var nextTop = $highlighted.offset().top;\n    var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\n\n    var offsetDelta = nextTop - currentOffset;\n    nextOffset -= $highlighted.outerHeight(false) * 2;\n\n    if (currentIndex <= 2) {\n      this.$results.scrollTop(0);\n    } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {\n      this.$results.scrollTop(nextOffset);\n    }\n  };\n\n  Results.prototype.template = function (result, container) {\n    var template = this.options.get('templateResult');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    var content = template(result, container);\n\n    if (content == null) {\n      container.style.display = 'none';\n    } else if (typeof content === 'string') {\n      container.innerHTML = escapeMarkup(content);\n    } else {\n      $(container).append(content);\n    }\n  };\n\n  return Results;\n});\n\nS2.define('select2/keys',[\n\n], function () {\n  var KEYS = {\n    BACKSPACE: 8,\n    TAB: 9,\n    ENTER: 13,\n    SHIFT: 16,\n    CTRL: 17,\n    ALT: 18,\n    ESC: 27,\n    SPACE: 32,\n    PAGE_UP: 33,\n    PAGE_DOWN: 34,\n    END: 35,\n    HOME: 36,\n    LEFT: 37,\n    UP: 38,\n    RIGHT: 39,\n    DOWN: 40,\n    DELETE: 46\n  };\n\n  return KEYS;\n});\n\nS2.define('select2/selection/base',[\n  'jquery',\n  '../utils',\n  '../keys'\n], function ($, Utils, KEYS) {\n  function BaseSelection ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    BaseSelection.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(BaseSelection, Utils.Observable);\n\n  BaseSelection.prototype.render = function () {\n    var $selection = $(\n      '<span class=\"select2-selection\" role=\"combobox\" ' +\n      ' aria-haspopup=\"true\" aria-expanded=\"false\">' +\n      '</span>'\n    );\n\n    this._tabindex = 0;\n\n    if (this.$element.data('old-tabindex') != null) {\n      this._tabindex = this.$element.data('old-tabindex');\n    } else if (this.$element.attr('tabindex') != null) {\n      this._tabindex = this.$element.attr('tabindex');\n    }\n\n    $selection.attr('title', this.$element.attr('title'));\n    $selection.attr('tabindex', this._tabindex);\n\n    this.$selection = $selection;\n\n    return $selection;\n  };\n\n  BaseSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    var id = container.id + '-container';\n    var resultsId = container.id + '-results';\n\n    this.container = container;\n\n    this.$selection.on('focus', function (evt) {\n      self.trigger('focus', evt);\n    });\n\n    this.$selection.on('blur', function (evt) {\n      self._handleBlur(evt);\n    });\n\n    this.$selection.on('keydown', function (evt) {\n      self.trigger('keypress', evt);\n\n      if (evt.which === KEYS.SPACE) {\n        evt.preventDefault();\n      }\n    });\n\n    container.on('results:focus', function (params) {\n      self.$selection.attr('aria-activedescendant', params.data._resultId);\n    });\n\n    container.on('selection:update', function (params) {\n      self.update(params.data);\n    });\n\n    container.on('open', function () {\n      // When the dropdown is open, aria-expanded=\"true\"\n      self.$selection.attr('aria-expanded', 'true');\n      self.$selection.attr('aria-owns', resultsId);\n\n      self._attachCloseHandler(container);\n    });\n\n    container.on('close', function () {\n      // When the dropdown is closed, aria-expanded=\"false\"\n      self.$selection.attr('aria-expanded', 'false');\n      self.$selection.removeAttr('aria-activedescendant');\n      self.$selection.removeAttr('aria-owns');\n\n      self.$selection.focus();\n\n      self._detachCloseHandler(container);\n    });\n\n    container.on('enable', function () {\n      self.$selection.attr('tabindex', self._tabindex);\n    });\n\n    container.on('disable', function () {\n      self.$selection.attr('tabindex', '-1');\n    });\n  };\n\n  BaseSelection.prototype._handleBlur = function (evt) {\n    var self = this;\n\n    // This needs to be delayed as the active element is the body when the tab\n    // key is pressed, possibly along with others.\n    window.setTimeout(function () {\n      // Don't trigger `blur` if the focus is still in the selection\n      if (\n        (document.activeElement == self.$selection[0]) ||\n        ($.contains(self.$selection[0], document.activeElement))\n      ) {\n        return;\n      }\n\n      self.trigger('blur', evt);\n    }, 1);\n  };\n\n  BaseSelection.prototype._attachCloseHandler = function (container) {\n    var self = this;\n\n    $(document.body).on('mousedown.select2.' + container.id, function (e) {\n      var $target = $(e.target);\n\n      var $select = $target.closest('.select2');\n\n      var $all = $('.select2.select2-container--open');\n\n      $all.each(function () {\n        var $this = $(this);\n\n        if (this == $select[0]) {\n          return;\n        }\n\n        var $element = $this.data('element');\n\n        $element.select2('close');\n      });\n    });\n  };\n\n  BaseSelection.prototype._detachCloseHandler = function (container) {\n    $(document.body).off('mousedown.select2.' + container.id);\n  };\n\n  BaseSelection.prototype.position = function ($selection, $container) {\n    var $selectionContainer = $container.find('.selection');\n    $selectionContainer.append($selection);\n  };\n\n  BaseSelection.prototype.destroy = function () {\n    this._detachCloseHandler(this.container);\n  };\n\n  BaseSelection.prototype.update = function (data) {\n    throw new Error('The `update` method must be defined in child classes.');\n  };\n\n  return BaseSelection;\n});\n\nS2.define('select2/selection/single',[\n  'jquery',\n  './base',\n  '../utils',\n  '../keys'\n], function ($, BaseSelection, Utils, KEYS) {\n  function SingleSelection () {\n    SingleSelection.__super__.constructor.apply(this, arguments);\n  }\n\n  Utils.Extend(SingleSelection, BaseSelection);\n\n  SingleSelection.prototype.render = function () {\n    var $selection = SingleSelection.__super__.render.call(this);\n\n    $selection.addClass('select2-selection--single');\n\n    $selection.html(\n      '<span class=\"select2-selection__rendered\"></span>' +\n      '<span class=\"select2-selection__arrow\" role=\"presentation\">' +\n        '<b role=\"presentation\"></b>' +\n      '</span>'\n    );\n\n    return $selection;\n  };\n\n  SingleSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    SingleSelection.__super__.bind.apply(this, arguments);\n\n    var id = container.id + '-container';\n\n    this.$selection.find('.select2-selection__rendered').attr('id', id);\n    this.$selection.attr('aria-labelledby', id);\n\n    this.$selection.on('mousedown', function (evt) {\n      // Only respond to left clicks\n      if (evt.which !== 1) {\n        return;\n      }\n\n      self.trigger('toggle', {\n        originalEvent: evt\n      });\n    });\n\n    this.$selection.on('focus', function (evt) {\n      // User focuses on the container\n    });\n\n    this.$selection.on('blur', function (evt) {\n      // User exits the container\n    });\n\n    container.on('selection:update', function (params) {\n      self.update(params.data);\n    });\n  };\n\n  SingleSelection.prototype.clear = function () {\n    this.$selection.find('.select2-selection__rendered').empty();\n  };\n\n  SingleSelection.prototype.display = function (data, container) {\n    var template = this.options.get('templateSelection');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    return escapeMarkup(template(data, container));\n  };\n\n  SingleSelection.prototype.selectionContainer = function () {\n    return $('<span></span>');\n  };\n\n  SingleSelection.prototype.update = function (data) {\n    if (data.length === 0) {\n      this.clear();\n      return;\n    }\n\n    var selection = data[0];\n\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n    var formatted = this.display(selection, $rendered);\n\n    $rendered.empty().append(formatted);\n    $rendered.prop('title', selection.title || selection.text);\n  };\n\n  return SingleSelection;\n});\n\nS2.define('select2/selection/multiple',[\n  'jquery',\n  './base',\n  '../utils'\n], function ($, BaseSelection, Utils) {\n  function MultipleSelection ($element, options) {\n    MultipleSelection.__super__.constructor.apply(this, arguments);\n  }\n\n  Utils.Extend(MultipleSelection, BaseSelection);\n\n  MultipleSelection.prototype.render = function () {\n    var $selection = MultipleSelection.__super__.render.call(this);\n\n    $selection.addClass('select2-selection--multiple');\n\n    $selection.html(\n      '<ul class=\"select2-selection__rendered\"></ul>'\n    );\n\n    return $selection;\n  };\n\n  MultipleSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    MultipleSelection.__super__.bind.apply(this, arguments);\n\n    this.$selection.on('click', function (evt) {\n      self.trigger('toggle', {\n        originalEvent: evt\n      });\n    });\n\n    this.$selection.on(\n      'click',\n      '.select2-selection__choice__remove',\n      function (evt) {\n        // Ignore the event if it is disabled\n        if (self.options.get('disabled')) {\n          return;\n        }\n\n        var $remove = $(this);\n        var $selection = $remove.parent();\n\n        var data = $selection.data('data');\n\n        self.trigger('unselect', {\n          originalEvent: evt,\n          data: data\n        });\n      }\n    );\n  };\n\n  MultipleSelection.prototype.clear = function () {\n    this.$selection.find('.select2-selection__rendered').empty();\n  };\n\n  MultipleSelection.prototype.display = function (data, container) {\n    var template = this.options.get('templateSelection');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    return escapeMarkup(template(data, container));\n  };\n\n  MultipleSelection.prototype.selectionContainer = function () {\n    var $container = $(\n      '<li class=\"select2-selection__choice\">' +\n        '<span class=\"select2-selection__choice__remove\" role=\"presentation\">' +\n          '&times;' +\n        '</span>' +\n      '</li>'\n    );\n\n    return $container;\n  };\n\n  MultipleSelection.prototype.update = function (data) {\n    this.clear();\n\n    if (data.length === 0) {\n      return;\n    }\n\n    var $selections = [];\n\n    for (var d = 0; d < data.length; d++) {\n      var selection = data[d];\n\n      var $selection = this.selectionContainer();\n      var formatted = this.display(selection, $selection);\n\n      $selection.append(formatted);\n      $selection.prop('title', selection.title || selection.text);\n\n      $selection.data('data', selection);\n\n      $selections.push($selection);\n    }\n\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n\n    Utils.appendMany($rendered, $selections);\n  };\n\n  return MultipleSelection;\n});\n\nS2.define('select2/selection/placeholder',[\n  '../utils'\n], function (Utils) {\n  function Placeholder (decorated, $element, options) {\n    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n    decorated.call(this, $element, options);\n  }\n\n  Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\n    if (typeof placeholder === 'string') {\n      placeholder = {\n        id: '',\n        text: placeholder\n      };\n    }\n\n    return placeholder;\n  };\n\n  Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\n    var $placeholder = this.selectionContainer();\n\n    $placeholder.html(this.display(placeholder));\n    $placeholder.addClass('select2-selection__placeholder')\n                .removeClass('select2-selection__choice');\n\n    return $placeholder;\n  };\n\n  Placeholder.prototype.update = function (decorated, data) {\n    var singlePlaceholder = (\n      data.length == 1 && data[0].id != this.placeholder.id\n    );\n    var multipleSelections = data.length > 1;\n\n    if (multipleSelections || singlePlaceholder) {\n      return decorated.call(this, data);\n    }\n\n    this.clear();\n\n    var $placeholder = this.createPlaceholder(this.placeholder);\n\n    this.$selection.find('.select2-selection__rendered').append($placeholder);\n  };\n\n  return Placeholder;\n});\n\nS2.define('select2/selection/allowClear',[\n  'jquery',\n  '../keys'\n], function ($, KEYS) {\n  function AllowClear () { }\n\n  AllowClear.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    if (this.placeholder == null) {\n      if (this.options.get('debug') && window.console && console.error) {\n        console.error(\n          'Select2: The `allowClear` option should be used in combination ' +\n          'with the `placeholder` option.'\n        );\n      }\n    }\n\n    this.$selection.on('mousedown', '.select2-selection__clear',\n      function (evt) {\n        self._handleClear(evt);\n    });\n\n    container.on('keypress', function (evt) {\n      self._handleKeyboardClear(evt, container);\n    });\n  };\n\n  AllowClear.prototype._handleClear = function (_, evt) {\n    // Ignore the event if it is disabled\n    if (this.options.get('disabled')) {\n      return;\n    }\n\n    var $clear = this.$selection.find('.select2-selection__clear');\n\n    // Ignore the event if nothing has been selected\n    if ($clear.length === 0) {\n      return;\n    }\n\n    evt.stopPropagation();\n\n    var data = $clear.data('data');\n\n    for (var d = 0; d < data.length; d++) {\n      var unselectData = {\n        data: data[d]\n      };\n\n      // Trigger the `unselect` event, so people can prevent it from being\n      // cleared.\n      this.trigger('unselect', unselectData);\n\n      // If the event was prevented, don't clear it out.\n      if (unselectData.prevented) {\n        return;\n      }\n    }\n\n    this.$element.val(this.placeholder.id).trigger('change');\n\n    this.trigger('toggle', {});\n  };\n\n  AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\n    if (container.isOpen()) {\n      return;\n    }\n\n    if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\n      this._handleClear(evt);\n    }\n  };\n\n  AllowClear.prototype.update = function (decorated, data) {\n    decorated.call(this, data);\n\n    if (this.$selection.find('.select2-selection__placeholder').length > 0 ||\n        data.length === 0) {\n      return;\n    }\n\n    var $remove = $(\n      '<span class=\"select2-selection__clear\">' +\n        '&times;' +\n      '</span>'\n    );\n    $remove.data('data', data);\n\n    this.$selection.find('.select2-selection__rendered').prepend($remove);\n  };\n\n  return AllowClear;\n});\n\nS2.define('select2/selection/search',[\n  'jquery',\n  '../utils',\n  '../keys'\n], function ($, Utils, KEYS) {\n  function Search (decorated, $element, options) {\n    decorated.call(this, $element, options);\n  }\n\n  Search.prototype.render = function (decorated) {\n    var $search = $(\n      '<li class=\"select2-search select2-search--inline\">' +\n        '<input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\"' +\n        ' autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"off\"' +\n        ' spellcheck=\"false\" role=\"textbox\" aria-autocomplete=\"list\" />' +\n      '</li>'\n    );\n\n    this.$searchContainer = $search;\n    this.$search = $search.find('input');\n\n    var $rendered = decorated.call(this);\n\n    this._transferTabIndex();\n\n    return $rendered;\n  };\n\n  Search.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('open', function () {\n      self.$search.trigger('focus');\n    });\n\n    container.on('close', function () {\n      self.$search.val('');\n      self.$search.removeAttr('aria-activedescendant');\n      self.$search.trigger('focus');\n    });\n\n    container.on('enable', function () {\n      self.$search.prop('disabled', false);\n\n      self._transferTabIndex();\n    });\n\n    container.on('disable', function () {\n      self.$search.prop('disabled', true);\n    });\n\n    container.on('focus', function (evt) {\n      self.$search.trigger('focus');\n    });\n\n    container.on('results:focus', function (params) {\n      self.$search.attr('aria-activedescendant', params.id);\n    });\n\n    this.$selection.on('focusin', '.select2-search--inline', function (evt) {\n      self.trigger('focus', evt);\n    });\n\n    this.$selection.on('focusout', '.select2-search--inline', function (evt) {\n      self._handleBlur(evt);\n    });\n\n    this.$selection.on('keydown', '.select2-search--inline', function (evt) {\n      evt.stopPropagation();\n\n      self.trigger('keypress', evt);\n\n      self._keyUpPrevented = evt.isDefaultPrevented();\n\n      var key = evt.which;\n\n      if (key === KEYS.BACKSPACE && self.$search.val() === '') {\n        var $previousChoice = self.$searchContainer\n          .prev('.select2-selection__choice');\n\n        if ($previousChoice.length > 0) {\n          var item = $previousChoice.data('data');\n\n          self.searchRemoveChoice(item);\n\n          evt.preventDefault();\n        }\n      }\n    });\n\n    // Try to detect the IE version should the `documentMode` property that\n    // is stored on the document. This is only implemented in IE and is\n    // slightly cleaner than doing a user agent check.\n    // This property is not available in Edge, but Edge also doesn't have\n    // this bug.\n    var msie = document.documentMode;\n    var disableInputEvents = msie && msie <= 11;\n\n    // Workaround for browsers which do not support the `input` event\n    // This will prevent double-triggering of events for browsers which support\n    // both the `keyup` and `input` events.\n    this.$selection.on(\n      'input.searchcheck',\n      '.select2-search--inline',\n      function (evt) {\n        // IE will trigger the `input` event when a placeholder is used on a\n        // search box. To get around this issue, we are forced to ignore all\n        // `input` events in IE and keep using `keyup`.\n        if (disableInputEvents) {\n          self.$selection.off('input.search input.searchcheck');\n          return;\n        }\n\n        // Unbind the duplicated `keyup` event\n        self.$selection.off('keyup.search');\n      }\n    );\n\n    this.$selection.on(\n      'keyup.search input.search',\n      '.select2-search--inline',\n      function (evt) {\n        // IE will trigger the `input` event when a placeholder is used on a\n        // search box. To get around this issue, we are forced to ignore all\n        // `input` events in IE and keep using `keyup`.\n        if (disableInputEvents && evt.type === 'input') {\n          self.$selection.off('input.search input.searchcheck');\n          return;\n        }\n\n        var key = evt.which;\n\n        // We can freely ignore events from modifier keys\n        if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {\n          return;\n        }\n\n        // Tabbing will be handled during the `keydown` phase\n        if (key == KEYS.TAB) {\n          return;\n        }\n\n        self.handleSearch(evt);\n      }\n    );\n  };\n\n  /**\n   * This method will transfer the tabindex attribute from the rendered\n   * selection to the search box. This allows for the search box to be used as\n   * the primary focus instead of the selection container.\n   *\n   * @private\n   */\n  Search.prototype._transferTabIndex = function (decorated) {\n    this.$search.attr('tabindex', this.$selection.attr('tabindex'));\n    this.$selection.attr('tabindex', '-1');\n  };\n\n  Search.prototype.createPlaceholder = function (decorated, placeholder) {\n    this.$search.attr('placeholder', placeholder.text);\n  };\n\n  Search.prototype.update = function (decorated, data) {\n    var searchHadFocus = this.$search[0] == document.activeElement;\n\n    this.$search.attr('placeholder', '');\n\n    decorated.call(this, data);\n\n    this.$selection.find('.select2-selection__rendered')\n                   .append(this.$searchContainer);\n\n    this.resizeSearch();\n    if (searchHadFocus) {\n      this.$search.focus();\n    }\n  };\n\n  Search.prototype.handleSearch = function () {\n    this.resizeSearch();\n\n    if (!this._keyUpPrevented) {\n      var input = this.$search.val();\n\n      this.trigger('query', {\n        term: input\n      });\n    }\n\n    this._keyUpPrevented = false;\n  };\n\n  Search.prototype.searchRemoveChoice = function (decorated, item) {\n    this.trigger('unselect', {\n      data: item\n    });\n\n    this.$search.val(item.text);\n    this.handleSearch();\n  };\n\n  Search.prototype.resizeSearch = function () {\n    this.$search.css('width', '25px');\n\n    var width = '';\n\n    if (this.$search.attr('placeholder') !== '') {\n      width = this.$selection.find('.select2-selection__rendered').innerWidth();\n    } else {\n      var minimumWidth = this.$search.val().length + 1;\n\n      width = (minimumWidth * 0.75) + 'em';\n    }\n\n    this.$search.css('width', width);\n  };\n\n  return Search;\n});\n\nS2.define('select2/selection/eventRelay',[\n  'jquery'\n], function ($) {\n  function EventRelay () { }\n\n  EventRelay.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n    var relayEvents = [\n      'open', 'opening',\n      'close', 'closing',\n      'select', 'selecting',\n      'unselect', 'unselecting'\n    ];\n\n    var preventableEvents = ['opening', 'closing', 'selecting', 'unselecting'];\n\n    decorated.call(this, container, $container);\n\n    container.on('*', function (name, params) {\n      // Ignore events that should not be relayed\n      if ($.inArray(name, relayEvents) === -1) {\n        return;\n      }\n\n      // The parameters should always be an object\n      params = params || {};\n\n      // Generate the jQuery event for the Select2 event\n      var evt = $.Event('select2:' + name, {\n        params: params\n      });\n\n      self.$element.trigger(evt);\n\n      // Only handle preventable events if it was one\n      if ($.inArray(name, preventableEvents) === -1) {\n        return;\n      }\n\n      params.prevented = evt.isDefaultPrevented();\n    });\n  };\n\n  return EventRelay;\n});\n\nS2.define('select2/translation',[\n  'jquery',\n  'require'\n], function ($, require) {\n  function Translation (dict) {\n    this.dict = dict || {};\n  }\n\n  Translation.prototype.all = function () {\n    return this.dict;\n  };\n\n  Translation.prototype.get = function (key) {\n    return this.dict[key];\n  };\n\n  Translation.prototype.extend = function (translation) {\n    this.dict = $.extend({}, translation.all(), this.dict);\n  };\n\n  // Static functions\n\n  Translation._cache = {};\n\n  Translation.loadPath = function (path) {\n    if (!(path in Translation._cache)) {\n      var translations = require(path);\n\n      Translation._cache[path] = translations;\n    }\n\n    return new Translation(Translation._cache[path]);\n  };\n\n  return Translation;\n});\n\nS2.define('select2/diacritics',[\n\n], function () {\n  var diacritics = {\n    '\\u24B6': 'A',\n    '\\uFF21': 'A',\n    '\\u00C0': 'A',\n    '\\u00C1': 'A',\n    '\\u00C2': 'A',\n    '\\u1EA6': 'A',\n    '\\u1EA4': 'A',\n    '\\u1EAA': 'A',\n    '\\u1EA8': 'A',\n    '\\u00C3': 'A',\n    '\\u0100': 'A',\n    '\\u0102': 'A',\n    '\\u1EB0': 'A',\n    '\\u1EAE': 'A',\n    '\\u1EB4': 'A',\n    '\\u1EB2': 'A',\n    '\\u0226': 'A',\n    '\\u01E0': 'A',\n    '\\u00C4': 'A',\n    '\\u01DE': 'A',\n    '\\u1EA2': 'A',\n    '\\u00C5': 'A',\n    '\\u01FA': 'A',\n    '\\u01CD': 'A',\n    '\\u0200': 'A',\n    '\\u0202': 'A',\n    '\\u1EA0': 'A',\n    '\\u1EAC': 'A',\n    '\\u1EB6': 'A',\n    '\\u1E00': 'A',\n    '\\u0104': 'A',\n    '\\u023A': 'A',\n    '\\u2C6F': 'A',\n    '\\uA732': 'AA',\n    '\\u00C6': 'AE',\n    '\\u01FC': 'AE',\n    '\\u01E2': 'AE',\n    '\\uA734': 'AO',\n    '\\uA736': 'AU',\n    '\\uA738': 'AV',\n    '\\uA73A': 'AV',\n    '\\uA73C': 'AY',\n    '\\u24B7': 'B',\n    '\\uFF22': 'B',\n    '\\u1E02': 'B',\n    '\\u1E04': 'B',\n    '\\u1E06': 'B',\n    '\\u0243': 'B',\n    '\\u0182': 'B',\n    '\\u0181': 'B',\n    '\\u24B8': 'C',\n    '\\uFF23': 'C',\n    '\\u0106': 'C',\n    '\\u0108': 'C',\n    '\\u010A': 'C',\n    '\\u010C': 'C',\n    '\\u00C7': 'C',\n    '\\u1E08': 'C',\n    '\\u0187': 'C',\n    '\\u023B': 'C',\n    '\\uA73E': 'C',\n    '\\u24B9': 'D',\n    '\\uFF24': 'D',\n    '\\u1E0A': 'D',\n    '\\u010E': 'D',\n    '\\u1E0C': 'D',\n    '\\u1E10': 'D',\n    '\\u1E12': 'D',\n    '\\u1E0E': 'D',\n    '\\u0110': 'D',\n    '\\u018B': 'D',\n    '\\u018A': 'D',\n    '\\u0189': 'D',\n    '\\uA779': 'D',\n    '\\u01F1': 'DZ',\n    '\\u01C4': 'DZ',\n    '\\u01F2': 'Dz',\n    '\\u01C5': 'Dz',\n    '\\u24BA': 'E',\n    '\\uFF25': 'E',\n    '\\u00C8': 'E',\n    '\\u00C9': 'E',\n    '\\u00CA': 'E',\n    '\\u1EC0': 'E',\n    '\\u1EBE': 'E',\n    '\\u1EC4': 'E',\n    '\\u1EC2': 'E',\n    '\\u1EBC': 'E',\n    '\\u0112': 'E',\n    '\\u1E14': 'E',\n    '\\u1E16': 'E',\n    '\\u0114': 'E',\n    '\\u0116': 'E',\n    '\\u00CB': 'E',\n    '\\u1EBA': 'E',\n    '\\u011A': 'E',\n    '\\u0204': 'E',\n    '\\u0206': 'E',\n    '\\u1EB8': 'E',\n    '\\u1EC6': 'E',\n    '\\u0228': 'E',\n    '\\u1E1C': 'E',\n    '\\u0118': 'E',\n    '\\u1E18': 'E',\n    '\\u1E1A': 'E',\n    '\\u0190': 'E',\n    '\\u018E': 'E',\n    '\\u24BB': 'F',\n    '\\uFF26': 'F',\n    '\\u1E1E': 'F',\n    '\\u0191': 'F',\n    '\\uA77B': 'F',\n    '\\u24BC': 'G',\n    '\\uFF27': 'G',\n    '\\u01F4': 'G',\n    '\\u011C': 'G',\n    '\\u1E20': 'G',\n    '\\u011E': 'G',\n    '\\u0120': 'G',\n    '\\u01E6': 'G',\n    '\\u0122': 'G',\n    '\\u01E4': 'G',\n    '\\u0193': 'G',\n    '\\uA7A0': 'G',\n    '\\uA77D': 'G',\n    '\\uA77E': 'G',\n    '\\u24BD': 'H',\n    '\\uFF28': 'H',\n    '\\u0124': 'H',\n    '\\u1E22': 'H',\n    '\\u1E26': 'H',\n    '\\u021E': 'H',\n    '\\u1E24': 'H',\n    '\\u1E28': 'H',\n    '\\u1E2A': 'H',\n    '\\u0126': 'H',\n    '\\u2C67': 'H',\n    '\\u2C75': 'H',\n    '\\uA78D': 'H',\n    '\\u24BE': 'I',\n    '\\uFF29': 'I',\n    '\\u00CC': 'I',\n    '\\u00CD': 'I',\n    '\\u00CE': 'I',\n    '\\u0128': 'I',\n    '\\u012A': 'I',\n    '\\u012C': 'I',\n    '\\u0130': 'I',\n    '\\u00CF': 'I',\n    '\\u1E2E': 'I',\n    '\\u1EC8': 'I',\n    '\\u01CF': 'I',\n    '\\u0208': 'I',\n    '\\u020A': 'I',\n    '\\u1ECA': 'I',\n    '\\u012E': 'I',\n    '\\u1E2C': 'I',\n    '\\u0197': 'I',\n    '\\u24BF': 'J',\n    '\\uFF2A': 'J',\n    '\\u0134': 'J',\n    '\\u0248': 'J',\n    '\\u24C0': 'K',\n    '\\uFF2B': 'K',\n    '\\u1E30': 'K',\n    '\\u01E8': 'K',\n    '\\u1E32': 'K',\n    '\\u0136': 'K',\n    '\\u1E34': 'K',\n    '\\u0198': 'K',\n    '\\u2C69': 'K',\n    '\\uA740': 'K',\n    '\\uA742': 'K',\n    '\\uA744': 'K',\n    '\\uA7A2': 'K',\n    '\\u24C1': 'L',\n    '\\uFF2C': 'L',\n    '\\u013F': 'L',\n    '\\u0139': 'L',\n    '\\u013D': 'L',\n    '\\u1E36': 'L',\n    '\\u1E38': 'L',\n    '\\u013B': 'L',\n    '\\u1E3C': 'L',\n    '\\u1E3A': 'L',\n    '\\u0141': 'L',\n    '\\u023D': 'L',\n    '\\u2C62': 'L',\n    '\\u2C60': 'L',\n    '\\uA748': 'L',\n    '\\uA746': 'L',\n    '\\uA780': 'L',\n    '\\u01C7': 'LJ',\n    '\\u01C8': 'Lj',\n    '\\u24C2': 'M',\n    '\\uFF2D': 'M',\n    '\\u1E3E': 'M',\n    '\\u1E40': 'M',\n    '\\u1E42': 'M',\n    '\\u2C6E': 'M',\n    '\\u019C': 'M',\n    '\\u24C3': 'N',\n    '\\uFF2E': 'N',\n    '\\u01F8': 'N',\n    '\\u0143': 'N',\n    '\\u00D1': 'N',\n    '\\u1E44': 'N',\n    '\\u0147': 'N',\n    '\\u1E46': 'N',\n    '\\u0145': 'N',\n    '\\u1E4A': 'N',\n    '\\u1E48': 'N',\n    '\\u0220': 'N',\n    '\\u019D': 'N',\n    '\\uA790': 'N',\n    '\\uA7A4': 'N',\n    '\\u01CA': 'NJ',\n    '\\u01CB': 'Nj',\n    '\\u24C4': 'O',\n    '\\uFF2F': 'O',\n    '\\u00D2': 'O',\n    '\\u00D3': 'O',\n    '\\u00D4': 'O',\n    '\\u1ED2': 'O',\n    '\\u1ED0': 'O',\n    '\\u1ED6': 'O',\n    '\\u1ED4': 'O',\n    '\\u00D5': 'O',\n    '\\u1E4C': 'O',\n    '\\u022C': 'O',\n    '\\u1E4E': 'O',\n    '\\u014C': 'O',\n    '\\u1E50': 'O',\n    '\\u1E52': 'O',\n    '\\u014E': 'O',\n    '\\u022E': 'O',\n    '\\u0230': 'O',\n    '\\u00D6': 'O',\n    '\\u022A': 'O',\n    '\\u1ECE': 'O',\n    '\\u0150': 'O',\n    '\\u01D1': 'O',\n    '\\u020C': 'O',\n    '\\u020E': 'O',\n    '\\u01A0': 'O',\n    '\\u1EDC': 'O',\n    '\\u1EDA': 'O',\n    '\\u1EE0': 'O',\n    '\\u1EDE': 'O',\n    '\\u1EE2': 'O',\n    '\\u1ECC': 'O',\n    '\\u1ED8': 'O',\n    '\\u01EA': 'O',\n    '\\u01EC': 'O',\n    '\\u00D8': 'O',\n    '\\u01FE': 'O',\n    '\\u0186': 'O',\n    '\\u019F': 'O',\n    '\\uA74A': 'O',\n    '\\uA74C': 'O',\n    '\\u01A2': 'OI',\n    '\\uA74E': 'OO',\n    '\\u0222': 'OU',\n    '\\u24C5': 'P',\n    '\\uFF30': 'P',\n    '\\u1E54': 'P',\n    '\\u1E56': 'P',\n    '\\u01A4': 'P',\n    '\\u2C63': 'P',\n    '\\uA750': 'P',\n    '\\uA752': 'P',\n    '\\uA754': 'P',\n    '\\u24C6': 'Q',\n    '\\uFF31': 'Q',\n    '\\uA756': 'Q',\n    '\\uA758': 'Q',\n    '\\u024A': 'Q',\n    '\\u24C7': 'R',\n    '\\uFF32': 'R',\n    '\\u0154': 'R',\n    '\\u1E58': 'R',\n    '\\u0158': 'R',\n    '\\u0210': 'R',\n    '\\u0212': 'R',\n    '\\u1E5A': 'R',\n    '\\u1E5C': 'R',\n    '\\u0156': 'R',\n    '\\u1E5E': 'R',\n    '\\u024C': 'R',\n    '\\u2C64': 'R',\n    '\\uA75A': 'R',\n    '\\uA7A6': 'R',\n    '\\uA782': 'R',\n    '\\u24C8': 'S',\n    '\\uFF33': 'S',\n    '\\u1E9E': 'S',\n    '\\u015A': 'S',\n    '\\u1E64': 'S',\n    '\\u015C': 'S',\n    '\\u1E60': 'S',\n    '\\u0160': 'S',\n    '\\u1E66': 'S',\n    '\\u1E62': 'S',\n    '\\u1E68': 'S',\n    '\\u0218': 'S',\n    '\\u015E': 'S',\n    '\\u2C7E': 'S',\n    '\\uA7A8': 'S',\n    '\\uA784': 'S',\n    '\\u24C9': 'T',\n    '\\uFF34': 'T',\n    '\\u1E6A': 'T',\n    '\\u0164': 'T',\n    '\\u1E6C': 'T',\n    '\\u021A': 'T',\n    '\\u0162': 'T',\n    '\\u1E70': 'T',\n    '\\u1E6E': 'T',\n    '\\u0166': 'T',\n    '\\u01AC': 'T',\n    '\\u01AE': 'T',\n    '\\u023E': 'T',\n    '\\uA786': 'T',\n    '\\uA728': 'TZ',\n    '\\u24CA': 'U',\n    '\\uFF35': 'U',\n    '\\u00D9': 'U',\n    '\\u00DA': 'U',\n    '\\u00DB': 'U',\n    '\\u0168': 'U',\n    '\\u1E78': 'U',\n    '\\u016A': 'U',\n    '\\u1E7A': 'U',\n    '\\u016C': 'U',\n    '\\u00DC': 'U',\n    '\\u01DB': 'U',\n    '\\u01D7': 'U',\n    '\\u01D5': 'U',\n    '\\u01D9': 'U',\n    '\\u1EE6': 'U',\n    '\\u016E': 'U',\n    '\\u0170': 'U',\n    '\\u01D3': 'U',\n    '\\u0214': 'U',\n    '\\u0216': 'U',\n    '\\u01AF': 'U',\n    '\\u1EEA': 'U',\n    '\\u1EE8': 'U',\n    '\\u1EEE': 'U',\n    '\\u1EEC': 'U',\n    '\\u1EF0': 'U',\n    '\\u1EE4': 'U',\n    '\\u1E72': 'U',\n    '\\u0172': 'U',\n    '\\u1E76': 'U',\n    '\\u1E74': 'U',\n    '\\u0244': 'U',\n    '\\u24CB': 'V',\n    '\\uFF36': 'V',\n    '\\u1E7C': 'V',\n    '\\u1E7E': 'V',\n    '\\u01B2': 'V',\n    '\\uA75E': 'V',\n    '\\u0245': 'V',\n    '\\uA760': 'VY',\n    '\\u24CC': 'W',\n    '\\uFF37': 'W',\n    '\\u1E80': 'W',\n    '\\u1E82': 'W',\n    '\\u0174': 'W',\n    '\\u1E86': 'W',\n    '\\u1E84': 'W',\n    '\\u1E88': 'W',\n    '\\u2C72': 'W',\n    '\\u24CD': 'X',\n    '\\uFF38': 'X',\n    '\\u1E8A': 'X',\n    '\\u1E8C': 'X',\n    '\\u24CE': 'Y',\n    '\\uFF39': 'Y',\n    '\\u1EF2': 'Y',\n    '\\u00DD': 'Y',\n    '\\u0176': 'Y',\n    '\\u1EF8': 'Y',\n    '\\u0232': 'Y',\n    '\\u1E8E': 'Y',\n    '\\u0178': 'Y',\n    '\\u1EF6': 'Y',\n    '\\u1EF4': 'Y',\n    '\\u01B3': 'Y',\n    '\\u024E': 'Y',\n    '\\u1EFE': 'Y',\n    '\\u24CF': 'Z',\n    '\\uFF3A': 'Z',\n    '\\u0179': 'Z',\n    '\\u1E90': 'Z',\n    '\\u017B': 'Z',\n    '\\u017D': 'Z',\n    '\\u1E92': 'Z',\n    '\\u1E94': 'Z',\n    '\\u01B5': 'Z',\n    '\\u0224': 'Z',\n    '\\u2C7F': 'Z',\n    '\\u2C6B': 'Z',\n    '\\uA762': 'Z',\n    '\\u24D0': 'a',\n    '\\uFF41': 'a',\n    '\\u1E9A': 'a',\n    '\\u00E0': 'a',\n    '\\u00E1': 'a',\n    '\\u00E2': 'a',\n    '\\u1EA7': 'a',\n    '\\u1EA5': 'a',\n    '\\u1EAB': 'a',\n    '\\u1EA9': 'a',\n    '\\u00E3': 'a',\n    '\\u0101': 'a',\n    '\\u0103': 'a',\n    '\\u1EB1': 'a',\n    '\\u1EAF': 'a',\n    '\\u1EB5': 'a',\n    '\\u1EB3': 'a',\n    '\\u0227': 'a',\n    '\\u01E1': 'a',\n    '\\u00E4': 'a',\n    '\\u01DF': 'a',\n    '\\u1EA3': 'a',\n    '\\u00E5': 'a',\n    '\\u01FB': 'a',\n    '\\u01CE': 'a',\n    '\\u0201': 'a',\n    '\\u0203': 'a',\n    '\\u1EA1': 'a',\n    '\\u1EAD': 'a',\n    '\\u1EB7': 'a',\n    '\\u1E01': 'a',\n    '\\u0105': 'a',\n    '\\u2C65': 'a',\n    '\\u0250': 'a',\n    '\\uA733': 'aa',\n    '\\u00E6': 'ae',\n    '\\u01FD': 'ae',\n    '\\u01E3': 'ae',\n    '\\uA735': 'ao',\n    '\\uA737': 'au',\n    '\\uA739': 'av',\n    '\\uA73B': 'av',\n    '\\uA73D': 'ay',\n    '\\u24D1': 'b',\n    '\\uFF42': 'b',\n    '\\u1E03': 'b',\n    '\\u1E05': 'b',\n    '\\u1E07': 'b',\n    '\\u0180': 'b',\n    '\\u0183': 'b',\n    '\\u0253': 'b',\n    '\\u24D2': 'c',\n    '\\uFF43': 'c',\n    '\\u0107': 'c',\n    '\\u0109': 'c',\n    '\\u010B': 'c',\n    '\\u010D': 'c',\n    '\\u00E7': 'c',\n    '\\u1E09': 'c',\n    '\\u0188': 'c',\n    '\\u023C': 'c',\n    '\\uA73F': 'c',\n    '\\u2184': 'c',\n    '\\u24D3': 'd',\n    '\\uFF44': 'd',\n    '\\u1E0B': 'd',\n    '\\u010F': 'd',\n    '\\u1E0D': 'd',\n    '\\u1E11': 'd',\n    '\\u1E13': 'd',\n    '\\u1E0F': 'd',\n    '\\u0111': 'd',\n    '\\u018C': 'd',\n    '\\u0256': 'd',\n    '\\u0257': 'd',\n    '\\uA77A': 'd',\n    '\\u01F3': 'dz',\n    '\\u01C6': 'dz',\n    '\\u24D4': 'e',\n    '\\uFF45': 'e',\n    '\\u00E8': 'e',\n    '\\u00E9': 'e',\n    '\\u00EA': 'e',\n    '\\u1EC1': 'e',\n    '\\u1EBF': 'e',\n    '\\u1EC5': 'e',\n    '\\u1EC3': 'e',\n    '\\u1EBD': 'e',\n    '\\u0113': 'e',\n    '\\u1E15': 'e',\n    '\\u1E17': 'e',\n    '\\u0115': 'e',\n    '\\u0117': 'e',\n    '\\u00EB': 'e',\n    '\\u1EBB': 'e',\n    '\\u011B': 'e',\n    '\\u0205': 'e',\n    '\\u0207': 'e',\n    '\\u1EB9': 'e',\n    '\\u1EC7': 'e',\n    '\\u0229': 'e',\n    '\\u1E1D': 'e',\n    '\\u0119': 'e',\n    '\\u1E19': 'e',\n    '\\u1E1B': 'e',\n    '\\u0247': 'e',\n    '\\u025B': 'e',\n    '\\u01DD': 'e',\n    '\\u24D5': 'f',\n    '\\uFF46': 'f',\n    '\\u1E1F': 'f',\n    '\\u0192': 'f',\n    '\\uA77C': 'f',\n    '\\u24D6': 'g',\n    '\\uFF47': 'g',\n    '\\u01F5': 'g',\n    '\\u011D': 'g',\n    '\\u1E21': 'g',\n    '\\u011F': 'g',\n    '\\u0121': 'g',\n    '\\u01E7': 'g',\n    '\\u0123': 'g',\n    '\\u01E5': 'g',\n    '\\u0260': 'g',\n    '\\uA7A1': 'g',\n    '\\u1D79': 'g',\n    '\\uA77F': 'g',\n    '\\u24D7': 'h',\n    '\\uFF48': 'h',\n    '\\u0125': 'h',\n    '\\u1E23': 'h',\n    '\\u1E27': 'h',\n    '\\u021F': 'h',\n    '\\u1E25': 'h',\n    '\\u1E29': 'h',\n    '\\u1E2B': 'h',\n    '\\u1E96': 'h',\n    '\\u0127': 'h',\n    '\\u2C68': 'h',\n    '\\u2C76': 'h',\n    '\\u0265': 'h',\n    '\\u0195': 'hv',\n    '\\u24D8': 'i',\n    '\\uFF49': 'i',\n    '\\u00EC': 'i',\n    '\\u00ED': 'i',\n    '\\u00EE': 'i',\n    '\\u0129': 'i',\n    '\\u012B': 'i',\n    '\\u012D': 'i',\n    '\\u00EF': 'i',\n    '\\u1E2F': 'i',\n    '\\u1EC9': 'i',\n    '\\u01D0': 'i',\n    '\\u0209': 'i',\n    '\\u020B': 'i',\n    '\\u1ECB': 'i',\n    '\\u012F': 'i',\n    '\\u1E2D': 'i',\n    '\\u0268': 'i',\n    '\\u0131': 'i',\n    '\\u24D9': 'j',\n    '\\uFF4A': 'j',\n    '\\u0135': 'j',\n    '\\u01F0': 'j',\n    '\\u0249': 'j',\n    '\\u24DA': 'k',\n    '\\uFF4B': 'k',\n    '\\u1E31': 'k',\n    '\\u01E9': 'k',\n    '\\u1E33': 'k',\n    '\\u0137': 'k',\n    '\\u1E35': 'k',\n    '\\u0199': 'k',\n    '\\u2C6A': 'k',\n    '\\uA741': 'k',\n    '\\uA743': 'k',\n    '\\uA745': 'k',\n    '\\uA7A3': 'k',\n    '\\u24DB': 'l',\n    '\\uFF4C': 'l',\n    '\\u0140': 'l',\n    '\\u013A': 'l',\n    '\\u013E': 'l',\n    '\\u1E37': 'l',\n    '\\u1E39': 'l',\n    '\\u013C': 'l',\n    '\\u1E3D': 'l',\n    '\\u1E3B': 'l',\n    '\\u017F': 'l',\n    '\\u0142': 'l',\n    '\\u019A': 'l',\n    '\\u026B': 'l',\n    '\\u2C61': 'l',\n    '\\uA749': 'l',\n    '\\uA781': 'l',\n    '\\uA747': 'l',\n    '\\u01C9': 'lj',\n    '\\u24DC': 'm',\n    '\\uFF4D': 'm',\n    '\\u1E3F': 'm',\n    '\\u1E41': 'm',\n    '\\u1E43': 'm',\n    '\\u0271': 'm',\n    '\\u026F': 'm',\n    '\\u24DD': 'n',\n    '\\uFF4E': 'n',\n    '\\u01F9': 'n',\n    '\\u0144': 'n',\n    '\\u00F1': 'n',\n    '\\u1E45': 'n',\n    '\\u0148': 'n',\n    '\\u1E47': 'n',\n    '\\u0146': 'n',\n    '\\u1E4B': 'n',\n    '\\u1E49': 'n',\n    '\\u019E': 'n',\n    '\\u0272': 'n',\n    '\\u0149': 'n',\n    '\\uA791': 'n',\n    '\\uA7A5': 'n',\n    '\\u01CC': 'nj',\n    '\\u24DE': 'o',\n    '\\uFF4F': 'o',\n    '\\u00F2': 'o',\n    '\\u00F3': 'o',\n    '\\u00F4': 'o',\n    '\\u1ED3': 'o',\n    '\\u1ED1': 'o',\n    '\\u1ED7': 'o',\n    '\\u1ED5': 'o',\n    '\\u00F5': 'o',\n    '\\u1E4D': 'o',\n    '\\u022D': 'o',\n    '\\u1E4F': 'o',\n    '\\u014D': 'o',\n    '\\u1E51': 'o',\n    '\\u1E53': 'o',\n    '\\u014F': 'o',\n    '\\u022F': 'o',\n    '\\u0231': 'o',\n    '\\u00F6': 'o',\n    '\\u022B': 'o',\n    '\\u1ECF': 'o',\n    '\\u0151': 'o',\n    '\\u01D2': 'o',\n    '\\u020D': 'o',\n    '\\u020F': 'o',\n    '\\u01A1': 'o',\n    '\\u1EDD': 'o',\n    '\\u1EDB': 'o',\n    '\\u1EE1': 'o',\n    '\\u1EDF': 'o',\n    '\\u1EE3': 'o',\n    '\\u1ECD': 'o',\n    '\\u1ED9': 'o',\n    '\\u01EB': 'o',\n    '\\u01ED': 'o',\n    '\\u00F8': 'o',\n    '\\u01FF': 'o',\n    '\\u0254': 'o',\n    '\\uA74B': 'o',\n    '\\uA74D': 'o',\n    '\\u0275': 'o',\n    '\\u01A3': 'oi',\n    '\\u0223': 'ou',\n    '\\uA74F': 'oo',\n    '\\u24DF': 'p',\n    '\\uFF50': 'p',\n    '\\u1E55': 'p',\n    '\\u1E57': 'p',\n    '\\u01A5': 'p',\n    '\\u1D7D': 'p',\n    '\\uA751': 'p',\n    '\\uA753': 'p',\n    '\\uA755': 'p',\n    '\\u24E0': 'q',\n    '\\uFF51': 'q',\n    '\\u024B': 'q',\n    '\\uA757': 'q',\n    '\\uA759': 'q',\n    '\\u24E1': 'r',\n    '\\uFF52': 'r',\n    '\\u0155': 'r',\n    '\\u1E59': 'r',\n    '\\u0159': 'r',\n    '\\u0211': 'r',\n    '\\u0213': 'r',\n    '\\u1E5B': 'r',\n    '\\u1E5D': 'r',\n    '\\u0157': 'r',\n    '\\u1E5F': 'r',\n    '\\u024D': 'r',\n    '\\u027D': 'r',\n    '\\uA75B': 'r',\n    '\\uA7A7': 'r',\n    '\\uA783': 'r',\n    '\\u24E2': 's',\n    '\\uFF53': 's',\n    '\\u00DF': 's',\n    '\\u015B': 's',\n    '\\u1E65': 's',\n    '\\u015D': 's',\n    '\\u1E61': 's',\n    '\\u0161': 's',\n    '\\u1E67': 's',\n    '\\u1E63': 's',\n    '\\u1E69': 's',\n    '\\u0219': 's',\n    '\\u015F': 's',\n    '\\u023F': 's',\n    '\\uA7A9': 's',\n    '\\uA785': 's',\n    '\\u1E9B': 's',\n    '\\u24E3': 't',\n    '\\uFF54': 't',\n    '\\u1E6B': 't',\n    '\\u1E97': 't',\n    '\\u0165': 't',\n    '\\u1E6D': 't',\n    '\\u021B': 't',\n    '\\u0163': 't',\n    '\\u1E71': 't',\n    '\\u1E6F': 't',\n    '\\u0167': 't',\n    '\\u01AD': 't',\n    '\\u0288': 't',\n    '\\u2C66': 't',\n    '\\uA787': 't',\n    '\\uA729': 'tz',\n    '\\u24E4': 'u',\n    '\\uFF55': 'u',\n    '\\u00F9': 'u',\n    '\\u00FA': 'u',\n    '\\u00FB': 'u',\n    '\\u0169': 'u',\n    '\\u1E79': 'u',\n    '\\u016B': 'u',\n    '\\u1E7B': 'u',\n    '\\u016D': 'u',\n    '\\u00FC': 'u',\n    '\\u01DC': 'u',\n    '\\u01D8': 'u',\n    '\\u01D6': 'u',\n    '\\u01DA': 'u',\n    '\\u1EE7': 'u',\n    '\\u016F': 'u',\n    '\\u0171': 'u',\n    '\\u01D4': 'u',\n    '\\u0215': 'u',\n    '\\u0217': 'u',\n    '\\u01B0': 'u',\n    '\\u1EEB': 'u',\n    '\\u1EE9': 'u',\n    '\\u1EEF': 'u',\n    '\\u1EED': 'u',\n    '\\u1EF1': 'u',\n    '\\u1EE5': 'u',\n    '\\u1E73': 'u',\n    '\\u0173': 'u',\n    '\\u1E77': 'u',\n    '\\u1E75': 'u',\n    '\\u0289': 'u',\n    '\\u24E5': 'v',\n    '\\uFF56': 'v',\n    '\\u1E7D': 'v',\n    '\\u1E7F': 'v',\n    '\\u028B': 'v',\n    '\\uA75F': 'v',\n    '\\u028C': 'v',\n    '\\uA761': 'vy',\n    '\\u24E6': 'w',\n    '\\uFF57': 'w',\n    '\\u1E81': 'w',\n    '\\u1E83': 'w',\n    '\\u0175': 'w',\n    '\\u1E87': 'w',\n    '\\u1E85': 'w',\n    '\\u1E98': 'w',\n    '\\u1E89': 'w',\n    '\\u2C73': 'w',\n    '\\u24E7': 'x',\n    '\\uFF58': 'x',\n    '\\u1E8B': 'x',\n    '\\u1E8D': 'x',\n    '\\u24E8': 'y',\n    '\\uFF59': 'y',\n    '\\u1EF3': 'y',\n    '\\u00FD': 'y',\n    '\\u0177': 'y',\n    '\\u1EF9': 'y',\n    '\\u0233': 'y',\n    '\\u1E8F': 'y',\n    '\\u00FF': 'y',\n    '\\u1EF7': 'y',\n    '\\u1E99': 'y',\n    '\\u1EF5': 'y',\n    '\\u01B4': 'y',\n    '\\u024F': 'y',\n    '\\u1EFF': 'y',\n    '\\u24E9': 'z',\n    '\\uFF5A': 'z',\n    '\\u017A': 'z',\n    '\\u1E91': 'z',\n    '\\u017C': 'z',\n    '\\u017E': 'z',\n    '\\u1E93': 'z',\n    '\\u1E95': 'z',\n    '\\u01B6': 'z',\n    '\\u0225': 'z',\n    '\\u0240': 'z',\n    '\\u2C6C': 'z',\n    '\\uA763': 'z',\n    '\\u0386': '\\u0391',\n    '\\u0388': '\\u0395',\n    '\\u0389': '\\u0397',\n    '\\u038A': '\\u0399',\n    '\\u03AA': '\\u0399',\n    '\\u038C': '\\u039F',\n    '\\u038E': '\\u03A5',\n    '\\u03AB': '\\u03A5',\n    '\\u038F': '\\u03A9',\n    '\\u03AC': '\\u03B1',\n    '\\u03AD': '\\u03B5',\n    '\\u03AE': '\\u03B7',\n    '\\u03AF': '\\u03B9',\n    '\\u03CA': '\\u03B9',\n    '\\u0390': '\\u03B9',\n    '\\u03CC': '\\u03BF',\n    '\\u03CD': '\\u03C5',\n    '\\u03CB': '\\u03C5',\n    '\\u03B0': '\\u03C5',\n    '\\u03C9': '\\u03C9',\n    '\\u03C2': '\\u03C3'\n  };\n\n  return diacritics;\n});\n\nS2.define('select2/data/base',[\n  '../utils'\n], function (Utils) {\n  function BaseAdapter ($element, options) {\n    BaseAdapter.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(BaseAdapter, Utils.Observable);\n\n  BaseAdapter.prototype.current = function (callback) {\n    throw new Error('The `current` method must be defined in child classes.');\n  };\n\n  BaseAdapter.prototype.query = function (params, callback) {\n    throw new Error('The `query` method must be defined in child classes.');\n  };\n\n  BaseAdapter.prototype.bind = function (container, $container) {\n    // Can be implemented in subclasses\n  };\n\n  BaseAdapter.prototype.destroy = function () {\n    // Can be implemented in subclasses\n  };\n\n  BaseAdapter.prototype.generateResultId = function (container, data) {\n    var id = container.id + '-result-';\n\n    id += Utils.generateChars(4);\n\n    if (data.id != null) {\n      id += '-' + data.id.toString();\n    } else {\n      id += '-' + Utils.generateChars(4);\n    }\n    return id;\n  };\n\n  return BaseAdapter;\n});\n\nS2.define('select2/data/select',[\n  './base',\n  '../utils',\n  'jquery'\n], function (BaseAdapter, Utils, $) {\n  function SelectAdapter ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    SelectAdapter.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(SelectAdapter, BaseAdapter);\n\n  SelectAdapter.prototype.current = function (callback) {\n    var data = [];\n    var self = this;\n\n    this.$element.find(':selected').each(function () {\n      var $option = $(this);\n\n      var option = self.item($option);\n\n      data.push(option);\n    });\n\n    callback(data);\n  };\n\n  SelectAdapter.prototype.select = function (data) {\n    var self = this;\n\n    data.selected = true;\n\n    // If data.element is a DOM node, use it instead\n    if ($(data.element).is('option')) {\n      data.element.selected = true;\n\n      this.$element.trigger('change');\n\n      return;\n    }\n\n    if (this.$element.prop('multiple')) {\n      this.current(function (currentData) {\n        var val = [];\n\n        data = [data];\n        data.push.apply(data, currentData);\n\n        for (var d = 0; d < data.length; d++) {\n          var id = data[d].id;\n\n          if ($.inArray(id, val) === -1) {\n            val.push(id);\n          }\n        }\n\n        self.$element.val(val);\n        self.$element.trigger('change');\n      });\n    } else {\n      var val = data.id;\n\n      this.$element.val(val);\n      this.$element.trigger('change');\n    }\n  };\n\n  SelectAdapter.prototype.unselect = function (data) {\n    var self = this;\n\n    if (!this.$element.prop('multiple')) {\n      return;\n    }\n\n    data.selected = false;\n\n    if ($(data.element).is('option')) {\n      data.element.selected = false;\n\n      this.$element.trigger('change');\n\n      return;\n    }\n\n    this.current(function (currentData) {\n      var val = [];\n\n      for (var d = 0; d < currentData.length; d++) {\n        var id = currentData[d].id;\n\n        if (id !== data.id && $.inArray(id, val) === -1) {\n          val.push(id);\n        }\n      }\n\n      self.$element.val(val);\n\n      self.$element.trigger('change');\n    });\n  };\n\n  SelectAdapter.prototype.bind = function (container, $container) {\n    var self = this;\n\n    this.container = container;\n\n    container.on('select', function (params) {\n      self.select(params.data);\n    });\n\n    container.on('unselect', function (params) {\n      self.unselect(params.data);\n    });\n  };\n\n  SelectAdapter.prototype.destroy = function () {\n    // Remove anything added to child elements\n    this.$element.find('*').each(function () {\n      // Remove any custom data set by Select2\n      $.removeData(this, 'data');\n    });\n  };\n\n  SelectAdapter.prototype.query = function (params, callback) {\n    var data = [];\n    var self = this;\n\n    var $options = this.$element.children();\n\n    $options.each(function () {\n      var $option = $(this);\n\n      if (!$option.is('option') && !$option.is('optgroup')) {\n        return;\n      }\n\n      var option = self.item($option);\n\n      var matches = self.matches(params, option);\n\n      if (matches !== null) {\n        data.push(matches);\n      }\n    });\n\n    callback({\n      results: data\n    });\n  };\n\n  SelectAdapter.prototype.addOptions = function ($options) {\n    Utils.appendMany(this.$element, $options);\n  };\n\n  SelectAdapter.prototype.option = function (data) {\n    var option;\n\n    if (data.children) {\n      option = document.createElement('optgroup');\n      option.label = data.text;\n    } else {\n      option = document.createElement('option');\n\n      if (option.textContent !== undefined) {\n        option.textContent = data.text;\n      } else {\n        option.innerText = data.text;\n      }\n    }\n\n    if (data.id) {\n      option.value = data.id;\n    }\n\n    if (data.disabled) {\n      option.disabled = true;\n    }\n\n    if (data.selected) {\n      option.selected = true;\n    }\n\n    if (data.title) {\n      option.title = data.title;\n    }\n\n    var $option = $(option);\n\n    var normalizedData = this._normalizeItem(data);\n    normalizedData.element = option;\n\n    // Override the option's data with the combined data\n    $.data(option, 'data', normalizedData);\n\n    return $option;\n  };\n\n  SelectAdapter.prototype.item = function ($option) {\n    var data = {};\n\n    data = $.data($option[0], 'data');\n\n    if (data != null) {\n      return data;\n    }\n\n    if ($option.is('option')) {\n      data = {\n        id: $option.val(),\n        text: $option.text(),\n        disabled: $option.prop('disabled'),\n        selected: $option.prop('selected'),\n        title: $option.prop('title')\n      };\n    } else if ($option.is('optgroup')) {\n      data = {\n        text: $option.prop('label'),\n        children: [],\n        title: $option.prop('title')\n      };\n\n      var $children = $option.children('option');\n      var children = [];\n\n      for (var c = 0; c < $children.length; c++) {\n        var $child = $($children[c]);\n\n        var child = this.item($child);\n\n        children.push(child);\n      }\n\n      data.children = children;\n    }\n\n    data = this._normalizeItem(data);\n    data.element = $option[0];\n\n    $.data($option[0], 'data', data);\n\n    return data;\n  };\n\n  SelectAdapter.prototype._normalizeItem = function (item) {\n    if (!$.isPlainObject(item)) {\n      item = {\n        id: item,\n        text: item\n      };\n    }\n\n    item = $.extend({}, {\n      text: ''\n    }, item);\n\n    var defaults = {\n      selected: false,\n      disabled: false\n    };\n\n    if (item.id != null) {\n      item.id = item.id.toString();\n    }\n\n    if (item.text != null) {\n      item.text = item.text.toString();\n    }\n\n    if (item._resultId == null && item.id && this.container != null) {\n      item._resultId = this.generateResultId(this.container, item);\n    }\n\n    return $.extend({}, defaults, item);\n  };\n\n  SelectAdapter.prototype.matches = function (params, data) {\n    var matcher = this.options.get('matcher');\n\n    return matcher(params, data);\n  };\n\n  return SelectAdapter;\n});\n\nS2.define('select2/data/array',[\n  './select',\n  '../utils',\n  'jquery'\n], function (SelectAdapter, Utils, $) {\n  function ArrayAdapter ($element, options) {\n    var data = options.get('data') || [];\n\n    ArrayAdapter.__super__.constructor.call(this, $element, options);\n\n    this.addOptions(this.convertToOptions(data));\n  }\n\n  Utils.Extend(ArrayAdapter, SelectAdapter);\n\n  ArrayAdapter.prototype.select = function (data) {\n    var $option = this.$element.find('option').filter(function (i, elm) {\n      return elm.value == data.id.toString();\n    });\n\n    if ($option.length === 0) {\n      $option = this.option(data);\n\n      this.addOptions($option);\n    }\n\n    ArrayAdapter.__super__.select.call(this, data);\n  };\n\n  ArrayAdapter.prototype.convertToOptions = function (data) {\n    var self = this;\n\n    var $existing = this.$element.find('option');\n    var existingIds = $existing.map(function () {\n      return self.item($(this)).id;\n    }).get();\n\n    var $options = [];\n\n    // Filter out all items except for the one passed in the argument\n    function onlyItem (item) {\n      return function () {\n        return $(this).val() == item.id;\n      };\n    }\n\n    for (var d = 0; d < data.length; d++) {\n      var item = this._normalizeItem(data[d]);\n\n      // Skip items which were pre-loaded, only merge the data\n      if ($.inArray(item.id, existingIds) >= 0) {\n        var $existingOption = $existing.filter(onlyItem(item));\n\n        var existingData = this.item($existingOption);\n        var newData = $.extend(true, {}, item, existingData);\n\n        var $newOption = this.option(newData);\n\n        $existingOption.replaceWith($newOption);\n\n        continue;\n      }\n\n      var $option = this.option(item);\n\n      if (item.children) {\n        var $children = this.convertToOptions(item.children);\n\n        Utils.appendMany($option, $children);\n      }\n\n      $options.push($option);\n    }\n\n    return $options;\n  };\n\n  return ArrayAdapter;\n});\n\nS2.define('select2/data/ajax',[\n  './array',\n  '../utils',\n  'jquery'\n], function (ArrayAdapter, Utils, $) {\n  function AjaxAdapter ($element, options) {\n    this.ajaxOptions = this._applyDefaults(options.get('ajax'));\n\n    if (this.ajaxOptions.processResults != null) {\n      this.processResults = this.ajaxOptions.processResults;\n    }\n\n    AjaxAdapter.__super__.constructor.call(this, $element, options);\n  }\n\n  Utils.Extend(AjaxAdapter, ArrayAdapter);\n\n  AjaxAdapter.prototype._applyDefaults = function (options) {\n    var defaults = {\n      data: function (params) {\n        return $.extend({}, params, {\n          q: params.term\n        });\n      },\n      transport: function (params, success, failure) {\n        var $request = $.ajax(params);\n\n        $request.then(success);\n        $request.fail(failure);\n\n        return $request;\n      }\n    };\n\n    return $.extend({}, defaults, options, true);\n  };\n\n  AjaxAdapter.prototype.processResults = function (results) {\n    return results;\n  };\n\n  AjaxAdapter.prototype.query = function (params, callback) {\n    var matches = [];\n    var self = this;\n\n    if (this._request != null) {\n      // JSONP requests cannot always be aborted\n      if ($.isFunction(this._request.abort)) {\n        this._request.abort();\n      }\n\n      this._request = null;\n    }\n\n    var options = $.extend({\n      type: 'GET'\n    }, this.ajaxOptions);\n\n    if (typeof options.url === 'function') {\n      options.url = options.url.call(this.$element, params);\n    }\n\n    if (typeof options.data === 'function') {\n      options.data = options.data.call(this.$element, params);\n    }\n\n    function request () {\n      var $request = options.transport(options, function (data) {\n        var results = self.processResults(data, params);\n\n        if (self.options.get('debug') && window.console && console.error) {\n          // Check to make sure that the response included a `results` key.\n          if (!results || !results.results || !$.isArray(results.results)) {\n            console.error(\n              'Select2: The AJAX results did not return an array in the ' +\n              '`results` key of the response.'\n            );\n          }\n        }\n\n        callback(results);\n      }, function () {\n        self.trigger('results:message', {\n          message: 'errorLoading'\n        });\n      });\n\n      self._request = $request;\n    }\n\n    if (this.ajaxOptions.delay && params.term !== '') {\n      if (this._queryTimeout) {\n        window.clearTimeout(this._queryTimeout);\n      }\n\n      this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\n    } else {\n      request();\n    }\n  };\n\n  return AjaxAdapter;\n});\n\nS2.define('select2/data/tags',[\n  'jquery'\n], function ($) {\n  function Tags (decorated, $element, options) {\n    var tags = options.get('tags');\n\n    var createTag = options.get('createTag');\n\n    if (createTag !== undefined) {\n      this.createTag = createTag;\n    }\n\n    var insertTag = options.get('insertTag');\n\n    if (insertTag !== undefined) {\n        this.insertTag = insertTag;\n    }\n\n    decorated.call(this, $element, options);\n\n    if ($.isArray(tags)) {\n      for (var t = 0; t < tags.length; t++) {\n        var tag = tags[t];\n        var item = this._normalizeItem(tag);\n\n        var $option = this.option(item);\n\n        this.$element.append($option);\n      }\n    }\n  }\n\n  Tags.prototype.query = function (decorated, params, callback) {\n    var self = this;\n\n    this._removeOldTags();\n\n    if (params.term == null || params.page != null) {\n      decorated.call(this, params, callback);\n      return;\n    }\n\n    function wrapper (obj, child) {\n      var data = obj.results;\n\n      for (var i = 0; i < data.length; i++) {\n        var option = data[i];\n\n        var checkChildren = (\n          option.children != null &&\n          !wrapper({\n            results: option.children\n          }, true)\n        );\n\n        var checkText = option.text === params.term;\n\n        if (checkText || checkChildren) {\n          if (child) {\n            return false;\n          }\n\n          obj.data = data;\n          callback(obj);\n\n          return;\n        }\n      }\n\n      if (child) {\n        return true;\n      }\n\n      var tag = self.createTag(params);\n\n      if (tag != null) {\n        var $option = self.option(tag);\n        $option.attr('data-select2-tag', true);\n\n        self.addOptions([$option]);\n\n        self.insertTag(data, tag);\n      }\n\n      obj.results = data;\n\n      callback(obj);\n    }\n\n    decorated.call(this, params, wrapper);\n  };\n\n  Tags.prototype.createTag = function (decorated, params) {\n    var term = $.trim(params.term);\n\n    if (term === '') {\n      return null;\n    }\n\n    return {\n      id: term,\n      text: term\n    };\n  };\n\n  Tags.prototype.insertTag = function (_, data, tag) {\n    data.unshift(tag);\n  };\n\n  Tags.prototype._removeOldTags = function (_) {\n    var tag = this._lastTag;\n\n    var $options = this.$element.find('option[data-select2-tag]');\n\n    $options.each(function () {\n      if (this.selected) {\n        return;\n      }\n\n      $(this).remove();\n    });\n  };\n\n  return Tags;\n});\n\nS2.define('select2/data/tokenizer',[\n  'jquery'\n], function ($) {\n  function Tokenizer (decorated, $element, options) {\n    var tokenizer = options.get('tokenizer');\n\n    if (tokenizer !== undefined) {\n      this.tokenizer = tokenizer;\n    }\n\n    decorated.call(this, $element, options);\n  }\n\n  Tokenizer.prototype.bind = function (decorated, container, $container) {\n    decorated.call(this, container, $container);\n\n    this.$search =  container.dropdown.$search || container.selection.$search ||\n      $container.find('.select2-search__field');\n  };\n\n  Tokenizer.prototype.query = function (decorated, params, callback) {\n    var self = this;\n\n    function select (data) {\n      self.trigger('select', {\n        data: data\n      });\n    }\n\n    params.term = params.term || '';\n\n    var tokenData = this.tokenizer(params, this.options, select);\n\n    if (tokenData.term !== params.term) {\n      // Replace the search term if we have the search box\n      if (this.$search.length) {\n        this.$search.val(tokenData.term);\n        this.$search.focus();\n      }\n\n      params.term = tokenData.term;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  Tokenizer.prototype.tokenizer = function (_, params, options, callback) {\n    var separators = options.get('tokenSeparators') || [];\n    var term = params.term;\n    var i = 0;\n\n    var createTag = this.createTag || function (params) {\n      return {\n        id: params.term,\n        text: params.term\n      };\n    };\n\n    while (i < term.length) {\n      var termChar = term[i];\n\n      if ($.inArray(termChar, separators) === -1) {\n        i++;\n\n        continue;\n      }\n\n      var part = term.substr(0, i);\n      var partParams = $.extend({}, params, {\n        term: part\n      });\n\n      var data = createTag(partParams);\n\n      if (data == null) {\n        i++;\n        continue;\n      }\n\n      callback(data);\n\n      // Reset the term to not include the tokenized portion\n      term = term.substr(i + 1) || '';\n      i = 0;\n    }\n\n    return {\n      term: term\n    };\n  };\n\n  return Tokenizer;\n});\n\nS2.define('select2/data/minimumInputLength',[\n\n], function () {\n  function MinimumInputLength (decorated, $e, options) {\n    this.minimumInputLength = options.get('minimumInputLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MinimumInputLength.prototype.query = function (decorated, params, callback) {\n    params.term = params.term || '';\n\n    if (params.term.length < this.minimumInputLength) {\n      this.trigger('results:message', {\n        message: 'inputTooShort',\n        args: {\n          minimum: this.minimumInputLength,\n          input: params.term,\n          params: params\n        }\n      });\n\n      return;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  return MinimumInputLength;\n});\n\nS2.define('select2/data/maximumInputLength',[\n\n], function () {\n  function MaximumInputLength (decorated, $e, options) {\n    this.maximumInputLength = options.get('maximumInputLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MaximumInputLength.prototype.query = function (decorated, params, callback) {\n    params.term = params.term || '';\n\n    if (this.maximumInputLength > 0 &&\n        params.term.length > this.maximumInputLength) {\n      this.trigger('results:message', {\n        message: 'inputTooLong',\n        args: {\n          maximum: this.maximumInputLength,\n          input: params.term,\n          params: params\n        }\n      });\n\n      return;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  return MaximumInputLength;\n});\n\nS2.define('select2/data/maximumSelectionLength',[\n\n], function (){\n  function MaximumSelectionLength (decorated, $e, options) {\n    this.maximumSelectionLength = options.get('maximumSelectionLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MaximumSelectionLength.prototype.query =\n    function (decorated, params, callback) {\n      var self = this;\n\n      this.current(function (currentData) {\n        var count = currentData != null ? currentData.length : 0;\n        if (self.maximumSelectionLength > 0 &&\n          count >= self.maximumSelectionLength) {\n          self.trigger('results:message', {\n            message: 'maximumSelected',\n            args: {\n              maximum: self.maximumSelectionLength\n            }\n          });\n          return;\n        }\n        decorated.call(self, params, callback);\n      });\n  };\n\n  return MaximumSelectionLength;\n});\n\nS2.define('select2/dropdown',[\n  'jquery',\n  './utils'\n], function ($, Utils) {\n  function Dropdown ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    Dropdown.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(Dropdown, Utils.Observable);\n\n  Dropdown.prototype.render = function () {\n    var $dropdown = $(\n      '<span class=\"select2-dropdown\">' +\n        '<span class=\"select2-results\"></span>' +\n      '</span>'\n    );\n\n    $dropdown.attr('dir', this.options.get('dir'));\n\n    this.$dropdown = $dropdown;\n\n    return $dropdown;\n  };\n\n  Dropdown.prototype.bind = function () {\n    // Should be implemented in subclasses\n  };\n\n  Dropdown.prototype.position = function ($dropdown, $container) {\n    // Should be implmented in subclasses\n  };\n\n  Dropdown.prototype.destroy = function () {\n    // Remove the dropdown from the DOM\n    this.$dropdown.remove();\n  };\n\n  return Dropdown;\n});\n\nS2.define('select2/dropdown/search',[\n  'jquery',\n  '../utils'\n], function ($, Utils) {\n  function Search () { }\n\n  Search.prototype.render = function (decorated) {\n    var $rendered = decorated.call(this);\n\n    var $search = $(\n      '<span class=\"select2-search select2-search--dropdown\">' +\n        '<input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\"' +\n        ' autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"off\"' +\n        ' spellcheck=\"false\" role=\"textbox\" />' +\n      '</span>'\n    );\n\n    this.$searchContainer = $search;\n    this.$search = $search.find('input');\n\n    $rendered.prepend($search);\n\n    return $rendered;\n  };\n\n  Search.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    this.$search.on('keydown', function (evt) {\n      self.trigger('keypress', evt);\n\n      self._keyUpPrevented = evt.isDefaultPrevented();\n    });\n\n    // Workaround for browsers which do not support the `input` event\n    // This will prevent double-triggering of events for browsers which support\n    // both the `keyup` and `input` events.\n    this.$search.on('input', function (evt) {\n      // Unbind the duplicated `keyup` event\n      $(this).off('keyup');\n    });\n\n    this.$search.on('keyup input', function (evt) {\n      self.handleSearch(evt);\n    });\n\n    container.on('open', function () {\n      self.$search.attr('tabindex', 0);\n\n      self.$search.focus();\n\n      window.setTimeout(function () {\n        self.$search.focus();\n      }, 0);\n    });\n\n    container.on('close', function () {\n      self.$search.attr('tabindex', -1);\n\n      self.$search.val('');\n    });\n\n    container.on('results:all', function (params) {\n      if (params.query.term == null || params.query.term === '') {\n        var showSearch = self.showSearch(params);\n\n        if (showSearch) {\n          self.$searchContainer.removeClass('select2-search--hide');\n        } else {\n          self.$searchContainer.addClass('select2-search--hide');\n        }\n      }\n    });\n  };\n\n  Search.prototype.handleSearch = function (evt) {\n    if (!this._keyUpPrevented) {\n      var input = this.$search.val();\n\n      this.trigger('query', {\n        term: input\n      });\n    }\n\n    this._keyUpPrevented = false;\n  };\n\n  Search.prototype.showSearch = function (_, params) {\n    return true;\n  };\n\n  return Search;\n});\n\nS2.define('select2/dropdown/hidePlaceholder',[\n\n], function () {\n  function HidePlaceholder (decorated, $element, options, dataAdapter) {\n    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n    decorated.call(this, $element, options, dataAdapter);\n  }\n\n  HidePlaceholder.prototype.append = function (decorated, data) {\n    data.results = this.removePlaceholder(data.results);\n\n    decorated.call(this, data);\n  };\n\n  HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\n    if (typeof placeholder === 'string') {\n      placeholder = {\n        id: '',\n        text: placeholder\n      };\n    }\n\n    return placeholder;\n  };\n\n  HidePlaceholder.prototype.removePlaceholder = function (_, data) {\n    var modifiedData = data.slice(0);\n\n    for (var d = data.length - 1; d >= 0; d--) {\n      var item = data[d];\n\n      if (this.placeholder.id === item.id) {\n        modifiedData.splice(d, 1);\n      }\n    }\n\n    return modifiedData;\n  };\n\n  return HidePlaceholder;\n});\n\nS2.define('select2/dropdown/infiniteScroll',[\n  'jquery'\n], function ($) {\n  function InfiniteScroll (decorated, $element, options, dataAdapter) {\n    this.lastParams = {};\n\n    decorated.call(this, $element, options, dataAdapter);\n\n    this.$loadingMore = this.createLoadingMore();\n    this.loading = false;\n  }\n\n  InfiniteScroll.prototype.append = function (decorated, data) {\n    this.$loadingMore.remove();\n    this.loading = false;\n\n    decorated.call(this, data);\n\n    if (this.showLoadingMore(data)) {\n      this.$results.append(this.$loadingMore);\n    }\n  };\n\n  InfiniteScroll.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('query', function (params) {\n      self.lastParams = params;\n      self.loading = true;\n    });\n\n    container.on('query:append', function (params) {\n      self.lastParams = params;\n      self.loading = true;\n    });\n\n    this.$results.on('scroll', function () {\n      var isLoadMoreVisible = $.contains(\n        document.documentElement,\n        self.$loadingMore[0]\n      );\n\n      if (self.loading || !isLoadMoreVisible) {\n        return;\n      }\n\n      var currentOffset = self.$results.offset().top +\n        self.$results.outerHeight(false);\n      var loadingMoreOffset = self.$loadingMore.offset().top +\n        self.$loadingMore.outerHeight(false);\n\n      if (currentOffset + 50 >= loadingMoreOffset) {\n        self.loadMore();\n      }\n    });\n  };\n\n  InfiniteScroll.prototype.loadMore = function () {\n    this.loading = true;\n\n    var params = $.extend({}, {page: 1}, this.lastParams);\n\n    params.page++;\n\n    this.trigger('query:append', params);\n  };\n\n  InfiniteScroll.prototype.showLoadingMore = function (_, data) {\n    return data.pagination && data.pagination.more;\n  };\n\n  InfiniteScroll.prototype.createLoadingMore = function () {\n    var $option = $(\n      '<li ' +\n      'class=\"select2-results__option select2-results__option--load-more\"' +\n      'role=\"treeitem\" aria-disabled=\"true\"></li>'\n    );\n\n    var message = this.options.get('translations').get('loadingMore');\n\n    $option.html(message(this.lastParams));\n\n    return $option;\n  };\n\n  return InfiniteScroll;\n});\n\nS2.define('select2/dropdown/attachBody',[\n  'jquery',\n  '../utils'\n], function ($, Utils) {\n  function AttachBody (decorated, $element, options) {\n    this.$dropdownParent = options.get('dropdownParent') || $(document.body);\n\n    decorated.call(this, $element, options);\n  }\n\n  AttachBody.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    var setupResultsEvents = false;\n\n    decorated.call(this, container, $container);\n\n    container.on('open', function () {\n      self._showDropdown();\n      self._attachPositioningHandler(container);\n\n      if (!setupResultsEvents) {\n        setupResultsEvents = true;\n\n        container.on('results:all', function () {\n          self._positionDropdown();\n          self._resizeDropdown();\n        });\n\n        container.on('results:append', function () {\n          self._positionDropdown();\n          self._resizeDropdown();\n        });\n      }\n    });\n\n    container.on('close', function () {\n      self._hideDropdown();\n      self._detachPositioningHandler(container);\n    });\n\n    this.$dropdownContainer.on('mousedown', function (evt) {\n      evt.stopPropagation();\n    });\n  };\n\n  AttachBody.prototype.destroy = function (decorated) {\n    decorated.call(this);\n\n    this.$dropdownContainer.remove();\n  };\n\n  AttachBody.prototype.position = function (decorated, $dropdown, $container) {\n    // Clone all of the container classes\n    $dropdown.attr('class', $container.attr('class'));\n\n    $dropdown.removeClass('select2');\n    $dropdown.addClass('select2-container--open');\n\n    $dropdown.css({\n      position: 'absolute',\n      top: -999999\n    });\n\n    this.$container = $container;\n  };\n\n  AttachBody.prototype.render = function (decorated) {\n    var $container = $('<span></span>');\n\n    var $dropdown = decorated.call(this);\n    $container.append($dropdown);\n\n    this.$dropdownContainer = $container;\n\n    return $container;\n  };\n\n  AttachBody.prototype._hideDropdown = function (decorated) {\n    this.$dropdownContainer.detach();\n  };\n\n  AttachBody.prototype._attachPositioningHandler =\n      function (decorated, container) {\n    var self = this;\n\n    var scrollEvent = 'scroll.select2.' + container.id;\n    var resizeEvent = 'resize.select2.' + container.id;\n    var orientationEvent = 'orientationchange.select2.' + container.id;\n\n    var $watchers = this.$container.parents().filter(Utils.hasScroll);\n    $watchers.each(function () {\n      $(this).data('select2-scroll-position', {\n        x: $(this).scrollLeft(),\n        y: $(this).scrollTop()\n      });\n    });\n\n    $watchers.on(scrollEvent, function (ev) {\n      var position = $(this).data('select2-scroll-position');\n      $(this).scrollTop(position.y);\n    });\n\n    $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,\n      function (e) {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n  };\n\n  AttachBody.prototype._detachPositioningHandler =\n      function (decorated, container) {\n    var scrollEvent = 'scroll.select2.' + container.id;\n    var resizeEvent = 'resize.select2.' + container.id;\n    var orientationEvent = 'orientationchange.select2.' + container.id;\n\n    var $watchers = this.$container.parents().filter(Utils.hasScroll);\n    $watchers.off(scrollEvent);\n\n    $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\n  };\n\n  AttachBody.prototype._positionDropdown = function () {\n    var $window = $(window);\n\n    var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above');\n    var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below');\n\n    var newDirection = null;\n\n    var offset = this.$container.offset();\n\n    offset.bottom = offset.top + this.$container.outerHeight(false);\n\n    var container = {\n      height: this.$container.outerHeight(false)\n    };\n\n    container.top = offset.top;\n    container.bottom = offset.top + container.height;\n\n    var dropdown = {\n      height: this.$dropdown.outerHeight(false)\n    };\n\n    var viewport = {\n      top: $window.scrollTop(),\n      bottom: $window.scrollTop() + $window.height()\n    };\n\n    var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);\n    var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);\n\n    var css = {\n      left: offset.left,\n      top: container.bottom\n    };\n\n    // Determine what the parent element is to use for calciulating the offset\n    var $offsetParent = this.$dropdownParent;\n\n    // For statically positoned elements, we need to get the element\n    // that is determining the offset\n    if ($offsetParent.css('position') === 'static') {\n      $offsetParent = $offsetParent.offsetParent();\n    }\n\n    var parentOffset = $offsetParent.offset();\n\n    css.top -= parentOffset.top;\n    css.left -= parentOffset.left;\n\n    if (!isCurrentlyAbove && !isCurrentlyBelow) {\n      newDirection = 'below';\n    }\n\n    if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\n      newDirection = 'above';\n    } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\n      newDirection = 'below';\n    }\n\n    if (newDirection == 'above' ||\n      (isCurrentlyAbove && newDirection !== 'below')) {\n      css.top = container.top - dropdown.height;\n    }\n\n    if (newDirection != null) {\n      this.$dropdown\n        .removeClass('select2-dropdown--below select2-dropdown--above')\n        .addClass('select2-dropdown--' + newDirection);\n      this.$container\n        .removeClass('select2-container--below select2-container--above')\n        .addClass('select2-container--' + newDirection);\n    }\n\n    this.$dropdownContainer.css(css);\n  };\n\n  AttachBody.prototype._resizeDropdown = function () {\n    var css = {\n      width: this.$container.outerWidth(false) + 'px'\n    };\n\n    if (this.options.get('dropdownAutoWidth')) {\n      css.minWidth = css.width;\n      css.width = 'auto';\n    }\n\n    this.$dropdown.css(css);\n  };\n\n  AttachBody.prototype._showDropdown = function (decorated) {\n    this.$dropdownContainer.appendTo(this.$dropdownParent);\n\n    this._positionDropdown();\n    this._resizeDropdown();\n  };\n\n  return AttachBody;\n});\n\nS2.define('select2/dropdown/minimumResultsForSearch',[\n\n], function () {\n  function countResults (data) {\n    var count = 0;\n\n    for (var d = 0; d < data.length; d++) {\n      var item = data[d];\n\n      if (item.children) {\n        count += countResults(item.children);\n      } else {\n        count++;\n      }\n    }\n\n    return count;\n  }\n\n  function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {\n    this.minimumResultsForSearch = options.get('minimumResultsForSearch');\n\n    if (this.minimumResultsForSearch < 0) {\n      this.minimumResultsForSearch = Infinity;\n    }\n\n    decorated.call(this, $element, options, dataAdapter);\n  }\n\n  MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\n    if (countResults(params.data.results) < this.minimumResultsForSearch) {\n      return false;\n    }\n\n    return decorated.call(this, params);\n  };\n\n  return MinimumResultsForSearch;\n});\n\nS2.define('select2/dropdown/selectOnClose',[\n\n], function () {\n  function SelectOnClose () { }\n\n  SelectOnClose.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('close', function () {\n      self._handleSelectOnClose();\n    });\n  };\n\n  SelectOnClose.prototype._handleSelectOnClose = function () {\n    var $highlightedResults = this.getHighlightedResults();\n\n    // Only select highlighted results\n    if ($highlightedResults.length < 1) {\n      return;\n    }\n\n    var data = $highlightedResults.data('data');\n\n    // Don't re-select already selected resulte\n    if (\n      (data.element != null && data.element.selected) ||\n      (data.element == null && data.selected)\n    ) {\n      return;\n    }\n\n    this.trigger('select', {\n        data: data\n    });\n  };\n\n  return SelectOnClose;\n});\n\nS2.define('select2/dropdown/closeOnSelect',[\n\n], function () {\n  function CloseOnSelect () { }\n\n  CloseOnSelect.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('select', function (evt) {\n      self._selectTriggered(evt);\n    });\n\n    container.on('unselect', function (evt) {\n      self._selectTriggered(evt);\n    });\n  };\n\n  CloseOnSelect.prototype._selectTriggered = function (_, evt) {\n    var originalEvent = evt.originalEvent;\n\n    // Don't close if the control key is being held\n    if (originalEvent && originalEvent.ctrlKey) {\n      return;\n    }\n\n    this.trigger('close', {});\n  };\n\n  return CloseOnSelect;\n});\n\nS2.define('select2/i18n/en',[],function () {\n  // English\n  return {\n    errorLoading: function () {\n      return 'The results could not be loaded.';\n    },\n    inputTooLong: function (args) {\n      var overChars = args.input.length - args.maximum;\n\n      var message = 'Please delete ' + overChars + ' character';\n\n      if (overChars != 1) {\n        message += 's';\n      }\n\n      return message;\n    },\n    inputTooShort: function (args) {\n      var remainingChars = args.minimum - args.input.length;\n\n      var message = 'Please enter ' + remainingChars + ' or more characters';\n\n      return message;\n    },\n    loadingMore: function () {\n      return 'Loading more results…';\n    },\n    maximumSelected: function (args) {\n      var message = 'You can only select ' + args.maximum + ' item';\n\n      if (args.maximum != 1) {\n        message += 's';\n      }\n\n      return message;\n    },\n    noResults: function () {\n      return 'No results found';\n    },\n    searching: function () {\n      return 'Searching…';\n    }\n  };\n});\n\nS2.define('select2/defaults',[\n  'jquery',\n  'require',\n\n  './results',\n\n  './selection/single',\n  './selection/multiple',\n  './selection/placeholder',\n  './selection/allowClear',\n  './selection/search',\n  './selection/eventRelay',\n\n  './utils',\n  './translation',\n  './diacritics',\n\n  './data/select',\n  './data/array',\n  './data/ajax',\n  './data/tags',\n  './data/tokenizer',\n  './data/minimumInputLength',\n  './data/maximumInputLength',\n  './data/maximumSelectionLength',\n\n  './dropdown',\n  './dropdown/search',\n  './dropdown/hidePlaceholder',\n  './dropdown/infiniteScroll',\n  './dropdown/attachBody',\n  './dropdown/minimumResultsForSearch',\n  './dropdown/selectOnClose',\n  './dropdown/closeOnSelect',\n\n  './i18n/en'\n], function ($, require,\n\n             ResultsList,\n\n             SingleSelection, MultipleSelection, Placeholder, AllowClear,\n             SelectionSearch, EventRelay,\n\n             Utils, Translation, DIACRITICS,\n\n             SelectData, ArrayData, AjaxData, Tags, Tokenizer,\n             MinimumInputLength, MaximumInputLength, MaximumSelectionLength,\n\n             Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,\n             AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,\n\n             EnglishTranslation) {\n  function Defaults () {\n    this.reset();\n  }\n\n  Defaults.prototype.apply = function (options) {\n    options = $.extend(true, {}, this.defaults, options);\n\n    if (options.dataAdapter == null) {\n      if (options.ajax != null) {\n        options.dataAdapter = AjaxData;\n      } else if (options.data != null) {\n        options.dataAdapter = ArrayData;\n      } else {\n        options.dataAdapter = SelectData;\n      }\n\n      if (options.minimumInputLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MinimumInputLength\n        );\n      }\n\n      if (options.maximumInputLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MaximumInputLength\n        );\n      }\n\n      if (options.maximumSelectionLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MaximumSelectionLength\n        );\n      }\n\n      if (options.tags) {\n        options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\n      }\n\n      if (options.tokenSeparators != null || options.tokenizer != null) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          Tokenizer\n        );\n      }\n\n      if (options.query != null) {\n        var Query = require(options.amdBase + 'compat/query');\n\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          Query\n        );\n      }\n\n      if (options.initSelection != null) {\n        var InitSelection = require(options.amdBase + 'compat/initSelection');\n\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          InitSelection\n        );\n      }\n    }\n\n    if (options.resultsAdapter == null) {\n      options.resultsAdapter = ResultsList;\n\n      if (options.ajax != null) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          InfiniteScroll\n        );\n      }\n\n      if (options.placeholder != null) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          HidePlaceholder\n        );\n      }\n\n      if (options.selectOnClose) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          SelectOnClose\n        );\n      }\n    }\n\n    if (options.dropdownAdapter == null) {\n      if (options.multiple) {\n        options.dropdownAdapter = Dropdown;\n      } else {\n        var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);\n\n        options.dropdownAdapter = SearchableDropdown;\n      }\n\n      if (options.minimumResultsForSearch !== 0) {\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          MinimumResultsForSearch\n        );\n      }\n\n      if (options.closeOnSelect) {\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          CloseOnSelect\n        );\n      }\n\n      if (\n        options.dropdownCssClass != null ||\n        options.dropdownCss != null ||\n        options.adaptDropdownCssClass != null\n      ) {\n        var DropdownCSS = require(options.amdBase + 'compat/dropdownCss');\n\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          DropdownCSS\n        );\n      }\n\n      options.dropdownAdapter = Utils.Decorate(\n        options.dropdownAdapter,\n        AttachBody\n      );\n    }\n\n    if (options.selectionAdapter == null) {\n      if (options.multiple) {\n        options.selectionAdapter = MultipleSelection;\n      } else {\n        options.selectionAdapter = SingleSelection;\n      }\n\n      // Add the placeholder mixin if a placeholder was specified\n      if (options.placeholder != null) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          Placeholder\n        );\n      }\n\n      if (options.allowClear) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          AllowClear\n        );\n      }\n\n      if (options.multiple) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          SelectionSearch\n        );\n      }\n\n      if (\n        options.containerCssClass != null ||\n        options.containerCss != null ||\n        options.adaptContainerCssClass != null\n      ) {\n        var ContainerCSS = require(options.amdBase + 'compat/containerCss');\n\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          ContainerCSS\n        );\n      }\n\n      options.selectionAdapter = Utils.Decorate(\n        options.selectionAdapter,\n        EventRelay\n      );\n    }\n\n    if (typeof options.language === 'string') {\n      // Check if the language is specified with a region\n      if (options.language.indexOf('-') > 0) {\n        // Extract the region information if it is included\n        var languageParts = options.language.split('-');\n        var baseLanguage = languageParts[0];\n\n        options.language = [options.language, baseLanguage];\n      } else {\n        options.language = [options.language];\n      }\n    }\n\n    if ($.isArray(options.language)) {\n      var languages = new Translation();\n      options.language.push('en');\n\n      var languageNames = options.language;\n\n      for (var l = 0; l < languageNames.length; l++) {\n        var name = languageNames[l];\n        var language = {};\n\n        try {\n          // Try to load it with the original name\n          language = Translation.loadPath(name);\n        } catch (e) {\n          try {\n            // If we couldn't load it, check if it wasn't the full path\n            name = this.defaults.amdLanguageBase + name;\n            language = Translation.loadPath(name);\n          } catch (ex) {\n            // The translation could not be loaded at all. Sometimes this is\n            // because of a configuration problem, other times this can be\n            // because of how Select2 helps load all possible translation files.\n            if (options.debug && window.console && console.warn) {\n              console.warn(\n                'Select2: The language file for \"' + name + '\" could not be ' +\n                'automatically loaded. A fallback will be used instead.'\n              );\n            }\n\n            continue;\n          }\n        }\n\n        languages.extend(language);\n      }\n\n      options.translations = languages;\n    } else {\n      var baseTranslation = Translation.loadPath(\n        this.defaults.amdLanguageBase + 'en'\n      );\n      var customTranslation = new Translation(options.language);\n\n      customTranslation.extend(baseTranslation);\n\n      options.translations = customTranslation;\n    }\n\n    return options;\n  };\n\n  Defaults.prototype.reset = function () {\n    function stripDiacritics (text) {\n      // Used 'uni range + named function' from http://jsperf.com/diacritics/18\n      function match(a) {\n        return DIACRITICS[a] || a;\n      }\n\n      return text.replace(/[^\\u0000-\\u007E]/g, match);\n    }\n\n    function matcher (params, data) {\n      // Always return the object if there is nothing to compare\n      if ($.trim(params.term) === '') {\n        return data;\n      }\n\n      // Do a recursive check for options with children\n      if (data.children && data.children.length > 0) {\n        // Clone the data object if there are children\n        // This is required as we modify the object to remove any non-matches\n        var match = $.extend(true, {}, data);\n\n        // Check each child of the option\n        for (var c = data.children.length - 1; c >= 0; c--) {\n          var child = data.children[c];\n\n          var matches = matcher(params, child);\n\n          // If there wasn't a match, remove the object in the array\n          if (matches == null) {\n            match.children.splice(c, 1);\n          }\n        }\n\n        // If any children matched, return the new object\n        if (match.children.length > 0) {\n          return match;\n        }\n\n        // If there were no matching children, check just the plain object\n        return matcher(params, match);\n      }\n\n      var original = stripDiacritics(data.text).toUpperCase();\n      var term = stripDiacritics(params.term).toUpperCase();\n\n      // Check if the text contains the term\n      if (original.indexOf(term) > -1) {\n        return data;\n      }\n\n      // If it doesn't contain the term, don't return anything\n      return null;\n    }\n\n    this.defaults = {\n      amdBase: './',\n      amdLanguageBase: './i18n/',\n      closeOnSelect: true,\n      debug: false,\n      dropdownAutoWidth: false,\n      escapeMarkup: Utils.escapeMarkup,\n      language: EnglishTranslation,\n      matcher: matcher,\n      minimumInputLength: 0,\n      maximumInputLength: 0,\n      maximumSelectionLength: 0,\n      minimumResultsForSearch: 0,\n      selectOnClose: false,\n      sorter: function (data) {\n        return data;\n      },\n      templateResult: function (result) {\n        return result.text;\n      },\n      templateSelection: function (selection) {\n        return selection.text;\n      },\n      theme: 'default',\n      width: 'resolve'\n    };\n  };\n\n  Defaults.prototype.set = function (key, value) {\n    var camelKey = $.camelCase(key);\n\n    var data = {};\n    data[camelKey] = value;\n\n    var convertedData = Utils._convertData(data);\n\n    $.extend(this.defaults, convertedData);\n  };\n\n  var defaults = new Defaults();\n\n  return defaults;\n});\n\nS2.define('select2/options',[\n  'require',\n  'jquery',\n  './defaults',\n  './utils'\n], function (require, $, Defaults, Utils) {\n  function Options (options, $element) {\n    this.options = options;\n\n    if ($element != null) {\n      this.fromElement($element);\n    }\n\n    this.options = Defaults.apply(this.options);\n\n    if ($element && $element.is('input')) {\n      var InputCompat = require(this.get('amdBase') + 'compat/inputData');\n\n      this.options.dataAdapter = Utils.Decorate(\n        this.options.dataAdapter,\n        InputCompat\n      );\n    }\n  }\n\n  Options.prototype.fromElement = function ($e) {\n    var excludedData = ['select2'];\n\n    if (this.options.multiple == null) {\n      this.options.multiple = $e.prop('multiple');\n    }\n\n    if (this.options.disabled == null) {\n      this.options.disabled = $e.prop('disabled');\n    }\n\n    if (this.options.language == null) {\n      if ($e.prop('lang')) {\n        this.options.language = $e.prop('lang').toLowerCase();\n      } else if ($e.closest('[lang]').prop('lang')) {\n        this.options.language = $e.closest('[lang]').prop('lang');\n      }\n    }\n\n    if (this.options.dir == null) {\n      if ($e.prop('dir')) {\n        this.options.dir = $e.prop('dir');\n      } else if ($e.closest('[dir]').prop('dir')) {\n        this.options.dir = $e.closest('[dir]').prop('dir');\n      } else {\n        this.options.dir = 'ltr';\n      }\n    }\n\n    $e.prop('disabled', this.options.disabled);\n    $e.prop('multiple', this.options.multiple);\n\n    if ($e.data('select2Tags')) {\n      if (this.options.debug && window.console && console.warn) {\n        console.warn(\n          'Select2: The `data-select2-tags` attribute has been changed to ' +\n          'use the `data-data` and `data-tags=\"true\"` attributes and will be ' +\n          'removed in future versions of Select2.'\n        );\n      }\n\n      $e.data('data', $e.data('select2Tags'));\n      $e.data('tags', true);\n    }\n\n    if ($e.data('ajaxUrl')) {\n      if (this.options.debug && window.console && console.warn) {\n        console.warn(\n          'Select2: The `data-ajax-url` attribute has been changed to ' +\n          '`data-ajax--url` and support for the old attribute will be removed' +\n          ' in future versions of Select2.'\n        );\n      }\n\n      $e.attr('ajax--url', $e.data('ajaxUrl'));\n      $e.data('ajax--url', $e.data('ajaxUrl'));\n    }\n\n    var dataset = {};\n\n    // Prefer the element's `dataset` attribute if it exists\n    // jQuery 1.x does not correctly handle data attributes with multiple dashes\n    if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {\n      dataset = $.extend(true, {}, $e[0].dataset, $e.data());\n    } else {\n      dataset = $e.data();\n    }\n\n    var data = $.extend(true, {}, dataset);\n\n    data = Utils._convertData(data);\n\n    for (var key in data) {\n      if ($.inArray(key, excludedData) > -1) {\n        continue;\n      }\n\n      if ($.isPlainObject(this.options[key])) {\n        $.extend(this.options[key], data[key]);\n      } else {\n        this.options[key] = data[key];\n      }\n    }\n\n    return this;\n  };\n\n  Options.prototype.get = function (key) {\n    return this.options[key];\n  };\n\n  Options.prototype.set = function (key, val) {\n    this.options[key] = val;\n  };\n\n  return Options;\n});\n\nS2.define('select2/core',[\n  'jquery',\n  './options',\n  './utils',\n  './keys'\n], function ($, Options, Utils, KEYS) {\n  var Select2 = function ($element, options) {\n    if ($element.data('select2') != null) {\n      $element.data('select2').destroy();\n    }\n\n    this.$element = $element;\n\n    this.id = this._generateId($element);\n\n    options = options || {};\n\n    this.options = new Options(options, $element);\n\n    Select2.__super__.constructor.call(this);\n\n    // Set up the tabindex\n\n    var tabindex = $element.attr('tabindex') || 0;\n    $element.data('old-tabindex', tabindex);\n    $element.attr('tabindex', '-1');\n\n    // Set up containers and adapters\n\n    var DataAdapter = this.options.get('dataAdapter');\n    this.dataAdapter = new DataAdapter($element, this.options);\n\n    var $container = this.render();\n\n    this._placeContainer($container);\n\n    var SelectionAdapter = this.options.get('selectionAdapter');\n    this.selection = new SelectionAdapter($element, this.options);\n    this.$selection = this.selection.render();\n\n    this.selection.position(this.$selection, $container);\n\n    var DropdownAdapter = this.options.get('dropdownAdapter');\n    this.dropdown = new DropdownAdapter($element, this.options);\n    this.$dropdown = this.dropdown.render();\n\n    this.dropdown.position(this.$dropdown, $container);\n\n    var ResultsAdapter = this.options.get('resultsAdapter');\n    this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\n    this.$results = this.results.render();\n\n    this.results.position(this.$results, this.$dropdown);\n\n    // Bind events\n\n    var self = this;\n\n    // Bind the container to all of the adapters\n    this._bindAdapters();\n\n    // Register any DOM event handlers\n    this._registerDomEvents();\n\n    // Register any internal event handlers\n    this._registerDataEvents();\n    this._registerSelectionEvents();\n    this._registerDropdownEvents();\n    this._registerResultsEvents();\n    this._registerEvents();\n\n    // Set the initial state\n    this.dataAdapter.current(function (initialData) {\n      self.trigger('selection:update', {\n        data: initialData\n      });\n    });\n\n    // Hide the original select\n    $element.addClass('select2-hidden-accessible');\n    $element.attr('aria-hidden', 'true');\n\n    // Synchronize any monitored attributes\n    this._syncAttributes();\n\n    $element.data('select2', this);\n  };\n\n  Utils.Extend(Select2, Utils.Observable);\n\n  Select2.prototype._generateId = function ($element) {\n    var id = '';\n\n    if ($element.attr('id') != null) {\n      id = $element.attr('id');\n    } else if ($element.attr('name') != null) {\n      id = $element.attr('name') + '-' + Utils.generateChars(2);\n    } else {\n      id = Utils.generateChars(4);\n    }\n\n    id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n    id = 'select2-' + id;\n\n    return id;\n  };\n\n  Select2.prototype._placeContainer = function ($container) {\n    $container.insertAfter(this.$element);\n\n    var width = this._resolveWidth(this.$element, this.options.get('width'));\n\n    if (width != null) {\n      $container.css('width', width);\n    }\n  };\n\n  Select2.prototype._resolveWidth = function ($element, method) {\n    var WIDTH = /^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;\n\n    if (method == 'resolve') {\n      var styleWidth = this._resolveWidth($element, 'style');\n\n      if (styleWidth != null) {\n        return styleWidth;\n      }\n\n      return this._resolveWidth($element, 'element');\n    }\n\n    if (method == 'element') {\n      var elementWidth = $element.outerWidth(false);\n\n      if (elementWidth <= 0) {\n        return 'auto';\n      }\n\n      return elementWidth + 'px';\n    }\n\n    if (method == 'style') {\n      var style = $element.attr('style');\n\n      if (typeof(style) !== 'string') {\n        return null;\n      }\n\n      var attrs = style.split(';');\n\n      for (var i = 0, l = attrs.length; i < l; i = i + 1) {\n        var attr = attrs[i].replace(/\\s/g, '');\n        var matches = attr.match(WIDTH);\n\n        if (matches !== null && matches.length >= 1) {\n          return matches[1];\n        }\n      }\n\n      return null;\n    }\n\n    return method;\n  };\n\n  Select2.prototype._bindAdapters = function () {\n    this.dataAdapter.bind(this, this.$container);\n    this.selection.bind(this, this.$container);\n\n    this.dropdown.bind(this, this.$container);\n    this.results.bind(this, this.$container);\n  };\n\n  Select2.prototype._registerDomEvents = function () {\n    var self = this;\n\n    this.$element.on('change.select2', function () {\n      self.dataAdapter.current(function (data) {\n        self.trigger('selection:update', {\n          data: data\n        });\n      });\n    });\n\n    this._sync = Utils.bind(this._syncAttributes, this);\n\n    if (this.$element[0].attachEvent) {\n      this.$element[0].attachEvent('onpropertychange', this._sync);\n    }\n\n    var observer = window.MutationObserver ||\n      window.WebKitMutationObserver ||\n      window.MozMutationObserver\n    ;\n\n    if (observer != null) {\n      this._observer = new observer(function (mutations) {\n        $.each(mutations, self._sync);\n      });\n      this._observer.observe(this.$element[0], {\n        attributes: true,\n        subtree: false\n      });\n    } else if (this.$element[0].addEventListener) {\n      this.$element[0].addEventListener('DOMAttrModified', self._sync, false);\n    }\n  };\n\n  Select2.prototype._registerDataEvents = function () {\n    var self = this;\n\n    this.dataAdapter.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerSelectionEvents = function () {\n    var self = this;\n    var nonRelayEvents = ['toggle', 'focus'];\n\n    this.selection.on('toggle', function () {\n      self.toggleDropdown();\n    });\n\n    this.selection.on('focus', function (params) {\n      self.focus(params);\n    });\n\n    this.selection.on('*', function (name, params) {\n      if ($.inArray(name, nonRelayEvents) !== -1) {\n        return;\n      }\n\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerDropdownEvents = function () {\n    var self = this;\n\n    this.dropdown.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerResultsEvents = function () {\n    var self = this;\n\n    this.results.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerEvents = function () {\n    var self = this;\n\n    this.on('open', function () {\n      self.$container.addClass('select2-container--open');\n    });\n\n    this.on('close', function () {\n      self.$container.removeClass('select2-container--open');\n    });\n\n    this.on('enable', function () {\n      self.$container.removeClass('select2-container--disabled');\n    });\n\n    this.on('disable', function () {\n      self.$container.addClass('select2-container--disabled');\n    });\n\n    this.on('blur', function () {\n      self.$container.removeClass('select2-container--focus');\n    });\n\n    this.on('query', function (params) {\n      if (!self.isOpen()) {\n        self.trigger('open', {});\n      }\n\n      this.dataAdapter.query(params, function (data) {\n        self.trigger('results:all', {\n          data: data,\n          query: params\n        });\n      });\n    });\n\n    this.on('query:append', function (params) {\n      this.dataAdapter.query(params, function (data) {\n        self.trigger('results:append', {\n          data: data,\n          query: params\n        });\n      });\n    });\n\n    this.on('keypress', function (evt) {\n      var key = evt.which;\n\n      if (self.isOpen()) {\n        if (key === KEYS.ESC || key === KEYS.TAB ||\n            (key === KEYS.UP && evt.altKey)) {\n          self.close();\n\n          evt.preventDefault();\n        } else if (key === KEYS.ENTER) {\n          self.trigger('results:select', {});\n\n          evt.preventDefault();\n        } else if ((key === KEYS.SPACE && evt.ctrlKey)) {\n          self.trigger('results:toggle', {});\n\n          evt.preventDefault();\n        } else if (key === KEYS.UP) {\n          self.trigger('results:previous', {});\n\n          evt.preventDefault();\n        } else if (key === KEYS.DOWN) {\n          self.trigger('results:next', {});\n\n          evt.preventDefault();\n        }\n      } else {\n        if (key === KEYS.ENTER || key === KEYS.SPACE ||\n            (key === KEYS.DOWN && evt.altKey)) {\n          self.open();\n\n          evt.preventDefault();\n        }\n      }\n    });\n  };\n\n  Select2.prototype._syncAttributes = function () {\n    this.options.set('disabled', this.$element.prop('disabled'));\n\n    if (this.options.get('disabled')) {\n      if (this.isOpen()) {\n        this.close();\n      }\n\n      this.trigger('disable', {});\n    } else {\n      this.trigger('enable', {});\n    }\n  };\n\n  /**\n   * Override the trigger method to automatically trigger pre-events when\n   * there are events that can be prevented.\n   */\n  Select2.prototype.trigger = function (name, args) {\n    var actualTrigger = Select2.__super__.trigger;\n    var preTriggerMap = {\n      'open': 'opening',\n      'close': 'closing',\n      'select': 'selecting',\n      'unselect': 'unselecting'\n    };\n\n    if (args === undefined) {\n      args = {};\n    }\n\n    if (name in preTriggerMap) {\n      var preTriggerName = preTriggerMap[name];\n      var preTriggerArgs = {\n        prevented: false,\n        name: name,\n        args: args\n      };\n\n      actualTrigger.call(this, preTriggerName, preTriggerArgs);\n\n      if (preTriggerArgs.prevented) {\n        args.prevented = true;\n\n        return;\n      }\n    }\n\n    actualTrigger.call(this, name, args);\n  };\n\n  Select2.prototype.toggleDropdown = function () {\n    if (this.options.get('disabled')) {\n      return;\n    }\n\n    if (this.isOpen()) {\n      this.close();\n    } else {\n      this.open();\n    }\n  };\n\n  Select2.prototype.open = function () {\n    if (this.isOpen()) {\n      return;\n    }\n\n    this.trigger('query', {});\n  };\n\n  Select2.prototype.close = function () {\n    if (!this.isOpen()) {\n      return;\n    }\n\n    this.trigger('close', {});\n  };\n\n  Select2.prototype.isOpen = function () {\n    return this.$container.hasClass('select2-container--open');\n  };\n\n  Select2.prototype.hasFocus = function () {\n    return this.$container.hasClass('select2-container--focus');\n  };\n\n  Select2.prototype.focus = function (data) {\n    // No need to re-trigger focus events if we are already focused\n    if (this.hasFocus()) {\n      return;\n    }\n\n    this.$container.addClass('select2-container--focus');\n    this.trigger('focus', {});\n  };\n\n  Select2.prototype.enable = function (args) {\n    if (this.options.get('debug') && window.console && console.warn) {\n      console.warn(\n        'Select2: The `select2(\"enable\")` method has been deprecated and will' +\n        ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' +\n        ' instead.'\n      );\n    }\n\n    if (args == null || args.length === 0) {\n      args = [true];\n    }\n\n    var disabled = !args[0];\n\n    this.$element.prop('disabled', disabled);\n  };\n\n  Select2.prototype.data = function () {\n    if (this.options.get('debug') &&\n        arguments.length > 0 && window.console && console.warn) {\n      console.warn(\n        'Select2: Data can no longer be set using `select2(\"data\")`. You ' +\n        'should consider setting the value instead using `$element.val()`.'\n      );\n    }\n\n    var data = [];\n\n    this.dataAdapter.current(function (currentData) {\n      data = currentData;\n    });\n\n    return data;\n  };\n\n  Select2.prototype.val = function (args) {\n    if (this.options.get('debug') && window.console && console.warn) {\n      console.warn(\n        'Select2: The `select2(\"val\")` method has been deprecated and will be' +\n        ' removed in later Select2 versions. Use $element.val() instead.'\n      );\n    }\n\n    if (args == null || args.length === 0) {\n      return this.$element.val();\n    }\n\n    var newVal = args[0];\n\n    if ($.isArray(newVal)) {\n      newVal = $.map(newVal, function (obj) {\n        return obj.toString();\n      });\n    }\n\n    this.$element.val(newVal).trigger('change');\n  };\n\n  Select2.prototype.destroy = function () {\n    this.$container.remove();\n\n    if (this.$element[0].detachEvent) {\n      this.$element[0].detachEvent('onpropertychange', this._sync);\n    }\n\n    if (this._observer != null) {\n      this._observer.disconnect();\n      this._observer = null;\n    } else if (this.$element[0].removeEventListener) {\n      this.$element[0]\n        .removeEventListener('DOMAttrModified', this._sync, false);\n    }\n\n    this._sync = null;\n\n    this.$element.off('.select2');\n    this.$element.attr('tabindex', this.$element.data('old-tabindex'));\n\n    this.$element.removeClass('select2-hidden-accessible');\n    this.$element.attr('aria-hidden', 'false');\n    this.$element.removeData('select2');\n\n    this.dataAdapter.destroy();\n    this.selection.destroy();\n    this.dropdown.destroy();\n    this.results.destroy();\n\n    this.dataAdapter = null;\n    this.selection = null;\n    this.dropdown = null;\n    this.results = null;\n  };\n\n  Select2.prototype.render = function () {\n    var $container = $(\n      '<span class=\"select2 select2-container\">' +\n        '<span class=\"selection\"></span>' +\n        '<span class=\"dropdown-wrapper\" aria-hidden=\"true\"></span>' +\n      '</span>'\n    );\n\n    $container.attr('dir', this.options.get('dir'));\n\n    this.$container = $container;\n\n    this.$container.addClass('select2-container--' + this.options.get('theme'));\n\n    $container.data('element', this.$element);\n\n    return $container;\n  };\n\n  return Select2;\n});\n\nS2.define('select2/compat/utils',[\n  'jquery'\n], function ($) {\n  function syncCssClasses ($dest, $src, adapter) {\n    var classes, replacements = [], adapted;\n\n    classes = $.trim($dest.attr('class'));\n\n    if (classes) {\n      classes = '' + classes; // for IE which returns object\n\n      $(classes.split(/\\s+/)).each(function () {\n        // Save all Select2 classes\n        if (this.indexOf('select2-') === 0) {\n          replacements.push(this);\n        }\n      });\n    }\n\n    classes = $.trim($src.attr('class'));\n\n    if (classes) {\n      classes = '' + classes; // for IE which returns object\n\n      $(classes.split(/\\s+/)).each(function () {\n        // Only adapt non-Select2 classes\n        if (this.indexOf('select2-') !== 0) {\n          adapted = adapter(this);\n\n          if (adapted != null) {\n            replacements.push(adapted);\n          }\n        }\n      });\n    }\n\n    $dest.attr('class', replacements.join(' '));\n  }\n\n  return {\n    syncCssClasses: syncCssClasses\n  };\n});\n\nS2.define('select2/compat/containerCss',[\n  'jquery',\n  './utils'\n], function ($, CompatUtils) {\n  // No-op CSS adapter that discards all classes by default\n  function _containerAdapter (clazz) {\n    return null;\n  }\n\n  function ContainerCSS () { }\n\n  ContainerCSS.prototype.render = function (decorated) {\n    var $container = decorated.call(this);\n\n    var containerCssClass = this.options.get('containerCssClass') || '';\n\n    if ($.isFunction(containerCssClass)) {\n      containerCssClass = containerCssClass(this.$element);\n    }\n\n    var containerCssAdapter = this.options.get('adaptContainerCssClass');\n    containerCssAdapter = containerCssAdapter || _containerAdapter;\n\n    if (containerCssClass.indexOf(':all:') !== -1) {\n      containerCssClass = containerCssClass.replace(':all:', '');\n\n      var _cssAdapter = containerCssAdapter;\n\n      containerCssAdapter = function (clazz) {\n        var adapted = _cssAdapter(clazz);\n\n        if (adapted != null) {\n          // Append the old one along with the adapted one\n          return adapted + ' ' + clazz;\n        }\n\n        return clazz;\n      };\n    }\n\n    var containerCss = this.options.get('containerCss') || {};\n\n    if ($.isFunction(containerCss)) {\n      containerCss = containerCss(this.$element);\n    }\n\n    CompatUtils.syncCssClasses($container, this.$element, containerCssAdapter);\n\n    $container.css(containerCss);\n    $container.addClass(containerCssClass);\n\n    return $container;\n  };\n\n  return ContainerCSS;\n});\n\nS2.define('select2/compat/dropdownCss',[\n  'jquery',\n  './utils'\n], function ($, CompatUtils) {\n  // No-op CSS adapter that discards all classes by default\n  function _dropdownAdapter (clazz) {\n    return null;\n  }\n\n  function DropdownCSS () { }\n\n  DropdownCSS.prototype.render = function (decorated) {\n    var $dropdown = decorated.call(this);\n\n    var dropdownCssClass = this.options.get('dropdownCssClass') || '';\n\n    if ($.isFunction(dropdownCssClass)) {\n      dropdownCssClass = dropdownCssClass(this.$element);\n    }\n\n    var dropdownCssAdapter = this.options.get('adaptDropdownCssClass');\n    dropdownCssAdapter = dropdownCssAdapter || _dropdownAdapter;\n\n    if (dropdownCssClass.indexOf(':all:') !== -1) {\n      dropdownCssClass = dropdownCssClass.replace(':all:', '');\n\n      var _cssAdapter = dropdownCssAdapter;\n\n      dropdownCssAdapter = function (clazz) {\n        var adapted = _cssAdapter(clazz);\n\n        if (adapted != null) {\n          // Append the old one along with the adapted one\n          return adapted + ' ' + clazz;\n        }\n\n        return clazz;\n      };\n    }\n\n    var dropdownCss = this.options.get('dropdownCss') || {};\n\n    if ($.isFunction(dropdownCss)) {\n      dropdownCss = dropdownCss(this.$element);\n    }\n\n    CompatUtils.syncCssClasses($dropdown, this.$element, dropdownCssAdapter);\n\n    $dropdown.css(dropdownCss);\n    $dropdown.addClass(dropdownCssClass);\n\n    return $dropdown;\n  };\n\n  return DropdownCSS;\n});\n\nS2.define('select2/compat/initSelection',[\n  'jquery'\n], function ($) {\n  function InitSelection (decorated, $element, options) {\n    if (options.get('debug') && window.console && console.warn) {\n      console.warn(\n        'Select2: The `initSelection` option has been deprecated in favor' +\n        ' of a custom data adapter that overrides the `current` method. ' +\n        'This method is now called multiple times instead of a single ' +\n        'time when the instance is initialized. Support will be removed ' +\n        'for the `initSelection` option in future versions of Select2'\n      );\n    }\n\n    this.initSelection = options.get('initSelection');\n    this._isInitialized = false;\n\n    decorated.call(this, $element, options);\n  }\n\n  InitSelection.prototype.current = function (decorated, callback) {\n    var self = this;\n\n    if (this._isInitialized) {\n      decorated.call(this, callback);\n\n      return;\n    }\n\n    this.initSelection.call(null, this.$element, function (data) {\n      self._isInitialized = true;\n\n      if (!$.isArray(data)) {\n        data = [data];\n      }\n\n      callback(data);\n    });\n  };\n\n  return InitSelection;\n});\n\nS2.define('select2/compat/inputData',[\n  'jquery'\n], function ($) {\n  function InputData (decorated, $element, options) {\n    this._currentData = [];\n    this._valueSeparator = options.get('valueSeparator') || ',';\n\n    if ($element.prop('type') === 'hidden') {\n      if (options.get('debug') && console && console.warn) {\n        console.warn(\n          'Select2: Using a hidden input with Select2 is no longer ' +\n          'supported and may stop working in the future. It is recommended ' +\n          'to use a `<select>` element instead.'\n        );\n      }\n    }\n\n    decorated.call(this, $element, options);\n  }\n\n  InputData.prototype.current = function (_, callback) {\n    function getSelected (data, selectedIds) {\n      var selected = [];\n\n      if (data.selected || $.inArray(data.id, selectedIds) !== -1) {\n        data.selected = true;\n        selected.push(data);\n      } else {\n        data.selected = false;\n      }\n\n      if (data.children) {\n        selected.push.apply(selected, getSelected(data.children, selectedIds));\n      }\n\n      return selected;\n    }\n\n    var selected = [];\n\n    for (var d = 0; d < this._currentData.length; d++) {\n      var data = this._currentData[d];\n\n      selected.push.apply(\n        selected,\n        getSelected(\n          data,\n          this.$element.val().split(\n            this._valueSeparator\n          )\n        )\n      );\n    }\n\n    callback(selected);\n  };\n\n  InputData.prototype.select = function (_, data) {\n    if (!this.options.get('multiple')) {\n      this.current(function (allData) {\n        $.map(allData, function (data) {\n          data.selected = false;\n        });\n      });\n\n      this.$element.val(data.id);\n      this.$element.trigger('change');\n    } else {\n      var value = this.$element.val();\n      value += this._valueSeparator + data.id;\n\n      this.$element.val(value);\n      this.$element.trigger('change');\n    }\n  };\n\n  InputData.prototype.unselect = function (_, data) {\n    var self = this;\n\n    data.selected = false;\n\n    this.current(function (allData) {\n      var values = [];\n\n      for (var d = 0; d < allData.length; d++) {\n        var item = allData[d];\n\n        if (data.id == item.id) {\n          continue;\n        }\n\n        values.push(item.id);\n      }\n\n      self.$element.val(values.join(self._valueSeparator));\n      self.$element.trigger('change');\n    });\n  };\n\n  InputData.prototype.query = function (_, params, callback) {\n    var results = [];\n\n    for (var d = 0; d < this._currentData.length; d++) {\n      var data = this._currentData[d];\n\n      var matches = this.matches(params, data);\n\n      if (matches !== null) {\n        results.push(matches);\n      }\n    }\n\n    callback({\n      results: results\n    });\n  };\n\n  InputData.prototype.addOptions = function (_, $options) {\n    var options = $.map($options, function ($option) {\n      return $.data($option[0], 'data');\n    });\n\n    this._currentData.push.apply(this._currentData, options);\n  };\n\n  return InputData;\n});\n\nS2.define('select2/compat/matcher',[\n  'jquery'\n], function ($) {\n  function oldMatcher (matcher) {\n    function wrappedMatcher (params, data) {\n      var match = $.extend(true, {}, data);\n\n      if (params.term == null || $.trim(params.term) === '') {\n        return match;\n      }\n\n      if (data.children) {\n        for (var c = data.children.length - 1; c >= 0; c--) {\n          var child = data.children[c];\n\n          // Check if the child object matches\n          // The old matcher returned a boolean true or false\n          var doesMatch = matcher(params.term, child.text, child);\n\n          // If the child didn't match, pop it off\n          if (!doesMatch) {\n            match.children.splice(c, 1);\n          }\n        }\n\n        if (match.children.length > 0) {\n          return match;\n        }\n      }\n\n      if (matcher(params.term, data.text, data)) {\n        return match;\n      }\n\n      return null;\n    }\n\n    return wrappedMatcher;\n  }\n\n  return oldMatcher;\n});\n\nS2.define('select2/compat/query',[\n\n], function () {\n  function Query (decorated, $element, options) {\n    if (options.get('debug') && window.console && console.warn) {\n      console.warn(\n        'Select2: The `query` option has been deprecated in favor of a ' +\n        'custom data adapter that overrides the `query` method. Support ' +\n        'will be removed for the `query` option in future versions of ' +\n        'Select2.'\n      );\n    }\n\n    decorated.call(this, $element, options);\n  }\n\n  Query.prototype.query = function (_, params, callback) {\n    params.callback = callback;\n\n    var query = this.options.get('query');\n\n    query.call(null, params);\n  };\n\n  return Query;\n});\n\nS2.define('select2/dropdown/attachContainer',[\n\n], function () {\n  function AttachContainer (decorated, $element, options) {\n    decorated.call(this, $element, options);\n  }\n\n  AttachContainer.prototype.position =\n    function (decorated, $dropdown, $container) {\n    var $dropdownContainer = $container.find('.dropdown-wrapper');\n    $dropdownContainer.append($dropdown);\n\n    $dropdown.addClass('select2-dropdown--below');\n    $container.addClass('select2-container--below');\n  };\n\n  return AttachContainer;\n});\n\nS2.define('select2/dropdown/stopPropagation',[\n\n], function () {\n  function StopPropagation () { }\n\n  StopPropagation.prototype.bind = function (decorated, container, $container) {\n    decorated.call(this, container, $container);\n\n    var stoppedEvents = [\n    'blur',\n    'change',\n    'click',\n    'dblclick',\n    'focus',\n    'focusin',\n    'focusout',\n    'input',\n    'keydown',\n    'keyup',\n    'keypress',\n    'mousedown',\n    'mouseenter',\n    'mouseleave',\n    'mousemove',\n    'mouseover',\n    'mouseup',\n    'search',\n    'touchend',\n    'touchstart'\n    ];\n\n    this.$dropdown.on(stoppedEvents.join(' '), function (evt) {\n      evt.stopPropagation();\n    });\n  };\n\n  return StopPropagation;\n});\n\nS2.define('select2/selection/stopPropagation',[\n\n], function () {\n  function StopPropagation () { }\n\n  StopPropagation.prototype.bind = function (decorated, container, $container) {\n    decorated.call(this, container, $container);\n\n    var stoppedEvents = [\n      'blur',\n      'change',\n      'click',\n      'dblclick',\n      'focus',\n      'focusin',\n      'focusout',\n      'input',\n      'keydown',\n      'keyup',\n      'keypress',\n      'mousedown',\n      'mouseenter',\n      'mouseleave',\n      'mousemove',\n      'mouseover',\n      'mouseup',\n      'search',\n      'touchend',\n      'touchstart'\n    ];\n\n    this.$selection.on(stoppedEvents.join(' '), function (evt) {\n      evt.stopPropagation();\n    });\n  };\n\n  return StopPropagation;\n});\n\n/*!\n * jQuery Mousewheel 3.1.13\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n */\n\n(function (factory) {\n    if ( typeof S2.define === 'function' && S2.define.amd ) {\n        // AMD. Register as an anonymous module.\n        S2.define('jquery-mousewheel',['jquery'], factory);\n    } else if (typeof exports === 'object') {\n        // Node/CommonJS style for Browserify\n        module.exports = factory;\n    } else {\n        // Browser globals\n        factory(jQuery);\n    }\n}(function ($) {\n\n    var toFix  = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'],\n        toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ?\n                    ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'],\n        slice  = Array.prototype.slice,\n        nullLowestDeltaTimeout, lowestDelta;\n\n    if ( $.event.fixHooks ) {\n        for ( var i = toFix.length; i; ) {\n            $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks;\n        }\n    }\n\n    var special = $.event.special.mousewheel = {\n        version: '3.1.12',\n\n        setup: function() {\n            if ( this.addEventListener ) {\n                for ( var i = toBind.length; i; ) {\n                    this.addEventListener( toBind[--i], handler, false );\n                }\n            } else {\n                this.onmousewheel = handler;\n            }\n            // Store the line height and page height for this particular element\n            $.data(this, 'mousewheel-line-height', special.getLineHeight(this));\n            $.data(this, 'mousewheel-page-height', special.getPageHeight(this));\n        },\n\n        teardown: function() {\n            if ( this.removeEventListener ) {\n                for ( var i = toBind.length; i; ) {\n                    this.removeEventListener( toBind[--i], handler, false );\n                }\n            } else {\n                this.onmousewheel = null;\n            }\n            // Clean up the data we added to the element\n            $.removeData(this, 'mousewheel-line-height');\n            $.removeData(this, 'mousewheel-page-height');\n        },\n\n        getLineHeight: function(elem) {\n            var $elem = $(elem),\n                $parent = $elem['offsetParent' in $.fn ? 'offsetParent' : 'parent']();\n            if (!$parent.length) {\n                $parent = $('body');\n            }\n            return parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16;\n        },\n\n        getPageHeight: function(elem) {\n            return $(elem).height();\n        },\n\n        settings: {\n            adjustOldDeltas: true, // see shouldAdjustOldDeltas() below\n            normalizeOffset: true  // calls getBoundingClientRect for each event\n        }\n    };\n\n    $.fn.extend({\n        mousewheel: function(fn) {\n            return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel');\n        },\n\n        unmousewheel: function(fn) {\n            return this.unbind('mousewheel', fn);\n        }\n    });\n\n\n    function handler(event) {\n        var orgEvent   = event || window.event,\n            args       = slice.call(arguments, 1),\n            delta      = 0,\n            deltaX     = 0,\n            deltaY     = 0,\n            absDelta   = 0,\n            offsetX    = 0,\n            offsetY    = 0;\n        event = $.event.fix(orgEvent);\n        event.type = 'mousewheel';\n\n        // Old school scrollwheel delta\n        if ( 'detail'      in orgEvent ) { deltaY = orgEvent.detail * -1;      }\n        if ( 'wheelDelta'  in orgEvent ) { deltaY = orgEvent.wheelDelta;       }\n        if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY;      }\n        if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; }\n\n        // Firefox < 17 horizontal scrolling related to DOMMouseScroll event\n        if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {\n            deltaX = deltaY * -1;\n            deltaY = 0;\n        }\n\n        // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy\n        delta = deltaY === 0 ? deltaX : deltaY;\n\n        // New school wheel delta (wheel event)\n        if ( 'deltaY' in orgEvent ) {\n            deltaY = orgEvent.deltaY * -1;\n            delta  = deltaY;\n        }\n        if ( 'deltaX' in orgEvent ) {\n            deltaX = orgEvent.deltaX;\n            if ( deltaY === 0 ) { delta  = deltaX * -1; }\n        }\n\n        // No change actually happened, no reason to go any further\n        if ( deltaY === 0 && deltaX === 0 ) { return; }\n\n        // Need to convert lines and pages to pixels if we aren't already in pixels\n        // There are three delta modes:\n        //   * deltaMode 0 is by pixels, nothing to do\n        //   * deltaMode 1 is by lines\n        //   * deltaMode 2 is by pages\n        if ( orgEvent.deltaMode === 1 ) {\n            var lineHeight = $.data(this, 'mousewheel-line-height');\n            delta  *= lineHeight;\n            deltaY *= lineHeight;\n            deltaX *= lineHeight;\n        } else if ( orgEvent.deltaMode === 2 ) {\n            var pageHeight = $.data(this, 'mousewheel-page-height');\n            delta  *= pageHeight;\n            deltaY *= pageHeight;\n            deltaX *= pageHeight;\n        }\n\n        // Store lowest absolute delta to normalize the delta values\n        absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) );\n\n        if ( !lowestDelta || absDelta < lowestDelta ) {\n            lowestDelta = absDelta;\n\n            // Adjust older deltas if necessary\n            if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {\n                lowestDelta /= 40;\n            }\n        }\n\n        // Adjust older deltas if necessary\n        if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {\n            // Divide all the things by 40!\n            delta  /= 40;\n            deltaX /= 40;\n            deltaY /= 40;\n        }\n\n        // Get a whole, normalized value for the deltas\n        delta  = Math[ delta  >= 1 ? 'floor' : 'ceil' ](delta  / lowestDelta);\n        deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta);\n        deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta);\n\n        // Normalise offsetX and offsetY properties\n        if ( special.settings.normalizeOffset && this.getBoundingClientRect ) {\n            var boundingRect = this.getBoundingClientRect();\n            offsetX = event.clientX - boundingRect.left;\n            offsetY = event.clientY - boundingRect.top;\n        }\n\n        // Add information to the event object\n        event.deltaX = deltaX;\n        event.deltaY = deltaY;\n        event.deltaFactor = lowestDelta;\n        event.offsetX = offsetX;\n        event.offsetY = offsetY;\n        // Go ahead and set deltaMode to 0 since we converted to pixels\n        // Although this is a little odd since we overwrite the deltaX/Y\n        // properties with normalized deltas.\n        event.deltaMode = 0;\n\n        // Add event and delta to the front of the arguments\n        args.unshift(event, delta, deltaX, deltaY);\n\n        // Clearout lowestDelta after sometime to better\n        // handle multiple device types that give different\n        // a different lowestDelta\n        // Ex: trackpad = 3 and mouse wheel = 120\n        if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); }\n        nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200);\n\n        return ($.event.dispatch || $.event.handle).apply(this, args);\n    }\n\n    function nullLowestDelta() {\n        lowestDelta = null;\n    }\n\n    function shouldAdjustOldDeltas(orgEvent, absDelta) {\n        // If this is an older event and the delta is divisable by 120,\n        // then we are assuming that the browser is treating this as an\n        // older mouse wheel event and that we should divide the deltas\n        // by 40 to try and get a more usable deltaFactor.\n        // Side note, this actually impacts the reported scroll distance\n        // in older browsers and can cause scrolling to be slower than native.\n        // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false.\n        return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0;\n    }\n\n}));\n\nS2.define('jquery.select2',[\n  'jquery',\n  'jquery-mousewheel',\n\n  './select2/core',\n  './select2/defaults'\n], function ($, _, Select2, Defaults) {\n  if ($.fn.select2 == null) {\n    // All methods that should return the element\n    var thisMethods = ['open', 'close', 'destroy'];\n\n    $.fn.select2 = function (options) {\n      options = options || {};\n\n      if (typeof options === 'object') {\n        this.each(function () {\n          var instanceOptions = $.extend(true, {}, options);\n\n          var instance = new Select2($(this), instanceOptions);\n        });\n\n        return this;\n      } else if (typeof options === 'string') {\n        var ret;\n\n        this.each(function () {\n          var instance = $(this).data('select2');\n\n          if (instance == null && window.console && console.error) {\n            console.error(\n              'The select2(\\'' + options + '\\') method was called on an ' +\n              'element that is not using Select2.'\n            );\n          }\n\n          var args = Array.prototype.slice.call(arguments, 1);\n\n          ret = instance[options].apply(instance, args);\n        });\n\n        // Check if we should be returning `this`\n        if ($.inArray(options, thisMethods) > -1) {\n          return this;\n        }\n\n        return ret;\n      } else {\n        throw new Error('Invalid arguments for Select2: ' + options);\n      }\n    };\n  }\n\n  if ($.fn.select2.defaults == null) {\n    $.fn.select2.defaults = Defaults;\n  }\n\n  return Select2;\n});\n\n  // Return the AMD loader configuration so it can be used outside of this file\n  return {\n    define: S2.define,\n    require: S2.require\n  };\n}());\n\n  // Autoload the jQuery bindings\n  // We know that all of the modules exist above this, so we're safe\n  var select2 = S2.require('jquery.select2');\n\n  // Hold the AMD module references on the jQuery function that was just loaded\n  // This allows Select2 to use the internal loader outside of this file, such\n  // as in the language files.\n  jQuery.fn.select2.amd = S2;\n\n  // Return the Select2 instance for anyone who is importing it.\n  return select2;\n}));\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/select2.js",
    "content": "/*!\n * Select2 4.0.2\n * https://select2.github.io\n *\n * Released under the MIT license\n * https://github.com/select2/select2/blob/master/LICENSE.md\n */\n(function (factory) {\n  if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module.\n    define(['jquery'], factory);\n  } else if (typeof exports === 'object') {\n    // Node/CommonJS\n    factory(require('jquery'));\n  } else {\n    // Browser globals\n    factory(jQuery);\n  }\n}(function (jQuery) {\n  // This is needed so we can catch the AMD loader configuration and use it\n  // The inner file should be wrapped (by `banner.start.js`) in a function that\n  // returns the AMD loader references.\n  var S2 =\n(function () {\n  // Restore the Select2 AMD loader so it can be used\n  // Needed mostly in the language files, where the loader is not inserted\n  if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {\n    var S2 = jQuery.fn.select2.amd;\n  }\nvar S2;(function () { if (!S2 || !S2.requirejs) {\nif (!S2) { S2 = {}; } else { require = S2; }\n/**\n * @license almond 0.3.1 Copyright (c) 2011-2014, The Dojo Foundation All Rights Reserved.\n * Available via the MIT or new BSD license.\n * see: http://github.com/jrburke/almond for details\n */\n//Going sloppy to avoid 'use strict' string cost, but strict practices should\n//be followed.\n/*jslint sloppy: true */\n/*global setTimeout: false */\n\nvar requirejs, require, define;\n(function (undef) {\n    var main, req, makeMap, handlers,\n        defined = {},\n        waiting = {},\n        config = {},\n        defining = {},\n        hasOwn = Object.prototype.hasOwnProperty,\n        aps = [].slice,\n        jsSuffixRegExp = /\\.js$/;\n\n    function hasProp(obj, prop) {\n        return hasOwn.call(obj, prop);\n    }\n\n    /**\n     * Given a relative module name, like ./something, normalize it to\n     * a real name that can be mapped to a path.\n     * @param {String} name the relative name\n     * @param {String} baseName a real name that the name arg is relative\n     * to.\n     * @returns {String} normalized name\n     */\n    function normalize(name, baseName) {\n        var nameParts, nameSegment, mapValue, foundMap, lastIndex,\n            foundI, foundStarMap, starI, i, j, part,\n            baseParts = baseName && baseName.split(\"/\"),\n            map = config.map,\n            starMap = (map && map['*']) || {};\n\n        //Adjust any relative paths.\n        if (name && name.charAt(0) === \".\") {\n            //If have a base name, try to normalize against it,\n            //otherwise, assume it is a top-level require that will\n            //be relative to baseUrl in the end.\n            if (baseName) {\n                name = name.split('/');\n                lastIndex = name.length - 1;\n\n                // Node .js allowance:\n                if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n                    name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n                }\n\n                //Lop off the last part of baseParts, so that . matches the\n                //\"directory\" and not name of the baseName's module. For instance,\n                //baseName of \"one/two/three\", maps to \"one/two/three.js\", but we\n                //want the directory, \"one/two\" for this normalization.\n                name = baseParts.slice(0, baseParts.length - 1).concat(name);\n\n                //start trimDots\n                for (i = 0; i < name.length; i += 1) {\n                    part = name[i];\n                    if (part === \".\") {\n                        name.splice(i, 1);\n                        i -= 1;\n                    } else if (part === \"..\") {\n                        if (i === 1 && (name[2] === '..' || name[0] === '..')) {\n                            //End of the line. Keep at least one non-dot\n                            //path segment at the front so it can be mapped\n                            //correctly to disk. Otherwise, there is likely\n                            //no path mapping for a path starting with '..'.\n                            //This can still fail, but catches the most reasonable\n                            //uses of ..\n                            break;\n                        } else if (i > 0) {\n                            name.splice(i - 1, 2);\n                            i -= 2;\n                        }\n                    }\n                }\n                //end trimDots\n\n                name = name.join(\"/\");\n            } else if (name.indexOf('./') === 0) {\n                // No baseName, so this is ID is resolved relative\n                // to baseUrl, pull off the leading dot.\n                name = name.substring(2);\n            }\n        }\n\n        //Apply map config if available.\n        if ((baseParts || starMap) && map) {\n            nameParts = name.split('/');\n\n            for (i = nameParts.length; i > 0; i -= 1) {\n                nameSegment = nameParts.slice(0, i).join(\"/\");\n\n                if (baseParts) {\n                    //Find the longest baseName segment match in the config.\n                    //So, do joins on the biggest to smallest lengths of baseParts.\n                    for (j = baseParts.length; j > 0; j -= 1) {\n                        mapValue = map[baseParts.slice(0, j).join('/')];\n\n                        //baseName segment has  config, find if it has one for\n                        //this name.\n                        if (mapValue) {\n                            mapValue = mapValue[nameSegment];\n                            if (mapValue) {\n                                //Match, update name to the new value.\n                                foundMap = mapValue;\n                                foundI = i;\n                                break;\n                            }\n                        }\n                    }\n                }\n\n                if (foundMap) {\n                    break;\n                }\n\n                //Check for a star map match, but just hold on to it,\n                //if there is a shorter segment match later in a matching\n                //config, then favor over this star map.\n                if (!foundStarMap && starMap && starMap[nameSegment]) {\n                    foundStarMap = starMap[nameSegment];\n                    starI = i;\n                }\n            }\n\n            if (!foundMap && foundStarMap) {\n                foundMap = foundStarMap;\n                foundI = starI;\n            }\n\n            if (foundMap) {\n                nameParts.splice(0, foundI, foundMap);\n                name = nameParts.join('/');\n            }\n        }\n\n        return name;\n    }\n\n    function makeRequire(relName, forceSync) {\n        return function () {\n            //A version of a require function that passes a moduleName\n            //value for items that may need to\n            //look up paths relative to the moduleName\n            var args = aps.call(arguments, 0);\n\n            //If first arg is not require('string'), and there is only\n            //one arg, it is the array form without a callback. Insert\n            //a null so that the following concat is correct.\n            if (typeof args[0] !== 'string' && args.length === 1) {\n                args.push(null);\n            }\n            return req.apply(undef, args.concat([relName, forceSync]));\n        };\n    }\n\n    function makeNormalize(relName) {\n        return function (name) {\n            return normalize(name, relName);\n        };\n    }\n\n    function makeLoad(depName) {\n        return function (value) {\n            defined[depName] = value;\n        };\n    }\n\n    function callDep(name) {\n        if (hasProp(waiting, name)) {\n            var args = waiting[name];\n            delete waiting[name];\n            defining[name] = true;\n            main.apply(undef, args);\n        }\n\n        if (!hasProp(defined, name) && !hasProp(defining, name)) {\n            throw new Error('No ' + name);\n        }\n        return defined[name];\n    }\n\n    //Turns a plugin!resource to [plugin, resource]\n    //with the plugin being undefined if the name\n    //did not have a plugin prefix.\n    function splitPrefix(name) {\n        var prefix,\n            index = name ? name.indexOf('!') : -1;\n        if (index > -1) {\n            prefix = name.substring(0, index);\n            name = name.substring(index + 1, name.length);\n        }\n        return [prefix, name];\n    }\n\n    /**\n     * Makes a name map, normalizing the name, and using a plugin\n     * for normalization if necessary. Grabs a ref to plugin\n     * too, as an optimization.\n     */\n    makeMap = function (name, relName) {\n        var plugin,\n            parts = splitPrefix(name),\n            prefix = parts[0];\n\n        name = parts[1];\n\n        if (prefix) {\n            prefix = normalize(prefix, relName);\n            plugin = callDep(prefix);\n        }\n\n        //Normalize according\n        if (prefix) {\n            if (plugin && plugin.normalize) {\n                name = plugin.normalize(name, makeNormalize(relName));\n            } else {\n                name = normalize(name, relName);\n            }\n        } else {\n            name = normalize(name, relName);\n            parts = splitPrefix(name);\n            prefix = parts[0];\n            name = parts[1];\n            if (prefix) {\n                plugin = callDep(prefix);\n            }\n        }\n\n        //Using ridiculous property names for space reasons\n        return {\n            f: prefix ? prefix + '!' + name : name, //fullName\n            n: name,\n            pr: prefix,\n            p: plugin\n        };\n    };\n\n    function makeConfig(name) {\n        return function () {\n            return (config && config.config && config.config[name]) || {};\n        };\n    }\n\n    handlers = {\n        require: function (name) {\n            return makeRequire(name);\n        },\n        exports: function (name) {\n            var e = defined[name];\n            if (typeof e !== 'undefined') {\n                return e;\n            } else {\n                return (defined[name] = {});\n            }\n        },\n        module: function (name) {\n            return {\n                id: name,\n                uri: '',\n                exports: defined[name],\n                config: makeConfig(name)\n            };\n        }\n    };\n\n    main = function (name, deps, callback, relName) {\n        var cjsModule, depName, ret, map, i,\n            args = [],\n            callbackType = typeof callback,\n            usingExports;\n\n        //Use name if no relName\n        relName = relName || name;\n\n        //Call the callback to define the module, if necessary.\n        if (callbackType === 'undefined' || callbackType === 'function') {\n            //Pull out the defined dependencies and pass the ordered\n            //values to the callback.\n            //Default to [require, exports, module] if no deps\n            deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\n            for (i = 0; i < deps.length; i += 1) {\n                map = makeMap(deps[i], relName);\n                depName = map.f;\n\n                //Fast path CommonJS standard dependencies.\n                if (depName === \"require\") {\n                    args[i] = handlers.require(name);\n                } else if (depName === \"exports\") {\n                    //CommonJS module spec 1.1\n                    args[i] = handlers.exports(name);\n                    usingExports = true;\n                } else if (depName === \"module\") {\n                    //CommonJS module spec 1.1\n                    cjsModule = args[i] = handlers.module(name);\n                } else if (hasProp(defined, depName) ||\n                           hasProp(waiting, depName) ||\n                           hasProp(defining, depName)) {\n                    args[i] = callDep(depName);\n                } else if (map.p) {\n                    map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\n                    args[i] = defined[depName];\n                } else {\n                    throw new Error(name + ' missing ' + depName);\n                }\n            }\n\n            ret = callback ? callback.apply(defined[name], args) : undefined;\n\n            if (name) {\n                //If setting exports via \"module\" is in play,\n                //favor that over return value and exports. After that,\n                //favor a non-undefined return value over exports use.\n                if (cjsModule && cjsModule.exports !== undef &&\n                        cjsModule.exports !== defined[name]) {\n                    defined[name] = cjsModule.exports;\n                } else if (ret !== undef || !usingExports) {\n                    //Use the return value from the function.\n                    defined[name] = ret;\n                }\n            }\n        } else if (name) {\n            //May just be an object definition for the module. Only\n            //worry about defining if have a module name.\n            defined[name] = callback;\n        }\n    };\n\n    requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\n        if (typeof deps === \"string\") {\n            if (handlers[deps]) {\n                //callback in this case is really relName\n                return handlers[deps](callback);\n            }\n            //Just return the module wanted. In this scenario, the\n            //deps arg is the module name, and second arg (if passed)\n            //is just the relName.\n            //Normalize module name, if it contains . or ..\n            return callDep(makeMap(deps, callback).f);\n        } else if (!deps.splice) {\n            //deps is a config object, not an array.\n            config = deps;\n            if (config.deps) {\n                req(config.deps, config.callback);\n            }\n            if (!callback) {\n                return;\n            }\n\n            if (callback.splice) {\n                //callback is an array, which means it is a dependency list.\n                //Adjust args if there are dependencies\n                deps = callback;\n                callback = relName;\n                relName = null;\n            } else {\n                deps = undef;\n            }\n        }\n\n        //Support require(['a'])\n        callback = callback || function () {};\n\n        //If relName is a function, it is an errback handler,\n        //so remove it.\n        if (typeof relName === 'function') {\n            relName = forceSync;\n            forceSync = alt;\n        }\n\n        //Simulate async callback;\n        if (forceSync) {\n            main(undef, deps, callback, relName);\n        } else {\n            //Using a non-zero value because of concern for what old browsers\n            //do, and latest browsers \"upgrade\" to 4 if lower value is used:\n            //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\n            //If want a value immediately, use require('id') instead -- something\n            //that works in almond on the global level, but not guaranteed and\n            //unlikely to work in other AMD implementations.\n            setTimeout(function () {\n                main(undef, deps, callback, relName);\n            }, 4);\n        }\n\n        return req;\n    };\n\n    /**\n     * Just drops the config on the floor, but returns req in case\n     * the config return value is used.\n     */\n    req.config = function (cfg) {\n        return req(cfg);\n    };\n\n    /**\n     * Expose module registry for debugging and tooling\n     */\n    requirejs._defined = defined;\n\n    define = function (name, deps, callback) {\n        if (typeof name !== 'string') {\n            throw new Error('See almond README: incorrect module build, no module name');\n        }\n\n        //This module may not have dependencies\n        if (!deps.splice) {\n            //deps is not an array, so probably means\n            //an object literal or factory function for\n            //the value. Adjust args.\n            callback = deps;\n            deps = [];\n        }\n\n        if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n            waiting[name] = [name, deps, callback];\n        }\n    };\n\n    define.amd = {\n        jQuery: true\n    };\n}());\n\nS2.requirejs = requirejs;S2.require = require;S2.define = define;\n}\n}());\nS2.define(\"almond\", function(){});\n\n/* global jQuery:false, $:false */\nS2.define('jquery',[],function () {\n  var _$ = jQuery || $;\n\n  if (_$ == null && console && console.error) {\n    console.error(\n      'Select2: An instance of jQuery or a jQuery-compatible library was not ' +\n      'found. Make sure that you are including jQuery before Select2 on your ' +\n      'web page.'\n    );\n  }\n\n  return _$;\n});\n\nS2.define('select2/utils',[\n  'jquery'\n], function ($) {\n  var Utils = {};\n\n  Utils.Extend = function (ChildClass, SuperClass) {\n    var __hasProp = {}.hasOwnProperty;\n\n    function BaseConstructor () {\n      this.constructor = ChildClass;\n    }\n\n    for (var key in SuperClass) {\n      if (__hasProp.call(SuperClass, key)) {\n        ChildClass[key] = SuperClass[key];\n      }\n    }\n\n    BaseConstructor.prototype = SuperClass.prototype;\n    ChildClass.prototype = new BaseConstructor();\n    ChildClass.__super__ = SuperClass.prototype;\n\n    return ChildClass;\n  };\n\n  function getMethods (theClass) {\n    var proto = theClass.prototype;\n\n    var methods = [];\n\n    for (var methodName in proto) {\n      var m = proto[methodName];\n\n      if (typeof m !== 'function') {\n        continue;\n      }\n\n      if (methodName === 'constructor') {\n        continue;\n      }\n\n      methods.push(methodName);\n    }\n\n    return methods;\n  }\n\n  Utils.Decorate = function (SuperClass, DecoratorClass) {\n    var decoratedMethods = getMethods(DecoratorClass);\n    var superMethods = getMethods(SuperClass);\n\n    function DecoratedClass () {\n      var unshift = Array.prototype.unshift;\n\n      var argCount = DecoratorClass.prototype.constructor.length;\n\n      var calledConstructor = SuperClass.prototype.constructor;\n\n      if (argCount > 0) {\n        unshift.call(arguments, SuperClass.prototype.constructor);\n\n        calledConstructor = DecoratorClass.prototype.constructor;\n      }\n\n      calledConstructor.apply(this, arguments);\n    }\n\n    DecoratorClass.displayName = SuperClass.displayName;\n\n    function ctr () {\n      this.constructor = DecoratedClass;\n    }\n\n    DecoratedClass.prototype = new ctr();\n\n    for (var m = 0; m < superMethods.length; m++) {\n        var superMethod = superMethods[m];\n\n        DecoratedClass.prototype[superMethod] =\n          SuperClass.prototype[superMethod];\n    }\n\n    var calledMethod = function (methodName) {\n      // Stub out the original method if it's not decorating an actual method\n      var originalMethod = function () {};\n\n      if (methodName in DecoratedClass.prototype) {\n        originalMethod = DecoratedClass.prototype[methodName];\n      }\n\n      var decoratedMethod = DecoratorClass.prototype[methodName];\n\n      return function () {\n        var unshift = Array.prototype.unshift;\n\n        unshift.call(arguments, originalMethod);\n\n        return decoratedMethod.apply(this, arguments);\n      };\n    };\n\n    for (var d = 0; d < decoratedMethods.length; d++) {\n      var decoratedMethod = decoratedMethods[d];\n\n      DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\n    }\n\n    return DecoratedClass;\n  };\n\n  var Observable = function () {\n    this.listeners = {};\n  };\n\n  Observable.prototype.on = function (event, callback) {\n    this.listeners = this.listeners || {};\n\n    if (event in this.listeners) {\n      this.listeners[event].push(callback);\n    } else {\n      this.listeners[event] = [callback];\n    }\n  };\n\n  Observable.prototype.trigger = function (event) {\n    var slice = Array.prototype.slice;\n\n    this.listeners = this.listeners || {};\n\n    if (event in this.listeners) {\n      this.invoke(this.listeners[event], slice.call(arguments, 1));\n    }\n\n    if ('*' in this.listeners) {\n      this.invoke(this.listeners['*'], arguments);\n    }\n  };\n\n  Observable.prototype.invoke = function (listeners, params) {\n    for (var i = 0, len = listeners.length; i < len; i++) {\n      listeners[i].apply(this, params);\n    }\n  };\n\n  Utils.Observable = Observable;\n\n  Utils.generateChars = function (length) {\n    var chars = '';\n\n    for (var i = 0; i < length; i++) {\n      var randomChar = Math.floor(Math.random() * 36);\n      chars += randomChar.toString(36);\n    }\n\n    return chars;\n  };\n\n  Utils.bind = function (func, context) {\n    return function () {\n      func.apply(context, arguments);\n    };\n  };\n\n  Utils._convertData = function (data) {\n    for (var originalKey in data) {\n      var keys = originalKey.split('-');\n\n      var dataLevel = data;\n\n      if (keys.length === 1) {\n        continue;\n      }\n\n      for (var k = 0; k < keys.length; k++) {\n        var key = keys[k];\n\n        // Lowercase the first letter\n        // By default, dash-separated becomes camelCase\n        key = key.substring(0, 1).toLowerCase() + key.substring(1);\n\n        if (!(key in dataLevel)) {\n          dataLevel[key] = {};\n        }\n\n        if (k == keys.length - 1) {\n          dataLevel[key] = data[originalKey];\n        }\n\n        dataLevel = dataLevel[key];\n      }\n\n      delete data[originalKey];\n    }\n\n    return data;\n  };\n\n  Utils.hasScroll = function (index, el) {\n    // Adapted from the function created by @ShadowScripter\n    // and adapted by @BillBarry on the Stack Exchange Code Review website.\n    // The original code can be found at\n    // http://codereview.stackexchange.com/q/13338\n    // and was designed to be used with the Sizzle selector engine.\n\n    var $el = $(el);\n    var overflowX = el.style.overflowX;\n    var overflowY = el.style.overflowY;\n\n    //Check both x and y declarations\n    if (overflowX === overflowY &&\n        (overflowY === 'hidden' || overflowY === 'visible')) {\n      return false;\n    }\n\n    if (overflowX === 'scroll' || overflowY === 'scroll') {\n      return true;\n    }\n\n    return ($el.innerHeight() < el.scrollHeight ||\n      $el.innerWidth() < el.scrollWidth);\n  };\n\n  Utils.escapeMarkup = function (markup) {\n    var replaceMap = {\n      '\\\\': '&#92;',\n      '&': '&amp;',\n      '<': '&lt;',\n      '>': '&gt;',\n      '\"': '&quot;',\n      '\\'': '&#39;',\n      '/': '&#47;'\n    };\n\n    // Do not try to escape the markup if it's not a string\n    if (typeof markup !== 'string') {\n      return markup;\n    }\n\n    return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n      return replaceMap[match];\n    });\n  };\n\n  // Append an array of jQuery nodes to a given element.\n  Utils.appendMany = function ($element, $nodes) {\n    // jQuery 1.7.x does not support $.fn.append() with an array\n    // Fall back to a jQuery object collection using $.fn.add()\n    if ($.fn.jquery.substr(0, 3) === '1.7') {\n      var $jqNodes = $();\n\n      $.map($nodes, function (node) {\n        $jqNodes = $jqNodes.add(node);\n      });\n\n      $nodes = $jqNodes;\n    }\n\n    $element.append($nodes);\n  };\n\n  return Utils;\n});\n\nS2.define('select2/results',[\n  'jquery',\n  './utils'\n], function ($, Utils) {\n  function Results ($element, options, dataAdapter) {\n    this.$element = $element;\n    this.data = dataAdapter;\n    this.options = options;\n\n    Results.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(Results, Utils.Observable);\n\n  Results.prototype.render = function () {\n    var $results = $(\n      '<ul class=\"select2-results__options\" role=\"tree\"></ul>'\n    );\n\n    if (this.options.get('multiple')) {\n      $results.attr('aria-multiselectable', 'true');\n    }\n\n    this.$results = $results;\n\n    return $results;\n  };\n\n  Results.prototype.clear = function () {\n    this.$results.empty();\n  };\n\n  Results.prototype.displayMessage = function (params) {\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    this.clear();\n    this.hideLoading();\n\n    var $message = $(\n      '<li role=\"treeitem\" aria-live=\"assertive\"' +\n      ' class=\"select2-results__option\"></li>'\n    );\n\n    var message = this.options.get('translations').get(params.message);\n\n    $message.append(\n      escapeMarkup(\n        message(params.args)\n      )\n    );\n\n    $message[0].className += ' select2-results__message';\n\n    this.$results.append($message);\n  };\n\n  Results.prototype.hideMessages = function () {\n    this.$results.find('.select2-results__message').remove();\n  };\n\n  Results.prototype.append = function (data) {\n    this.hideLoading();\n\n    var $options = [];\n\n    if (data.results == null || data.results.length === 0) {\n      if (this.$results.children().length === 0) {\n        this.trigger('results:message', {\n          message: 'noResults'\n        });\n      }\n\n      return;\n    }\n\n    data.results = this.sort(data.results);\n\n    for (var d = 0; d < data.results.length; d++) {\n      var item = data.results[d];\n\n      var $option = this.option(item);\n\n      $options.push($option);\n    }\n\n    this.$results.append($options);\n  };\n\n  Results.prototype.position = function ($results, $dropdown) {\n    var $resultsContainer = $dropdown.find('.select2-results');\n    $resultsContainer.append($results);\n  };\n\n  Results.prototype.sort = function (data) {\n    var sorter = this.options.get('sorter');\n\n    return sorter(data);\n  };\n\n  Results.prototype.setClasses = function () {\n    var self = this;\n\n    this.data.current(function (selected) {\n      var selectedIds = $.map(selected, function (s) {\n        return s.id.toString();\n      });\n\n      var $options = self.$results\n        .find('.select2-results__option[aria-selected]');\n\n      $options.each(function () {\n        var $option = $(this);\n\n        var item = $.data(this, 'data');\n\n        // id needs to be converted to a string when comparing\n        var id = '' + item.id;\n\n        if ((item.element != null && item.element.selected) ||\n            (item.element == null && $.inArray(id, selectedIds) > -1)) {\n          $option.attr('aria-selected', 'true');\n        } else {\n          $option.attr('aria-selected', 'false');\n        }\n      });\n\n      var $selected = $options.filter('[aria-selected=true]');\n\n      // Check if there are any selected options\n      if ($selected.length > 0) {\n        // If there are selected options, highlight the first\n        $selected.first().trigger('mouseenter');\n      } else {\n        // If there are no selected options, highlight the first option\n        // in the dropdown\n        $options.first().trigger('mouseenter');\n      }\n    });\n  };\n\n  Results.prototype.showLoading = function (params) {\n    this.hideLoading();\n\n    var loadingMore = this.options.get('translations').get('searching');\n\n    var loading = {\n      disabled: true,\n      loading: true,\n      text: loadingMore(params)\n    };\n    var $loading = this.option(loading);\n    $loading.className += ' loading-results';\n\n    this.$results.prepend($loading);\n  };\n\n  Results.prototype.hideLoading = function () {\n    this.$results.find('.loading-results').remove();\n  };\n\n  Results.prototype.option = function (data) {\n    var option = document.createElement('li');\n    option.className = 'select2-results__option';\n\n    var attrs = {\n      'role': 'treeitem',\n      'aria-selected': 'false'\n    };\n\n    if (data.disabled) {\n      delete attrs['aria-selected'];\n      attrs['aria-disabled'] = 'true';\n    }\n\n    if (data.id == null) {\n      delete attrs['aria-selected'];\n    }\n\n    if (data._resultId != null) {\n      option.id = data._resultId;\n    }\n\n    if (data.title) {\n      option.title = data.title;\n    }\n\n    if (data.children) {\n      attrs.role = 'group';\n      attrs['aria-label'] = data.text;\n      delete attrs['aria-selected'];\n    }\n\n    for (var attr in attrs) {\n      var val = attrs[attr];\n\n      option.setAttribute(attr, val);\n    }\n\n    if (data.children) {\n      var $option = $(option);\n\n      var label = document.createElement('strong');\n      label.className = 'select2-results__group';\n\n      var $label = $(label);\n      this.template(data, label);\n\n      var $children = [];\n\n      for (var c = 0; c < data.children.length; c++) {\n        var child = data.children[c];\n\n        var $child = this.option(child);\n\n        $children.push($child);\n      }\n\n      var $childrenContainer = $('<ul></ul>', {\n        'class': 'select2-results__options select2-results__options--nested'\n      });\n\n      $childrenContainer.append($children);\n\n      $option.append(label);\n      $option.append($childrenContainer);\n    } else {\n      this.template(data, option);\n    }\n\n    $.data(option, 'data', data);\n\n    return option;\n  };\n\n  Results.prototype.bind = function (container, $container) {\n    var self = this;\n\n    var id = container.id + '-results';\n\n    this.$results.attr('id', id);\n\n    container.on('results:all', function (params) {\n      self.clear();\n      self.append(params.data);\n\n      if (container.isOpen()) {\n        self.setClasses();\n      }\n    });\n\n    container.on('results:append', function (params) {\n      self.append(params.data);\n\n      if (container.isOpen()) {\n        self.setClasses();\n      }\n    });\n\n    container.on('query', function (params) {\n      self.hideMessages();\n      self.showLoading(params);\n    });\n\n    container.on('select', function () {\n      if (!container.isOpen()) {\n        return;\n      }\n\n      self.setClasses();\n    });\n\n    container.on('unselect', function () {\n      if (!container.isOpen()) {\n        return;\n      }\n\n      self.setClasses();\n    });\n\n    container.on('open', function () {\n      // When the dropdown is open, aria-expended=\"true\"\n      self.$results.attr('aria-expanded', 'true');\n      self.$results.attr('aria-hidden', 'false');\n\n      self.setClasses();\n      self.ensureHighlightVisible();\n    });\n\n    container.on('close', function () {\n      // When the dropdown is closed, aria-expended=\"false\"\n      self.$results.attr('aria-expanded', 'false');\n      self.$results.attr('aria-hidden', 'true');\n      self.$results.removeAttr('aria-activedescendant');\n    });\n\n    container.on('results:toggle', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      if ($highlighted.length === 0) {\n        return;\n      }\n\n      $highlighted.trigger('mouseup');\n    });\n\n    container.on('results:select', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      if ($highlighted.length === 0) {\n        return;\n      }\n\n      var data = $highlighted.data('data');\n\n      if ($highlighted.attr('aria-selected') == 'true') {\n        self.trigger('close', {});\n      } else {\n        self.trigger('select', {\n          data: data\n        });\n      }\n    });\n\n    container.on('results:previous', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      var $options = self.$results.find('[aria-selected]');\n\n      var currentIndex = $options.index($highlighted);\n\n      // If we are already at te top, don't move further\n      if (currentIndex === 0) {\n        return;\n      }\n\n      var nextIndex = currentIndex - 1;\n\n      // If none are highlighted, highlight the first\n      if ($highlighted.length === 0) {\n        nextIndex = 0;\n      }\n\n      var $next = $options.eq(nextIndex);\n\n      $next.trigger('mouseenter');\n\n      var currentOffset = self.$results.offset().top;\n      var nextTop = $next.offset().top;\n      var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\n\n      if (nextIndex === 0) {\n        self.$results.scrollTop(0);\n      } else if (nextTop - currentOffset < 0) {\n        self.$results.scrollTop(nextOffset);\n      }\n    });\n\n    container.on('results:next', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      var $options = self.$results.find('[aria-selected]');\n\n      var currentIndex = $options.index($highlighted);\n\n      var nextIndex = currentIndex + 1;\n\n      // If we are at the last option, stay there\n      if (nextIndex >= $options.length) {\n        return;\n      }\n\n      var $next = $options.eq(nextIndex);\n\n      $next.trigger('mouseenter');\n\n      var currentOffset = self.$results.offset().top +\n        self.$results.outerHeight(false);\n      var nextBottom = $next.offset().top + $next.outerHeight(false);\n      var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\n\n      if (nextIndex === 0) {\n        self.$results.scrollTop(0);\n      } else if (nextBottom > currentOffset) {\n        self.$results.scrollTop(nextOffset);\n      }\n    });\n\n    container.on('results:focus', function (params) {\n      params.element.addClass('select2-results__option--highlighted');\n    });\n\n    container.on('results:message', function (params) {\n      self.displayMessage(params);\n    });\n\n    if ($.fn.mousewheel) {\n      this.$results.on('mousewheel', function (e) {\n        var top = self.$results.scrollTop();\n\n        var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\n\n        var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\n        var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\n\n        if (isAtTop) {\n          self.$results.scrollTop(0);\n\n          e.preventDefault();\n          e.stopPropagation();\n        } else if (isAtBottom) {\n          self.$results.scrollTop(\n            self.$results.get(0).scrollHeight - self.$results.height()\n          );\n\n          e.preventDefault();\n          e.stopPropagation();\n        }\n      });\n    }\n\n    this.$results.on('mouseup', '.select2-results__option[aria-selected]',\n      function (evt) {\n      var $this = $(this);\n\n      var data = $this.data('data');\n\n      if ($this.attr('aria-selected') === 'true') {\n        if (self.options.get('multiple')) {\n          self.trigger('unselect', {\n            originalEvent: evt,\n            data: data\n          });\n        } else {\n          self.trigger('close', {});\n        }\n\n        return;\n      }\n\n      self.trigger('select', {\n        originalEvent: evt,\n        data: data\n      });\n    });\n\n    this.$results.on('mouseenter', '.select2-results__option[aria-selected]',\n      function (evt) {\n      var data = $(this).data('data');\n\n      self.getHighlightedResults()\n          .removeClass('select2-results__option--highlighted');\n\n      self.trigger('results:focus', {\n        data: data,\n        element: $(this)\n      });\n    });\n  };\n\n  Results.prototype.getHighlightedResults = function () {\n    var $highlighted = this.$results\n    .find('.select2-results__option--highlighted');\n\n    return $highlighted;\n  };\n\n  Results.prototype.destroy = function () {\n    this.$results.remove();\n  };\n\n  Results.prototype.ensureHighlightVisible = function () {\n    var $highlighted = this.getHighlightedResults();\n\n    if ($highlighted.length === 0) {\n      return;\n    }\n\n    var $options = this.$results.find('[aria-selected]');\n\n    var currentIndex = $options.index($highlighted);\n\n    var currentOffset = this.$results.offset().top;\n    var nextTop = $highlighted.offset().top;\n    var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\n\n    var offsetDelta = nextTop - currentOffset;\n    nextOffset -= $highlighted.outerHeight(false) * 2;\n\n    if (currentIndex <= 2) {\n      this.$results.scrollTop(0);\n    } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {\n      this.$results.scrollTop(nextOffset);\n    }\n  };\n\n  Results.prototype.template = function (result, container) {\n    var template = this.options.get('templateResult');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    var content = template(result, container);\n\n    if (content == null) {\n      container.style.display = 'none';\n    } else if (typeof content === 'string') {\n      container.innerHTML = escapeMarkup(content);\n    } else {\n      $(container).append(content);\n    }\n  };\n\n  return Results;\n});\n\nS2.define('select2/keys',[\n\n], function () {\n  var KEYS = {\n    BACKSPACE: 8,\n    TAB: 9,\n    ENTER: 13,\n    SHIFT: 16,\n    CTRL: 17,\n    ALT: 18,\n    ESC: 27,\n    SPACE: 32,\n    PAGE_UP: 33,\n    PAGE_DOWN: 34,\n    END: 35,\n    HOME: 36,\n    LEFT: 37,\n    UP: 38,\n    RIGHT: 39,\n    DOWN: 40,\n    DELETE: 46\n  };\n\n  return KEYS;\n});\n\nS2.define('select2/selection/base',[\n  'jquery',\n  '../utils',\n  '../keys'\n], function ($, Utils, KEYS) {\n  function BaseSelection ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    BaseSelection.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(BaseSelection, Utils.Observable);\n\n  BaseSelection.prototype.render = function () {\n    var $selection = $(\n      '<span class=\"select2-selection\" role=\"combobox\" ' +\n      ' aria-haspopup=\"true\" aria-expanded=\"false\">' +\n      '</span>'\n    );\n\n    this._tabindex = 0;\n\n    if (this.$element.data('old-tabindex') != null) {\n      this._tabindex = this.$element.data('old-tabindex');\n    } else if (this.$element.attr('tabindex') != null) {\n      this._tabindex = this.$element.attr('tabindex');\n    }\n\n    $selection.attr('title', this.$element.attr('title'));\n    $selection.attr('tabindex', this._tabindex);\n\n    this.$selection = $selection;\n\n    return $selection;\n  };\n\n  BaseSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    var id = container.id + '-container';\n    var resultsId = container.id + '-results';\n\n    this.container = container;\n\n    this.$selection.on('focus', function (evt) {\n      self.trigger('focus', evt);\n    });\n\n    this.$selection.on('blur', function (evt) {\n      self._handleBlur(evt);\n    });\n\n    this.$selection.on('keydown', function (evt) {\n      self.trigger('keypress', evt);\n\n      if (evt.which === KEYS.SPACE) {\n        evt.preventDefault();\n      }\n    });\n\n    container.on('results:focus', function (params) {\n      self.$selection.attr('aria-activedescendant', params.data._resultId);\n    });\n\n    container.on('selection:update', function (params) {\n      self.update(params.data);\n    });\n\n    container.on('open', function () {\n      // When the dropdown is open, aria-expanded=\"true\"\n      self.$selection.attr('aria-expanded', 'true');\n      self.$selection.attr('aria-owns', resultsId);\n\n      self._attachCloseHandler(container);\n    });\n\n    container.on('close', function () {\n      // When the dropdown is closed, aria-expanded=\"false\"\n      self.$selection.attr('aria-expanded', 'false');\n      self.$selection.removeAttr('aria-activedescendant');\n      self.$selection.removeAttr('aria-owns');\n\n      self.$selection.focus();\n\n      self._detachCloseHandler(container);\n    });\n\n    container.on('enable', function () {\n      self.$selection.attr('tabindex', self._tabindex);\n    });\n\n    container.on('disable', function () {\n      self.$selection.attr('tabindex', '-1');\n    });\n  };\n\n  BaseSelection.prototype._handleBlur = function (evt) {\n    var self = this;\n\n    // This needs to be delayed as the active element is the body when the tab\n    // key is pressed, possibly along with others.\n    window.setTimeout(function () {\n      // Don't trigger `blur` if the focus is still in the selection\n      if (\n        (document.activeElement == self.$selection[0]) ||\n        ($.contains(self.$selection[0], document.activeElement))\n      ) {\n        return;\n      }\n\n      self.trigger('blur', evt);\n    }, 1);\n  };\n\n  BaseSelection.prototype._attachCloseHandler = function (container) {\n    var self = this;\n\n    $(document.body).on('mousedown.select2.' + container.id, function (e) {\n      var $target = $(e.target);\n\n      var $select = $target.closest('.select2');\n\n      var $all = $('.select2.select2-container--open');\n\n      $all.each(function () {\n        var $this = $(this);\n\n        if (this == $select[0]) {\n          return;\n        }\n\n        var $element = $this.data('element');\n\n        $element.select2('close');\n      });\n    });\n  };\n\n  BaseSelection.prototype._detachCloseHandler = function (container) {\n    $(document.body).off('mousedown.select2.' + container.id);\n  };\n\n  BaseSelection.prototype.position = function ($selection, $container) {\n    var $selectionContainer = $container.find('.selection');\n    $selectionContainer.append($selection);\n  };\n\n  BaseSelection.prototype.destroy = function () {\n    this._detachCloseHandler(this.container);\n  };\n\n  BaseSelection.prototype.update = function (data) {\n    throw new Error('The `update` method must be defined in child classes.');\n  };\n\n  return BaseSelection;\n});\n\nS2.define('select2/selection/single',[\n  'jquery',\n  './base',\n  '../utils',\n  '../keys'\n], function ($, BaseSelection, Utils, KEYS) {\n  function SingleSelection () {\n    SingleSelection.__super__.constructor.apply(this, arguments);\n  }\n\n  Utils.Extend(SingleSelection, BaseSelection);\n\n  SingleSelection.prototype.render = function () {\n    var $selection = SingleSelection.__super__.render.call(this);\n\n    $selection.addClass('select2-selection--single');\n\n    $selection.html(\n      '<span class=\"select2-selection__rendered\"></span>' +\n      '<span class=\"select2-selection__arrow\" role=\"presentation\">' +\n        '<b role=\"presentation\"></b>' +\n      '</span>'\n    );\n\n    return $selection;\n  };\n\n  SingleSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    SingleSelection.__super__.bind.apply(this, arguments);\n\n    var id = container.id + '-container';\n\n    this.$selection.find('.select2-selection__rendered').attr('id', id);\n    this.$selection.attr('aria-labelledby', id);\n\n    this.$selection.on('mousedown', function (evt) {\n      // Only respond to left clicks\n      if (evt.which !== 1) {\n        return;\n      }\n\n      self.trigger('toggle', {\n        originalEvent: evt\n      });\n    });\n\n    this.$selection.on('focus', function (evt) {\n      // User focuses on the container\n    });\n\n    this.$selection.on('blur', function (evt) {\n      // User exits the container\n    });\n\n    container.on('selection:update', function (params) {\n      self.update(params.data);\n    });\n  };\n\n  SingleSelection.prototype.clear = function () {\n    this.$selection.find('.select2-selection__rendered').empty();\n  };\n\n  SingleSelection.prototype.display = function (data, container) {\n    var template = this.options.get('templateSelection');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    return escapeMarkup(template(data, container));\n  };\n\n  SingleSelection.prototype.selectionContainer = function () {\n    return $('<span></span>');\n  };\n\n  SingleSelection.prototype.update = function (data) {\n    if (data.length === 0) {\n      this.clear();\n      return;\n    }\n\n    var selection = data[0];\n\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n    var formatted = this.display(selection, $rendered);\n\n    $rendered.empty().append(formatted);\n    $rendered.prop('title', selection.title || selection.text);\n  };\n\n  return SingleSelection;\n});\n\nS2.define('select2/selection/multiple',[\n  'jquery',\n  './base',\n  '../utils'\n], function ($, BaseSelection, Utils) {\n  function MultipleSelection ($element, options) {\n    MultipleSelection.__super__.constructor.apply(this, arguments);\n  }\n\n  Utils.Extend(MultipleSelection, BaseSelection);\n\n  MultipleSelection.prototype.render = function () {\n    var $selection = MultipleSelection.__super__.render.call(this);\n\n    $selection.addClass('select2-selection--multiple');\n\n    $selection.html(\n      '<ul class=\"select2-selection__rendered\"></ul>'\n    );\n\n    return $selection;\n  };\n\n  MultipleSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    MultipleSelection.__super__.bind.apply(this, arguments);\n\n    this.$selection.on('click', function (evt) {\n      self.trigger('toggle', {\n        originalEvent: evt\n      });\n    });\n\n    this.$selection.on(\n      'click',\n      '.select2-selection__choice__remove',\n      function (evt) {\n        // Ignore the event if it is disabled\n        if (self.options.get('disabled')) {\n          return;\n        }\n\n        var $remove = $(this);\n        var $selection = $remove.parent();\n\n        var data = $selection.data('data');\n\n        self.trigger('unselect', {\n          originalEvent: evt,\n          data: data\n        });\n      }\n    );\n  };\n\n  MultipleSelection.prototype.clear = function () {\n    this.$selection.find('.select2-selection__rendered').empty();\n  };\n\n  MultipleSelection.prototype.display = function (data, container) {\n    var template = this.options.get('templateSelection');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    return escapeMarkup(template(data, container));\n  };\n\n  MultipleSelection.prototype.selectionContainer = function () {\n    var $container = $(\n      '<li class=\"select2-selection__choice\">' +\n        '<span class=\"select2-selection__choice__remove\" role=\"presentation\">' +\n          '&times;' +\n        '</span>' +\n      '</li>'\n    );\n\n    return $container;\n  };\n\n  MultipleSelection.prototype.update = function (data) {\n    this.clear();\n\n    if (data.length === 0) {\n      return;\n    }\n\n    var $selections = [];\n\n    for (var d = 0; d < data.length; d++) {\n      var selection = data[d];\n\n      var $selection = this.selectionContainer();\n      var formatted = this.display(selection, $selection);\n\n      $selection.append(formatted);\n      $selection.prop('title', selection.title || selection.text);\n\n      $selection.data('data', selection);\n\n      $selections.push($selection);\n    }\n\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n\n    Utils.appendMany($rendered, $selections);\n  };\n\n  return MultipleSelection;\n});\n\nS2.define('select2/selection/placeholder',[\n  '../utils'\n], function (Utils) {\n  function Placeholder (decorated, $element, options) {\n    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n    decorated.call(this, $element, options);\n  }\n\n  Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\n    if (typeof placeholder === 'string') {\n      placeholder = {\n        id: '',\n        text: placeholder\n      };\n    }\n\n    return placeholder;\n  };\n\n  Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\n    var $placeholder = this.selectionContainer();\n\n    $placeholder.html(this.display(placeholder));\n    $placeholder.addClass('select2-selection__placeholder')\n                .removeClass('select2-selection__choice');\n\n    return $placeholder;\n  };\n\n  Placeholder.prototype.update = function (decorated, data) {\n    var singlePlaceholder = (\n      data.length == 1 && data[0].id != this.placeholder.id\n    );\n    var multipleSelections = data.length > 1;\n\n    if (multipleSelections || singlePlaceholder) {\n      return decorated.call(this, data);\n    }\n\n    this.clear();\n\n    var $placeholder = this.createPlaceholder(this.placeholder);\n\n    this.$selection.find('.select2-selection__rendered').append($placeholder);\n  };\n\n  return Placeholder;\n});\n\nS2.define('select2/selection/allowClear',[\n  'jquery',\n  '../keys'\n], function ($, KEYS) {\n  function AllowClear () { }\n\n  AllowClear.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    if (this.placeholder == null) {\n      if (this.options.get('debug') && window.console && console.error) {\n        console.error(\n          'Select2: The `allowClear` option should be used in combination ' +\n          'with the `placeholder` option.'\n        );\n      }\n    }\n\n    this.$selection.on('mousedown', '.select2-selection__clear',\n      function (evt) {\n        self._handleClear(evt);\n    });\n\n    container.on('keypress', function (evt) {\n      self._handleKeyboardClear(evt, container);\n    });\n  };\n\n  AllowClear.prototype._handleClear = function (_, evt) {\n    // Ignore the event if it is disabled\n    if (this.options.get('disabled')) {\n      return;\n    }\n\n    var $clear = this.$selection.find('.select2-selection__clear');\n\n    // Ignore the event if nothing has been selected\n    if ($clear.length === 0) {\n      return;\n    }\n\n    evt.stopPropagation();\n\n    var data = $clear.data('data');\n\n    for (var d = 0; d < data.length; d++) {\n      var unselectData = {\n        data: data[d]\n      };\n\n      // Trigger the `unselect` event, so people can prevent it from being\n      // cleared.\n      this.trigger('unselect', unselectData);\n\n      // If the event was prevented, don't clear it out.\n      if (unselectData.prevented) {\n        return;\n      }\n    }\n\n    this.$element.val(this.placeholder.id).trigger('change');\n\n    this.trigger('toggle', {});\n  };\n\n  AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\n    if (container.isOpen()) {\n      return;\n    }\n\n    if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\n      this._handleClear(evt);\n    }\n  };\n\n  AllowClear.prototype.update = function (decorated, data) {\n    decorated.call(this, data);\n\n    if (this.$selection.find('.select2-selection__placeholder').length > 0 ||\n        data.length === 0) {\n      return;\n    }\n\n    var $remove = $(\n      '<span class=\"select2-selection__clear\">' +\n        '&times;' +\n      '</span>'\n    );\n    $remove.data('data', data);\n\n    this.$selection.find('.select2-selection__rendered').prepend($remove);\n  };\n\n  return AllowClear;\n});\n\nS2.define('select2/selection/search',[\n  'jquery',\n  '../utils',\n  '../keys'\n], function ($, Utils, KEYS) {\n  function Search (decorated, $element, options) {\n    decorated.call(this, $element, options);\n  }\n\n  Search.prototype.render = function (decorated) {\n    var $search = $(\n      '<li class=\"select2-search select2-search--inline\">' +\n        '<input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\"' +\n        ' autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"off\"' +\n        ' spellcheck=\"false\" role=\"textbox\" aria-autocomplete=\"list\" />' +\n      '</li>'\n    );\n\n    this.$searchContainer = $search;\n    this.$search = $search.find('input');\n\n    var $rendered = decorated.call(this);\n\n    this._transferTabIndex();\n\n    return $rendered;\n  };\n\n  Search.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('open', function () {\n      self.$search.trigger('focus');\n    });\n\n    container.on('close', function () {\n      self.$search.val('');\n      self.$search.removeAttr('aria-activedescendant');\n      self.$search.trigger('focus');\n    });\n\n    container.on('enable', function () {\n      self.$search.prop('disabled', false);\n\n      self._transferTabIndex();\n    });\n\n    container.on('disable', function () {\n      self.$search.prop('disabled', true);\n    });\n\n    container.on('focus', function (evt) {\n      self.$search.trigger('focus');\n    });\n\n    container.on('results:focus', function (params) {\n      self.$search.attr('aria-activedescendant', params.id);\n    });\n\n    this.$selection.on('focusin', '.select2-search--inline', function (evt) {\n      self.trigger('focus', evt);\n    });\n\n    this.$selection.on('focusout', '.select2-search--inline', function (evt) {\n      self._handleBlur(evt);\n    });\n\n    this.$selection.on('keydown', '.select2-search--inline', function (evt) {\n      evt.stopPropagation();\n\n      self.trigger('keypress', evt);\n\n      self._keyUpPrevented = evt.isDefaultPrevented();\n\n      var key = evt.which;\n\n      if (key === KEYS.BACKSPACE && self.$search.val() === '') {\n        var $previousChoice = self.$searchContainer\n          .prev('.select2-selection__choice');\n\n        if ($previousChoice.length > 0) {\n          var item = $previousChoice.data('data');\n\n          self.searchRemoveChoice(item);\n\n          evt.preventDefault();\n        }\n      }\n    });\n\n    // Try to detect the IE version should the `documentMode` property that\n    // is stored on the document. This is only implemented in IE and is\n    // slightly cleaner than doing a user agent check.\n    // This property is not available in Edge, but Edge also doesn't have\n    // this bug.\n    var msie = document.documentMode;\n    var disableInputEvents = msie && msie <= 11;\n\n    // Workaround for browsers which do not support the `input` event\n    // This will prevent double-triggering of events for browsers which support\n    // both the `keyup` and `input` events.\n    this.$selection.on(\n      'input.searchcheck',\n      '.select2-search--inline',\n      function (evt) {\n        // IE will trigger the `input` event when a placeholder is used on a\n        // search box. To get around this issue, we are forced to ignore all\n        // `input` events in IE and keep using `keyup`.\n        if (disableInputEvents) {\n          self.$selection.off('input.search input.searchcheck');\n          return;\n        }\n\n        // Unbind the duplicated `keyup` event\n        self.$selection.off('keyup.search');\n      }\n    );\n\n    this.$selection.on(\n      'keyup.search input.search',\n      '.select2-search--inline',\n      function (evt) {\n        // IE will trigger the `input` event when a placeholder is used on a\n        // search box. To get around this issue, we are forced to ignore all\n        // `input` events in IE and keep using `keyup`.\n        if (disableInputEvents && evt.type === 'input') {\n          self.$selection.off('input.search input.searchcheck');\n          return;\n        }\n\n        var key = evt.which;\n\n        // We can freely ignore events from modifier keys\n        if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {\n          return;\n        }\n\n        // Tabbing will be handled during the `keydown` phase\n        if (key == KEYS.TAB) {\n          return;\n        }\n\n        self.handleSearch(evt);\n      }\n    );\n  };\n\n  /**\n   * This method will transfer the tabindex attribute from the rendered\n   * selection to the search box. This allows for the search box to be used as\n   * the primary focus instead of the selection container.\n   *\n   * @private\n   */\n  Search.prototype._transferTabIndex = function (decorated) {\n    this.$search.attr('tabindex', this.$selection.attr('tabindex'));\n    this.$selection.attr('tabindex', '-1');\n  };\n\n  Search.prototype.createPlaceholder = function (decorated, placeholder) {\n    this.$search.attr('placeholder', placeholder.text);\n  };\n\n  Search.prototype.update = function (decorated, data) {\n    var searchHadFocus = this.$search[0] == document.activeElement;\n\n    this.$search.attr('placeholder', '');\n\n    decorated.call(this, data);\n\n    this.$selection.find('.select2-selection__rendered')\n                   .append(this.$searchContainer);\n\n    this.resizeSearch();\n    if (searchHadFocus) {\n      this.$search.focus();\n    }\n  };\n\n  Search.prototype.handleSearch = function () {\n    this.resizeSearch();\n\n    if (!this._keyUpPrevented) {\n      var input = this.$search.val();\n\n      this.trigger('query', {\n        term: input\n      });\n    }\n\n    this._keyUpPrevented = false;\n  };\n\n  Search.prototype.searchRemoveChoice = function (decorated, item) {\n    this.trigger('unselect', {\n      data: item\n    });\n\n    this.$search.val(item.text);\n    this.handleSearch();\n  };\n\n  Search.prototype.resizeSearch = function () {\n    this.$search.css('width', '25px');\n\n    var width = '';\n\n    if (this.$search.attr('placeholder') !== '') {\n      width = this.$selection.find('.select2-selection__rendered').innerWidth();\n    } else {\n      var minimumWidth = this.$search.val().length + 1;\n\n      width = (minimumWidth * 0.75) + 'em';\n    }\n\n    this.$search.css('width', width);\n  };\n\n  return Search;\n});\n\nS2.define('select2/selection/eventRelay',[\n  'jquery'\n], function ($) {\n  function EventRelay () { }\n\n  EventRelay.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n    var relayEvents = [\n      'open', 'opening',\n      'close', 'closing',\n      'select', 'selecting',\n      'unselect', 'unselecting'\n    ];\n\n    var preventableEvents = ['opening', 'closing', 'selecting', 'unselecting'];\n\n    decorated.call(this, container, $container);\n\n    container.on('*', function (name, params) {\n      // Ignore events that should not be relayed\n      if ($.inArray(name, relayEvents) === -1) {\n        return;\n      }\n\n      // The parameters should always be an object\n      params = params || {};\n\n      // Generate the jQuery event for the Select2 event\n      var evt = $.Event('select2:' + name, {\n        params: params\n      });\n\n      self.$element.trigger(evt);\n\n      // Only handle preventable events if it was one\n      if ($.inArray(name, preventableEvents) === -1) {\n        return;\n      }\n\n      params.prevented = evt.isDefaultPrevented();\n    });\n  };\n\n  return EventRelay;\n});\n\nS2.define('select2/translation',[\n  'jquery',\n  'require'\n], function ($, require) {\n  function Translation (dict) {\n    this.dict = dict || {};\n  }\n\n  Translation.prototype.all = function () {\n    return this.dict;\n  };\n\n  Translation.prototype.get = function (key) {\n    return this.dict[key];\n  };\n\n  Translation.prototype.extend = function (translation) {\n    this.dict = $.extend({}, translation.all(), this.dict);\n  };\n\n  // Static functions\n\n  Translation._cache = {};\n\n  Translation.loadPath = function (path) {\n    if (!(path in Translation._cache)) {\n      var translations = require(path);\n\n      Translation._cache[path] = translations;\n    }\n\n    return new Translation(Translation._cache[path]);\n  };\n\n  return Translation;\n});\n\nS2.define('select2/diacritics',[\n\n], function () {\n  var diacritics = {\n    '\\u24B6': 'A',\n    '\\uFF21': 'A',\n    '\\u00C0': 'A',\n    '\\u00C1': 'A',\n    '\\u00C2': 'A',\n    '\\u1EA6': 'A',\n    '\\u1EA4': 'A',\n    '\\u1EAA': 'A',\n    '\\u1EA8': 'A',\n    '\\u00C3': 'A',\n    '\\u0100': 'A',\n    '\\u0102': 'A',\n    '\\u1EB0': 'A',\n    '\\u1EAE': 'A',\n    '\\u1EB4': 'A',\n    '\\u1EB2': 'A',\n    '\\u0226': 'A',\n    '\\u01E0': 'A',\n    '\\u00C4': 'A',\n    '\\u01DE': 'A',\n    '\\u1EA2': 'A',\n    '\\u00C5': 'A',\n    '\\u01FA': 'A',\n    '\\u01CD': 'A',\n    '\\u0200': 'A',\n    '\\u0202': 'A',\n    '\\u1EA0': 'A',\n    '\\u1EAC': 'A',\n    '\\u1EB6': 'A',\n    '\\u1E00': 'A',\n    '\\u0104': 'A',\n    '\\u023A': 'A',\n    '\\u2C6F': 'A',\n    '\\uA732': 'AA',\n    '\\u00C6': 'AE',\n    '\\u01FC': 'AE',\n    '\\u01E2': 'AE',\n    '\\uA734': 'AO',\n    '\\uA736': 'AU',\n    '\\uA738': 'AV',\n    '\\uA73A': 'AV',\n    '\\uA73C': 'AY',\n    '\\u24B7': 'B',\n    '\\uFF22': 'B',\n    '\\u1E02': 'B',\n    '\\u1E04': 'B',\n    '\\u1E06': 'B',\n    '\\u0243': 'B',\n    '\\u0182': 'B',\n    '\\u0181': 'B',\n    '\\u24B8': 'C',\n    '\\uFF23': 'C',\n    '\\u0106': 'C',\n    '\\u0108': 'C',\n    '\\u010A': 'C',\n    '\\u010C': 'C',\n    '\\u00C7': 'C',\n    '\\u1E08': 'C',\n    '\\u0187': 'C',\n    '\\u023B': 'C',\n    '\\uA73E': 'C',\n    '\\u24B9': 'D',\n    '\\uFF24': 'D',\n    '\\u1E0A': 'D',\n    '\\u010E': 'D',\n    '\\u1E0C': 'D',\n    '\\u1E10': 'D',\n    '\\u1E12': 'D',\n    '\\u1E0E': 'D',\n    '\\u0110': 'D',\n    '\\u018B': 'D',\n    '\\u018A': 'D',\n    '\\u0189': 'D',\n    '\\uA779': 'D',\n    '\\u01F1': 'DZ',\n    '\\u01C4': 'DZ',\n    '\\u01F2': 'Dz',\n    '\\u01C5': 'Dz',\n    '\\u24BA': 'E',\n    '\\uFF25': 'E',\n    '\\u00C8': 'E',\n    '\\u00C9': 'E',\n    '\\u00CA': 'E',\n    '\\u1EC0': 'E',\n    '\\u1EBE': 'E',\n    '\\u1EC4': 'E',\n    '\\u1EC2': 'E',\n    '\\u1EBC': 'E',\n    '\\u0112': 'E',\n    '\\u1E14': 'E',\n    '\\u1E16': 'E',\n    '\\u0114': 'E',\n    '\\u0116': 'E',\n    '\\u00CB': 'E',\n    '\\u1EBA': 'E',\n    '\\u011A': 'E',\n    '\\u0204': 'E',\n    '\\u0206': 'E',\n    '\\u1EB8': 'E',\n    '\\u1EC6': 'E',\n    '\\u0228': 'E',\n    '\\u1E1C': 'E',\n    '\\u0118': 'E',\n    '\\u1E18': 'E',\n    '\\u1E1A': 'E',\n    '\\u0190': 'E',\n    '\\u018E': 'E',\n    '\\u24BB': 'F',\n    '\\uFF26': 'F',\n    '\\u1E1E': 'F',\n    '\\u0191': 'F',\n    '\\uA77B': 'F',\n    '\\u24BC': 'G',\n    '\\uFF27': 'G',\n    '\\u01F4': 'G',\n    '\\u011C': 'G',\n    '\\u1E20': 'G',\n    '\\u011E': 'G',\n    '\\u0120': 'G',\n    '\\u01E6': 'G',\n    '\\u0122': 'G',\n    '\\u01E4': 'G',\n    '\\u0193': 'G',\n    '\\uA7A0': 'G',\n    '\\uA77D': 'G',\n    '\\uA77E': 'G',\n    '\\u24BD': 'H',\n    '\\uFF28': 'H',\n    '\\u0124': 'H',\n    '\\u1E22': 'H',\n    '\\u1E26': 'H',\n    '\\u021E': 'H',\n    '\\u1E24': 'H',\n    '\\u1E28': 'H',\n    '\\u1E2A': 'H',\n    '\\u0126': 'H',\n    '\\u2C67': 'H',\n    '\\u2C75': 'H',\n    '\\uA78D': 'H',\n    '\\u24BE': 'I',\n    '\\uFF29': 'I',\n    '\\u00CC': 'I',\n    '\\u00CD': 'I',\n    '\\u00CE': 'I',\n    '\\u0128': 'I',\n    '\\u012A': 'I',\n    '\\u012C': 'I',\n    '\\u0130': 'I',\n    '\\u00CF': 'I',\n    '\\u1E2E': 'I',\n    '\\u1EC8': 'I',\n    '\\u01CF': 'I',\n    '\\u0208': 'I',\n    '\\u020A': 'I',\n    '\\u1ECA': 'I',\n    '\\u012E': 'I',\n    '\\u1E2C': 'I',\n    '\\u0197': 'I',\n    '\\u24BF': 'J',\n    '\\uFF2A': 'J',\n    '\\u0134': 'J',\n    '\\u0248': 'J',\n    '\\u24C0': 'K',\n    '\\uFF2B': 'K',\n    '\\u1E30': 'K',\n    '\\u01E8': 'K',\n    '\\u1E32': 'K',\n    '\\u0136': 'K',\n    '\\u1E34': 'K',\n    '\\u0198': 'K',\n    '\\u2C69': 'K',\n    '\\uA740': 'K',\n    '\\uA742': 'K',\n    '\\uA744': 'K',\n    '\\uA7A2': 'K',\n    '\\u24C1': 'L',\n    '\\uFF2C': 'L',\n    '\\u013F': 'L',\n    '\\u0139': 'L',\n    '\\u013D': 'L',\n    '\\u1E36': 'L',\n    '\\u1E38': 'L',\n    '\\u013B': 'L',\n    '\\u1E3C': 'L',\n    '\\u1E3A': 'L',\n    '\\u0141': 'L',\n    '\\u023D': 'L',\n    '\\u2C62': 'L',\n    '\\u2C60': 'L',\n    '\\uA748': 'L',\n    '\\uA746': 'L',\n    '\\uA780': 'L',\n    '\\u01C7': 'LJ',\n    '\\u01C8': 'Lj',\n    '\\u24C2': 'M',\n    '\\uFF2D': 'M',\n    '\\u1E3E': 'M',\n    '\\u1E40': 'M',\n    '\\u1E42': 'M',\n    '\\u2C6E': 'M',\n    '\\u019C': 'M',\n    '\\u24C3': 'N',\n    '\\uFF2E': 'N',\n    '\\u01F8': 'N',\n    '\\u0143': 'N',\n    '\\u00D1': 'N',\n    '\\u1E44': 'N',\n    '\\u0147': 'N',\n    '\\u1E46': 'N',\n    '\\u0145': 'N',\n    '\\u1E4A': 'N',\n    '\\u1E48': 'N',\n    '\\u0220': 'N',\n    '\\u019D': 'N',\n    '\\uA790': 'N',\n    '\\uA7A4': 'N',\n    '\\u01CA': 'NJ',\n    '\\u01CB': 'Nj',\n    '\\u24C4': 'O',\n    '\\uFF2F': 'O',\n    '\\u00D2': 'O',\n    '\\u00D3': 'O',\n    '\\u00D4': 'O',\n    '\\u1ED2': 'O',\n    '\\u1ED0': 'O',\n    '\\u1ED6': 'O',\n    '\\u1ED4': 'O',\n    '\\u00D5': 'O',\n    '\\u1E4C': 'O',\n    '\\u022C': 'O',\n    '\\u1E4E': 'O',\n    '\\u014C': 'O',\n    '\\u1E50': 'O',\n    '\\u1E52': 'O',\n    '\\u014E': 'O',\n    '\\u022E': 'O',\n    '\\u0230': 'O',\n    '\\u00D6': 'O',\n    '\\u022A': 'O',\n    '\\u1ECE': 'O',\n    '\\u0150': 'O',\n    '\\u01D1': 'O',\n    '\\u020C': 'O',\n    '\\u020E': 'O',\n    '\\u01A0': 'O',\n    '\\u1EDC': 'O',\n    '\\u1EDA': 'O',\n    '\\u1EE0': 'O',\n    '\\u1EDE': 'O',\n    '\\u1EE2': 'O',\n    '\\u1ECC': 'O',\n    '\\u1ED8': 'O',\n    '\\u01EA': 'O',\n    '\\u01EC': 'O',\n    '\\u00D8': 'O',\n    '\\u01FE': 'O',\n    '\\u0186': 'O',\n    '\\u019F': 'O',\n    '\\uA74A': 'O',\n    '\\uA74C': 'O',\n    '\\u01A2': 'OI',\n    '\\uA74E': 'OO',\n    '\\u0222': 'OU',\n    '\\u24C5': 'P',\n    '\\uFF30': 'P',\n    '\\u1E54': 'P',\n    '\\u1E56': 'P',\n    '\\u01A4': 'P',\n    '\\u2C63': 'P',\n    '\\uA750': 'P',\n    '\\uA752': 'P',\n    '\\uA754': 'P',\n    '\\u24C6': 'Q',\n    '\\uFF31': 'Q',\n    '\\uA756': 'Q',\n    '\\uA758': 'Q',\n    '\\u024A': 'Q',\n    '\\u24C7': 'R',\n    '\\uFF32': 'R',\n    '\\u0154': 'R',\n    '\\u1E58': 'R',\n    '\\u0158': 'R',\n    '\\u0210': 'R',\n    '\\u0212': 'R',\n    '\\u1E5A': 'R',\n    '\\u1E5C': 'R',\n    '\\u0156': 'R',\n    '\\u1E5E': 'R',\n    '\\u024C': 'R',\n    '\\u2C64': 'R',\n    '\\uA75A': 'R',\n    '\\uA7A6': 'R',\n    '\\uA782': 'R',\n    '\\u24C8': 'S',\n    '\\uFF33': 'S',\n    '\\u1E9E': 'S',\n    '\\u015A': 'S',\n    '\\u1E64': 'S',\n    '\\u015C': 'S',\n    '\\u1E60': 'S',\n    '\\u0160': 'S',\n    '\\u1E66': 'S',\n    '\\u1E62': 'S',\n    '\\u1E68': 'S',\n    '\\u0218': 'S',\n    '\\u015E': 'S',\n    '\\u2C7E': 'S',\n    '\\uA7A8': 'S',\n    '\\uA784': 'S',\n    '\\u24C9': 'T',\n    '\\uFF34': 'T',\n    '\\u1E6A': 'T',\n    '\\u0164': 'T',\n    '\\u1E6C': 'T',\n    '\\u021A': 'T',\n    '\\u0162': 'T',\n    '\\u1E70': 'T',\n    '\\u1E6E': 'T',\n    '\\u0166': 'T',\n    '\\u01AC': 'T',\n    '\\u01AE': 'T',\n    '\\u023E': 'T',\n    '\\uA786': 'T',\n    '\\uA728': 'TZ',\n    '\\u24CA': 'U',\n    '\\uFF35': 'U',\n    '\\u00D9': 'U',\n    '\\u00DA': 'U',\n    '\\u00DB': 'U',\n    '\\u0168': 'U',\n    '\\u1E78': 'U',\n    '\\u016A': 'U',\n    '\\u1E7A': 'U',\n    '\\u016C': 'U',\n    '\\u00DC': 'U',\n    '\\u01DB': 'U',\n    '\\u01D7': 'U',\n    '\\u01D5': 'U',\n    '\\u01D9': 'U',\n    '\\u1EE6': 'U',\n    '\\u016E': 'U',\n    '\\u0170': 'U',\n    '\\u01D3': 'U',\n    '\\u0214': 'U',\n    '\\u0216': 'U',\n    '\\u01AF': 'U',\n    '\\u1EEA': 'U',\n    '\\u1EE8': 'U',\n    '\\u1EEE': 'U',\n    '\\u1EEC': 'U',\n    '\\u1EF0': 'U',\n    '\\u1EE4': 'U',\n    '\\u1E72': 'U',\n    '\\u0172': 'U',\n    '\\u1E76': 'U',\n    '\\u1E74': 'U',\n    '\\u0244': 'U',\n    '\\u24CB': 'V',\n    '\\uFF36': 'V',\n    '\\u1E7C': 'V',\n    '\\u1E7E': 'V',\n    '\\u01B2': 'V',\n    '\\uA75E': 'V',\n    '\\u0245': 'V',\n    '\\uA760': 'VY',\n    '\\u24CC': 'W',\n    '\\uFF37': 'W',\n    '\\u1E80': 'W',\n    '\\u1E82': 'W',\n    '\\u0174': 'W',\n    '\\u1E86': 'W',\n    '\\u1E84': 'W',\n    '\\u1E88': 'W',\n    '\\u2C72': 'W',\n    '\\u24CD': 'X',\n    '\\uFF38': 'X',\n    '\\u1E8A': 'X',\n    '\\u1E8C': 'X',\n    '\\u24CE': 'Y',\n    '\\uFF39': 'Y',\n    '\\u1EF2': 'Y',\n    '\\u00DD': 'Y',\n    '\\u0176': 'Y',\n    '\\u1EF8': 'Y',\n    '\\u0232': 'Y',\n    '\\u1E8E': 'Y',\n    '\\u0178': 'Y',\n    '\\u1EF6': 'Y',\n    '\\u1EF4': 'Y',\n    '\\u01B3': 'Y',\n    '\\u024E': 'Y',\n    '\\u1EFE': 'Y',\n    '\\u24CF': 'Z',\n    '\\uFF3A': 'Z',\n    '\\u0179': 'Z',\n    '\\u1E90': 'Z',\n    '\\u017B': 'Z',\n    '\\u017D': 'Z',\n    '\\u1E92': 'Z',\n    '\\u1E94': 'Z',\n    '\\u01B5': 'Z',\n    '\\u0224': 'Z',\n    '\\u2C7F': 'Z',\n    '\\u2C6B': 'Z',\n    '\\uA762': 'Z',\n    '\\u24D0': 'a',\n    '\\uFF41': 'a',\n    '\\u1E9A': 'a',\n    '\\u00E0': 'a',\n    '\\u00E1': 'a',\n    '\\u00E2': 'a',\n    '\\u1EA7': 'a',\n    '\\u1EA5': 'a',\n    '\\u1EAB': 'a',\n    '\\u1EA9': 'a',\n    '\\u00E3': 'a',\n    '\\u0101': 'a',\n    '\\u0103': 'a',\n    '\\u1EB1': 'a',\n    '\\u1EAF': 'a',\n    '\\u1EB5': 'a',\n    '\\u1EB3': 'a',\n    '\\u0227': 'a',\n    '\\u01E1': 'a',\n    '\\u00E4': 'a',\n    '\\u01DF': 'a',\n    '\\u1EA3': 'a',\n    '\\u00E5': 'a',\n    '\\u01FB': 'a',\n    '\\u01CE': 'a',\n    '\\u0201': 'a',\n    '\\u0203': 'a',\n    '\\u1EA1': 'a',\n    '\\u1EAD': 'a',\n    '\\u1EB7': 'a',\n    '\\u1E01': 'a',\n    '\\u0105': 'a',\n    '\\u2C65': 'a',\n    '\\u0250': 'a',\n    '\\uA733': 'aa',\n    '\\u00E6': 'ae',\n    '\\u01FD': 'ae',\n    '\\u01E3': 'ae',\n    '\\uA735': 'ao',\n    '\\uA737': 'au',\n    '\\uA739': 'av',\n    '\\uA73B': 'av',\n    '\\uA73D': 'ay',\n    '\\u24D1': 'b',\n    '\\uFF42': 'b',\n    '\\u1E03': 'b',\n    '\\u1E05': 'b',\n    '\\u1E07': 'b',\n    '\\u0180': 'b',\n    '\\u0183': 'b',\n    '\\u0253': 'b',\n    '\\u24D2': 'c',\n    '\\uFF43': 'c',\n    '\\u0107': 'c',\n    '\\u0109': 'c',\n    '\\u010B': 'c',\n    '\\u010D': 'c',\n    '\\u00E7': 'c',\n    '\\u1E09': 'c',\n    '\\u0188': 'c',\n    '\\u023C': 'c',\n    '\\uA73F': 'c',\n    '\\u2184': 'c',\n    '\\u24D3': 'd',\n    '\\uFF44': 'd',\n    '\\u1E0B': 'd',\n    '\\u010F': 'd',\n    '\\u1E0D': 'd',\n    '\\u1E11': 'd',\n    '\\u1E13': 'd',\n    '\\u1E0F': 'd',\n    '\\u0111': 'd',\n    '\\u018C': 'd',\n    '\\u0256': 'd',\n    '\\u0257': 'd',\n    '\\uA77A': 'd',\n    '\\u01F3': 'dz',\n    '\\u01C6': 'dz',\n    '\\u24D4': 'e',\n    '\\uFF45': 'e',\n    '\\u00E8': 'e',\n    '\\u00E9': 'e',\n    '\\u00EA': 'e',\n    '\\u1EC1': 'e',\n    '\\u1EBF': 'e',\n    '\\u1EC5': 'e',\n    '\\u1EC3': 'e',\n    '\\u1EBD': 'e',\n    '\\u0113': 'e',\n    '\\u1E15': 'e',\n    '\\u1E17': 'e',\n    '\\u0115': 'e',\n    '\\u0117': 'e',\n    '\\u00EB': 'e',\n    '\\u1EBB': 'e',\n    '\\u011B': 'e',\n    '\\u0205': 'e',\n    '\\u0207': 'e',\n    '\\u1EB9': 'e',\n    '\\u1EC7': 'e',\n    '\\u0229': 'e',\n    '\\u1E1D': 'e',\n    '\\u0119': 'e',\n    '\\u1E19': 'e',\n    '\\u1E1B': 'e',\n    '\\u0247': 'e',\n    '\\u025B': 'e',\n    '\\u01DD': 'e',\n    '\\u24D5': 'f',\n    '\\uFF46': 'f',\n    '\\u1E1F': 'f',\n    '\\u0192': 'f',\n    '\\uA77C': 'f',\n    '\\u24D6': 'g',\n    '\\uFF47': 'g',\n    '\\u01F5': 'g',\n    '\\u011D': 'g',\n    '\\u1E21': 'g',\n    '\\u011F': 'g',\n    '\\u0121': 'g',\n    '\\u01E7': 'g',\n    '\\u0123': 'g',\n    '\\u01E5': 'g',\n    '\\u0260': 'g',\n    '\\uA7A1': 'g',\n    '\\u1D79': 'g',\n    '\\uA77F': 'g',\n    '\\u24D7': 'h',\n    '\\uFF48': 'h',\n    '\\u0125': 'h',\n    '\\u1E23': 'h',\n    '\\u1E27': 'h',\n    '\\u021F': 'h',\n    '\\u1E25': 'h',\n    '\\u1E29': 'h',\n    '\\u1E2B': 'h',\n    '\\u1E96': 'h',\n    '\\u0127': 'h',\n    '\\u2C68': 'h',\n    '\\u2C76': 'h',\n    '\\u0265': 'h',\n    '\\u0195': 'hv',\n    '\\u24D8': 'i',\n    '\\uFF49': 'i',\n    '\\u00EC': 'i',\n    '\\u00ED': 'i',\n    '\\u00EE': 'i',\n    '\\u0129': 'i',\n    '\\u012B': 'i',\n    '\\u012D': 'i',\n    '\\u00EF': 'i',\n    '\\u1E2F': 'i',\n    '\\u1EC9': 'i',\n    '\\u01D0': 'i',\n    '\\u0209': 'i',\n    '\\u020B': 'i',\n    '\\u1ECB': 'i',\n    '\\u012F': 'i',\n    '\\u1E2D': 'i',\n    '\\u0268': 'i',\n    '\\u0131': 'i',\n    '\\u24D9': 'j',\n    '\\uFF4A': 'j',\n    '\\u0135': 'j',\n    '\\u01F0': 'j',\n    '\\u0249': 'j',\n    '\\u24DA': 'k',\n    '\\uFF4B': 'k',\n    '\\u1E31': 'k',\n    '\\u01E9': 'k',\n    '\\u1E33': 'k',\n    '\\u0137': 'k',\n    '\\u1E35': 'k',\n    '\\u0199': 'k',\n    '\\u2C6A': 'k',\n    '\\uA741': 'k',\n    '\\uA743': 'k',\n    '\\uA745': 'k',\n    '\\uA7A3': 'k',\n    '\\u24DB': 'l',\n    '\\uFF4C': 'l',\n    '\\u0140': 'l',\n    '\\u013A': 'l',\n    '\\u013E': 'l',\n    '\\u1E37': 'l',\n    '\\u1E39': 'l',\n    '\\u013C': 'l',\n    '\\u1E3D': 'l',\n    '\\u1E3B': 'l',\n    '\\u017F': 'l',\n    '\\u0142': 'l',\n    '\\u019A': 'l',\n    '\\u026B': 'l',\n    '\\u2C61': 'l',\n    '\\uA749': 'l',\n    '\\uA781': 'l',\n    '\\uA747': 'l',\n    '\\u01C9': 'lj',\n    '\\u24DC': 'm',\n    '\\uFF4D': 'm',\n    '\\u1E3F': 'm',\n    '\\u1E41': 'm',\n    '\\u1E43': 'm',\n    '\\u0271': 'm',\n    '\\u026F': 'm',\n    '\\u24DD': 'n',\n    '\\uFF4E': 'n',\n    '\\u01F9': 'n',\n    '\\u0144': 'n',\n    '\\u00F1': 'n',\n    '\\u1E45': 'n',\n    '\\u0148': 'n',\n    '\\u1E47': 'n',\n    '\\u0146': 'n',\n    '\\u1E4B': 'n',\n    '\\u1E49': 'n',\n    '\\u019E': 'n',\n    '\\u0272': 'n',\n    '\\u0149': 'n',\n    '\\uA791': 'n',\n    '\\uA7A5': 'n',\n    '\\u01CC': 'nj',\n    '\\u24DE': 'o',\n    '\\uFF4F': 'o',\n    '\\u00F2': 'o',\n    '\\u00F3': 'o',\n    '\\u00F4': 'o',\n    '\\u1ED3': 'o',\n    '\\u1ED1': 'o',\n    '\\u1ED7': 'o',\n    '\\u1ED5': 'o',\n    '\\u00F5': 'o',\n    '\\u1E4D': 'o',\n    '\\u022D': 'o',\n    '\\u1E4F': 'o',\n    '\\u014D': 'o',\n    '\\u1E51': 'o',\n    '\\u1E53': 'o',\n    '\\u014F': 'o',\n    '\\u022F': 'o',\n    '\\u0231': 'o',\n    '\\u00F6': 'o',\n    '\\u022B': 'o',\n    '\\u1ECF': 'o',\n    '\\u0151': 'o',\n    '\\u01D2': 'o',\n    '\\u020D': 'o',\n    '\\u020F': 'o',\n    '\\u01A1': 'o',\n    '\\u1EDD': 'o',\n    '\\u1EDB': 'o',\n    '\\u1EE1': 'o',\n    '\\u1EDF': 'o',\n    '\\u1EE3': 'o',\n    '\\u1ECD': 'o',\n    '\\u1ED9': 'o',\n    '\\u01EB': 'o',\n    '\\u01ED': 'o',\n    '\\u00F8': 'o',\n    '\\u01FF': 'o',\n    '\\u0254': 'o',\n    '\\uA74B': 'o',\n    '\\uA74D': 'o',\n    '\\u0275': 'o',\n    '\\u01A3': 'oi',\n    '\\u0223': 'ou',\n    '\\uA74F': 'oo',\n    '\\u24DF': 'p',\n    '\\uFF50': 'p',\n    '\\u1E55': 'p',\n    '\\u1E57': 'p',\n    '\\u01A5': 'p',\n    '\\u1D7D': 'p',\n    '\\uA751': 'p',\n    '\\uA753': 'p',\n    '\\uA755': 'p',\n    '\\u24E0': 'q',\n    '\\uFF51': 'q',\n    '\\u024B': 'q',\n    '\\uA757': 'q',\n    '\\uA759': 'q',\n    '\\u24E1': 'r',\n    '\\uFF52': 'r',\n    '\\u0155': 'r',\n    '\\u1E59': 'r',\n    '\\u0159': 'r',\n    '\\u0211': 'r',\n    '\\u0213': 'r',\n    '\\u1E5B': 'r',\n    '\\u1E5D': 'r',\n    '\\u0157': 'r',\n    '\\u1E5F': 'r',\n    '\\u024D': 'r',\n    '\\u027D': 'r',\n    '\\uA75B': 'r',\n    '\\uA7A7': 'r',\n    '\\uA783': 'r',\n    '\\u24E2': 's',\n    '\\uFF53': 's',\n    '\\u00DF': 's',\n    '\\u015B': 's',\n    '\\u1E65': 's',\n    '\\u015D': 's',\n    '\\u1E61': 's',\n    '\\u0161': 's',\n    '\\u1E67': 's',\n    '\\u1E63': 's',\n    '\\u1E69': 's',\n    '\\u0219': 's',\n    '\\u015F': 's',\n    '\\u023F': 's',\n    '\\uA7A9': 's',\n    '\\uA785': 's',\n    '\\u1E9B': 's',\n    '\\u24E3': 't',\n    '\\uFF54': 't',\n    '\\u1E6B': 't',\n    '\\u1E97': 't',\n    '\\u0165': 't',\n    '\\u1E6D': 't',\n    '\\u021B': 't',\n    '\\u0163': 't',\n    '\\u1E71': 't',\n    '\\u1E6F': 't',\n    '\\u0167': 't',\n    '\\u01AD': 't',\n    '\\u0288': 't',\n    '\\u2C66': 't',\n    '\\uA787': 't',\n    '\\uA729': 'tz',\n    '\\u24E4': 'u',\n    '\\uFF55': 'u',\n    '\\u00F9': 'u',\n    '\\u00FA': 'u',\n    '\\u00FB': 'u',\n    '\\u0169': 'u',\n    '\\u1E79': 'u',\n    '\\u016B': 'u',\n    '\\u1E7B': 'u',\n    '\\u016D': 'u',\n    '\\u00FC': 'u',\n    '\\u01DC': 'u',\n    '\\u01D8': 'u',\n    '\\u01D6': 'u',\n    '\\u01DA': 'u',\n    '\\u1EE7': 'u',\n    '\\u016F': 'u',\n    '\\u0171': 'u',\n    '\\u01D4': 'u',\n    '\\u0215': 'u',\n    '\\u0217': 'u',\n    '\\u01B0': 'u',\n    '\\u1EEB': 'u',\n    '\\u1EE9': 'u',\n    '\\u1EEF': 'u',\n    '\\u1EED': 'u',\n    '\\u1EF1': 'u',\n    '\\u1EE5': 'u',\n    '\\u1E73': 'u',\n    '\\u0173': 'u',\n    '\\u1E77': 'u',\n    '\\u1E75': 'u',\n    '\\u0289': 'u',\n    '\\u24E5': 'v',\n    '\\uFF56': 'v',\n    '\\u1E7D': 'v',\n    '\\u1E7F': 'v',\n    '\\u028B': 'v',\n    '\\uA75F': 'v',\n    '\\u028C': 'v',\n    '\\uA761': 'vy',\n    '\\u24E6': 'w',\n    '\\uFF57': 'w',\n    '\\u1E81': 'w',\n    '\\u1E83': 'w',\n    '\\u0175': 'w',\n    '\\u1E87': 'w',\n    '\\u1E85': 'w',\n    '\\u1E98': 'w',\n    '\\u1E89': 'w',\n    '\\u2C73': 'w',\n    '\\u24E7': 'x',\n    '\\uFF58': 'x',\n    '\\u1E8B': 'x',\n    '\\u1E8D': 'x',\n    '\\u24E8': 'y',\n    '\\uFF59': 'y',\n    '\\u1EF3': 'y',\n    '\\u00FD': 'y',\n    '\\u0177': 'y',\n    '\\u1EF9': 'y',\n    '\\u0233': 'y',\n    '\\u1E8F': 'y',\n    '\\u00FF': 'y',\n    '\\u1EF7': 'y',\n    '\\u1E99': 'y',\n    '\\u1EF5': 'y',\n    '\\u01B4': 'y',\n    '\\u024F': 'y',\n    '\\u1EFF': 'y',\n    '\\u24E9': 'z',\n    '\\uFF5A': 'z',\n    '\\u017A': 'z',\n    '\\u1E91': 'z',\n    '\\u017C': 'z',\n    '\\u017E': 'z',\n    '\\u1E93': 'z',\n    '\\u1E95': 'z',\n    '\\u01B6': 'z',\n    '\\u0225': 'z',\n    '\\u0240': 'z',\n    '\\u2C6C': 'z',\n    '\\uA763': 'z',\n    '\\u0386': '\\u0391',\n    '\\u0388': '\\u0395',\n    '\\u0389': '\\u0397',\n    '\\u038A': '\\u0399',\n    '\\u03AA': '\\u0399',\n    '\\u038C': '\\u039F',\n    '\\u038E': '\\u03A5',\n    '\\u03AB': '\\u03A5',\n    '\\u038F': '\\u03A9',\n    '\\u03AC': '\\u03B1',\n    '\\u03AD': '\\u03B5',\n    '\\u03AE': '\\u03B7',\n    '\\u03AF': '\\u03B9',\n    '\\u03CA': '\\u03B9',\n    '\\u0390': '\\u03B9',\n    '\\u03CC': '\\u03BF',\n    '\\u03CD': '\\u03C5',\n    '\\u03CB': '\\u03C5',\n    '\\u03B0': '\\u03C5',\n    '\\u03C9': '\\u03C9',\n    '\\u03C2': '\\u03C3'\n  };\n\n  return diacritics;\n});\n\nS2.define('select2/data/base',[\n  '../utils'\n], function (Utils) {\n  function BaseAdapter ($element, options) {\n    BaseAdapter.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(BaseAdapter, Utils.Observable);\n\n  BaseAdapter.prototype.current = function (callback) {\n    throw new Error('The `current` method must be defined in child classes.');\n  };\n\n  BaseAdapter.prototype.query = function (params, callback) {\n    throw new Error('The `query` method must be defined in child classes.');\n  };\n\n  BaseAdapter.prototype.bind = function (container, $container) {\n    // Can be implemented in subclasses\n  };\n\n  BaseAdapter.prototype.destroy = function () {\n    // Can be implemented in subclasses\n  };\n\n  BaseAdapter.prototype.generateResultId = function (container, data) {\n    var id = container.id + '-result-';\n\n    id += Utils.generateChars(4);\n\n    if (data.id != null) {\n      id += '-' + data.id.toString();\n    } else {\n      id += '-' + Utils.generateChars(4);\n    }\n    return id;\n  };\n\n  return BaseAdapter;\n});\n\nS2.define('select2/data/select',[\n  './base',\n  '../utils',\n  'jquery'\n], function (BaseAdapter, Utils, $) {\n  function SelectAdapter ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    SelectAdapter.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(SelectAdapter, BaseAdapter);\n\n  SelectAdapter.prototype.current = function (callback) {\n    var data = [];\n    var self = this;\n\n    this.$element.find(':selected').each(function () {\n      var $option = $(this);\n\n      var option = self.item($option);\n\n      data.push(option);\n    });\n\n    callback(data);\n  };\n\n  SelectAdapter.prototype.select = function (data) {\n    var self = this;\n\n    data.selected = true;\n\n    // If data.element is a DOM node, use it instead\n    if ($(data.element).is('option')) {\n      data.element.selected = true;\n\n      this.$element.trigger('change');\n\n      return;\n    }\n\n    if (this.$element.prop('multiple')) {\n      this.current(function (currentData) {\n        var val = [];\n\n        data = [data];\n        data.push.apply(data, currentData);\n\n        for (var d = 0; d < data.length; d++) {\n          var id = data[d].id;\n\n          if ($.inArray(id, val) === -1) {\n            val.push(id);\n          }\n        }\n\n        self.$element.val(val);\n        self.$element.trigger('change');\n      });\n    } else {\n      var val = data.id;\n\n      this.$element.val(val);\n      this.$element.trigger('change');\n    }\n  };\n\n  SelectAdapter.prototype.unselect = function (data) {\n    var self = this;\n\n    if (!this.$element.prop('multiple')) {\n      return;\n    }\n\n    data.selected = false;\n\n    if ($(data.element).is('option')) {\n      data.element.selected = false;\n\n      this.$element.trigger('change');\n\n      return;\n    }\n\n    this.current(function (currentData) {\n      var val = [];\n\n      for (var d = 0; d < currentData.length; d++) {\n        var id = currentData[d].id;\n\n        if (id !== data.id && $.inArray(id, val) === -1) {\n          val.push(id);\n        }\n      }\n\n      self.$element.val(val);\n\n      self.$element.trigger('change');\n    });\n  };\n\n  SelectAdapter.prototype.bind = function (container, $container) {\n    var self = this;\n\n    this.container = container;\n\n    container.on('select', function (params) {\n      self.select(params.data);\n    });\n\n    container.on('unselect', function (params) {\n      self.unselect(params.data);\n    });\n  };\n\n  SelectAdapter.prototype.destroy = function () {\n    // Remove anything added to child elements\n    this.$element.find('*').each(function () {\n      // Remove any custom data set by Select2\n      $.removeData(this, 'data');\n    });\n  };\n\n  SelectAdapter.prototype.query = function (params, callback) {\n    var data = [];\n    var self = this;\n\n    var $options = this.$element.children();\n\n    $options.each(function () {\n      var $option = $(this);\n\n      if (!$option.is('option') && !$option.is('optgroup')) {\n        return;\n      }\n\n      var option = self.item($option);\n\n      var matches = self.matches(params, option);\n\n      if (matches !== null) {\n        data.push(matches);\n      }\n    });\n\n    callback({\n      results: data\n    });\n  };\n\n  SelectAdapter.prototype.addOptions = function ($options) {\n    Utils.appendMany(this.$element, $options);\n  };\n\n  SelectAdapter.prototype.option = function (data) {\n    var option;\n\n    if (data.children) {\n      option = document.createElement('optgroup');\n      option.label = data.text;\n    } else {\n      option = document.createElement('option');\n\n      if (option.textContent !== undefined) {\n        option.textContent = data.text;\n      } else {\n        option.innerText = data.text;\n      }\n    }\n\n    if (data.id) {\n      option.value = data.id;\n    }\n\n    if (data.disabled) {\n      option.disabled = true;\n    }\n\n    if (data.selected) {\n      option.selected = true;\n    }\n\n    if (data.title) {\n      option.title = data.title;\n    }\n\n    var $option = $(option);\n\n    var normalizedData = this._normalizeItem(data);\n    normalizedData.element = option;\n\n    // Override the option's data with the combined data\n    $.data(option, 'data', normalizedData);\n\n    return $option;\n  };\n\n  SelectAdapter.prototype.item = function ($option) {\n    var data = {};\n\n    data = $.data($option[0], 'data');\n\n    if (data != null) {\n      return data;\n    }\n\n    if ($option.is('option')) {\n      data = {\n        id: $option.val(),\n        text: $option.text(),\n        disabled: $option.prop('disabled'),\n        selected: $option.prop('selected'),\n        title: $option.prop('title')\n      };\n    } else if ($option.is('optgroup')) {\n      data = {\n        text: $option.prop('label'),\n        children: [],\n        title: $option.prop('title')\n      };\n\n      var $children = $option.children('option');\n      var children = [];\n\n      for (var c = 0; c < $children.length; c++) {\n        var $child = $($children[c]);\n\n        var child = this.item($child);\n\n        children.push(child);\n      }\n\n      data.children = children;\n    }\n\n    data = this._normalizeItem(data);\n    data.element = $option[0];\n\n    $.data($option[0], 'data', data);\n\n    return data;\n  };\n\n  SelectAdapter.prototype._normalizeItem = function (item) {\n    if (!$.isPlainObject(item)) {\n      item = {\n        id: item,\n        text: item\n      };\n    }\n\n    item = $.extend({}, {\n      text: ''\n    }, item);\n\n    var defaults = {\n      selected: false,\n      disabled: false\n    };\n\n    if (item.id != null) {\n      item.id = item.id.toString();\n    }\n\n    if (item.text != null) {\n      item.text = item.text.toString();\n    }\n\n    if (item._resultId == null && item.id && this.container != null) {\n      item._resultId = this.generateResultId(this.container, item);\n    }\n\n    return $.extend({}, defaults, item);\n  };\n\n  SelectAdapter.prototype.matches = function (params, data) {\n    var matcher = this.options.get('matcher');\n\n    return matcher(params, data);\n  };\n\n  return SelectAdapter;\n});\n\nS2.define('select2/data/array',[\n  './select',\n  '../utils',\n  'jquery'\n], function (SelectAdapter, Utils, $) {\n  function ArrayAdapter ($element, options) {\n    var data = options.get('data') || [];\n\n    ArrayAdapter.__super__.constructor.call(this, $element, options);\n\n    this.addOptions(this.convertToOptions(data));\n  }\n\n  Utils.Extend(ArrayAdapter, SelectAdapter);\n\n  ArrayAdapter.prototype.select = function (data) {\n    var $option = this.$element.find('option').filter(function (i, elm) {\n      return elm.value == data.id.toString();\n    });\n\n    if ($option.length === 0) {\n      $option = this.option(data);\n\n      this.addOptions($option);\n    }\n\n    ArrayAdapter.__super__.select.call(this, data);\n  };\n\n  ArrayAdapter.prototype.convertToOptions = function (data) {\n    var self = this;\n\n    var $existing = this.$element.find('option');\n    var existingIds = $existing.map(function () {\n      return self.item($(this)).id;\n    }).get();\n\n    var $options = [];\n\n    // Filter out all items except for the one passed in the argument\n    function onlyItem (item) {\n      return function () {\n        return $(this).val() == item.id;\n      };\n    }\n\n    for (var d = 0; d < data.length; d++) {\n      var item = this._normalizeItem(data[d]);\n\n      // Skip items which were pre-loaded, only merge the data\n      if ($.inArray(item.id, existingIds) >= 0) {\n        var $existingOption = $existing.filter(onlyItem(item));\n\n        var existingData = this.item($existingOption);\n        var newData = $.extend(true, {}, item, existingData);\n\n        var $newOption = this.option(newData);\n\n        $existingOption.replaceWith($newOption);\n\n        continue;\n      }\n\n      var $option = this.option(item);\n\n      if (item.children) {\n        var $children = this.convertToOptions(item.children);\n\n        Utils.appendMany($option, $children);\n      }\n\n      $options.push($option);\n    }\n\n    return $options;\n  };\n\n  return ArrayAdapter;\n});\n\nS2.define('select2/data/ajax',[\n  './array',\n  '../utils',\n  'jquery'\n], function (ArrayAdapter, Utils, $) {\n  function AjaxAdapter ($element, options) {\n    this.ajaxOptions = this._applyDefaults(options.get('ajax'));\n\n    if (this.ajaxOptions.processResults != null) {\n      this.processResults = this.ajaxOptions.processResults;\n    }\n\n    AjaxAdapter.__super__.constructor.call(this, $element, options);\n  }\n\n  Utils.Extend(AjaxAdapter, ArrayAdapter);\n\n  AjaxAdapter.prototype._applyDefaults = function (options) {\n    var defaults = {\n      data: function (params) {\n        return $.extend({}, params, {\n          q: params.term\n        });\n      },\n      transport: function (params, success, failure) {\n        var $request = $.ajax(params);\n\n        $request.then(success);\n        $request.fail(failure);\n\n        return $request;\n      }\n    };\n\n    return $.extend({}, defaults, options, true);\n  };\n\n  AjaxAdapter.prototype.processResults = function (results) {\n    return results;\n  };\n\n  AjaxAdapter.prototype.query = function (params, callback) {\n    var matches = [];\n    var self = this;\n\n    if (this._request != null) {\n      // JSONP requests cannot always be aborted\n      if ($.isFunction(this._request.abort)) {\n        this._request.abort();\n      }\n\n      this._request = null;\n    }\n\n    var options = $.extend({\n      type: 'GET'\n    }, this.ajaxOptions);\n\n    if (typeof options.url === 'function') {\n      options.url = options.url.call(this.$element, params);\n    }\n\n    if (typeof options.data === 'function') {\n      options.data = options.data.call(this.$element, params);\n    }\n\n    function request () {\n      var $request = options.transport(options, function (data) {\n        var results = self.processResults(data, params);\n\n        if (self.options.get('debug') && window.console && console.error) {\n          // Check to make sure that the response included a `results` key.\n          if (!results || !results.results || !$.isArray(results.results)) {\n            console.error(\n              'Select2: The AJAX results did not return an array in the ' +\n              '`results` key of the response.'\n            );\n          }\n        }\n\n        callback(results);\n      }, function () {\n        self.trigger('results:message', {\n          message: 'errorLoading'\n        });\n      });\n\n      self._request = $request;\n    }\n\n    if (this.ajaxOptions.delay && params.term !== '') {\n      if (this._queryTimeout) {\n        window.clearTimeout(this._queryTimeout);\n      }\n\n      this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\n    } else {\n      request();\n    }\n  };\n\n  return AjaxAdapter;\n});\n\nS2.define('select2/data/tags',[\n  'jquery'\n], function ($) {\n  function Tags (decorated, $element, options) {\n    var tags = options.get('tags');\n\n    var createTag = options.get('createTag');\n\n    if (createTag !== undefined) {\n      this.createTag = createTag;\n    }\n\n    var insertTag = options.get('insertTag');\n\n    if (insertTag !== undefined) {\n        this.insertTag = insertTag;\n    }\n\n    decorated.call(this, $element, options);\n\n    if ($.isArray(tags)) {\n      for (var t = 0; t < tags.length; t++) {\n        var tag = tags[t];\n        var item = this._normalizeItem(tag);\n\n        var $option = this.option(item);\n\n        this.$element.append($option);\n      }\n    }\n  }\n\n  Tags.prototype.query = function (decorated, params, callback) {\n    var self = this;\n\n    this._removeOldTags();\n\n    if (params.term == null || params.page != null) {\n      decorated.call(this, params, callback);\n      return;\n    }\n\n    function wrapper (obj, child) {\n      var data = obj.results;\n\n      for (var i = 0; i < data.length; i++) {\n        var option = data[i];\n\n        var checkChildren = (\n          option.children != null &&\n          !wrapper({\n            results: option.children\n          }, true)\n        );\n\n        var checkText = option.text === params.term;\n\n        if (checkText || checkChildren) {\n          if (child) {\n            return false;\n          }\n\n          obj.data = data;\n          callback(obj);\n\n          return;\n        }\n      }\n\n      if (child) {\n        return true;\n      }\n\n      var tag = self.createTag(params);\n\n      if (tag != null) {\n        var $option = self.option(tag);\n        $option.attr('data-select2-tag', true);\n\n        self.addOptions([$option]);\n\n        self.insertTag(data, tag);\n      }\n\n      obj.results = data;\n\n      callback(obj);\n    }\n\n    decorated.call(this, params, wrapper);\n  };\n\n  Tags.prototype.createTag = function (decorated, params) {\n    var term = $.trim(params.term);\n\n    if (term === '') {\n      return null;\n    }\n\n    return {\n      id: term,\n      text: term\n    };\n  };\n\n  Tags.prototype.insertTag = function (_, data, tag) {\n    data.unshift(tag);\n  };\n\n  Tags.prototype._removeOldTags = function (_) {\n    var tag = this._lastTag;\n\n    var $options = this.$element.find('option[data-select2-tag]');\n\n    $options.each(function () {\n      if (this.selected) {\n        return;\n      }\n\n      $(this).remove();\n    });\n  };\n\n  return Tags;\n});\n\nS2.define('select2/data/tokenizer',[\n  'jquery'\n], function ($) {\n  function Tokenizer (decorated, $element, options) {\n    var tokenizer = options.get('tokenizer');\n\n    if (tokenizer !== undefined) {\n      this.tokenizer = tokenizer;\n    }\n\n    decorated.call(this, $element, options);\n  }\n\n  Tokenizer.prototype.bind = function (decorated, container, $container) {\n    decorated.call(this, container, $container);\n\n    this.$search =  container.dropdown.$search || container.selection.$search ||\n      $container.find('.select2-search__field');\n  };\n\n  Tokenizer.prototype.query = function (decorated, params, callback) {\n    var self = this;\n\n    function select (data) {\n      self.trigger('select', {\n        data: data\n      });\n    }\n\n    params.term = params.term || '';\n\n    var tokenData = this.tokenizer(params, this.options, select);\n\n    if (tokenData.term !== params.term) {\n      // Replace the search term if we have the search box\n      if (this.$search.length) {\n        this.$search.val(tokenData.term);\n        this.$search.focus();\n      }\n\n      params.term = tokenData.term;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  Tokenizer.prototype.tokenizer = function (_, params, options, callback) {\n    var separators = options.get('tokenSeparators') || [];\n    var term = params.term;\n    var i = 0;\n\n    var createTag = this.createTag || function (params) {\n      return {\n        id: params.term,\n        text: params.term\n      };\n    };\n\n    while (i < term.length) {\n      var termChar = term[i];\n\n      if ($.inArray(termChar, separators) === -1) {\n        i++;\n\n        continue;\n      }\n\n      var part = term.substr(0, i);\n      var partParams = $.extend({}, params, {\n        term: part\n      });\n\n      var data = createTag(partParams);\n\n      if (data == null) {\n        i++;\n        continue;\n      }\n\n      callback(data);\n\n      // Reset the term to not include the tokenized portion\n      term = term.substr(i + 1) || '';\n      i = 0;\n    }\n\n    return {\n      term: term\n    };\n  };\n\n  return Tokenizer;\n});\n\nS2.define('select2/data/minimumInputLength',[\n\n], function () {\n  function MinimumInputLength (decorated, $e, options) {\n    this.minimumInputLength = options.get('minimumInputLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MinimumInputLength.prototype.query = function (decorated, params, callback) {\n    params.term = params.term || '';\n\n    if (params.term.length < this.minimumInputLength) {\n      this.trigger('results:message', {\n        message: 'inputTooShort',\n        args: {\n          minimum: this.minimumInputLength,\n          input: params.term,\n          params: params\n        }\n      });\n\n      return;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  return MinimumInputLength;\n});\n\nS2.define('select2/data/maximumInputLength',[\n\n], function () {\n  function MaximumInputLength (decorated, $e, options) {\n    this.maximumInputLength = options.get('maximumInputLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MaximumInputLength.prototype.query = function (decorated, params, callback) {\n    params.term = params.term || '';\n\n    if (this.maximumInputLength > 0 &&\n        params.term.length > this.maximumInputLength) {\n      this.trigger('results:message', {\n        message: 'inputTooLong',\n        args: {\n          maximum: this.maximumInputLength,\n          input: params.term,\n          params: params\n        }\n      });\n\n      return;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  return MaximumInputLength;\n});\n\nS2.define('select2/data/maximumSelectionLength',[\n\n], function (){\n  function MaximumSelectionLength (decorated, $e, options) {\n    this.maximumSelectionLength = options.get('maximumSelectionLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MaximumSelectionLength.prototype.query =\n    function (decorated, params, callback) {\n      var self = this;\n\n      this.current(function (currentData) {\n        var count = currentData != null ? currentData.length : 0;\n        if (self.maximumSelectionLength > 0 &&\n          count >= self.maximumSelectionLength) {\n          self.trigger('results:message', {\n            message: 'maximumSelected',\n            args: {\n              maximum: self.maximumSelectionLength\n            }\n          });\n          return;\n        }\n        decorated.call(self, params, callback);\n      });\n  };\n\n  return MaximumSelectionLength;\n});\n\nS2.define('select2/dropdown',[\n  'jquery',\n  './utils'\n], function ($, Utils) {\n  function Dropdown ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    Dropdown.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(Dropdown, Utils.Observable);\n\n  Dropdown.prototype.render = function () {\n    var $dropdown = $(\n      '<span class=\"select2-dropdown\">' +\n        '<span class=\"select2-results\"></span>' +\n      '</span>'\n    );\n\n    $dropdown.attr('dir', this.options.get('dir'));\n\n    this.$dropdown = $dropdown;\n\n    return $dropdown;\n  };\n\n  Dropdown.prototype.bind = function () {\n    // Should be implemented in subclasses\n  };\n\n  Dropdown.prototype.position = function ($dropdown, $container) {\n    // Should be implmented in subclasses\n  };\n\n  Dropdown.prototype.destroy = function () {\n    // Remove the dropdown from the DOM\n    this.$dropdown.remove();\n  };\n\n  return Dropdown;\n});\n\nS2.define('select2/dropdown/search',[\n  'jquery',\n  '../utils'\n], function ($, Utils) {\n  function Search () { }\n\n  Search.prototype.render = function (decorated) {\n    var $rendered = decorated.call(this);\n\n    var $search = $(\n      '<span class=\"select2-search select2-search--dropdown\">' +\n        '<input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\"' +\n        ' autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"off\"' +\n        ' spellcheck=\"false\" role=\"textbox\" />' +\n      '</span>'\n    );\n\n    this.$searchContainer = $search;\n    this.$search = $search.find('input');\n\n    $rendered.prepend($search);\n\n    return $rendered;\n  };\n\n  Search.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    this.$search.on('keydown', function (evt) {\n      self.trigger('keypress', evt);\n\n      self._keyUpPrevented = evt.isDefaultPrevented();\n    });\n\n    // Workaround for browsers which do not support the `input` event\n    // This will prevent double-triggering of events for browsers which support\n    // both the `keyup` and `input` events.\n    this.$search.on('input', function (evt) {\n      // Unbind the duplicated `keyup` event\n      $(this).off('keyup');\n    });\n\n    this.$search.on('keyup input', function (evt) {\n      self.handleSearch(evt);\n    });\n\n    container.on('open', function () {\n      self.$search.attr('tabindex', 0);\n\n      self.$search.focus();\n\n      window.setTimeout(function () {\n        self.$search.focus();\n      }, 0);\n    });\n\n    container.on('close', function () {\n      self.$search.attr('tabindex', -1);\n\n      self.$search.val('');\n    });\n\n    container.on('results:all', function (params) {\n      if (params.query.term == null || params.query.term === '') {\n        var showSearch = self.showSearch(params);\n\n        if (showSearch) {\n          self.$searchContainer.removeClass('select2-search--hide');\n        } else {\n          self.$searchContainer.addClass('select2-search--hide');\n        }\n      }\n    });\n  };\n\n  Search.prototype.handleSearch = function (evt) {\n    if (!this._keyUpPrevented) {\n      var input = this.$search.val();\n\n      this.trigger('query', {\n        term: input\n      });\n    }\n\n    this._keyUpPrevented = false;\n  };\n\n  Search.prototype.showSearch = function (_, params) {\n    return true;\n  };\n\n  return Search;\n});\n\nS2.define('select2/dropdown/hidePlaceholder',[\n\n], function () {\n  function HidePlaceholder (decorated, $element, options, dataAdapter) {\n    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n    decorated.call(this, $element, options, dataAdapter);\n  }\n\n  HidePlaceholder.prototype.append = function (decorated, data) {\n    data.results = this.removePlaceholder(data.results);\n\n    decorated.call(this, data);\n  };\n\n  HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\n    if (typeof placeholder === 'string') {\n      placeholder = {\n        id: '',\n        text: placeholder\n      };\n    }\n\n    return placeholder;\n  };\n\n  HidePlaceholder.prototype.removePlaceholder = function (_, data) {\n    var modifiedData = data.slice(0);\n\n    for (var d = data.length - 1; d >= 0; d--) {\n      var item = data[d];\n\n      if (this.placeholder.id === item.id) {\n        modifiedData.splice(d, 1);\n      }\n    }\n\n    return modifiedData;\n  };\n\n  return HidePlaceholder;\n});\n\nS2.define('select2/dropdown/infiniteScroll',[\n  'jquery'\n], function ($) {\n  function InfiniteScroll (decorated, $element, options, dataAdapter) {\n    this.lastParams = {};\n\n    decorated.call(this, $element, options, dataAdapter);\n\n    this.$loadingMore = this.createLoadingMore();\n    this.loading = false;\n  }\n\n  InfiniteScroll.prototype.append = function (decorated, data) {\n    this.$loadingMore.remove();\n    this.loading = false;\n\n    decorated.call(this, data);\n\n    if (this.showLoadingMore(data)) {\n      this.$results.append(this.$loadingMore);\n    }\n  };\n\n  InfiniteScroll.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('query', function (params) {\n      self.lastParams = params;\n      self.loading = true;\n    });\n\n    container.on('query:append', function (params) {\n      self.lastParams = params;\n      self.loading = true;\n    });\n\n    this.$results.on('scroll', function () {\n      var isLoadMoreVisible = $.contains(\n        document.documentElement,\n        self.$loadingMore[0]\n      );\n\n      if (self.loading || !isLoadMoreVisible) {\n        return;\n      }\n\n      var currentOffset = self.$results.offset().top +\n        self.$results.outerHeight(false);\n      var loadingMoreOffset = self.$loadingMore.offset().top +\n        self.$loadingMore.outerHeight(false);\n\n      if (currentOffset + 50 >= loadingMoreOffset) {\n        self.loadMore();\n      }\n    });\n  };\n\n  InfiniteScroll.prototype.loadMore = function () {\n    this.loading = true;\n\n    var params = $.extend({}, {page: 1}, this.lastParams);\n\n    params.page++;\n\n    this.trigger('query:append', params);\n  };\n\n  InfiniteScroll.prototype.showLoadingMore = function (_, data) {\n    return data.pagination && data.pagination.more;\n  };\n\n  InfiniteScroll.prototype.createLoadingMore = function () {\n    var $option = $(\n      '<li ' +\n      'class=\"select2-results__option select2-results__option--load-more\"' +\n      'role=\"treeitem\" aria-disabled=\"true\"></li>'\n    );\n\n    var message = this.options.get('translations').get('loadingMore');\n\n    $option.html(message(this.lastParams));\n\n    return $option;\n  };\n\n  return InfiniteScroll;\n});\n\nS2.define('select2/dropdown/attachBody',[\n  'jquery',\n  '../utils'\n], function ($, Utils) {\n  function AttachBody (decorated, $element, options) {\n    this.$dropdownParent = options.get('dropdownParent') || $(document.body);\n\n    decorated.call(this, $element, options);\n  }\n\n  AttachBody.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    var setupResultsEvents = false;\n\n    decorated.call(this, container, $container);\n\n    container.on('open', function () {\n      self._showDropdown();\n      self._attachPositioningHandler(container);\n\n      if (!setupResultsEvents) {\n        setupResultsEvents = true;\n\n        container.on('results:all', function () {\n          self._positionDropdown();\n          self._resizeDropdown();\n        });\n\n        container.on('results:append', function () {\n          self._positionDropdown();\n          self._resizeDropdown();\n        });\n      }\n    });\n\n    container.on('close', function () {\n      self._hideDropdown();\n      self._detachPositioningHandler(container);\n    });\n\n    this.$dropdownContainer.on('mousedown', function (evt) {\n      evt.stopPropagation();\n    });\n  };\n\n  AttachBody.prototype.destroy = function (decorated) {\n    decorated.call(this);\n\n    this.$dropdownContainer.remove();\n  };\n\n  AttachBody.prototype.position = function (decorated, $dropdown, $container) {\n    // Clone all of the container classes\n    $dropdown.attr('class', $container.attr('class'));\n\n    $dropdown.removeClass('select2');\n    $dropdown.addClass('select2-container--open');\n\n    $dropdown.css({\n      position: 'absolute',\n      top: -999999\n    });\n\n    this.$container = $container;\n  };\n\n  AttachBody.prototype.render = function (decorated) {\n    var $container = $('<span></span>');\n\n    var $dropdown = decorated.call(this);\n    $container.append($dropdown);\n\n    this.$dropdownContainer = $container;\n\n    return $container;\n  };\n\n  AttachBody.prototype._hideDropdown = function (decorated) {\n    this.$dropdownContainer.detach();\n  };\n\n  AttachBody.prototype._attachPositioningHandler =\n      function (decorated, container) {\n    var self = this;\n\n    var scrollEvent = 'scroll.select2.' + container.id;\n    var resizeEvent = 'resize.select2.' + container.id;\n    var orientationEvent = 'orientationchange.select2.' + container.id;\n\n    var $watchers = this.$container.parents().filter(Utils.hasScroll);\n    $watchers.each(function () {\n      $(this).data('select2-scroll-position', {\n        x: $(this).scrollLeft(),\n        y: $(this).scrollTop()\n      });\n    });\n\n    $watchers.on(scrollEvent, function (ev) {\n      var position = $(this).data('select2-scroll-position');\n      $(this).scrollTop(position.y);\n    });\n\n    $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,\n      function (e) {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n  };\n\n  AttachBody.prototype._detachPositioningHandler =\n      function (decorated, container) {\n    var scrollEvent = 'scroll.select2.' + container.id;\n    var resizeEvent = 'resize.select2.' + container.id;\n    var orientationEvent = 'orientationchange.select2.' + container.id;\n\n    var $watchers = this.$container.parents().filter(Utils.hasScroll);\n    $watchers.off(scrollEvent);\n\n    $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\n  };\n\n  AttachBody.prototype._positionDropdown = function () {\n    var $window = $(window);\n\n    var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above');\n    var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below');\n\n    var newDirection = null;\n\n    var offset = this.$container.offset();\n\n    offset.bottom = offset.top + this.$container.outerHeight(false);\n\n    var container = {\n      height: this.$container.outerHeight(false)\n    };\n\n    container.top = offset.top;\n    container.bottom = offset.top + container.height;\n\n    var dropdown = {\n      height: this.$dropdown.outerHeight(false)\n    };\n\n    var viewport = {\n      top: $window.scrollTop(),\n      bottom: $window.scrollTop() + $window.height()\n    };\n\n    var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);\n    var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);\n\n    var css = {\n      left: offset.left,\n      top: container.bottom\n    };\n\n    // Determine what the parent element is to use for calciulating the offset\n    var $offsetParent = this.$dropdownParent;\n\n    // For statically positoned elements, we need to get the element\n    // that is determining the offset\n    if ($offsetParent.css('position') === 'static') {\n      $offsetParent = $offsetParent.offsetParent();\n    }\n\n    var parentOffset = $offsetParent.offset();\n\n    css.top -= parentOffset.top;\n    css.left -= parentOffset.left;\n\n    if (!isCurrentlyAbove && !isCurrentlyBelow) {\n      newDirection = 'below';\n    }\n\n    if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\n      newDirection = 'above';\n    } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\n      newDirection = 'below';\n    }\n\n    if (newDirection == 'above' ||\n      (isCurrentlyAbove && newDirection !== 'below')) {\n      css.top = container.top - dropdown.height;\n    }\n\n    if (newDirection != null) {\n      this.$dropdown\n        .removeClass('select2-dropdown--below select2-dropdown--above')\n        .addClass('select2-dropdown--' + newDirection);\n      this.$container\n        .removeClass('select2-container--below select2-container--above')\n        .addClass('select2-container--' + newDirection);\n    }\n\n    this.$dropdownContainer.css(css);\n  };\n\n  AttachBody.prototype._resizeDropdown = function () {\n    var css = {\n      width: this.$container.outerWidth(false) + 'px'\n    };\n\n    if (this.options.get('dropdownAutoWidth')) {\n      css.minWidth = css.width;\n      css.width = 'auto';\n    }\n\n    this.$dropdown.css(css);\n  };\n\n  AttachBody.prototype._showDropdown = function (decorated) {\n    this.$dropdownContainer.appendTo(this.$dropdownParent);\n\n    this._positionDropdown();\n    this._resizeDropdown();\n  };\n\n  return AttachBody;\n});\n\nS2.define('select2/dropdown/minimumResultsForSearch',[\n\n], function () {\n  function countResults (data) {\n    var count = 0;\n\n    for (var d = 0; d < data.length; d++) {\n      var item = data[d];\n\n      if (item.children) {\n        count += countResults(item.children);\n      } else {\n        count++;\n      }\n    }\n\n    return count;\n  }\n\n  function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {\n    this.minimumResultsForSearch = options.get('minimumResultsForSearch');\n\n    if (this.minimumResultsForSearch < 0) {\n      this.minimumResultsForSearch = Infinity;\n    }\n\n    decorated.call(this, $element, options, dataAdapter);\n  }\n\n  MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\n    if (countResults(params.data.results) < this.minimumResultsForSearch) {\n      return false;\n    }\n\n    return decorated.call(this, params);\n  };\n\n  return MinimumResultsForSearch;\n});\n\nS2.define('select2/dropdown/selectOnClose',[\n\n], function () {\n  function SelectOnClose () { }\n\n  SelectOnClose.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('close', function () {\n      self._handleSelectOnClose();\n    });\n  };\n\n  SelectOnClose.prototype._handleSelectOnClose = function () {\n    var $highlightedResults = this.getHighlightedResults();\n\n    // Only select highlighted results\n    if ($highlightedResults.length < 1) {\n      return;\n    }\n\n    var data = $highlightedResults.data('data');\n\n    // Don't re-select already selected resulte\n    if (\n      (data.element != null && data.element.selected) ||\n      (data.element == null && data.selected)\n    ) {\n      return;\n    }\n\n    this.trigger('select', {\n        data: data\n    });\n  };\n\n  return SelectOnClose;\n});\n\nS2.define('select2/dropdown/closeOnSelect',[\n\n], function () {\n  function CloseOnSelect () { }\n\n  CloseOnSelect.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('select', function (evt) {\n      self._selectTriggered(evt);\n    });\n\n    container.on('unselect', function (evt) {\n      self._selectTriggered(evt);\n    });\n  };\n\n  CloseOnSelect.prototype._selectTriggered = function (_, evt) {\n    var originalEvent = evt.originalEvent;\n\n    // Don't close if the control key is being held\n    if (originalEvent && originalEvent.ctrlKey) {\n      return;\n    }\n\n    this.trigger('close', {});\n  };\n\n  return CloseOnSelect;\n});\n\nS2.define('select2/i18n/en',[],function () {\n  // English\n  return {\n    errorLoading: function () {\n      return 'The results could not be loaded.';\n    },\n    inputTooLong: function (args) {\n      var overChars = args.input.length - args.maximum;\n\n      var message = 'Please delete ' + overChars + ' character';\n\n      if (overChars != 1) {\n        message += 's';\n      }\n\n      return message;\n    },\n    inputTooShort: function (args) {\n      var remainingChars = args.minimum - args.input.length;\n\n      var message = 'Please enter ' + remainingChars + ' or more characters';\n\n      return message;\n    },\n    loadingMore: function () {\n      return 'Loading more results…';\n    },\n    maximumSelected: function (args) {\n      var message = 'You can only select ' + args.maximum + ' item';\n\n      if (args.maximum != 1) {\n        message += 's';\n      }\n\n      return message;\n    },\n    noResults: function () {\n      return 'No results found';\n    },\n    searching: function () {\n      return 'Searching…';\n    }\n  };\n});\n\nS2.define('select2/defaults',[\n  'jquery',\n  'require',\n\n  './results',\n\n  './selection/single',\n  './selection/multiple',\n  './selection/placeholder',\n  './selection/allowClear',\n  './selection/search',\n  './selection/eventRelay',\n\n  './utils',\n  './translation',\n  './diacritics',\n\n  './data/select',\n  './data/array',\n  './data/ajax',\n  './data/tags',\n  './data/tokenizer',\n  './data/minimumInputLength',\n  './data/maximumInputLength',\n  './data/maximumSelectionLength',\n\n  './dropdown',\n  './dropdown/search',\n  './dropdown/hidePlaceholder',\n  './dropdown/infiniteScroll',\n  './dropdown/attachBody',\n  './dropdown/minimumResultsForSearch',\n  './dropdown/selectOnClose',\n  './dropdown/closeOnSelect',\n\n  './i18n/en'\n], function ($, require,\n\n             ResultsList,\n\n             SingleSelection, MultipleSelection, Placeholder, AllowClear,\n             SelectionSearch, EventRelay,\n\n             Utils, Translation, DIACRITICS,\n\n             SelectData, ArrayData, AjaxData, Tags, Tokenizer,\n             MinimumInputLength, MaximumInputLength, MaximumSelectionLength,\n\n             Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,\n             AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,\n\n             EnglishTranslation) {\n  function Defaults () {\n    this.reset();\n  }\n\n  Defaults.prototype.apply = function (options) {\n    options = $.extend(true, {}, this.defaults, options);\n\n    if (options.dataAdapter == null) {\n      if (options.ajax != null) {\n        options.dataAdapter = AjaxData;\n      } else if (options.data != null) {\n        options.dataAdapter = ArrayData;\n      } else {\n        options.dataAdapter = SelectData;\n      }\n\n      if (options.minimumInputLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MinimumInputLength\n        );\n      }\n\n      if (options.maximumInputLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MaximumInputLength\n        );\n      }\n\n      if (options.maximumSelectionLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MaximumSelectionLength\n        );\n      }\n\n      if (options.tags) {\n        options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\n      }\n\n      if (options.tokenSeparators != null || options.tokenizer != null) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          Tokenizer\n        );\n      }\n\n      if (options.query != null) {\n        var Query = require(options.amdBase + 'compat/query');\n\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          Query\n        );\n      }\n\n      if (options.initSelection != null) {\n        var InitSelection = require(options.amdBase + 'compat/initSelection');\n\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          InitSelection\n        );\n      }\n    }\n\n    if (options.resultsAdapter == null) {\n      options.resultsAdapter = ResultsList;\n\n      if (options.ajax != null) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          InfiniteScroll\n        );\n      }\n\n      if (options.placeholder != null) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          HidePlaceholder\n        );\n      }\n\n      if (options.selectOnClose) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          SelectOnClose\n        );\n      }\n    }\n\n    if (options.dropdownAdapter == null) {\n      if (options.multiple) {\n        options.dropdownAdapter = Dropdown;\n      } else {\n        var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);\n\n        options.dropdownAdapter = SearchableDropdown;\n      }\n\n      if (options.minimumResultsForSearch !== 0) {\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          MinimumResultsForSearch\n        );\n      }\n\n      if (options.closeOnSelect) {\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          CloseOnSelect\n        );\n      }\n\n      if (\n        options.dropdownCssClass != null ||\n        options.dropdownCss != null ||\n        options.adaptDropdownCssClass != null\n      ) {\n        var DropdownCSS = require(options.amdBase + 'compat/dropdownCss');\n\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          DropdownCSS\n        );\n      }\n\n      options.dropdownAdapter = Utils.Decorate(\n        options.dropdownAdapter,\n        AttachBody\n      );\n    }\n\n    if (options.selectionAdapter == null) {\n      if (options.multiple) {\n        options.selectionAdapter = MultipleSelection;\n      } else {\n        options.selectionAdapter = SingleSelection;\n      }\n\n      // Add the placeholder mixin if a placeholder was specified\n      if (options.placeholder != null) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          Placeholder\n        );\n      }\n\n      if (options.allowClear) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          AllowClear\n        );\n      }\n\n      if (options.multiple) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          SelectionSearch\n        );\n      }\n\n      if (\n        options.containerCssClass != null ||\n        options.containerCss != null ||\n        options.adaptContainerCssClass != null\n      ) {\n        var ContainerCSS = require(options.amdBase + 'compat/containerCss');\n\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          ContainerCSS\n        );\n      }\n\n      options.selectionAdapter = Utils.Decorate(\n        options.selectionAdapter,\n        EventRelay\n      );\n    }\n\n    if (typeof options.language === 'string') {\n      // Check if the language is specified with a region\n      if (options.language.indexOf('-') > 0) {\n        // Extract the region information if it is included\n        var languageParts = options.language.split('-');\n        var baseLanguage = languageParts[0];\n\n        options.language = [options.language, baseLanguage];\n      } else {\n        options.language = [options.language];\n      }\n    }\n\n    if ($.isArray(options.language)) {\n      var languages = new Translation();\n      options.language.push('en');\n\n      var languageNames = options.language;\n\n      for (var l = 0; l < languageNames.length; l++) {\n        var name = languageNames[l];\n        var language = {};\n\n        try {\n          // Try to load it with the original name\n          language = Translation.loadPath(name);\n        } catch (e) {\n          try {\n            // If we couldn't load it, check if it wasn't the full path\n            name = this.defaults.amdLanguageBase + name;\n            language = Translation.loadPath(name);\n          } catch (ex) {\n            // The translation could not be loaded at all. Sometimes this is\n            // because of a configuration problem, other times this can be\n            // because of how Select2 helps load all possible translation files.\n            if (options.debug && window.console && console.warn) {\n              console.warn(\n                'Select2: The language file for \"' + name + '\" could not be ' +\n                'automatically loaded. A fallback will be used instead.'\n              );\n            }\n\n            continue;\n          }\n        }\n\n        languages.extend(language);\n      }\n\n      options.translations = languages;\n    } else {\n      var baseTranslation = Translation.loadPath(\n        this.defaults.amdLanguageBase + 'en'\n      );\n      var customTranslation = new Translation(options.language);\n\n      customTranslation.extend(baseTranslation);\n\n      options.translations = customTranslation;\n    }\n\n    return options;\n  };\n\n  Defaults.prototype.reset = function () {\n    function stripDiacritics (text) {\n      // Used 'uni range + named function' from http://jsperf.com/diacritics/18\n      function match(a) {\n        return DIACRITICS[a] || a;\n      }\n\n      return text.replace(/[^\\u0000-\\u007E]/g, match);\n    }\n\n    function matcher (params, data) {\n      // Always return the object if there is nothing to compare\n      if ($.trim(params.term) === '') {\n        return data;\n      }\n\n      // Do a recursive check for options with children\n      if (data.children && data.children.length > 0) {\n        // Clone the data object if there are children\n        // This is required as we modify the object to remove any non-matches\n        var match = $.extend(true, {}, data);\n\n        // Check each child of the option\n        for (var c = data.children.length - 1; c >= 0; c--) {\n          var child = data.children[c];\n\n          var matches = matcher(params, child);\n\n          // If there wasn't a match, remove the object in the array\n          if (matches == null) {\n            match.children.splice(c, 1);\n          }\n        }\n\n        // If any children matched, return the new object\n        if (match.children.length > 0) {\n          return match;\n        }\n\n        // If there were no matching children, check just the plain object\n        return matcher(params, match);\n      }\n\n      var original = stripDiacritics(data.text).toUpperCase();\n      var term = stripDiacritics(params.term).toUpperCase();\n\n      // Check if the text contains the term\n      if (original.indexOf(term) > -1) {\n        return data;\n      }\n\n      // If it doesn't contain the term, don't return anything\n      return null;\n    }\n\n    this.defaults = {\n      amdBase: './',\n      amdLanguageBase: './i18n/',\n      closeOnSelect: true,\n      debug: false,\n      dropdownAutoWidth: false,\n      escapeMarkup: Utils.escapeMarkup,\n      language: EnglishTranslation,\n      matcher: matcher,\n      minimumInputLength: 0,\n      maximumInputLength: 0,\n      maximumSelectionLength: 0,\n      minimumResultsForSearch: 0,\n      selectOnClose: false,\n      sorter: function (data) {\n        return data;\n      },\n      templateResult: function (result) {\n        return result.text;\n      },\n      templateSelection: function (selection) {\n        return selection.text;\n      },\n      theme: 'default',\n      width: 'resolve'\n    };\n  };\n\n  Defaults.prototype.set = function (key, value) {\n    var camelKey = $.camelCase(key);\n\n    var data = {};\n    data[camelKey] = value;\n\n    var convertedData = Utils._convertData(data);\n\n    $.extend(this.defaults, convertedData);\n  };\n\n  var defaults = new Defaults();\n\n  return defaults;\n});\n\nS2.define('select2/options',[\n  'require',\n  'jquery',\n  './defaults',\n  './utils'\n], function (require, $, Defaults, Utils) {\n  function Options (options, $element) {\n    this.options = options;\n\n    if ($element != null) {\n      this.fromElement($element);\n    }\n\n    this.options = Defaults.apply(this.options);\n\n    if ($element && $element.is('input')) {\n      var InputCompat = require(this.get('amdBase') + 'compat/inputData');\n\n      this.options.dataAdapter = Utils.Decorate(\n        this.options.dataAdapter,\n        InputCompat\n      );\n    }\n  }\n\n  Options.prototype.fromElement = function ($e) {\n    var excludedData = ['select2'];\n\n    if (this.options.multiple == null) {\n      this.options.multiple = $e.prop('multiple');\n    }\n\n    if (this.options.disabled == null) {\n      this.options.disabled = $e.prop('disabled');\n    }\n\n    if (this.options.language == null) {\n      if ($e.prop('lang')) {\n        this.options.language = $e.prop('lang').toLowerCase();\n      } else if ($e.closest('[lang]').prop('lang')) {\n        this.options.language = $e.closest('[lang]').prop('lang');\n      }\n    }\n\n    if (this.options.dir == null) {\n      if ($e.prop('dir')) {\n        this.options.dir = $e.prop('dir');\n      } else if ($e.closest('[dir]').prop('dir')) {\n        this.options.dir = $e.closest('[dir]').prop('dir');\n      } else {\n        this.options.dir = 'ltr';\n      }\n    }\n\n    $e.prop('disabled', this.options.disabled);\n    $e.prop('multiple', this.options.multiple);\n\n    if ($e.data('select2Tags')) {\n      if (this.options.debug && window.console && console.warn) {\n        console.warn(\n          'Select2: The `data-select2-tags` attribute has been changed to ' +\n          'use the `data-data` and `data-tags=\"true\"` attributes and will be ' +\n          'removed in future versions of Select2.'\n        );\n      }\n\n      $e.data('data', $e.data('select2Tags'));\n      $e.data('tags', true);\n    }\n\n    if ($e.data('ajaxUrl')) {\n      if (this.options.debug && window.console && console.warn) {\n        console.warn(\n          'Select2: The `data-ajax-url` attribute has been changed to ' +\n          '`data-ajax--url` and support for the old attribute will be removed' +\n          ' in future versions of Select2.'\n        );\n      }\n\n      $e.attr('ajax--url', $e.data('ajaxUrl'));\n      $e.data('ajax--url', $e.data('ajaxUrl'));\n    }\n\n    var dataset = {};\n\n    // Prefer the element's `dataset` attribute if it exists\n    // jQuery 1.x does not correctly handle data attributes with multiple dashes\n    if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {\n      dataset = $.extend(true, {}, $e[0].dataset, $e.data());\n    } else {\n      dataset = $e.data();\n    }\n\n    var data = $.extend(true, {}, dataset);\n\n    data = Utils._convertData(data);\n\n    for (var key in data) {\n      if ($.inArray(key, excludedData) > -1) {\n        continue;\n      }\n\n      if ($.isPlainObject(this.options[key])) {\n        $.extend(this.options[key], data[key]);\n      } else {\n        this.options[key] = data[key];\n      }\n    }\n\n    return this;\n  };\n\n  Options.prototype.get = function (key) {\n    return this.options[key];\n  };\n\n  Options.prototype.set = function (key, val) {\n    this.options[key] = val;\n  };\n\n  return Options;\n});\n\nS2.define('select2/core',[\n  'jquery',\n  './options',\n  './utils',\n  './keys'\n], function ($, Options, Utils, KEYS) {\n  var Select2 = function ($element, options) {\n    if ($element.data('select2') != null) {\n      $element.data('select2').destroy();\n    }\n\n    this.$element = $element;\n\n    this.id = this._generateId($element);\n\n    options = options || {};\n\n    this.options = new Options(options, $element);\n\n    Select2.__super__.constructor.call(this);\n\n    // Set up the tabindex\n\n    var tabindex = $element.attr('tabindex') || 0;\n    $element.data('old-tabindex', tabindex);\n    $element.attr('tabindex', '-1');\n\n    // Set up containers and adapters\n\n    var DataAdapter = this.options.get('dataAdapter');\n    this.dataAdapter = new DataAdapter($element, this.options);\n\n    var $container = this.render();\n\n    this._placeContainer($container);\n\n    var SelectionAdapter = this.options.get('selectionAdapter');\n    this.selection = new SelectionAdapter($element, this.options);\n    this.$selection = this.selection.render();\n\n    this.selection.position(this.$selection, $container);\n\n    var DropdownAdapter = this.options.get('dropdownAdapter');\n    this.dropdown = new DropdownAdapter($element, this.options);\n    this.$dropdown = this.dropdown.render();\n\n    this.dropdown.position(this.$dropdown, $container);\n\n    var ResultsAdapter = this.options.get('resultsAdapter');\n    this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\n    this.$results = this.results.render();\n\n    this.results.position(this.$results, this.$dropdown);\n\n    // Bind events\n\n    var self = this;\n\n    // Bind the container to all of the adapters\n    this._bindAdapters();\n\n    // Register any DOM event handlers\n    this._registerDomEvents();\n\n    // Register any internal event handlers\n    this._registerDataEvents();\n    this._registerSelectionEvents();\n    this._registerDropdownEvents();\n    this._registerResultsEvents();\n    this._registerEvents();\n\n    // Set the initial state\n    this.dataAdapter.current(function (initialData) {\n      self.trigger('selection:update', {\n        data: initialData\n      });\n    });\n\n    // Hide the original select\n    $element.addClass('select2-hidden-accessible');\n    $element.attr('aria-hidden', 'true');\n\n    // Synchronize any monitored attributes\n    this._syncAttributes();\n\n    $element.data('select2', this);\n  };\n\n  Utils.Extend(Select2, Utils.Observable);\n\n  Select2.prototype._generateId = function ($element) {\n    var id = '';\n\n    if ($element.attr('id') != null) {\n      id = $element.attr('id');\n    } else if ($element.attr('name') != null) {\n      id = $element.attr('name') + '-' + Utils.generateChars(2);\n    } else {\n      id = Utils.generateChars(4);\n    }\n\n    id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n    id = 'select2-' + id;\n\n    return id;\n  };\n\n  Select2.prototype._placeContainer = function ($container) {\n    $container.insertAfter(this.$element);\n\n    var width = this._resolveWidth(this.$element, this.options.get('width'));\n\n    if (width != null) {\n      $container.css('width', width);\n    }\n  };\n\n  Select2.prototype._resolveWidth = function ($element, method) {\n    var WIDTH = /^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;\n\n    if (method == 'resolve') {\n      var styleWidth = this._resolveWidth($element, 'style');\n\n      if (styleWidth != null) {\n        return styleWidth;\n      }\n\n      return this._resolveWidth($element, 'element');\n    }\n\n    if (method == 'element') {\n      var elementWidth = $element.outerWidth(false);\n\n      if (elementWidth <= 0) {\n        return 'auto';\n      }\n\n      return elementWidth + 'px';\n    }\n\n    if (method == 'style') {\n      var style = $element.attr('style');\n\n      if (typeof(style) !== 'string') {\n        return null;\n      }\n\n      var attrs = style.split(';');\n\n      for (var i = 0, l = attrs.length; i < l; i = i + 1) {\n        var attr = attrs[i].replace(/\\s/g, '');\n        var matches = attr.match(WIDTH);\n\n        if (matches !== null && matches.length >= 1) {\n          return matches[1];\n        }\n      }\n\n      return null;\n    }\n\n    return method;\n  };\n\n  Select2.prototype._bindAdapters = function () {\n    this.dataAdapter.bind(this, this.$container);\n    this.selection.bind(this, this.$container);\n\n    this.dropdown.bind(this, this.$container);\n    this.results.bind(this, this.$container);\n  };\n\n  Select2.prototype._registerDomEvents = function () {\n    var self = this;\n\n    this.$element.on('change.select2', function () {\n      self.dataAdapter.current(function (data) {\n        self.trigger('selection:update', {\n          data: data\n        });\n      });\n    });\n\n    this._sync = Utils.bind(this._syncAttributes, this);\n\n    if (this.$element[0].attachEvent) {\n      this.$element[0].attachEvent('onpropertychange', this._sync);\n    }\n\n    var observer = window.MutationObserver ||\n      window.WebKitMutationObserver ||\n      window.MozMutationObserver\n    ;\n\n    if (observer != null) {\n      this._observer = new observer(function (mutations) {\n        $.each(mutations, self._sync);\n      });\n      this._observer.observe(this.$element[0], {\n        attributes: true,\n        subtree: false\n      });\n    } else if (this.$element[0].addEventListener) {\n      this.$element[0].addEventListener('DOMAttrModified', self._sync, false);\n    }\n  };\n\n  Select2.prototype._registerDataEvents = function () {\n    var self = this;\n\n    this.dataAdapter.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerSelectionEvents = function () {\n    var self = this;\n    var nonRelayEvents = ['toggle', 'focus'];\n\n    this.selection.on('toggle', function () {\n      self.toggleDropdown();\n    });\n\n    this.selection.on('focus', function (params) {\n      self.focus(params);\n    });\n\n    this.selection.on('*', function (name, params) {\n      if ($.inArray(name, nonRelayEvents) !== -1) {\n        return;\n      }\n\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerDropdownEvents = function () {\n    var self = this;\n\n    this.dropdown.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerResultsEvents = function () {\n    var self = this;\n\n    this.results.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerEvents = function () {\n    var self = this;\n\n    this.on('open', function () {\n      self.$container.addClass('select2-container--open');\n    });\n\n    this.on('close', function () {\n      self.$container.removeClass('select2-container--open');\n    });\n\n    this.on('enable', function () {\n      self.$container.removeClass('select2-container--disabled');\n    });\n\n    this.on('disable', function () {\n      self.$container.addClass('select2-container--disabled');\n    });\n\n    this.on('blur', function () {\n      self.$container.removeClass('select2-container--focus');\n    });\n\n    this.on('query', function (params) {\n      if (!self.isOpen()) {\n        self.trigger('open', {});\n      }\n\n      this.dataAdapter.query(params, function (data) {\n        self.trigger('results:all', {\n          data: data,\n          query: params\n        });\n      });\n    });\n\n    this.on('query:append', function (params) {\n      this.dataAdapter.query(params, function (data) {\n        self.trigger('results:append', {\n          data: data,\n          query: params\n        });\n      });\n    });\n\n    this.on('keypress', function (evt) {\n      var key = evt.which;\n\n      if (self.isOpen()) {\n        if (key === KEYS.ESC || key === KEYS.TAB ||\n            (key === KEYS.UP && evt.altKey)) {\n          self.close();\n\n          evt.preventDefault();\n        } else if (key === KEYS.ENTER) {\n          self.trigger('results:select', {});\n\n          evt.preventDefault();\n        } else if ((key === KEYS.SPACE && evt.ctrlKey)) {\n          self.trigger('results:toggle', {});\n\n          evt.preventDefault();\n        } else if (key === KEYS.UP) {\n          self.trigger('results:previous', {});\n\n          evt.preventDefault();\n        } else if (key === KEYS.DOWN) {\n          self.trigger('results:next', {});\n\n          evt.preventDefault();\n        }\n      } else {\n        if (key === KEYS.ENTER || key === KEYS.SPACE ||\n            (key === KEYS.DOWN && evt.altKey)) {\n          self.open();\n\n          evt.preventDefault();\n        }\n      }\n    });\n  };\n\n  Select2.prototype._syncAttributes = function () {\n    this.options.set('disabled', this.$element.prop('disabled'));\n\n    if (this.options.get('disabled')) {\n      if (this.isOpen()) {\n        this.close();\n      }\n\n      this.trigger('disable', {});\n    } else {\n      this.trigger('enable', {});\n    }\n  };\n\n  /**\n   * Override the trigger method to automatically trigger pre-events when\n   * there are events that can be prevented.\n   */\n  Select2.prototype.trigger = function (name, args) {\n    var actualTrigger = Select2.__super__.trigger;\n    var preTriggerMap = {\n      'open': 'opening',\n      'close': 'closing',\n      'select': 'selecting',\n      'unselect': 'unselecting'\n    };\n\n    if (args === undefined) {\n      args = {};\n    }\n\n    if (name in preTriggerMap) {\n      var preTriggerName = preTriggerMap[name];\n      var preTriggerArgs = {\n        prevented: false,\n        name: name,\n        args: args\n      };\n\n      actualTrigger.call(this, preTriggerName, preTriggerArgs);\n\n      if (preTriggerArgs.prevented) {\n        args.prevented = true;\n\n        return;\n      }\n    }\n\n    actualTrigger.call(this, name, args);\n  };\n\n  Select2.prototype.toggleDropdown = function () {\n    if (this.options.get('disabled')) {\n      return;\n    }\n\n    if (this.isOpen()) {\n      this.close();\n    } else {\n      this.open();\n    }\n  };\n\n  Select2.prototype.open = function () {\n    if (this.isOpen()) {\n      return;\n    }\n\n    this.trigger('query', {});\n  };\n\n  Select2.prototype.close = function () {\n    if (!this.isOpen()) {\n      return;\n    }\n\n    this.trigger('close', {});\n  };\n\n  Select2.prototype.isOpen = function () {\n    return this.$container.hasClass('select2-container--open');\n  };\n\n  Select2.prototype.hasFocus = function () {\n    return this.$container.hasClass('select2-container--focus');\n  };\n\n  Select2.prototype.focus = function (data) {\n    // No need to re-trigger focus events if we are already focused\n    if (this.hasFocus()) {\n      return;\n    }\n\n    this.$container.addClass('select2-container--focus');\n    this.trigger('focus', {});\n  };\n\n  Select2.prototype.enable = function (args) {\n    if (this.options.get('debug') && window.console && console.warn) {\n      console.warn(\n        'Select2: The `select2(\"enable\")` method has been deprecated and will' +\n        ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' +\n        ' instead.'\n      );\n    }\n\n    if (args == null || args.length === 0) {\n      args = [true];\n    }\n\n    var disabled = !args[0];\n\n    this.$element.prop('disabled', disabled);\n  };\n\n  Select2.prototype.data = function () {\n    if (this.options.get('debug') &&\n        arguments.length > 0 && window.console && console.warn) {\n      console.warn(\n        'Select2: Data can no longer be set using `select2(\"data\")`. You ' +\n        'should consider setting the value instead using `$element.val()`.'\n      );\n    }\n\n    var data = [];\n\n    this.dataAdapter.current(function (currentData) {\n      data = currentData;\n    });\n\n    return data;\n  };\n\n  Select2.prototype.val = function (args) {\n    if (this.options.get('debug') && window.console && console.warn) {\n      console.warn(\n        'Select2: The `select2(\"val\")` method has been deprecated and will be' +\n        ' removed in later Select2 versions. Use $element.val() instead.'\n      );\n    }\n\n    if (args == null || args.length === 0) {\n      return this.$element.val();\n    }\n\n    var newVal = args[0];\n\n    if ($.isArray(newVal)) {\n      newVal = $.map(newVal, function (obj) {\n        return obj.toString();\n      });\n    }\n\n    this.$element.val(newVal).trigger('change');\n  };\n\n  Select2.prototype.destroy = function () {\n    this.$container.remove();\n\n    if (this.$element[0].detachEvent) {\n      this.$element[0].detachEvent('onpropertychange', this._sync);\n    }\n\n    if (this._observer != null) {\n      this._observer.disconnect();\n      this._observer = null;\n    } else if (this.$element[0].removeEventListener) {\n      this.$element[0]\n        .removeEventListener('DOMAttrModified', this._sync, false);\n    }\n\n    this._sync = null;\n\n    this.$element.off('.select2');\n    this.$element.attr('tabindex', this.$element.data('old-tabindex'));\n\n    this.$element.removeClass('select2-hidden-accessible');\n    this.$element.attr('aria-hidden', 'false');\n    this.$element.removeData('select2');\n\n    this.dataAdapter.destroy();\n    this.selection.destroy();\n    this.dropdown.destroy();\n    this.results.destroy();\n\n    this.dataAdapter = null;\n    this.selection = null;\n    this.dropdown = null;\n    this.results = null;\n  };\n\n  Select2.prototype.render = function () {\n    var $container = $(\n      '<span class=\"select2 select2-container\">' +\n        '<span class=\"selection\"></span>' +\n        '<span class=\"dropdown-wrapper\" aria-hidden=\"true\"></span>' +\n      '</span>'\n    );\n\n    $container.attr('dir', this.options.get('dir'));\n\n    this.$container = $container;\n\n    this.$container.addClass('select2-container--' + this.options.get('theme'));\n\n    $container.data('element', this.$element);\n\n    return $container;\n  };\n\n  return Select2;\n});\n\nS2.define('jquery-mousewheel',[\n  'jquery'\n], function ($) {\n  // Used to shim jQuery.mousewheel for non-full builds.\n  return $;\n});\n\nS2.define('jquery.select2',[\n  'jquery',\n  'jquery-mousewheel',\n\n  './select2/core',\n  './select2/defaults'\n], function ($, _, Select2, Defaults) {\n  if ($.fn.select2 == null) {\n    // All methods that should return the element\n    var thisMethods = ['open', 'close', 'destroy'];\n\n    $.fn.select2 = function (options) {\n      options = options || {};\n\n      if (typeof options === 'object') {\n        this.each(function () {\n          var instanceOptions = $.extend(true, {}, options);\n\n          var instance = new Select2($(this), instanceOptions);\n        });\n\n        return this;\n      } else if (typeof options === 'string') {\n        var ret;\n\n        this.each(function () {\n          var instance = $(this).data('select2');\n\n          if (instance == null && window.console && console.error) {\n            console.error(\n              'The select2(\\'' + options + '\\') method was called on an ' +\n              'element that is not using Select2.'\n            );\n          }\n\n          var args = Array.prototype.slice.call(arguments, 1);\n\n          ret = instance[options].apply(instance, args);\n        });\n\n        // Check if we should be returning `this`\n        if ($.inArray(options, thisMethods) > -1) {\n          return this;\n        }\n\n        return ret;\n      } else {\n        throw new Error('Invalid arguments for Select2: ' + options);\n      }\n    };\n  }\n\n  if ($.fn.select2.defaults == null) {\n    $.fn.select2.defaults = Defaults;\n  }\n\n  return Select2;\n});\n\n  // Return the AMD loader configuration so it can be used outside of this file\n  return {\n    define: S2.define,\n    require: S2.require\n  };\n}());\n\n  // Autoload the jQuery bindings\n  // We know that all of the modules exist above this, so we're safe\n  var select2 = S2.require('jquery.select2');\n\n  // Hold the AMD module references on the jQuery function that was just loaded\n  // This allows Select2 to use the internal loader outside of this file, such\n  // as in the language files.\n  jQuery.fn.select2.amd = S2;\n\n  // Return the Select2 instance for anyone who is importing it.\n  return select2;\n}));\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/static/css/backend.css",
    "content": ".s-page{display:none;position:fixed;top:60px;bottom:0;right:0;left:300px;background:#fff;overflow:auto;box-shadow:-2px 0 3px #ddd;padding:25px 20px}.s-page .close-spage{position:absolute;right:20px;top:20px;font-size:22px;color:#5f5e6a}.s-page .close-spage:hover{text-decoration:none}html,body,#bd{height:100%;background:#e6e8ee}#hd{position:absolute;left:0;right:0;top:0}.main-wrap-bk{padding-top:60px;height:100%}.main-wrap-bk .bd-content-wrap{height:100%;overflow:auto}.page{background:#fff}.header-nav .header-categories li.menu-item h2{line-height:63px}.login-user{position:relative;float:right;margin-right:11px;padding:0 8px;cursor:pointer;color:#fff}.login-user a{color:#fff}.login-user a:hover{text-decoration:none}.login-user .user-opt-panel{display:none;position:absolute;left:-1px;right:-1px;top:65px;background:#fff;z-index:111;border:1px solid #e1e1e1;box-shadow:1px 1px 2px #ddd;border-top:none}.login-user:hover{background:#fff;color:#000}.login-user:hover a{color:#000}.login-user:hover .user-opt-panel{display:block}.login-user:hover .user-opt-panel li{height:34px;line-height:34px}.login-user:hover .user-opt-panel li a{display:block;padding:0 20px}.login-user:hover .user-opt-panel li a .iconfont{margin-right:10px}.login-user:hover .user-opt-panel li.div-line{height:46px;line-height:46px;border-top:1px solid #e3e3e3}.login-user:hover .user-opt-panel li.div-line a{padding:0 20px}.login-user:hover .user-opt-panel li:hover{background:#00a2ca;color:#fff}.login-user:hover .user-opt-panel li:hover a{color:#fff}.user-message{float:right}.user-message .label{margin:0 15px}.header-nav{position:relative;z-index:1111}.bk-area{padding:15px 20px;background:#f0f0f0;border:1px solid #d9d9d9}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/static/css/page/backend/account_center.css",
    "content": ".basic-info{height:334px;background-color:#fff;padding:0 20px;margin-bottom:20px}.basic-info .info-title{height:60px;line-height:60px;color:#000;font-size:16px;font-weight:bold}.basic-info .info-title .modify{float:right;font-size:12px}.basic-info .search-box{border-bottom:0}.basic-info .form-kv{margin-top:8px}.basic-info .form-kv .form-kv-label{width:110px;text-align:right}.basic-info .form-kv .form-content span{display:inline-block;width:192px}.basic-info .form-kv .form-content span.status{color:#5dad41}.basic-info .form-kv .form-content i{color:#5dad41;margin-right:3px}.safe-setting{height:334px;background-color:#fff;padding:0 20px}.safe-setting .info-title{height:60px;line-height:60px;color:#000;font-size:16px;font-weight:bold}.safe-setting .search-box{border-bottom:0}.safe-setting .form-kv{margin-top:8px;margin-bottom:20px;padding-bottom:20px}.safe-setting .form-kv .form-kv-label{width:110px;text-align:right;font-weight:bold;font-size:16px;color:#000}.safe-setting .form-kv .form-content{font-size:12px}.safe-setting .form-kv .form-content .content-value{float:left;width:472px;line-height:24px;margin-right:70px;margin-top:3px}.safe-setting .form-kv .form-content .content-value span{float:none;color:#008eb7}.safe-setting .form-kv .form-content span{float:left;color:#5dad41;margin-right:10px}.safe-setting .form-kv .form-content span.no{color:#e0492b}.safe-setting .form-kv .form-content i{float:left;color:#5dad41;margin-right:10px}.safe-setting .form-kv .form-content i.no{color:#e0492b}.safe-setting .form-kv .form-content a{float:left}.safe-setting .form-kv:first-child{border-bottom:1px dashed #ddd}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/static/css/page/backend/login.css",
    "content": ".logo {\n    height:74px;\n    line-height:74px\n}\n.logo h1 {\n    float:left\n}\n.logo h1 a {\n    display:block;\n    height:74px;\n    padding-left:170px;\n    line-height:80px;\n    font-weight:bold;\n    background:url('../../../images/backend/login/login_logo.png?1462242749') left center no-repeat;\n    font-size:18px;\n    color:#000\n}\n.logo h1 a:hover {\n    text-decoration:none\n}\n.logo .head-link {\n    float:right\n}\n.logo .head-link li {\n    float:left;\n    margin-left:20px;\n    font-size:12px\n}\n.logo .head-link li a {\n    color:#808080\n}\n.login-bd {\n    margin-bottom:38px;\n    height:529px;\n    background:#00a2ca\n}\n.login-bd .main-content {\n    position:relative;\n    height:100%;\n    background:url('../../../images/backend/login/loginbg.png?1462242749') no-repeat\n}\n.login-bd .input-box {\n    position:absolute;\n    right:80px;\n    top:50%;\n    margin-top:-200px;\n    background:#fff;\n    box-shadow:2px 2px 3px #696363, -2px 0 3px #696363\n}\n.login-bd .input-box .input-hd {\n    margin-top:22px;\n    padding:0 10px;\n    border-left:4px solid #fc880c;\n    font-size:22px;\n    color:#000\n}\n.login-bd .input-box .input-hd h2 {\n    padding-bottom:8px;\n    border-bottom:1px solid #d9d9d9;\n    font-size:20px\n}\n.login-bd .input-box .alert {\n    margin-bottom:10px;\n    height:26px;\n    line-height:26px;\n    font-size:12px\n}\n.login-bd .input-box .input-area {\n    padding:0 22px;\n    padding-top:20px\n}\n.login-bd .input-box .input-area .input-item {\n    margin-bottom:15px\n}\n.login-bd .input-box .input-area .input-item p {\n    margin-bottom:5px;\n    font-size:12px;\n    font-weight:bold\n}\n.login-bd .input-box .input-area .input-item img {\n    cursor:pointer;\n    width:98px;\n    height:32px\n}\n.login-bd .input-box input {\n    padding:0 10px;\n    border:1px solid #cacaca;\n    width:264px;\n    height:32px;\n    outline:none;\n    background:url('../../../images/backend/login/logininputbg.png?1462242749');\n    border-radius:3px\n}\n.login-bd .input-box .img-code {\n    float:left;\n    width:160px;\n    margin-right:5px;\n    border-radius:3px\n}\n.login-bd .input-box .login-btn {\n    display:block;\n    width:100%;\n    height:36px;\n    text-align:center;\n    line-height:36px;\n    background:#00a2ca;\n    border-radius:4px;\n    border:none;\n    color:#fff;\n    cursor:pointer;\n    font-size:16px;\n    outline:none\n}\n.login-bd .input-box .reg {\n    padding:22px;\n    text-align:right\n}\n.login-bd .input-box .reg a {\n    margin-left:10px\n}\n.login-ft {\n    padding-top:20px;\n    padding-bottom:35px;\n    border-top:1px solid #e5e5e5;\n    font-size:12px\n}\n.login-ft .footer-copyright {\n    text-align:center\n}\n.login-ft .footer-copyright p {\n    color:#999;\n    margin-top:10px\n}\n.login-ft .footer-copyright p:first-child {\n    margin-top:0\n}\n.login-ft .footer-copyright .links a {\n    margin-left:15px;\n    color:#666666\n}\n.login-ft .footer-copyright .links a:first-child {\n    margin-left:0\n}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/static/css/page/backend/order_manage.css",
    "content": ".ip-manage{padding:25px}.ip-manage .search-box .form-kv{float:left;margin-bottom:5px;padding-left:120px;margin-top:0;width:28%;height:32px;line-height:32px}.ip-manage .search-box .form-kv:first-child{width:100%}.ip-manage .search-box .form-kv .form-kv-label{width:120px;margin-left:-120px}.ip-manage .search-box .form-kv select,.ip-manage .search-box .form-kv input{width:160px}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/static/css/style.css",
    "content": "﻿html{color:#333;background:#fff;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;text-rendering:optimizelegibility}body{position:relative;font-size:14px;min-width:1200px}html.borderbox *,html.borderbox *:before,html.borderbox *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}body,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td,hr,button,article,aside,details,figcaption,figure,footer,header,menu,nav,section{margin:0;padding:0}article,aside,details,figcaption,figure,footer,header,menu,nav,section{display:block}audio,canvas,video{display:inline-block}body,button,input,select,textarea{font-family:Arial, Microsoft Yahei, Microsoft Sans Serif, WenQuanYi Micro Hei, sans}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}blockquote{position:relative;color:#999;font-weight:400;border-left:1px solid #1abc9c;padding-left:1em;margin:1em 3em 1em 2em}@media only screen and (max-width: 640px){blockquote{margin:1em 0}}acronym,abbr{border-bottom:1px dotted;font-variant:normal}abbr{cursor:help}del{text-decoration:line-through}address,caption,cite,code,dfn,em,th,var{font-style:normal;font-weight:400}ul,ol{list-style:none}caption,th{text-align:left}q:before,q:after{content:''}sub,sup{font-size:75%;line-height:0;position:relative}:root sub,:root sup{vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}a{color:#14a9ce;cursor:pointer}a:hover{text-decoration:underline}.typo a{border-bottom:1px solid #14a9ce}.typo a:hover{border-bottom-color:#555;color:#555;text-decoration:none}ins,a{text-decoration:none}u,.typo-u{text-decoration:underline}mark{background:#fffdd1;border-bottom:1px solid #ffedce;padding:2px;margin:0 5px}pre,code,pre tt{font-family:Courier, 'Courier New', monospace}pre{background:#f8f8f8;border:1px solid #ddd;padding:1em 1.5em;display:block;-webkit-overflow-scrolling:touch}hr{border:none;border-bottom:1px solid #cfcfcf;margin-bottom:0.8em;height:10px}small,.typo-small,figcaption{font-size:0.9em;color:#888}strong,b{font-weight:bold;color:#000}[draggable]{cursor:move}.clearfix:before,.clearfix:after{content:\"\";display:table}.clearfix:after{clear:both}.clearfix{zoom:1}.textwrap,.textwrap td,.textwrap th{word-wrap:break-word;word-break:break-all}.textwrap-table{table-layout:fixed}.serif{font-family:Palatino, Optima, Georgia, serif}.typo p,.typo pre,.typo ul,.typo ol,.typo dl,.typo form,.typo hr,.typo table,.typo-p,.typo-pre,.typo-ul,.typo-ol,.typo-dl,.typo-form,.typo-hr,.typo-table,blockquote{margin-bottom:1.2em}h1,h2,h3,h4,h5,h6{font-family:Arial, Microsoft Yahei, Microsoft Sans Serif, WenQuanYi Micro Hei, sans;font-weight:100;color:#000;line-height:1.35}.typo h1,.typo h2,.typo h3,.typo h4,.typo h5,.typo h6,.typo-h1,.typo-h2,.typo-h3,.typo-h4,.typo-h5,.typo-h6{margin-top:1.2em;margin-bottom:0.6em;line-height:1.35}.typo h1,.typo-h1{font-size:2em}.typo h2,.typo-h2{font-size:1.8em}.typo h3,.typo-h3{font-size:1.6em}.typo h4,.typo-h4{font-size:1.4em}.typo h5,.typo h6,.typo-h5,.typo-h6{font-size:1.2em}.typo ul,.typo-ul{margin-left:1.3em;list-style:disc}.typo ol,.typo-ol{list-style:decimal;margin-left:1.9em}.typo li ul,.typo li ol,.typo-ul ul,.typo-ul ol,.typo-ol ul,.typo-ol ol{margin-bottom:0.8em;margin-left:2em}.typo li ul,.typo-ul ul,.typo-ol ul{list-style:circle}.typo table th,.typo table td,.typo-table th,.typo-table td,.typo table caption{border:1px solid #ddd;padding:0.5em 1em;color:#666}.typo table th,.typo-table th{background:#fbfbfb}.typo table thead th,.typo-table thead th{background:#f1f1f1}.typo table caption{border-bottom:none}.typo-input,.typo-textarea{-webkit-appearance:none;border-radius:0}.typo-em,.typo em,legend,caption{color:#000;font-weight:inherit}.typo-em{position:relative}.typo-em:after{position:absolute;top:0.65em;left:0;width:100%;overflow:hidden;white-space:nowrap;content:\"・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・\"}.typo img{max-width:100%}.impInfo{color:#fc0000}.warn{color:#ff7200}.text-tip{font-size:12px;color:#848484}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.layui-layer{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.layui-layer .layui-layer-content{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.layui-layer-dialog .layui-layer-content{padding:0 20px !important}@font-face{font-family:'iconfont';src:url('../fonts/iconfont.eot?1462242749');src:url('../fonts/iconfont.eot?&1462242749#iefix') format(\"embedded-opentype\"),url('../fonts/iconfont.woff?1462242749') format(\"woff\"),url('../fonts/iconfont.ttf?1462242749') format(\"truetype\"),url('../fonts/iconfont.svg?1462242749#iconfont') format(\"svg\")}.iconfont{font-family:\"iconfont\" !important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-webkit-text-stroke-width:0.2px;-moz-osx-font-smoothing:grayscale}.title-left-line{margin-bottom:20px;padding:0 20px;height:40px;line-height:40px;border-left:4px solid #ff7200;font-size:22px;color:#000}.title-left-line.green{border-left:4px solid #5dad41}.title-bottom-line{margin-bottom:25px;font-size:16px;color:#000;border-bottom:1px solid #dadada}.title-bottom-line span{float:left;border-bottom:2px solid #00a2ca;padding-bottom:8px}.title-left-line-g{margin-bottom:20px;padding:0 13px;height:27px;line-height:27px;border-left:3px solid #63b247;font-size:15px;color:#000}.title-left-line-b{margin-bottom:20px;padding:0 9px;height:30px;line-height:30px;border-left:3px solid #00a2ca;font-size:18px;color:#000}.title-left-line-o{margin-bottom:20px;padding:0 9px;height:30px;line-height:30px;border-left:3px solid #ff7200;font-size:18px;color:#000}.main-content{margin:0 auto;width:1200px}.site-nav{height:35px;line-height:35px;color:#fff;background:#008eb7;font-size:12px}.site-nav .site-notice{float:left;height:35px}.site-nav .site-notice .more-notice{margin-left:20px;color:#7bcee6}.site-nav .site-nav-r-opt{float:right;font-size:12px}.site-nav .site-nav-r-opt li{float:left}.site-nav .site-nav-r-opt li a{color:#fff}.site-nav .site-nav-r-opt li:first-child{margin-right:5px}.site-nav .site-nav-r-opt li:first-child a{padding-right:5px;border-right:1px solid #ddd}.site-nav .site-nav-r-opt li.site-reg{margin-right:10px}.header-nav{height:65px;line-height:65px;background:#00A2CA}.header-nav .main-content,.header-nav .navigation-inner{height:100%}.header-nav .logo h1{float:left;margin:16px 25px 0 15px;width:144px}.header-nav .logo .logo-img{display:inline-block;text-indent:-1000px;width:132px;height:34px;background:url('../images/frontend/logo.png?1462242749') center center no-repeat}.header-nav .header-categories{float:left;height:100%}.header-nav .header-categories .menu{height:100%}.header-nav .header-categories li.menu-item{position:relative;float:left;height:100%}.header-nav .header-categories li.menu-item h2{line-height:65px}.header-nav .header-categories li.menu-item a{display:block;padding:0 25px;color:#fff;font-size:18px;cursor:pointer}.header-nav .header-categories li.menu-item a:hover{text-decoration:none}.header-nav .header-categories li.menu-item.selected,.header-nav .header-categories li.menu-item :hover{background:#0196bd}.header-nav .header-categories li.menu-item.has-sub:hover{background:#f7fcfd;color:#000}.header-nav .header-categories li.menu-item.has-sub:hover h2{background:#f7fcfd}.header-nav .header-categories li.menu-item.has-sub:hover h2>a{color:#000;background:#f7fcfd}.header-nav .header-categories li.menu-item.has-sub:hover .menu-item-panel{display:block}.header-nav .header-categories li.menu-item .menu-item-panel{display:none;position:absolute;left:-1px;width:625px;padding:20px 25px;top:65px;background:#f7fcfd;box-shadow:1px 1px 2px #ddd}.header-nav .header-categories li.menu-item .menu-item-panel .submenu-col{float:left;width:195px}.header-nav .header-categories li.menu-item .menu-item-panel .submenu-col.col2{width:150px}.header-nav .header-categories li.menu-item .menu-item-panel .submenu-col.col3{width:230px}.header-nav .header-categories li.menu-item .menu-item-panel .submenu-col h3{margin-bottom:5px;font-size:12px;color:#00a2ca}.header-nav .header-categories li.menu-item .menu-item-panel .submenu-col h3 .iconfont{color:#b2bac2;font-size:16px}.header-nav .header-categories li.menu-item .menu-item-panel .submenu-col h3 span{color:#00a2ca}.header-nav .header-categories li.menu-item .menu-item-panel .submenu-col .submenu-item{margin-top:20px}.header-nav .header-categories li.menu-item .menu-item-panel .submenu-col .submenu-item:first-child{margin-top:0}.header-nav .header-categories li.menu-item .menu-item-panel .submenu-col .submenu-item a{padding:0}.header-nav .header-categories li.menu-item .menu-item-panel .submenu-col .submenu{height:26px;line-height:26px}.header-nav .header-categories li.menu-item .menu-item-panel .submenu-col .submenu a{padding-left:18px;font-size:12px;color:#000}.header-nav .header-categories li.menu-item .menu-item-panel .submenu-col .submenu a:hover{text-decoration:underline}.header-nav .header-categories li.menu-item .menu-item-panel .submenu-col:hover{background:#f7fcfd}.header-nav .header-categories li.menu-item .menu-item-panel .submenu-col *:hover{background:#f7fcfd}.header-nav .header-categories li.menu-item:hover .menu-item-panel{display:block}.main-wrap{padding-left:230px}.main-wrap .sider-bar{float:left;margin-left:-230px}.main-wrap .bd-content-wrap{float:left;width:100%}.main-wrap .bd-content-wrap .bd-content{padding:20px}.sider-bar{width:230px;border:1px solid #e2e2e2;border-top:none;background:#f3f3f3;border-bottom:none}.sider-bar .sider-nav{background:#f3f3f3}.sider-bar .sider-nav .sider-nav-item{border-top:1px solid #dadada}.sider-bar .sider-nav .sider-nav-item h3 a{display:block;padding:0 15px;font-size:16px;line-height:66px;height:66px;color:#000}.sider-bar .sider-nav .sider-nav-item h3 a .iconfont{float:left}.sider-bar .sider-nav .sider-nav-item h3 a .iconfont.arrow-down{display:none}.sider-bar .sider-nav .sider-nav-item h3 span{float:left;margin-left:10px;width:155px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sider-bar .sider-nav .sider-nav-item .sider-nav-s{display:none;padding-bottom:20px}.sider-bar .sider-nav .sider-nav-item .sider-nav-s li{height:36px;line-height:36px;font-size:14px;padding:0 40px}.sider-bar .sider-nav .sider-nav-item .sider-nav-s li a{color:#000}.sider-bar .sider-nav .sider-nav-item .sider-nav-s li a:hover{text-decoration:none}.sider-bar .sider-nav .sider-nav-item .sider-nav-s li.current{background:#00A2CA}.sider-bar .sider-nav .sider-nav-item .sider-nav-s li.current a{color:#fff}.sider-bar .sider-nav .sider-nav-item.current .iconfont.arrow-right{display:none}.sider-bar .sider-nav .sider-nav-item.current .iconfont.arrow-down{display:inline}.sider-bar .sider-nav .sider-nav-item.current .sider-nav-s{display:block}.sider-bar-bk{width:184px}.main-wrap-bk{padding-left:184px}.main-wrap-bk .sider-bar-bk{float:left;margin-left:-184px;width:184px}.main-wrap-bk .bd-content-wrap{float:left;width:100%}.main-wrap-bk .bd-content-wrap .bd-content{padding:20px}.sider-bar-bk{height:100%;background:#293038}.sider-bar-bk .sider-bar-hd{padding:0 10px;line-height:40px;font-size:16px;height:40px;color:#fff;background:#394555}.sider-bar-bk .sider-bar-hd .iconfont{font-size:16px}.sider-bar-bk .sider-nav .sider-nav-item{background:#293038;color:#fff}.sider-bar-bk .sider-nav .sider-nav-item h3 span{float:left;margin-left:10px;width:122px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sider-bar-bk .sider-nav .sider-nav-item h3 a{display:block;padding:0 10px;font-size:14px;line-height:40px;height:40px;color:#fff}.sider-bar-bk .sider-nav .sider-nav-item h3 a .iconfont{float:left}.sider-bar-bk .sider-nav .sider-nav-item h3 a .iconfont.arrow-down{display:none}.sider-bar-bk .sider-nav .sider-nav-item a{color:#fff}.sider-bar-bk .sider-nav .sider-nav-item a:hover{text-decoration:none}.sider-bar-bk .sider-nav .sider-nav-item:hover{background:#22282e}.sider-bar-bk .sider-nav .sider-nav-item .sider-nav-s{display:none;padding-bottom:20px}.sider-bar-bk .sider-nav .sider-nav-item .sider-nav-s li{height:40px;line-height:40px;font-size:14px;padding:0 10px 0 40px}.sider-bar-bk .sider-nav .sider-nav-item .sider-nav-s li a{color:#fff}.sider-bar-bk .sider-nav .sider-nav-item .sider-nav-s li a:hover{text-decoration:none}.sider-bar-bk .sider-nav .sider-nav-item .sider-nav-s li.current{background:#00A2CA;border-left:2px solid #ff7200}.sider-bar-bk .sider-nav .sider-nav-item .sider-nav-s li.current a{color:#fff}.sider-bar-bk .sider-nav .sider-nav-item.current{background:#22282e}.sider-bar-bk .sider-nav .sider-nav-item.current .sider-nav-s{display:block}.sider-bar-bk .sider-nav .sider-nav-item.current .iconfont.arrow-right{display:none}.sider-bar-bk .sider-nav .sider-nav-item.current .iconfont.arrow-down{display:inline}.login-ft{padding-top:20px;padding-bottom:35px;border-top:1px solid #e5e5e5;font-size:12px}.login-ft .footer-copyright{text-align:center}.login-ft .footer-copyright p{color:#999;margin-top:10px}.login-ft .footer-copyright p:first-child{margin-top:0}.login-ft .footer-copyright .links a{margin-left:15px;color:#666666}.login-ft .footer-copyright .links a:first-child{margin-left:0}.nav-tabs li{float:left;margin-right:4px}.nav-tabs li a{display:block;padding:0 25px;height:50px;line-height:50px;background:#546478;color:#fff;font-size:16px;border-right:1px solid #546478}.nav-tabs li.active a,.nav-tabs li:hover a{text-decoration:none;border-top:3px solid #63b247;background:#fff;color:#6b6b6b;border-right:1px solid #ddd}.nav-tabs.style2{background:#fff;border-bottom:1px solid #cecece}.nav-tabs.style2 li{padding-top:10px;margin-left:1px}.nav-tabs.style2 li:first-child{margin-left:25px}.nav-tabs.style2 li a{position:relative;top:1px;height:36px;line-height:36px;font-size:12px;border-top:1px solid #cecece;border-left:1px solid #cecece;border-right:1px solid #cecece;color:#000000;background:#f0f0f0}.nav-tabs.style2 li:hover a{border-top:1px solid #00a2ca;color:#00a2ca}.nav-tabs.style2 li.active a{border-top:2px solid #00a2ca;color:#00a2ca;background:#fff}.tabs{height:54px;line-height:54px;border-bottom:1px solid #e5e5e5;margin-bottom:40px}.tabs .tab-item{float:left;font-size:14px;margin-right:25px;color:#000;cursor:pointer}.tabs .tab-item.current{border-bottom:2px solid #00a2ca;color:#00a2ca;line-height:52px}.form-kv{padding-left:120px;margin-top:20px}.form-kv:first-child{margin-top:0}.form-kv .form-kv-label{float:left;width:120px;margin-left:-120px;line-height:32px}.form-kv .form-content{float:left;width:100%;line-height:32px}.form-kv .form-content label.form-ck{margin-right:20px}.form-kv.leter3{padding-left:55px !important}.form-kv.leter3 .form-kv-label{width:55px !important;margin-left:-55px !important}.form-kv.leter4{padding-left:65px !important}.form-kv.leter4 .form-kv-label{width:65px !important;margin-left:-65px !important}input[type=text],textarea{padding:0 10px;height:32px;border:1px solid #b3b3b3;outline:none}textarea{resize:none;height:80px;width:300px}.date-pick{float:left;position:relative}.date-pick input{width:190px;padding-right:30px}.date-pick i{position:absolute;right:6px;top:1px;font-size:18px;cursor:pointer}.date-pick i:hover{color:#0c9d72}.divsion{float:left;margin:0 8px}.ck-radio span{float:left;margin-right:8px;padding:0 14px;height:30px;line-height:30px;text-align:center;color:#000;background:#d5d5d5;cursor:pointer}.ck-radio input[type=\"radio\"],.ck-radio input[type=\"checkbox\"]{display:none}.ck-radio input[type=\"radio\"]:checked ~ span,.ck-radio input[type=\"checkbox\"]:checked ~ span{background:#00a2ca;color:#fff}.ck-radio span:hover{text-decoration:none;background:#00a2ca;color:#fff}.kv-item{padding-left:90px;margin-top:20px}.kv-item:first-child{margin-top:0}.kv-item .kv-label{float:left;width:90px;margin-left:-90px;line-height:32px;color:#717171}.kv-item .kv-content{float:left;width:100%;line-height:32px}.kv-item .kv-content label.form-ck{margin-right:20px}.a-upload{font-size:14px;padding:0 20px;height:30px;line-height:30px;position:relative;cursor:pointer;color:#000;background:#fafafa;border:1px solid #c2c2c2;border-radius:4px;overflow:hidden;display:inline-block;*display:inline;*zoom:1;text-decoration:none}.a-upload input{position:absolute;font-size:100px;right:0;top:0;opacity:0;filter:alpha(opacity=0);cursor:pointer}.a-upload:hover{color:#444;background:#eee;border-color:#ccc;text-decoration:none}.btn{padding:0 12px;height:32px;line-height:32px;background:#63b247;color:#fff;border:none;cursor:pointer;outline:none;font-weight:normal}.btn.btn-blue{background:#00a2ca;border-radius:4px}.btn .iconfont{margin-right:5px;color:#fff !important}.btn.btn-big{height:40px;line-height:40px;background:#f0f0f0;border:1px solid #cecece;color:#000;border-radius:5px;padding:0 32px}.btn.btn-green{background:#5dad41;border-color:#5dad41;color:#fff}.btn.btn-default{background:#f0f0f0;color:#000;border:1px solid #cecece;border-radius:4px}.btn.btn-default .iconfont{color:#000 !important}.btn.btn-red{border-radius:4px;background:#e0492b}.btn-group .btn{margin-right:5px}.grid{margin-bottom:10px}.grid .grid-opt{margin-bottom:10px}.grid .grid-opt .grid-opt-item{float:right}.grid .grid-opt .grid-opt-item:hover{text-decoration:none}.grid .grid-opt .btn{float:left;margin-right:5px}.grid table{width:100%;border:1px solid #d9d9d9}.grid thead th{padding-left:7px;height:37px;background:#f0f0f0;border-left:1px solid #d9d9d9;border-bottom:2px solid #d9d9d9;position:relative}.grid thead th:first-child{border-left:none}.grid thead th i{color:#626262;cursor:pointer;font-size:18px;display:inline-block;text-align:center;line-height:0px;text-indent:-6px}.grid thead th i.current{color:#00a2ca}.grid thead th i.up{position:absolute;right:10px;width:6px;height:6px;top:10px}.grid thead th i.down{position:absolute;right:10px;width:6px;height:6px;top:22px}.grid tbody td{padding-left:7px;height:35px;border-top:1px solid #d9d9d9}.grid tbody td.opt a{margin-left:10px}.grid tbody td.opt a:first-child{margin-left:0}.grid tbody td.opt a.disabled{color:#000}.grid tbody td.opt a.disabled:hover{text-decoration:none;cursor:default}.grid .tr-hover td{background:#f2f2f2}.grid .num,.grid .ck{text-align:center}table.kv-table{width:100%}table.kv-table td{height:36px;padding:10px;border:1px solid #dadada}table.kv-table .kv-label{width:114px;background:#f5f5f5}.pagination{line-height:36px}.pagination .pagin-links{float:right}.pagination a,.pagination .current{float:left;margin-left:5px;width:36px;height:36px;line-height:36px;background:#ededed;border:1px solid #dadada;text-align:center;color:#858585}.pagination a:hover,.pagination .current:hover{text-decoration:none;background:#fff;color:#858585}.pagination .current{background:#00a2ca;color:#fff;border-color:#00a2ca}.pagination span{float:left;margin-left:5px}.pagination .page-btn{border-left:none}.pagination .page-btn:first-child{border-left:1px solid #e4e4e4}.pagination .page-btn.active{cursor:default;border:none;background:none;color:#00a2ca}.pagination .page-btn.active+.page-btn{border:1px solid #e4e4e4}.pagination .extra{float:left}.pagination .extra input{float:left}.pagination .prev i,.pagination .next i{display:inline-block;font-size:12px;vertical-align:5%;width:15px}.pagination .prev.disabled,.pagination .next.disabled{cursor:default;color:#ababab}.pagination .dot{width:17px;background:none;border:none;color:#9c9c9c}.pagination .extra{padding:0 0 0 15px}.pagination .extra span{background:none;border:none;font-size:12px;color:#b1b1b1;width:auto}.pagination .extra input{margin:0 8px;width:38px;height:38px;border:1px solid #ddd;color:#171212;text-align:center;outline:none}.pagination .extra .submit{margin:0 0 0 10px;padding:0 10px;height:38px;background:#f6f6f6;border:1px solid #e4e4e4;text-align:center;color:#171212;cursor:pointer}.pagination .pxofy{float:left;color:#838383}.pagination .goto{float:right;color:#838383;margin-left:2px}.pagination .goto span.text{margin-right:5px}.pagination .goto input{float:left;width:48px;height:32px;border:1px solid #b3b3b3;margin-top:2px}.pagination .goto button{display:none}.pagination .items-per{float:left;color:#838383;margin-left:10px}.pagination .items-per select{display:inline-block;height:36px;border:1px solid #b3b3b3;width:48px;text-align:center}.label{display:inline;padding:0 8px;font-size:14px;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:4px;background:#ff7200;cursor:pointer}.uc-slider .unit i{background:url('../images/ui/u-silder/month_chinese.png?1462242749') no-repeat}.uc-slider{position:relative;display:inline-block;height:26px;background-color:#f9f9f9;padding:0 7px;border-radius:4px;vertical-align:bottom;*vertical-align:text-bottom}.uc-slider .range{position:relative;height:26px;background-color:#f9f9f9;border-radius:4px}.uc-slider .range .block{display:inline-block;height:24px}.uc-slider .block div{border-right:solid 1px #e6e6e6;height:24px;padding:1px 10px 1px 0;text-align:right}.uc-slider .block span{float:right;display:inline;line-height:2;font-size:12px;color:#999}.uc-slider .block .last{border-width:0;padding-right:11px}.uc-slider .container{position:absolute;left:-7px;top:0;width:0%;height:24px;border:solid 1px #6dc5dc;padding:0 6px;overflow:hidden;background-color:#eafbfe;border-radius:4px}.uc-slider .container .current{height:24px;overflow:hidden;width:100%;background-color:#eafbfe;border-radius:4px;white-space:nowrap}.uc-slider .current .unit{display:inline-block;margin-left:0;height:24px}.uc-slider .unit div{border-right:solid 1px #d0eaf9;height:24px;padding-right:10px;text-align:right}.uc-slider .unit span{float:right;display:inline;height:24px;line-height:2;font-size:12px;color:#c8c1a8;-webkit-transition:color .3s;-moz-transition:color .3s;-ms-transition:color .3s;-o-transition:color .3s}.uc-slider .unit i{float:right;display:none;height:8px;width:13px;overflow:hidden;margin-top:7px}.uc-slider .unit .last{border-width:0;padding-right:11px}.uc-slider .bar{position:absolute;top:0;left:-7px;background-color:#f00;height:26px;overflow:hidden;width:100%;cursor:default;opacity:0;filter:alpha(opacity=0)}.uc-slider .drag{position:absolute;left:-7px;top:-2px;display:block;width:15px;height:30px;padding:9px 0 0 3px;overflow:hidden;border:solid 1px #bbbbbb;background-color:#fff;cursor:default;-webkit-transition:border-color .3s, -webkit-transform .3s;-moz-transition:border-color .3s, -moz-transform .3s;-ms-transition:border-color .3s, -ms-transform .3s;-o-transition:border-color .3s, -o-transform .3s;outline:none;box-shadow:0 1px 5px rgba(0,0,0,0.25);-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1)}.uc-slider .drag:link,.uc-slider .drag:visited{border-color:#ccc}.uc-slider .drag:hover{border-color:#aaa}.uc-slider .drag i{float:left;display:inline;margin:0 0 0 1px;width:1px;height:10px;overflow:hidden;background:#ababab;background:-webkit-linear-gradient(top, #f2f2f2, #ababab, #f2f2f2);background:-moz-linear-gradient(top, #f2f2f2, #ababab, #f2f2f2);background:-o-linear-gradient(top, #f2f2f2, #ababab, #f2f2f2);background:-ms-linear-gradient(top, #f2f2f2, #ababab, #f2f2f2)}.uc-slider .w60{width:60%;*width:59.99%}.uc-slider .w50{width:50%;*width:49.99%}.uc-slider .w25{width:25%;*width:24.99%}.uc-slider .w20{width:20%;*width:19.99%}.duration{width:520px}.uc-slider .mm{width:37px}.uc-slider .yy{width:57px}.uc-input{border:solid 1px #d4d4d4;width:44px;height:12px;padding:6px 4px;font-size:12px;line-height:1;outline:none;border-radius:4px;box-shadow:inset 1px 1px 1px #e8e8e8;color:#000}.select-container{float:left}.iselect-wrapper{float:left;position:relative}.iselect-wrapper select{position:absolute;width:96px;min-height:33px;top:0;left:0;opacity:0;filter:alpha(opacity=0)}.iselect-wrapper .iselwrap-val{display:block;width:84px;padding:0 5px;height:33px;line-height:34px;border:1px solid #c2c2c2;font-size:12px;color:#000;background:#fff url('../images/ui/select-icon.png?1462242749') no-repeat 73px center;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.search-box{margin-bottom:20px;padding-bottom:20px;border-bottom:1px solid #ddd}.process{padding:15px 0 30px 0;}.process .process-item{float:left;width:20%;text-align:center}.process .process-item .process-tip{font-size:12px;color:#858585}.process .process-item .qiu{height:40px;position:relative}.process .process-item .qiu .yuan{position:absolute;left:50%;margin-left:-10px;width:20px;height:20px;background:url('../images/ui/process/yuan.png?1462242749') 20px 0;z-index:2}.process .process-item .qiu .line{position:absolute;top:9px;left:50%;right:0;height:1px;background:#c1c3ca;z-index:1}.process .process-item .qiu .line.line-left{left:0;right:50%}.process .process-item.processed .yuan,.process .process-item.current .yuan{background:url('../images/ui/process/yuan.png?1462242749') 0 0}  .process .process-item.processed .line{background:#63b247}  .process .process-item.current .line-left{background:#63b247}  .alert{margin-bottom:20px;padding:0 10px;height:36px;line-height:36px;border:1px solid #ddd;color:#888}  .alert .close{float:right;font-size:12px;color:#999}  .alert .close:hover{text-decoration:none}  .alert.alert-warning{background:#fff5db;color:#e2ba89;border-color:#ffe195}  .alert.alert-error{background:#fceee8;color:#fc0000;border-color:#fc0000}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/static/js/common.js",
    "content": "window['layer'] && layer.config({\n    extend: ['skin/osa/style.css'], //加载新皮肤\n    skin: 'layer-ext-osa' //一旦设定，所有弹层风格都采用此主题。\n});\n\n$(function() {\n\tif($('.site-nav').size() > 0){\n\t\t$('.sider-bar').height($('.main-wrap').height());\n\t}\n\n\n\t$(document).on('click', '.sider-nav-item', function(){\n\t\tif(!$(this).hasClass('current')){\n\t\t\t$('.sider-nav-item').removeClass('current');\n\t\t\t$(this).addClass('current');\n\t\t}\n\t});\n\n\t$(document).on('click', '.sider-nav-s li', function(){\n\t\tif(!$(this).hasClass('current')){\n\t\t\t$('.sider-nav-s li').removeClass('current');\n\t\t\t$(this).addClass('current');\n\t\t}\n\t});\n\n\t$('.grid tr').hover(function(){\n\t\t$(this).addClass('tr-hover');\n\t}, function(){\n\t\t$(this).removeClass('tr-hover');\n\t});\n});"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/static/js/jquery.cookie.js",
    "content": "/*!\n * jQuery Cookie Plugin v1.4.1\n * https://github.com/carhartl/jquery-cookie\n *\n * Copyright 2006, 2014 Klaus Hartl\n * Released under the MIT license\n */\n(function (factory) {\n\tif (typeof define === 'function' && define.amd) {\n\t\t// AMD\n\t\tdefine(['jquery'], factory);\n\t} else if (typeof exports === 'object') {\n\t\t// CommonJS\n\t\tfactory(require('jquery'));\n\t} else {\n\t\t// Browser globals\n\t\tfactory(jQuery);\n\t}\n}(function ($) {\n\n\tvar pluses = /\\+/g;\n\n\tfunction encode(s) {\n\t\treturn config.raw ? s : encodeURIComponent(s);\n\t}\n\n\tfunction decode(s) {\n\t\treturn config.raw ? s : decodeURIComponent(s);\n\t}\n\n\tfunction stringifyCookieValue(value) {\n\t\treturn encode(config.json ? JSON.stringify(value) : String(value));\n\t}\n\n\tfunction parseCookieValue(s) {\n\t\tif (s.indexOf('\"') === 0) {\n\t\t\t// This is a quoted cookie as according to RFC2068, unescape...\n\t\t\ts = s.slice(1, -1).replace(/\\\\\"/g, '\"').replace(/\\\\\\\\/g, '\\\\');\n\t\t}\n\n\t\ttry {\n\t\t\t// Replace server-side written pluses with spaces.\n\t\t\t// If we can't decode the cookie, ignore it, it's unusable.\n\t\t\t// If we can't parse the cookie, ignore it, it's unusable.\n\t\t\ts = decodeURIComponent(s.replace(pluses, ' '));\n\t\t\treturn config.json ? JSON.parse(s) : s;\n\t\t} catch(e) {}\n\t}\n\n\tfunction read(s, converter) {\n\t\tvar value = config.raw ? s : parseCookieValue(s);\n\t\treturn $.isFunction(converter) ? converter(value) : value;\n\t}\n\n\tvar config = $.cookie = function (key, value, options) {\n\n\t\t// Write\n\n\t\tif (arguments.length > 1 && !$.isFunction(value)) {\n\t\t\toptions = $.extend({}, config.defaults, options);\n\n\t\t\tif (typeof options.expires === 'number') {\n\t\t\t\tvar days = options.expires, t = options.expires = new Date();\n\t\t\t\tt.setTime(+t + days * 864e+5);\n\t\t\t}\n\n\t\t\treturn (document.cookie = [\n\t\t\t\tencode(key), '=', stringifyCookieValue(value),\n\t\t\t\toptions.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE\n\t\t\t\toptions.path    ? '; path=' + options.path : '',\n\t\t\t\toptions.domain  ? '; domain=' + options.domain : '',\n\t\t\t\toptions.secure  ? '; secure' : ''\n\t\t\t].join(''));\n\t\t}\n\n\t\t// Read\n\n\t\tvar result = key ? undefined : {};\n\n\t\t// To prevent the for loop in the first place assign an empty array\n\t\t// in case there are no cookies at all. Also prevents odd result when\n\t\t// calling $.cookie().\n\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\n\t\tfor (var i = 0, l = cookies.length; i < l; i++) {\n\t\t\tvar parts = cookies[i].split('=');\n\t\t\tvar name = decode(parts.shift());\n\t\t\tvar cookie = parts.join('=');\n\n\t\t\tif (key && key === name) {\n\t\t\t\t// If second argument (value) is a function it's a converter...\n\t\t\t\tresult = read(cookie, value);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// Prevent storing a cookie that we couldn't decode.\n\t\t\tif (!key && (cookie = read(cookie)) !== undefined) {\n\t\t\t\tresult[name] = cookie;\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\tconfig.defaults = {};\n\n\t$.removeCookie = function (key, options) {\n\t\tif ($.cookie(key) === undefined) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Must not alter options, thus extending a fresh object...\n\t\t$.cookie(key, '', $.extend({}, options, { expires: -1 }));\n\t\treturn !$.cookie(key);\n\t};\n\n}));\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/static/js/jquery.js",
    "content": "/*!\n * jQuery JavaScript Library v1.7.2\n * http://jquery.com/\n *\n * Copyright 2011, John Resig\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n * Copyright 2011, The Dojo Foundation\n * Released under the MIT, BSD, and GPL Licenses.\n *\n * Date: Wed Mar 21 12:46:34 2012 -0700\n */\n(function( window, undefined ) {\n\n// Use the correct document accordingly with window argument (sandbox)\nvar document = window.document,\n\tnavigator = window.navigator,\n\tlocation = window.location;\nvar jQuery = (function() {\n\n// Define a local copy of jQuery\nvar jQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n\t},\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// A simple way to check for HTML strings or ID strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\tquickExpr = /^(?:[^#<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)/,\n\n\t// Check if a string has a non-whitespace character in it\n\trnotwhite = /\\S/,\n\n\t// Used for trimming whitespace\n\ttrimLeft = /^\\s+/,\n\ttrimRight = /\\s+$/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\n\t// Useragent RegExp\n\trwebkit = /(webkit)[ \\/]([\\w.]+)/,\n\tropera = /(opera)(?:.*version)?[ \\/]([\\w.]+)/,\n\trmsie = /(msie) ([\\w.]+)/,\n\trmozilla = /(mozilla)(?:.*? rv:([\\w.]+))?/,\n\n\t// Matches dashed string for camelizing\n\trdashAlpha = /-([a-z]|[0-9])/ig,\n\trmsPrefix = /^-ms-/,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn ( letter + \"\" ).toUpperCase();\n\t},\n\n\t// Keep a UserAgent string for use with jQuery.browser\n\tuserAgent = navigator.userAgent,\n\n\t// For matching the engine and version of the browser\n\tbrowserMatch,\n\n\t// The deferred used on DOM ready\n\treadyList,\n\n\t// The ready event handler\n\tDOMContentLoaded,\n\n\t// Save a reference to some core methods\n\ttoString = Object.prototype.toString,\n\thasOwn = Object.prototype.hasOwnProperty,\n\tpush = Array.prototype.push,\n\tslice = Array.prototype.slice,\n\ttrim = String.prototype.trim,\n\tindexOf = Array.prototype.indexOf,\n\n\t// [[Class]] -> type pairs\n\tclass2type = {};\n\njQuery.fn = jQuery.prototype = {\n\tconstructor: jQuery,\n\tinit: function( selector, context, rootjQuery ) {\n\t\tvar match, elem, ret, doc;\n\n\t\t// Handle $(\"\"), $(null), or $(undefined)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// The body element only exists once, optimize finding it\n\t\tif ( selector === \"body\" && !context && document.body ) {\n\t\t\tthis.context = document;\n\t\t\tthis[0] = document.body;\n\t\t\tthis.selector = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\t// Are we dealing with HTML string or an ID?\n\t\t\tif ( selector.charAt(0) === \"<\" && selector.charAt( selector.length - 1 ) === \">\" && selector.length >= 3 ) {\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = quickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Verify a match, and that no context was specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\t\t\t\t\tdoc = ( context ? context.ownerDocument || context : document );\n\n\t\t\t\t\t// If a single string is passed in and it's a single tag\n\t\t\t\t\t// just do a createElement and skip the rest\n\t\t\t\t\tret = rsingleTag.exec( selector );\n\n\t\t\t\t\tif ( ret ) {\n\t\t\t\t\t\tif ( jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\t\tselector = [ document.createElement( ret[1] ) ];\n\t\t\t\t\t\t\tjQuery.fn.attr.call( selector, context, true );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tselector = [ doc.createElement( ret[1] ) ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret = jQuery.buildFragment( [ match[1] ], [ doc ] );\n\t\t\t\t\t\tselector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.merge( this, selector );\n\n\t\t\t\t// HANDLE: $(\"#id\")\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || rootjQuery ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.7.2\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\ttoArray: function() {\n\t\treturn slice.call( this, 0 );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = this.constructor();\n\n\t\tif ( jQuery.isArray( elems ) ) {\n\t\t\tpush.apply( ret, elems );\n\n\t\t} else {\n\t\t\tjQuery.merge( ret, elems );\n\t\t}\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" ) {\n\t\t\tret.selector = this.selector + ( this.selector ? \" \" : \"\" ) + selector;\n\t\t} else if ( name ) {\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\t\t}\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tready: function( fn ) {\n\t\t// Attach the listeners\n\t\tjQuery.bindReady();\n\n\t\t// Add the callback\n\t\treadyList.add( fn );\n\n\t\treturn this;\n\t},\n\n\teq: function( i ) {\n\t\ti = +i;\n\t\treturn i === -1 ?\n\t\t\tthis.slice( i ) :\n\t\t\tthis.slice( i, i + 1 );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ),\n\t\t\t\"slice\", slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\tif ( window.$ === jQuery ) {\n\t\t\twindow.$ = _$;\n\t\t}\n\n\t\tif ( deep && window.jQuery === jQuery ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\t\t// Either a released hold or an DOMready/load event and not yet ready\n\t\tif ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {\n\t\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\t\tif ( !document.body ) {\n\t\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t\t}\n\n\t\t\t// Remember that the DOM is ready\n\t\t\tjQuery.isReady = true;\n\n\t\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If there are functions bound, to execute\n\t\t\treadyList.fireWith( document, [ jQuery ] );\n\n\t\t\t// Trigger any bound ready events\n\t\t\tif ( jQuery.fn.trigger ) {\n\t\t\t\tjQuery( document ).trigger( \"ready\" ).off( \"ready\" );\n\t\t\t}\n\t\t}\n\t},\n\n\tbindReady: function() {\n\t\tif ( readyList ) {\n\t\t\treturn;\n\t\t}\n\n\t\treadyList = jQuery.Callbacks( \"once memory\" );\n\n\t\t// Catch cases where $(document).ready() is called after the\n\t\t// browser event has already occurred.\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t}\n\n\t\t// Mozilla, Opera and webkit nightlies currently support this event\n\t\tif ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", jQuery.ready, false );\n\n\t\t// If IE event model is used\n\t\t} else if ( document.attachEvent ) {\n\t\t\t// ensure firing before onload,\n\t\t\t// maybe late but safe also for iframes\n\t\t\tdocument.attachEvent( \"onreadystatechange\", DOMContentLoaded );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", jQuery.ready );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar toplevel = false;\n\n\t\t\ttry {\n\t\t\t\ttoplevel = window.frameElement == null;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( document.documentElement.doScroll && toplevel ) {\n\t\t\t\tdoScrollCheck();\n\t\t\t}\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\tisWindow: function( obj ) {\n\t\treturn obj != null && obj == obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\t\treturn !isNaN( parseFloat(obj) ) && isFinite( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\treturn obj == null ?\n\t\t\tString( obj ) :\n\t\t\tclass2type[ toString.call(obj) ] || \"object\";\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// Not own constructor property must be Object\n\t\t\tif ( obj.constructor &&\n\t\t\t\t!hasOwn.call(obj, \"constructor\") &&\n\t\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\n\t\tvar key;\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tfor ( var name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tparseJSON: function( data ) {\n\t\tif ( typeof data !== \"string\" || !data ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\tdata = jQuery.trim( data );\n\n\t\t// Attempt to parse using the native JSON parser first\n\t\tif ( window.JSON && window.JSON.parse ) {\n\t\t\treturn window.JSON.parse( data );\n\t\t}\n\n\t\t// Make sure the incoming data is actual JSON\n\t\t// Logic borrowed from http://json.org/json2.js\n\t\tif ( rvalidchars.test( data.replace( rvalidescape, \"@\" )\n\t\t\t.replace( rvalidtokens, \"]\" )\n\t\t\t.replace( rvalidbraces, \"\")) ) {\n\n\t\t\treturn ( new Function( \"return \" + data ) )();\n\n\t\t}\n\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t},\n\n\t// Cross-browser xml parsing\n\tparseXML: function( data ) {\n\t\tif ( typeof data !== \"string\" || !data ) {\n\t\t\treturn null;\n\t\t}\n\t\tvar xml, tmp;\n\t\ttry {\n\t\t\tif ( window.DOMParser ) { // Standard\n\t\t\t\ttmp = new DOMParser();\n\t\t\t\txml = tmp.parseFromString( data , \"text/xml\" );\n\t\t\t} else { // IE\n\t\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\t\txml.async = \"false\";\n\t\t\t\txml.loadXML( data );\n\t\t\t}\n\t\t} catch( e ) {\n\t\t\txml = undefined;\n\t\t}\n\t\tif ( !xml || !xml.documentElement || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\t\tjQuery.error( \"Invalid XML: \" + data );\n\t\t}\n\t\treturn xml;\n\t},\n\n\tnoop: function() {},\n\n\t// Evaluates a script in a global context\n\t// Workarounds based on findings by Jim Driscoll\n\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\n\tglobalEval: function( data ) {\n\t\tif ( data && rnotwhite.test( data ) ) {\n\t\t\t// We use execScript on Internet Explorer\n\t\t\t// We use an anonymous function so that context is window\n\t\t\t// rather than jQuery in Firefox\n\t\t\t( window.execScript || function( data ) {\n\t\t\t\twindow[ \"eval\" ].call( window, data );\n\t\t\t} )( data );\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( object, callback, args ) {\n\t\tvar name, i = 0,\n\t\t\tlength = object.length,\n\t\t\tisObj = length === undefined || jQuery.isFunction( object );\n\n\t\tif ( args ) {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn object;\n\t},\n\n\t// Use native String.trim function wherever possible\n\ttrim: trim ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttrim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttext.toString().replace( trimLeft, \"\" ).replace( trimRight, \"\" );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( array, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( array != null ) {\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930\n\t\t\tvar type = jQuery.type( array );\n\n\t\t\tif ( array.length == null || type === \"string\" || type === \"function\" || type === \"regexp\" || jQuery.isWindow( array ) ) {\n\t\t\t\tpush.call( ret, array );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, array );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, array, i ) {\n\t\tvar len;\n\n\t\tif ( array ) {\n\t\t\tif ( indexOf ) {\n\t\t\t\treturn indexOf.call( array, elem, i );\n\t\t\t}\n\n\t\t\tlen = array.length;\n\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t// Skip accessing in sparse arrays\n\t\t\t\tif ( i in array && array[ i ] === elem ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar i = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof second.length === \"number\" ) {\n\t\t\tfor ( var l = second.length; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar ret = [], retVal;\n\t\tinv = !!inv;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar value, key, ret = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\t// jquery objects are treated as arrays\n\t\t\tisArray = elems instanceof jQuery || length !== undefined && typeof length === \"number\" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;\n\n\t\t// Go through the array, translating each of the items to their\n\t\tif ( isArray ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( key in elems ) {\n\t\t\t\tvalue = callback( elems[ key ], key, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn ret.concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tif ( typeof context === \"string\" ) {\n\t\t\tvar tmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\tvar args = slice.call( arguments, 2 ),\n\t\t\tproxy = function() {\n\t\t\t\treturn fn.apply( context, args.concat( slice.call( arguments ) ) );\n\t\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\t// Mutifunctional method to get and set values to a collection\n\t// The value/s can optionally be executed if it's a function\n\taccess: function( elems, fn, key, value, chainable, emptyGet, pass ) {\n\t\tvar exec,\n\t\t\tbulk = key == null,\n\t\t\ti = 0,\n\t\t\tlength = elems.length;\n\n\t\t// Sets many values\n\t\tif ( key && typeof key === \"object\" ) {\n\t\t\tfor ( i in key ) {\n\t\t\t\tjQuery.access( elems, fn, i, key[i], 1, emptyGet, value );\n\t\t\t}\n\t\t\tchainable = 1;\n\n\t\t// Sets one value\n\t\t} else if ( value !== undefined ) {\n\t\t\t// Optionally, function values get executed if exec is true\n\t\t\texec = pass === undefined && jQuery.isFunction( value );\n\n\t\t\tif ( bulk ) {\n\t\t\t\t// Bulk operations only iterate when executing function values\n\t\t\t\tif ( exec ) {\n\t\t\t\t\texec = fn;\n\t\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\t\treturn exec.call( jQuery( elem ), value );\n\t\t\t\t\t};\n\n\t\t\t\t// Otherwise they run against the entire set\n\t\t\t\t} else {\n\t\t\t\t\tfn.call( elems, value );\n\t\t\t\t\tfn = null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( fn ) {\n\t\t\t\tfor (; i < length; i++ ) {\n\t\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchainable = 1;\n\t\t}\n\n\t\treturn chainable ?\n\t\t\telems :\n\n\t\t\t// Gets\n\t\t\tbulk ?\n\t\t\t\tfn.call( elems ) :\n\t\t\t\tlength ? fn( elems[0], key ) : emptyGet;\n\t},\n\n\tnow: function() {\n\t\treturn ( new Date() ).getTime();\n\t},\n\n\t// Use of jQuery.browser is frowned upon.\n\t// More details: http://docs.jquery.com/Utilities/jQuery.browser\n\tuaMatch: function( ua ) {\n\t\tua = ua.toLowerCase();\n\n\t\tvar match = rwebkit.exec( ua ) ||\n\t\t\tropera.exec( ua ) ||\n\t\t\trmsie.exec( ua ) ||\n\t\t\tua.indexOf(\"compatible\") < 0 && rmozilla.exec( ua ) ||\n\t\t\t[];\n\n\t\treturn { browser: match[1] || \"\", version: match[2] || \"0\" };\n\t},\n\n\tsub: function() {\n\t\tfunction jQuerySub( selector, context ) {\n\t\t\treturn new jQuerySub.fn.init( selector, context );\n\t\t}\n\t\tjQuery.extend( true, jQuerySub, this );\n\t\tjQuerySub.superclass = this;\n\t\tjQuerySub.fn = jQuerySub.prototype = this();\n\t\tjQuerySub.fn.constructor = jQuerySub;\n\t\tjQuerySub.sub = this.sub;\n\t\tjQuerySub.fn.init = function init( selector, context ) {\n\t\t\tif ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {\n\t\t\t\tcontext = jQuerySub( context );\n\t\t\t}\n\n\t\t\treturn jQuery.fn.init.call( this, selector, context, rootjQuerySub );\n\t\t};\n\t\tjQuerySub.fn.init.prototype = jQuerySub.fn;\n\t\tvar rootjQuerySub = jQuerySub(document);\n\t\treturn jQuerySub;\n\t},\n\n\tbrowser: {}\n});\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nbrowserMatch = jQuery.uaMatch( userAgent );\nif ( browserMatch.browser ) {\n\tjQuery.browser[ browserMatch.browser ] = true;\n\tjQuery.browser.version = browserMatch.version;\n}\n\n// Deprecated, use jQuery.browser.webkit instead\nif ( jQuery.browser.webkit ) {\n\tjQuery.browser.safari = true;\n}\n\n// IE doesn't match non-breaking spaces with \\s\nif ( rnotwhite.test( \"\\xA0\" ) ) {\n\ttrimLeft = /^[\\s\\xA0]+/;\n\ttrimRight = /[\\s\\xA0]+$/;\n}\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n\n// Cleanup functions for the document ready method\nif ( document.addEventListener ) {\n\tDOMContentLoaded = function() {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\tjQuery.ready();\n\t};\n\n} else if ( document.attachEvent ) {\n\tDOMContentLoaded = function() {\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\tdocument.detachEvent( \"onreadystatechange\", DOMContentLoaded );\n\t\t\tjQuery.ready();\n\t\t}\n\t};\n}\n\n// The DOM ready check for Internet Explorer\nfunction doScrollCheck() {\n\tif ( jQuery.isReady ) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\t// If IE is used, use the trick by Diego Perini\n\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\tdocument.documentElement.doScroll(\"left\");\n\t} catch(e) {\n\t\tsetTimeout( doScrollCheck, 1 );\n\t\treturn;\n\t}\n\n\t// and execute any waiting functions\n\tjQuery.ready();\n}\n\nreturn jQuery;\n\n})();\n\n\n// String to Object flags format cache\nvar flagsCache = {};\n\n// Convert String-formatted flags into Object-formatted ones and store in cache\nfunction createFlags( flags ) {\n\tvar object = flagsCache[ flags ] = {},\n\t\ti, length;\n\tflags = flags.split( /\\s+/ );\n\tfor ( i = 0, length = flags.length; i < length; i++ ) {\n\t\tobject[ flags[i] ] = true;\n\t}\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\tflags:\tan optional list of space-separated flags that will change how\n *\t\t\tthe callback list behaves\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible flags:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( flags ) {\n\n\t// Convert flags from String-formatted to Object-formatted\n\t// (we check in cache first)\n\tflags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {};\n\n\tvar // Actual callback list\n\t\tlist = [],\n\t\t// Stack of fire calls for repeatable lists\n\t\tstack = [],\n\t\t// Last fire value (for non-forgettable lists)\n\t\tmemory,\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\t\t// Flag to know if list is currently firing\n\t\tfiring,\n\t\t// First callback to fire (used internally by add and fireWith)\n\t\tfiringStart,\n\t\t// End of the loop when firing\n\t\tfiringLength,\n\t\t// Index of currently firing callback (modified by remove if needed)\n\t\tfiringIndex,\n\t\t// Add one or several callbacks to the list\n\t\tadd = function( args ) {\n\t\t\tvar i,\n\t\t\t\tlength,\n\t\t\t\telem,\n\t\t\t\ttype,\n\t\t\t\tactual;\n\t\t\tfor ( i = 0, length = args.length; i < length; i++ ) {\n\t\t\t\telem = args[ i ];\n\t\t\t\ttype = jQuery.type( elem );\n\t\t\t\tif ( type === \"array\" ) {\n\t\t\t\t\t// Inspect recursively\n\t\t\t\t\tadd( elem );\n\t\t\t\t} else if ( type === \"function\" ) {\n\t\t\t\t\t// Add if not in unique mode and callback is not in\n\t\t\t\t\tif ( !flags.unique || !self.has( elem ) ) {\n\t\t\t\t\t\tlist.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Fire callbacks\n\t\tfire = function( context, args ) {\n\t\t\targs = args || [];\n\t\t\tmemory = !flags.memory || [ context, args ];\n\t\t\tfired = true;\n\t\t\tfiring = true;\n\t\t\tfiringIndex = firingStart || 0;\n\t\t\tfiringStart = 0;\n\t\t\tfiringLength = list.length;\n\t\t\tfor ( ; list && firingIndex < firingLength; firingIndex++ ) {\n\t\t\t\tif ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) {\n\t\t\t\t\tmemory = true; // Mark as halted\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfiring = false;\n\t\t\tif ( list ) {\n\t\t\t\tif ( !flags.once ) {\n\t\t\t\t\tif ( stack && stack.length ) {\n\t\t\t\t\t\tmemory = stack.shift();\n\t\t\t\t\t\tself.fireWith( memory[ 0 ], memory[ 1 ] );\n\t\t\t\t\t}\n\t\t\t\t} else if ( memory === true ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t} else {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Actual Callbacks object\n\t\tself = {\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tvar length = list.length;\n\t\t\t\t\tadd( arguments );\n\t\t\t\t\t// Do we need to add the callbacks to the\n\t\t\t\t\t// current firing batch?\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tfiringLength = list.length;\n\t\t\t\t\t// With memory, if we're not firing then\n\t\t\t\t\t// we should call right away, unless previous\n\t\t\t\t\t// firing was halted (stopOnFalse)\n\t\t\t\t\t} else if ( memory && memory !== true ) {\n\t\t\t\t\t\tfiringStart = length;\n\t\t\t\t\t\tfire( memory[ 0 ], memory[ 1 ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tvar args = arguments,\n\t\t\t\t\t\targIndex = 0,\n\t\t\t\t\t\targLength = args.length;\n\t\t\t\t\tfor ( ; argIndex < argLength ; argIndex++ ) {\n\t\t\t\t\t\tfor ( var i = 0; i < list.length; i++ ) {\n\t\t\t\t\t\t\tif ( args[ argIndex ] === list[ i ] ) {\n\t\t\t\t\t\t\t\t// Handle firingIndex and firingLength\n\t\t\t\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\t\t\t\tif ( i <= firingLength ) {\n\t\t\t\t\t\t\t\t\t\tfiringLength--;\n\t\t\t\t\t\t\t\t\t\tif ( i <= firingIndex ) {\n\t\t\t\t\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Remove the element\n\t\t\t\t\t\t\t\tlist.splice( i--, 1 );\n\t\t\t\t\t\t\t\t// If we have some unicity property then\n\t\t\t\t\t\t\t\t// we only need to do this once\n\t\t\t\t\t\t\t\tif ( flags.unique ) {\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Control if a given callback is in the list\n\t\t\thas: function( fn ) {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tvar i = 0,\n\t\t\t\t\t\tlength = list.length;\n\t\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\t\tif ( fn === list[ i ] ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tlist = [];\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Have the list do nothing anymore\n\t\t\tdisable: function() {\n\t\t\t\tlist = stack = memory = undefined;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it disabled?\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\t\t\t// Lock the list in its current state\n\t\t\tlock: function() {\n\t\t\t\tstack = undefined;\n\t\t\t\tif ( !memory || memory === true ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it locked?\n\t\t\tlocked: function() {\n\t\t\t\treturn !stack;\n\t\t\t},\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( stack ) {\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tif ( !flags.once ) {\n\t\t\t\t\t\t\tstack.push( [ context, args ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if ( !( flags.once && memory ) ) {\n\t\t\t\t\t\tfire( context, args );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\n\n\nvar // Static reference to slice\n\tsliceDeferred = [].slice;\n\njQuery.extend({\n\n\tDeferred: function( func ) {\n\t\tvar doneList = jQuery.Callbacks( \"once memory\" ),\n\t\t\tfailList = jQuery.Callbacks( \"once memory\" ),\n\t\t\tprogressList = jQuery.Callbacks( \"memory\" ),\n\t\t\tstate = \"pending\",\n\t\t\tlists = {\n\t\t\t\tresolve: doneList,\n\t\t\t\treject: failList,\n\t\t\t\tnotify: progressList\n\t\t\t},\n\t\t\tpromise = {\n\t\t\t\tdone: doneList.add,\n\t\t\t\tfail: failList.add,\n\t\t\t\tprogress: progressList.add,\n\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\n\t\t\t\t// Deprecated\n\t\t\t\tisResolved: doneList.fired,\n\t\t\t\tisRejected: failList.fired,\n\n\t\t\t\tthen: function( doneCallbacks, failCallbacks, progressCallbacks ) {\n\t\t\t\t\tdeferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tpipe: function( fnDone, fnFail, fnProgress ) {\n\t\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( {\n\t\t\t\t\t\t\tdone: [ fnDone, \"resolve\" ],\n\t\t\t\t\t\t\tfail: [ fnFail, \"reject\" ],\n\t\t\t\t\t\t\tprogress: [ fnProgress, \"notify\" ]\n\t\t\t\t\t\t}, function( handler, data ) {\n\t\t\t\t\t\t\tvar fn = data[ 0 ],\n\t\t\t\t\t\t\t\taction = data[ 1 ],\n\t\t\t\t\t\t\t\treturned;\n\t\t\t\t\t\t\tif ( jQuery.isFunction( fn ) ) {\n\t\t\t\t\t\t\t\tdeferred[ handler ](function() {\n\t\t\t\t\t\t\t\t\treturned = fn.apply( this, arguments );\n\t\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\t\treturned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify );\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tnewDefer[ action + \"With\" ]( this === deferred ? newDefer : this, [ returned ] );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdeferred[ handler ]( newDefer[ action ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}).promise();\n\t\t\t\t},\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\tif ( obj == null ) {\n\t\t\t\t\t\tobj = promise;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfor ( var key in promise ) {\n\t\t\t\t\t\t\tobj[ key ] = promise[ key ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn obj;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = promise.promise({}),\n\t\t\tkey;\n\n\t\tfor ( key in lists ) {\n\t\t\tdeferred[ key ] = lists[ key ].fire;\n\t\t\tdeferred[ key + \"With\" ] = lists[ key ].fireWith;\n\t\t}\n\n\t\t// Handle state\n\t\tdeferred.done( function() {\n\t\t\tstate = \"resolved\";\n\t\t}, failList.disable, progressList.lock ).fail( function() {\n\t\t\tstate = \"rejected\";\n\t\t}, doneList.disable, progressList.lock );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( firstParam ) {\n\t\tvar args = sliceDeferred.call( arguments, 0 ),\n\t\t\ti = 0,\n\t\t\tlength = args.length,\n\t\t\tpValues = new Array( length ),\n\t\t\tcount = length,\n\t\t\tpCount = length,\n\t\t\tdeferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ?\n\t\t\t\tfirstParam :\n\t\t\t\tjQuery.Deferred(),\n\t\t\tpromise = deferred.promise();\n\t\tfunction resolveFunc( i ) {\n\t\t\treturn function( value ) {\n\t\t\t\targs[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdeferred.resolveWith( deferred, args );\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tfunction progressFunc( i ) {\n\t\t\treturn function( value ) {\n\t\t\t\tpValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;\n\t\t\t\tdeferred.notifyWith( promise, pValues );\n\t\t\t};\n\t\t}\n\t\tif ( length > 1 ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) {\n\t\t\t\t\targs[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) );\n\t\t\t\t} else {\n\t\t\t\t\t--count;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !count ) {\n\t\t\t\tdeferred.resolveWith( deferred, args );\n\t\t\t}\n\t\t} else if ( deferred !== firstParam ) {\n\t\t\tdeferred.resolveWith( deferred, length ? [ firstParam ] : [] );\n\t\t}\n\t\treturn promise;\n\t}\n});\n\n\n\n\njQuery.support = (function() {\n\n\tvar support,\n\t\tall,\n\t\ta,\n\t\tselect,\n\t\topt,\n\t\tinput,\n\t\tfragment,\n\t\ttds,\n\t\tevents,\n\t\teventName,\n\t\ti,\n\t\tisSupported,\n\t\tdiv = document.createElement( \"div\" ),\n\t\tdocumentElement = document.documentElement;\n\n\t// Preliminary tests\n\tdiv.setAttribute(\"className\", \"t\");\n\tdiv.innerHTML = \"   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>\";\n\n\tall = div.getElementsByTagName( \"*\" );\n\ta = div.getElementsByTagName( \"a\" )[ 0 ];\n\n\t// Can't get basic test support\n\tif ( !all || !all.length || !a ) {\n\t\treturn {};\n\t}\n\n\t// First batch of supports tests\n\tselect = document.createElement( \"select\" );\n\topt = select.appendChild( document.createElement(\"option\") );\n\tinput = div.getElementsByTagName( \"input\" )[ 0 ];\n\n\tsupport = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: ( div.firstChild.nodeType === 3 ),\n\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText instead)\n\t\tstyle: /top/.test( a.getAttribute(\"style\") ),\n\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: ( a.getAttribute(\"href\") === \"/a\" ),\n\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\t// Use a regex to work around a WebKit issue. See #5145\n\t\topacity: /^0.55/.test( a.style.opacity ),\n\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Make sure that if no value is specified for a checkbox\n\t\t// that it defaults to \"on\".\n\t\t// (WebKit defaults to \"\" instead)\n\t\tcheckOn: ( input.value === \"on\" ),\n\n\t\t// Make sure that a selected-by-default option has a working selected property.\n\t\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\t\toptSelected: opt.selected,\n\n\t\t// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)\n\t\tgetSetAttribute: div.className !== \"t\",\n\n\t\t// Tests for enctype support on a form(#6743)\n\t\tenctype: !!document.createElement(\"form\").enctype,\n\n\t\t// Makes sure cloning an html5 element does not cause problems\n\t\t// Where outerHTML is undefined, this still works\n\t\thtml5Clone: document.createElement(\"nav\").cloneNode( true ).outerHTML !== \"<:nav></:nav>\",\n\n\t\t// Will be defined later\n\t\tsubmitBubbles: true,\n\t\tchangeBubbles: true,\n\t\tfocusinBubbles: false,\n\t\tdeleteExpando: true,\n\t\tnoCloneEvent: true,\n\t\tinlineBlockNeedsLayout: false,\n\t\tshrinkWrapBlocks: false,\n\t\treliableMarginRight: true,\n\t\tpixelMargin: true\n\t};\n\n\t// jQuery.boxModel DEPRECATED in 1.3, use jQuery.support.boxModel instead\n\tjQuery.boxModel = support.boxModel = (document.compatMode === \"CSS1Compat\");\n\n\t// Make sure checked status is properly cloned\n\tinput.checked = true;\n\tsupport.noCloneChecked = input.cloneNode( true ).checked;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as disabled)\n\tselect.disabled = true;\n\tsupport.optDisabled = !opt.disabled;\n\n\t// Test to see if it's possible to delete an expando from an element\n\t// Fails in Internet Explorer\n\ttry {\n\t\tdelete div.test;\n\t} catch( e ) {\n\t\tsupport.deleteExpando = false;\n\t}\n\tvar onclicktmp = null; \n\tif ( !div.addEventListener && div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent( \"onclick\", onclicktmp = function() {\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tsupport.noCloneEvent = false;\n\t\t});\n\t\tdiv.cloneNode( true ).fireEvent( \"onclick\" );\n\t\tdiv.detachEvent( \"onclick\", onclicktmp);  // adamki added\n\t}\n\n\t// Check if a radio maintains its value\n\t// after being appended to the DOM\n\tinput = document.createElement(\"input\");\n\tinput.value = \"t\";\n\tinput.setAttribute(\"type\", \"radio\");\n\tsupport.radioValue = input.value === \"t\";\n\n\tinput.setAttribute(\"checked\", \"checked\");\n\n\t// #11217 - WebKit loses check when the name is after the checked attribute\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\tfragment = document.createDocumentFragment();\n\tfragment.appendChild( div.lastChild );\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Check if a disconnected checkbox will retain its checked\n\t// value of true after appended to the DOM (IE6/7)\n\tsupport.appendChecked = input.checked;\n\n\tfragment.removeChild( input );\n\tfragment.appendChild( div );\n\n\t// Technique from Juriy Zaytsev\n\t// http://perfectionkills.com/detecting-event-support-without-browser-sniffing/\n\t// We only care about the case where non-standard event systems\n\t// are used, namely in IE. Short-circuiting here helps us to\n\t// avoid an eval call (in setAttribute) which can cause CSP\n\t// to go haywire. See: https://developer.mozilla.org/en/Security/CSP\n\tif ( div.attachEvent ) {\n\t\tfor ( i in {\n\t\t\tsubmit: 1,\n\t\t\tchange: 1,\n\t\t\tfocusin: 1\n\t\t}) {\n\t\t\teventName = \"on\" + i;\n\t\t\tisSupported = ( eventName in div );\n\t\t\tif ( !isSupported ) {\n\t\t\t\tdiv.setAttribute( eventName, \"return;\" );\n\t\t\t\tisSupported = ( typeof div[ eventName ] === \"function\" );\n\t\t\t}\n\t\t\tsupport[ i + \"Bubbles\" ] = isSupported;\n\t\t}\n\t}\n\n\tfragment.removeChild( div );\n\n\t// Null elements to avoid leaks in IE\n\tfragment = select = opt = div = input = null;\n\n\t// Run tests that need a body at doc ready\n\tjQuery(function() {\n\t\tvar container, outer, inner, table, td, offsetSupport,\n\t\t\tmarginDiv, conMarginTop, style, html, positionTopLeftWidthHeight,\n\t\t\tpaddingMarginBorderVisibility, paddingMarginBorder,\n\t\t\tbody = document.getElementsByTagName(\"body\")[0];\n\n\t\tif ( !body ) {\n\t\t\t// Return for frameset docs that don't have a body\n\t\t\treturn;\n\t\t}\n\n\t\tconMarginTop = 1;\n\t\tpaddingMarginBorder = \"padding:0;margin:0;border:\";\n\t\tpositionTopLeftWidthHeight = \"position:absolute;top:0;left:0;width:1px;height:1px;\";\n\t\tpaddingMarginBorderVisibility = paddingMarginBorder + \"0;visibility:hidden;\";\n\t\tstyle = \"style='\" + positionTopLeftWidthHeight + paddingMarginBorder + \"5px solid #000;\";\n\t\thtml = \"<div \" + style + \"display:block;'><div style='\" + paddingMarginBorder + \"0;display:block;overflow:hidden;'></div></div>\" +\n\t\t\t\"<table \" + style + \"' cellpadding='0' cellspacing='0'>\" +\n\t\t\t\"<tr><td></td></tr></table>\";\n\n\t\tcontainer = document.createElement(\"div\");\n\t\tcontainer.style.cssText = paddingMarginBorderVisibility + \"width:0;height:0;position:static;top:0;margin-top:\" + conMarginTop + \"px\";\n\t\tbody.insertBefore( container, body.firstChild );\n\n\t\t// Construct the test element\n\t\tdiv = document.createElement(\"div\");\n\t\tcontainer.appendChild( div );\n\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\t// (only IE 8 fails this test)\n\t\tdiv.innerHTML = \"<table><tr><td style='\" + paddingMarginBorder + \"0;display:none'></td><td>t</td></tr></table>\";\n\t\ttds = div.getElementsByTagName( \"td\" );\n\t\tisSupported = ( tds[ 0 ].offsetHeight === 0 );\n\n\t\ttds[ 0 ].style.display = \"\";\n\t\ttds[ 1 ].style.display = \"none\";\n\n\t\t// Check if empty table cells still have offsetWidth/Height\n\t\t// (IE <= 8 fail this test)\n\t\tsupport.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );\n\n\t\t// Check if div with explicit width and no margin-right incorrectly\n\t\t// gets computed margin-right based on width of container. For more\n\t\t// info see bug #3333\n\t\t// Fails in WebKit before Feb 2011 nightlies\n\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\tif ( window.getComputedStyle ) {\n\t\t\tdiv.innerHTML = \"\";\n\t\t\tmarginDiv = document.createElement( \"div\" );\n\t\t\tmarginDiv.style.width = \"0\";\n\t\t\tmarginDiv.style.marginRight = \"0\";\n\t\t\tdiv.style.width = \"2px\";\n\t\t\tdiv.appendChild( marginDiv );\n\t\t\tsupport.reliableMarginRight =\n\t\t\t\t( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0;\n\t\t}\n\n\t\tif ( typeof div.style.zoom !== \"undefined\" ) {\n\t\t\t// Check if natively block-level elements act like inline-block\n\t\t\t// elements when setting their display to 'inline' and giving\n\t\t\t// them layout\n\t\t\t// (IE < 8 does this)\n\t\t\tdiv.innerHTML = \"\";\n\t\t\tdiv.style.width = div.style.padding = \"1px\";\n\t\t\tdiv.style.border = 0;\n\t\t\tdiv.style.overflow = \"hidden\";\n\t\t\tdiv.style.display = \"inline\";\n\t\t\tdiv.style.zoom = 1;\n\t\t\tsupport.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );\n\n\t\t\t// Check if elements with layout shrink-wrap their children\n\t\t\t// (IE 6 does this)\n\t\t\tdiv.style.display = \"block\";\n\t\t\tdiv.style.overflow = \"visible\";\n\t\t\tdiv.innerHTML = \"<div style='width:5px;'></div>\";\n\t\t\tsupport.shrinkWrapBlocks = ( div.offsetWidth !== 3 );\n\t\t}\n\n\t\tdiv.style.cssText = positionTopLeftWidthHeight + paddingMarginBorderVisibility;\n\t\tdiv.innerHTML = html;\n\n\t\touter = div.firstChild;\n\t\tinner = outer.firstChild;\n\t\ttd = outer.nextSibling.firstChild.firstChild;\n\n\t\toffsetSupport = {\n\t\t\tdoesNotAddBorder: ( inner.offsetTop !== 5 ),\n\t\t\tdoesAddBorderForTableAndCells: ( td.offsetTop === 5 )\n\t\t};\n\n\t\tinner.style.position = \"fixed\";\n\t\tinner.style.top = \"20px\";\n\n\t\t// safari subtracts parent border width here which is 5px\n\t\toffsetSupport.fixedPosition = ( inner.offsetTop === 20 || inner.offsetTop === 15 );\n\t\tinner.style.position = inner.style.top = \"\";\n\n\t\touter.style.overflow = \"hidden\";\n\t\touter.style.position = \"relative\";\n\n\t\toffsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 );\n\t\toffsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop );\n\n\t\tif ( window.getComputedStyle ) {\n\t\t\tdiv.style.marginTop = \"1%\";\n\t\t\tsupport.pixelMargin = ( window.getComputedStyle( div, null ) || { marginTop: 0 } ).marginTop !== \"1%\";\n\t\t}\n\n\t\tif ( typeof container.style.zoom !== \"undefined\" ) {\n\t\t\tcontainer.style.zoom = 1;\n\t\t}\n\n\t\tbody.removeChild( container );\n\t\tmarginDiv = div = container = null;\n\n\t\tjQuery.extend( support, offsetSupport );\n\t});\n\n\treturn support;\n})();\n\n\n\n\nvar rbrace = /^(?:\\{.*\\}|\\[.*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\njQuery.extend({\n\tcache: {},\n\n\t// Please use with caution\n\tuuid: 0,\n\n\t// Unique for each copy of jQuery on the page\n\t// Non-digits removed to match rinlinejQuery\n\texpando: \"jQuery\" + ( jQuery.fn.jquery + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"embed\": true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t\"object\": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",\n\t\t\"applet\": true\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar privateCache, thisCache, ret,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tgetByName = typeof name === \"string\",\n\n\t\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t\t// can't GC object references properly across the DOM-JS boundary\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t\t// attached directly to the object so GC can occur automatically\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey,\n\t\t\tisEvents = name === \"events\";\n\n\t\t// Avoid doing any more work than we need to when trying to get data on an\n\t\t// object that has no data at all\n\t\tif ( (!id || !cache[id] || (!isEvents && !pvt && !cache[id].data)) && getByName && data === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !id ) {\n\t\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t\t// ends up in the global cache\n\t\t\tif ( isNode ) {\n\t\t\t\telem[ internalKey ] = id = ++jQuery.uuid;\n\t\t\t} else {\n\t\t\t\tid = internalKey;\n\t\t\t}\n\t\t}\n\n\t\tif ( !cache[ id ] ) {\n\t\t\tcache[ id ] = {};\n\n\t\t\t// Avoids exposing jQuery metadata on plain JS objects when the object\n\t\t\t// is serialized using JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\t\t}\n\n\t\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t\t// shallow copied over onto the existing cache\n\t\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\t\tif ( pvt ) {\n\t\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\n\t\t\t} else {\n\t\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\n\t\t\t}\n\t\t}\n\n\t\tprivateCache = thisCache = cache[ id ];\n\n\t\t// jQuery data() is stored in a separate object inside the object's internal data\n\t\t// cache in order to avoid key collisions between internal data and user-defined\n\t\t// data.\n\t\tif ( !pvt ) {\n\t\t\tif ( !thisCache.data ) {\n\t\t\t\tthisCache.data = {};\n\t\t\t}\n\n\t\t\tthisCache = thisCache.data;\n\t\t}\n\n\t\tif ( data !== undefined ) {\n\t\t\tthisCache[ jQuery.camelCase( name ) ] = data;\n\t\t}\n\n\t\t// Users should not attempt to inspect the internal events object using jQuery.data,\n\t\t// it is undocumented and subject to change. But does anyone listen? No.\n\t\tif ( isEvents && !thisCache[ name ] ) {\n\t\t\treturn privateCache.events;\n\t\t}\n\n\t\t// Check for both converted-to-camel and non-converted data property names\n\t\t// If a data property was specified\n\t\tif ( getByName ) {\n\n\t\t\t// First Try to find as-is property data\n\t\t\tret = thisCache[ name ];\n\n\t\t\t// Test for null|undefined property data\n\t\t\tif ( ret == null ) {\n\n\t\t\t\t// Try to find the camelCased property\n\t\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\n\t\t\t}\n\t\t} else {\n\t\t\tret = thisCache;\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tremoveData: function( elem, name, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar thisCache, i, l,\n\n\t\t\t// Reference to internal data cache key\n\t\t\tinternalKey = jQuery.expando,\n\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tid = isNode ? elem[ internalKey ] : internalKey;\n\n\t\t// If there is already no cache entry for this object, there is no\n\t\t// purpose in continuing\n\t\tif ( !cache[ id ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( name ) {\n\n\t\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\n\n\t\t\tif ( thisCache ) {\n\n\t\t\t\t// Support array or space separated string names for data keys\n\t\t\t\tif ( !jQuery.isArray( name ) ) {\n\n\t\t\t\t\t// try the string as a key before any manipulation\n\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\n\t\t\t\t\t\tname = jQuery.camelCase( name );\n\t\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tname = name.split( \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor ( i = 0, l = name.length; i < l; i++ ) {\n\t\t\t\t\tdelete thisCache[ name[i] ];\n\t\t\t\t}\n\n\t\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t\t// and let the cache object itself get destroyed\n\t\t\t\tif ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// See jQuery.data for more information\n\t\tif ( !pvt ) {\n\t\t\tdelete cache[ id ].data;\n\n\t\t\t// Don't destroy the parent cache unless the internal data object\n\t\t\t// had been the only thing left in it\n\t\t\tif ( !isEmptyDataObject(cache[ id ]) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Browsers that fail expando deletion also refuse to delete expandos on\n\t\t// the window, but it will allow it on all other JS objects; other browsers\n\t\t// don't care\n\t\t// Ensure that `cache` is not a window object #10080\n\t\tif ( jQuery.support.deleteExpando || !cache.setInterval ) {\n\t\t\tdelete cache[ id ];\n\t\t} else {\n\t\t\tcache[ id ] = null;\n\t\t}\n\n\t\t// We destroyed the cache and need to eliminate the expando on the node to avoid\n\t\t// false lookups in the cache for entries that no longer exist\n\t\tif ( isNode ) {\n\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t// we must handle all of these cases\n\t\t\tif ( jQuery.support.deleteExpando ) {\n\t\t\t\tdelete elem[ internalKey ];\n\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\telem.removeAttribute( internalKey );\n\t\t\t} else {\n\t\t\t\telem[ internalKey ] = null;\n\t\t\t}\n\t\t}\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn jQuery.data( elem, name, data, true );\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\tif ( elem.nodeName ) {\n\t\t\tvar match = jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t\tif ( match ) {\n\t\t\t\treturn !(match === true || elem.getAttribute(\"classid\") !== match);\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar parts, part, attr, name, l,\n\t\t\telem = this[0],\n\t\t\ti = 0,\n\t\t\tdata = null;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, \"parsedAttrs\" ) ) {\n\t\t\t\t\tattr = elem.attributes;\n\t\t\t\t\tfor ( l = attr.length; i < l; i++ ) {\n\t\t\t\t\t\tname = attr[i].name;\n\n\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\tname = jQuery.camelCase( name.substring(5) );\n\n\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tjQuery._data( elem, \"parsedAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\tparts = key.split( \".\", 2 );\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\t\tpart = parts[1] + \"!\";\n\n\t\treturn jQuery.access( this, function( value ) {\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\tdata = this.triggerHandler( \"getData\" + part, [ parts[0] ] );\n\n\t\t\t\t// Try to fetch any internally stored data first\n\t\t\t\tif ( data === undefined && elem ) {\n\t\t\t\t\tdata = jQuery.data( elem, key );\n\t\t\t\t\tdata = dataAttr( elem, key, data );\n\t\t\t\t}\n\n\t\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\t\tdata;\n\t\t\t}\n\n\t\t\tparts[1] = value;\n\t\t\tthis.each(function() {\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.triggerHandler( \"setData\" + part, parts );\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t\tself.triggerHandler( \"changeData\" + part, parts );\n\t\t\t});\n\t\t}, null, value, arguments.length > 1, null, false );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\n\t\tvar name = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\n\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\tdata === \"false\" ? false :\n\t\t\t\tdata === \"null\" ? null :\n\t\t\t\tjQuery.isNumeric( data ) ? +data :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// checks a cache object for emptiness\nfunction isEmptyDataObject( obj ) {\n\tfor ( var name in obj ) {\n\n\t\t// if the public data object is empty, the private is still empty\n\t\tif ( name === \"data\" && jQuery.isEmptyObject( obj[name] ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n\n\n\nfunction handleQueueMarkDefer( elem, type, src ) {\n\tvar deferDataKey = type + \"defer\",\n\t\tqueueDataKey = type + \"queue\",\n\t\tmarkDataKey = type + \"mark\",\n\t\tdefer = jQuery._data( elem, deferDataKey );\n\tif ( defer &&\n\t\t( src === \"queue\" || !jQuery._data(elem, queueDataKey) ) &&\n\t\t( src === \"mark\" || !jQuery._data(elem, markDataKey) ) ) {\n\t\t// Give room for hard-coded callbacks to fire first\n\t\t// and eventually mark/queue something else on the element\n\t\tsetTimeout( function() {\n\t\t\tif ( !jQuery._data( elem, queueDataKey ) &&\n\t\t\t\t!jQuery._data( elem, markDataKey ) ) {\n\t\t\t\tjQuery.removeData( elem, deferDataKey, true );\n\t\t\t\tdefer.fire();\n\t\t\t}\n\t\t}, 0 );\n\t}\n}\n\njQuery.extend({\n\n\t_mark: function( elem, type ) {\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"mark\";\n\t\t\tjQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 );\n\t\t}\n\t},\n\n\t_unmark: function( force, elem, type ) {\n\t\tif ( force !== true ) {\n\t\t\ttype = elem;\n\t\t\telem = force;\n\t\t\tforce = false;\n\t\t}\n\t\tif ( elem ) {\n\t\t\ttype = type || \"fx\";\n\t\t\tvar key = type + \"mark\",\n\t\t\t\tcount = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 );\n\t\t\tif ( count ) {\n\t\t\t\tjQuery._data( elem, key, count );\n\t\t\t} else {\n\t\t\t\tjQuery.removeData( elem, key, true );\n\t\t\t\thandleQueueMarkDefer( elem, type, \"mark\" );\n\t\t\t}\n\t\t}\n\t},\n\n\tqueue: function( elem, type, data ) {\n\t\tvar q;\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tq = jQuery._data( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !q || jQuery.isArray(data) ) {\n\t\t\t\t\tq = jQuery._data( elem, type, jQuery.makeArray(data) );\n\t\t\t\t} else {\n\t\t\t\t\tq.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn q || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tfn = queue.shift(),\n\t\t\thooks = {};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\tjQuery._data( elem, type + \".run\", hooks );\n\t\t\tfn.call( elem, function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t}, hooks );\n\t\t}\n\n\t\tif ( !queue.length ) {\n\t\t\tjQuery.removeData( elem, type + \"queue \" + type + \".run\", true );\n\t\t\thandleQueueMarkDefer( elem, type, \"queue\" );\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function( next, hooks ) {\n\t\t\tvar timeout = setTimeout( next, time );\n\t\t\thooks.stop = function() {\n\t\t\t\tclearTimeout( timeout );\n\t\t\t};\n\t\t});\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, object ) {\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobject = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\t\tvar defer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = elements.length,\n\t\t\tcount = 1,\n\t\t\tdeferDataKey = type + \"defer\",\n\t\t\tqueueDataKey = type + \"queue\",\n\t\t\tmarkDataKey = type + \"mark\",\n\t\t\ttmp;\n\t\tfunction resolve() {\n\t\t\tif ( !( --count ) ) {\n\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t}\n\t\t}\n\t\twhile( i-- ) {\n\t\t\tif (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) ||\n\t\t\t\t\t( jQuery.data( elements[ i ], queueDataKey, undefined, true ) ||\n\t\t\t\t\t\tjQuery.data( elements[ i ], markDataKey, undefined, true ) ) &&\n\t\t\t\t\tjQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( \"once memory\" ), true ) )) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( object );\n\t}\n});\n\n\n\n\nvar rclass = /[\\n\\t\\r]/g,\n\trspace = /\\s+/,\n\trreturn = /\\r/g,\n\trtype = /^(?:button|input)$/i,\n\trfocusable = /^(?:button|input|object|select|textarea)$/i,\n\trclickable = /^a(?:rea)?$/i,\n\trboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,\n\tgetSetAttribute = jQuery.support.getSetAttribute,\n\tnodeHook, boolHook, fixSpecified;\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t});\n\t},\n\n\tprop: function( name, value ) {\n\t\treturn jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\tname = jQuery.propFix[ name ] || name;\n\t\treturn this.each(function() {\n\t\t\t// try/catch handles cases where IE balks (such as removing a property on window)\n\t\t\ttry {\n\t\t\t\tthis[ name ] = undefined;\n\t\t\t\tdelete this[ name ];\n\t\t\t} catch( e ) {}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tvar classNames, i, l, elem,\n\t\t\tsetClass, c, cl;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call(this, j, this.className) );\n\t\t\t});\n\t\t}\n\n\t\tif ( value && typeof value === \"string\" ) {\n\t\t\tclassNames = value.split( rspace );\n\n\t\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\telem = this[ i ];\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !elem.className && classNames.length === 1 ) {\n\t\t\t\t\t\telem.className = value;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetClass = \" \" + elem.className + \" \";\n\n\t\t\t\t\t\tfor ( c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tif ( !~setClass.indexOf( \" \" + classNames[ c ] + \" \" ) ) {\n\t\t\t\t\t\t\t\tsetClass += classNames[ c ] + \" \";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, i, l, elem, className, c, cl;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call(this, j, this.className) );\n\t\t\t});\n\t\t}\n\n\t\tif ( (value && typeof value === \"string\") || value === undefined ) {\n\t\t\tclassNames = ( value || \"\" ).split( rspace );\n\n\t\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\telem = this[ i ];\n\n\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n\t\t\t\t\tif ( value ) {\n\t\t\t\t\t\tclassName = (\" \" + elem.className + \" \").replace( rclass, \" \" );\n\t\t\t\t\t\tfor ( c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tclassName = className.replace(\" \" + classNames[ c ] + \" \", \" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( className );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.className = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.split( rspace );\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space seperated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t} else if ( type === \"undefined\" || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// toggle whole className\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \",\n\t\t\ti = 0,\n\t\t\tl = this.length;\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tif ( this[i].nodeType === 1 && (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tvar hooks, ret, isFunction,\n\t\t\telem = this[0];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, \"value\" )) !== undefined ) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\treturn typeof ret === \"string\" ?\n\t\t\t\t\t// handle most common string cases\n\t\t\t\t\tret.replace(rreturn, \"\") :\n\t\t\t\t\t// handle cases where value is null/undef or number\n\t\t\t\t\tret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tisFunction = jQuery.isFunction( value );\n\n\t\treturn this.each(function( i ) {\n\t\t\tvar self = jQuery(this), val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call( this, i, self.val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.isArray( val ) ) {\n\t\t\t\tval = jQuery.map(val, function ( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !(\"set\" in hooks) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// attributes.value is undefined in Blackberry 4.7 but\n\t\t\t\t// uses .value. See #6932\n\t\t\t\tvar val = elem.attributes.value;\n\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, i, max, option,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tvalues = [],\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tone = elem.type === \"select-one\";\n\n\t\t\t\t// Nothing was selected\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\ti = one ? index : 0;\n\t\t\t\tmax = one ? index + 1 : options.length;\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\tif ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null) &&\n\t\t\t\t\t\t\t(!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" )) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Fixes Bug #2551 -- select.val() broken in IE after form.reset()\n\t\t\t\tif ( one && !values.length && options.length ) {\n\t\t\t\t\treturn jQuery( options[ index ] ).val();\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar values = jQuery.makeArray( value );\n\n\t\t\t\tjQuery(elem).find(\"option\").each(function() {\n\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t},\n\n\tattrFn: {\n\t\tval: true,\n\t\tcss: true,\n\t\thtml: true,\n\t\ttext: true,\n\t\tdata: true,\n\t\twidth: true,\n\t\theight: true,\n\t\toffset: true\n\t},\n\n\tattr: function( elem, name, value, pass ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( pass && name in jQuery.attrFn ) {\n\t\t\treturn jQuery( elem )[ name ]( value );\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\t// All attributes are lowercase\n\t\t// Grab necessary hook if one is defined\n\t\tif ( notxml ) {\n\t\t\tname = name.toLowerCase();\n\t\t\thooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\n\t\t\t} else if ( hooks && \"set\" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\telem.setAttribute( name, \"\" + value );\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t} else if ( hooks && \"get\" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\treturn ret;\n\n\t\t} else {\n\n\t\t\tret = elem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn ret === null ?\n\t\t\t\tundefined :\n\t\t\t\tret;\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar propName, attrNames, name, l, isBool,\n\t\t\ti = 0;\n\n\t\tif ( value && elem.nodeType === 1 ) {\n\t\t\tattrNames = value.toLowerCase().split( rspace );\n\t\t\tl = attrNames.length;\n\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tname = attrNames[ i ];\n\n\t\t\t\tif ( name ) {\n\t\t\t\t\tpropName = jQuery.propFix[ name ] || name;\n\t\t\t\t\tisBool = rboolean.test( name );\n\n\t\t\t\t\t// See #9699 for explanation of this approach (setting first, then removal)\n\t\t\t\t\t// Do not do this for boolean attributes (see #10870)\n\t\t\t\t\tif ( !isBool ) {\n\t\t\t\t\t\tjQuery.attr( elem, name, \"\" );\n\t\t\t\t\t}\n\t\t\t\t\telem.removeAttribute( getSetAttribute ? name : propName );\n\n\t\t\t\t\t// Set corresponding property to false for boolean attributes\n\t\t\t\t\tif ( isBool && propName in elem ) {\n\t\t\t\t\t\telem[ propName ] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\tif ( rtype.test( elem.nodeName ) && elem.parentNode ) {\n\t\t\t\t\tjQuery.error( \"type property can't be changed\" );\n\t\t\t\t} else if ( !jQuery.support.radioValue && value === \"radio\" && jQuery.nodeName(elem, \"input\") ) {\n\t\t\t\t\t// Setting the type on a radio button after the value resets the value in IE6-9\n\t\t\t\t\t// Reset value to it's default in case type is set after value\n\t\t\t\t\t// This is for element creation\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Use the value property for back compat\n\t\t// Use the nodeHook for button elements in IE6/7 (#1954)\n\t\tvalue: {\n\t\t\tget: function( elem, name ) {\n\t\t\t\tif ( nodeHook && jQuery.nodeName( elem, \"button\" ) ) {\n\t\t\t\t\treturn nodeHook.get( elem, name );\n\t\t\t\t}\n\t\t\t\treturn name in elem ?\n\t\t\t\t\telem.value :\n\t\t\t\t\tnull;\n\t\t\t},\n\t\t\tset: function( elem, value, name ) {\n\t\t\t\tif ( nodeHook && jQuery.nodeName( elem, \"button\" ) ) {\n\t\t\t\t\treturn nodeHook.set( elem, value, name );\n\t\t\t\t}\n\t\t\t\t// Does not return so that setAttribute is also used\n\t\t\t\telem.value = value;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\ttabindex: \"tabIndex\",\n\t\treadonly: \"readOnly\",\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\",\n\t\tmaxlength: \"maxLength\",\n\t\tcellspacing: \"cellSpacing\",\n\t\tcellpadding: \"cellPadding\",\n\t\trowspan: \"rowSpan\",\n\t\tcolspan: \"colSpan\",\n\t\tusemap: \"useMap\",\n\t\tframeborder: \"frameBorder\",\n\t\tcontenteditable: \"contentEditable\"\n\t},\n\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set properties on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\tif ( notxml ) {\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\treturn ( elem[ name ] = value );\n\t\t\t}\n\n\t\t} else {\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\t\t}\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tvar attributeNode = elem.getAttributeNode(\"tabindex\");\n\n\t\t\t\treturn attributeNode && attributeNode.specified ?\n\t\t\t\t\tparseInt( attributeNode.value, 10 ) :\n\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\tundefined;\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional)\njQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex;\n\n// Hook for boolean attributes\nboolHook = {\n\tget: function( elem, name ) {\n\t\t// Align boolean attributes with corresponding properties\n\t\t// Fall back to attribute presence where some booleans are not supported\n\t\tvar attrNode,\n\t\t\tproperty = jQuery.prop( elem, name );\n\t\treturn property === true || typeof property !== \"boolean\" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?\n\t\t\tname.toLowerCase() :\n\t\t\tundefined;\n\t},\n\tset: function( elem, value, name ) {\n\t\tvar propName;\n\t\tif ( value === false ) {\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\t// value is true since we know at this point it's type boolean and not false\n\t\t\t// Set boolean attributes to the same name and set the DOM property\n\t\t\tpropName = jQuery.propFix[ name ] || name;\n\t\t\tif ( propName in elem ) {\n\t\t\t\t// Only set the IDL specifically if it already exists on the element\n\t\t\t\telem[ propName ] = true;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, name.toLowerCase() );\n\t\t}\n\t\treturn name;\n\t}\n};\n\n// IE6/7 do not support getting/setting some attributes with get/setAttribute\nif ( !getSetAttribute ) {\n\n\tfixSpecified = {\n\t\tname: true,\n\t\tid: true,\n\t\tcoords: true\n\t};\n\n\t// Use this for any attribute in IE6/7\n\t// This fixes almost every IE6/7 issue\n\tnodeHook = jQuery.valHooks.button = {\n\t\tget: function( elem, name ) {\n\t\t\tvar ret;\n\t\t\tret = elem.getAttributeNode( name );\n\t\t\treturn ret && ( fixSpecified[ name ] ? ret.nodeValue !== \"\" : ret.specified ) ?\n\t\t\t\tret.nodeValue :\n\t\t\t\tundefined;\n\t\t},\n\t\tset: function( elem, value, name ) {\n\t\t\t// Set the existing or create a new attribute node\n\t\t\tvar ret = elem.getAttributeNode( name );\n\t\t\tif ( !ret ) {\n\t\t\t\tret = document.createAttribute( name );\n\t\t\t\telem.setAttributeNode( ret );\n\t\t\t}\n\t\t\treturn ( ret.nodeValue = value + \"\" );\n\t\t}\n\t};\n\n\t// Apply the nodeHook to tabindex\n\tjQuery.attrHooks.tabindex.set = nodeHook.set;\n\n\t// Set width and height to auto instead of 0 on empty string( Bug #8150 )\n\t// This is for removals\n\tjQuery.each([ \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\telem.setAttribute( name, \"auto\" );\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\n\t// Set contenteditable to false on removals(#10429)\n\t// Setting to empty string throws an error as an invalid value\n\tjQuery.attrHooks.contenteditable = {\n\t\tget: nodeHook.get,\n\t\tset: function( elem, value, name ) {\n\t\t\tif ( value === \"\" ) {\n\t\t\t\tvalue = \"false\";\n\t\t\t}\n\t\t\tnodeHook.set( elem, value, name );\n\t\t}\n\t};\n}\n\n\n// Some attributes require a special call on IE\nif ( !jQuery.support.hrefNormalized ) {\n\tjQuery.each([ \"href\", \"src\", \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar ret = elem.getAttribute( name, 2 );\n\t\t\t\treturn ret === null ? undefined : ret;\n\t\t\t}\n\t\t});\n\t});\n}\n\nif ( !jQuery.support.style ) {\n\tjQuery.attrHooks.style = {\n\t\tget: function( elem ) {\n\t\t\t// Return undefined in the case of empty string\n\t\t\t// Normalize to lowercase since IE uppercases css property names\n\t\t\treturn elem.style.cssText.toLowerCase() || undefined;\n\t\t},\n\t\tset: function( elem, value ) {\n\t\t\treturn ( elem.style.cssText = \"\" + value );\n\t\t}\n\t};\n}\n\n// Safari mis-reports the default selected property of an option\n// Accessing the parent's selectedIndex property fixes it\nif ( !jQuery.support.optSelected ) {\n\tjQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {\n\t\tget: function( elem ) {\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t});\n}\n\n// IE6/7 call enctype encoding\nif ( !jQuery.support.enctype ) {\n\tjQuery.propFix.enctype = \"encoding\";\n}\n\n// Radios and checkboxes getter/setter\nif ( !jQuery.support.checkOn ) {\n\tjQuery.each([ \"radio\", \"checkbox\" ], function() {\n\t\tjQuery.valHooks[ this ] = {\n\t\t\tget: function( elem ) {\n\t\t\t\t// Handle the case where in Webkit \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t\t}\n\t\t};\n\t});\n}\njQuery.each([ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {\n\t\tset: function( elem, value ) {\n\t\t\tif ( jQuery.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );\n\t\t\t}\n\t\t}\n\t});\n});\n\n\n\n\nvar rformElems = /^(?:textarea|input|select)$/i,\n\trtypenamespace = /^([^\\.]*)?(?:\\.(.+))?$/,\n\trhoverHack = /(?:^|\\s)hover(\\.\\S+)?\\b/,\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|contextmenu)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\trquickIs = /^(\\w*)(?:#([\\w\\-]+))?(?:\\.([\\w\\-]+))?$/,\n\tquickParse = function( selector ) {\n\t\tvar quick = rquickIs.exec( selector );\n\t\tif ( quick ) {\n\t\t\t//   0  1    2   3\n\t\t\t// [ _, tag, id, class ]\n\t\t\tquick[1] = ( quick[1] || \"\" ).toLowerCase();\n\t\t\tquick[3] = quick[3] && new RegExp( \"(?:^|\\\\s)\" + quick[3] + \"(?:\\\\s|$)\" );\n\t\t}\n\t\treturn quick;\n\t},\n\tquickIs = function( elem, m ) {\n\t\tvar attrs = elem.attributes || {};\n\t\treturn (\n\t\t\t(!m[1] || elem.nodeName.toLowerCase() === m[1]) &&\n\t\t\t(!m[2] || (attrs.id || {}).value === m[2]) &&\n\t\t\t(!m[3] || m[3].test( (attrs[ \"class\" ] || {}).value ))\n\t\t);\n\t},\n\thoverHack = function( events ) {\n\t\treturn jQuery.event.special.hover ? events : events.replace( rhoverHack, \"mouseenter$1 mouseleave$1\" );\n\t};\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar elemData, eventHandle, events,\n\t\t\tt, tns, type, namespaces, handleObj,\n\t\t\thandleObjIn, quick, handlers, special;\n\n\t\t// Don't attach events to noData or text/comment nodes (allow plain objects tho)\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tevents = elemData.events;\n\t\tif ( !events ) {\n\t\t\telemData.events = events = {};\n\t\t}\n\t\teventHandle = elemData.handle;\n\t\tif ( !eventHandle ) {\n\t\t\telemData.handle = eventHandle = function( e ) {\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && (!e || jQuery.event.triggered !== e.type) ?\n\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t\t// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events\n\t\t\teventHandle.elem = elem;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\ttypes = jQuery.trim( hoverHack(types) ).split( \" \" );\n\t\tfor ( t = 0; t < types.length; t++ ) {\n\n\t\t\ttns = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = tns[1];\n\t\t\tnamespaces = ( tns[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend({\n\t\t\t\ttype: type,\n\t\t\t\torigType: tns[1],\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tquick: selector && quickParse( selector ),\n\t\t\t\tnamespace: namespaces.join(\".\")\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\thandlers = events[ type ];\n\t\t\tif ( !handlers ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener/attachEvent if the special events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar elemData = jQuery.hasData( elem ) && jQuery._data( elem ),\n\t\t\tt, tns, type, origType, namespaces, origCount,\n\t\t\tj, events, special, handle, eventType, handleObj;\n\n\t\tif ( !elemData || !(events = elemData.events) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = jQuery.trim( hoverHack( types || \"\" ) ).split(\" \");\n\t\tfor ( t = 0; t < types.length; t++ ) {\n\t\t\ttns = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tns[1];\n\t\t\tnamespaces = tns[2];\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector? special.delegateType : special.bindType ) || type;\n\t\t\teventType = events[ type ] || [];\n\t\t\torigCount = eventType.length;\n\t\t\tnamespaces = namespaces ? new RegExp(\"(^|\\\\.)\" + namespaces.split(\".\").sort().join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\") : null;\n\n\t\t\t// Remove matching events\n\t\t\tfor ( j = 0; j < eventType.length; j++ ) {\n\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t ( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t ( !namespaces || namespaces.test( handleObj.namespace ) ) &&\n\t\t\t\t\t ( !selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\teventType.splice( j--, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\teventType.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( eventType.length === 0 && origCount !== eventType.length ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\thandle = elemData.handle;\n\t\t\tif ( handle ) {\n\t\t\t\thandle.elem = null;\n\t\t\t}\n\n\t\t\t// removeData also checks for emptiness and clears the expando if empty\n\t\t\t// so use it instead of delete\n\t\t\tjQuery.removeData( elem, [ \"events\", \"handle\" ], true );\n\t\t}\n\t},\n\n\t// Events that are safe to short-circuit if no handlers are attached.\n\t// Native DOM events should not be added, they may have inline handlers.\n\tcustomEvent: {\n\t\t\"getData\": true,\n\t\t\"setData\": true,\n\t\t\"changeData\": true\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Event object or event type\n\t\tvar type = event.type || event,\n\t\t\tnamespaces = [],\n\t\t\tcache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType;\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \"!\" ) >= 0 ) {\n\t\t\t// Exclusive events trigger only for the exact event (no namespaces)\n\t\t\ttype = type.slice(0, -1);\n\t\t\texclusive = true;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) >= 0 ) {\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split(\".\");\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\n\t\tif ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {\n\t\t\t// No jQuery handlers for this event type, and it can't have inline handlers\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an Event, Object, or just an event type string\n\t\tevent = typeof event === \"object\" ?\n\t\t\t// jQuery.Event object\n\t\t\tevent[ jQuery.expando ] ? event :\n\t\t\t// Object literal\n\t\t\tnew jQuery.Event( type, event ) :\n\t\t\t// Just the event type (string)\n\t\t\tnew jQuery.Event( type );\n\n\t\tevent.type = type;\n\t\tevent.isTrigger = true;\n\t\tevent.exclusive = exclusive;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.namespace_re = event.namespace? new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\") : null;\n\t\tontype = type.indexOf( \":\" ) < 0 ? \"on\" + type : \"\";\n\n\t\t// Handle a global trigger\n\t\tif ( !elem ) {\n\n\t\t\t// TODO: Stop taunting the data cache; remove global events and always attach to document\n\t\t\tcache = jQuery.cache;\n\t\t\tfor ( i in cache ) {\n\t\t\t\tif ( cache[ i ].events && cache[ i ].events[ type ] ) {\n\t\t\t\t\tjQuery.event.trigger( event, data, cache[ i ].handle.elem, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data != null ? jQuery.makeArray( data ) : [];\n\t\tdata.unshift( event );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\teventPath = [[ elem, special.bindType || type ]];\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tcur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode;\n\t\t\told = null;\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push([ cur, bubbleType ]);\n\t\t\t\told = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( old && old === elem.ownerDocument ) {\n\t\t\t\teventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]);\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\tfor ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) {\n\n\t\t\tcur = eventPath[i][0];\n\t\t\tevent.type = eventPath[i][1];\n\n\t\t\thandle = ( jQuery._data( cur, \"events\" ) || {} )[ event.type ] && jQuery._data( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\t\t\t// Note that this is a bare JS function and not a jQuery handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && jQuery.acceptData( cur ) && handle.apply( cur, data ) === false ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&\n\t\t\t\t!(type === \"click\" && jQuery.nodeName( elem, \"a\" )) && jQuery.acceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Can't use an .isFunction() check here because IE6/7 fails that test.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486)\n\t\t\t\tif ( ontype && elem[ type ] && ((type !== \"focus\" && type !== \"blur\") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\told = elem[ ontype ];\n\n\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\telem[ type ]();\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\telem[ ontype ] = old;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event || window.event );\n\n\t\tvar handlers = ( (jQuery._data( this, \"events\" ) || {} )[ event.type ] || []),\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\targs = [].slice.call( arguments, 0 ),\n\t\t\trun_all = !event.exclusive && !event.namespace,\n\t\t\tspecial = jQuery.event.special[ event.type ] || {},\n\t\t\thandlerQueue = [],\n\t\t\ti, j, cur, jqcur, ret, selMatch, matched, matches, handleObj, sel, related;\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[0] = event;\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers that should run if there are delegated events\n\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n\t\tif ( delegateCount && !(event.button && event.type === \"click\") ) {\n\n\t\t\t// Pregenerate a single jQuery object for reuse with .is()\n\t\t\tjqcur = jQuery(this);\n\t\t\tjqcur.context = this.ownerDocument || this;\n\n\t\t\tfor ( cur = event.target; cur != this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't process events on disabled elements (#6911, #8165)\n\t\t\t\tif ( cur.disabled !== true ) {\n\t\t\t\t\tselMatch = {};\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tjqcur[0] = cur;\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\t\t\t\t\t\tsel = handleObj.selector;\n\n\t\t\t\t\t\tif ( selMatch[ sel ] === undefined ) {\n\t\t\t\t\t\t\tselMatch[ sel ] = (\n\t\t\t\t\t\t\t\thandleObj.quick ? quickIs( cur, handleObj.quick ) : jqcur.is( sel )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( selMatch[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push({ elem: cur, matches: matches });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( handlers.length > delegateCount ) {\n\t\t\thandlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) });\n\t\t}\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\tfor ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) {\n\t\t\tmatched = handlerQueue[ i ];\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tfor ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) {\n\t\t\t\thandleObj = matched.matches[ j ];\n\n\t\t\t\t// Triggered event must either 1) be non-exclusive and have no namespace, or\n\t\t\t\t// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.data = handleObj.data;\n\t\t\t\t\tevent.handleObj = handleObj;\n\n\t\t\t\t\tret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )\n\t\t\t\t\t\t\t.apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tevent.result = ret;\n\t\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\t// *** attrChange attrName relatedNode srcElement  are not normalized, non-W3C, deprecated, will be removed in 1.8 ***\n\tprops: \"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: \"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\t\t\tvar eventDoc, doc, body,\n\t\t\t\tbutton = original.button,\n\t\t\t\tfromElement = original.fromElement;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );\n\t\t\t}\n\n\t\t\t// Add relatedTarget, if necessary\n\t\t\tif ( !event.relatedTarget && fromElement ) {\n\t\t\t\tevent.relatedTarget = fromElement === event.target ? original.toElement : fromElement;\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = jQuery.event.fixHooks[ event.type ] || {},\n\t\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( i = copy.length; i; ) {\n\t\t\tprop = copy[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)\n\t\tif ( !event.target ) {\n\t\t\tevent.target = originalEvent.srcElement || document;\n\t\t}\n\n\t\t// Target should not be a text node (#504, Safari)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// For mouse/key events; add metaKey if it's not there (#3368, IE6/7/8)\n\t\tif ( event.metaKey === undefined ) {\n\t\t\tevent.metaKey = event.ctrlKey;\n\t\t}\n\n\t\treturn fixHook.filter? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\tspecial: {\n\t\tready: {\n\t\t\t// Make sure the ready event is setup\n\t\t\tsetup: jQuery.bindReady\n\t\t},\n\n\t\tload: {\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\n\t\tfocus: {\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\t\t// We only want to do this special case on windows\n\t\t\t\tif ( jQuery.isWindow( this ) ) {\n\t\t\t\t\tthis.onbeforeunload = eventHandle;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tteardown: function( namespaces, eventHandle ) {\n\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n\t\t\t\t\tthis.onbeforeunload = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tsimulate: function( type, elem, event, bubble ) {\n\t\t// Piggyback on a donor event to simulate a different one.\n\t\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t\t// simulated event prevents default then we do the same on the donor.\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{ type: type,\n\t\t\t\tisSimulated: true,\n\t\t\t\toriginalEvent: {}\n\t\t\t}\n\t\t);\n\t\tif ( bubble ) {\n\t\t\tjQuery.event.trigger( e, null, elem );\n\t\t} else {\n\t\t\tjQuery.event.dispatch.call( elem, e );\n\t\t}\n\t\tif ( e.isDefaultPrevented() ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\n// Some plugins are using, but it's undocumented/deprecated and will be removed.\n// The 1.7 special event interface should provide all the hooks needed now.\njQuery.event.handle = jQuery.event.dispatch;\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.detachEvent ) {\n\t\t\telem.detachEvent( \"on\" + type, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src, props ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !(this instanceof jQuery.Event) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||\n\t\t\tsrc.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\nfunction returnFalse() {\n\treturn false;\n}\nfunction returnTrue() {\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// if preventDefault exists run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// if stopPropagation exists run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar target = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj,\n\t\t\t\tselector = handleObj.selector,\n\t\t\t\tret;\n\n\t\t\t// For mousenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || (related !== target && !jQuery.contains( target, related )) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n});\n\n// IE submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\n\t\t\tjQuery.event.add( this, \"click._submit keypress._submit\", function( e ) {\n\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\n\t\t\t\tvar elem = e.target,\n\t\t\t\t\tform = jQuery.nodeName( elem, \"input\" ) || jQuery.nodeName( elem, \"button\" ) ? elem.form : undefined;\n\t\t\t\tif ( form && !form._submit_attached ) {\n\t\t\t\t\tjQuery.event.add( form, \"submit._submit\", function( event ) {\n\t\t\t\t\t\tevent._submit_bubble = true;\n\t\t\t\t\t});\n\t\t\t\t\tform._submit_attached = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\t// return undefined since we don't need an event listener\n\t\t},\n\t\t\n\t\tpostDispatch: function( event ) {\n\t\t\t// If form was submitted by the user, bubble the event up the tree\n\t\t\tif ( event._submit_bubble ) {\n\t\t\t\tdelete event._submit_bubble;\n\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\n\t\t\t\t\tjQuery.event.simulate( \"submit\", this.parentNode, event, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\n\t\t\tjQuery.event.remove( this, \"._submit\" );\n\t\t}\n\t};\n}\n\n// IE change delegation and checkbox/radio fix\nif ( !jQuery.support.changeBubbles ) {\n\n\tjQuery.event.special.change = {\n\n\t\tsetup: function() {\n\n\t\t\tif ( rformElems.test( this.nodeName ) ) {\n\t\t\t\t// IE doesn't fire change on a check/radio until blur; trigger it on click\n\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\n\t\t\t\t// This still fires onchange a second time for check/radio after blur.\n\t\t\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t\t\tjQuery.event.add( this, \"propertychange._change\", function( event ) {\n\t\t\t\t\t\tif ( event.originalEvent.propertyName === \"checked\" ) {\n\t\t\t\t\t\t\tthis._just_changed = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery.event.add( this, \"click._change\", function( event ) {\n\t\t\t\t\t\tif ( this._just_changed && !event.isTrigger ) {\n\t\t\t\t\t\t\tthis._just_changed = false;\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this, event, true );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\n\t\t\tjQuery.event.add( this, \"beforeactivate._change\", function( e ) {\n\t\t\t\tvar elem = e.target;\n\n\t\t\t\tif ( rformElems.test( elem.nodeName ) && !elem._change_attached ) {\n\t\t\t\t\tjQuery.event.add( elem, \"change._change\", function( event ) {\n\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this.parentNode, event, true );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\telem._change_attached = true;\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\thandle: function( event ) {\n\t\t\tvar elem = event.target;\n\n\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\n\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== \"radio\" && elem.type !== \"checkbox\") ) {\n\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tjQuery.event.remove( this, \"._change\" );\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t}\n\t};\n}\n\n// Create \"bubbling\" focus and blur events\nif ( !jQuery.support.focusinBubbles ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler while someone wants focusin/focusout\n\t\tvar attaches = 0,\n\t\t\thandler = function( event ) {\n\t\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );\n\t\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tif ( attaches++ === 0 ) {\n\t\t\t\t\tdocument.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tif ( --attaches === 0 ) {\n\t\t\t\t\tdocument.removeEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\njQuery.fn.extend({\n\n\ton: function( types, selector, data, fn, /*INTERNAL*/ one ) {\n\t\tvar origFn, type;\n\n\t\t// Types can be a map of types/handlers\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-Object, selector, data )\n\t\t\tif ( typeof selector !== \"string\" ) { // && selector != null\n\t\t\t\t// ( types-Object, data )\n\t\t\t\tdata = data || selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.on( type, selector, data, types[ type ], one );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( data == null && fn == null ) {\n\t\t\t// ( types, fn )\n\t\t\tfn = selector;\n\t\t\tdata = selector = undefined;\n\t\t} else if ( fn == null ) {\n\t\t\tif ( typeof selector === \"string\" ) {\n\t\t\t\t// ( types, selector, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = undefined;\n\t\t\t} else {\n\t\t\t\t// ( types, data, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t} else if ( !fn ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( one === 1 ) {\n\t\t\torigFn = fn;\n\t\t\tfn = function( event ) {\n\t\t\t\t// Can use an empty set, since event contains the info\n\t\t\t\tjQuery().off( event );\n\t\t\t\treturn origFn.apply( this, arguments );\n\t\t\t};\n\t\t\t// Use same guid so caller can remove using origFn\n\t\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.add( this, types, fn, data, selector );\n\t\t});\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn this.on( types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\tvar handleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( var type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t});\n\t},\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tlive: function( types, data, fn ) {\n\t\tjQuery( this.context ).on( types, this.selector, data, fn );\n\t\treturn this;\n\t},\n\tdie: function( types, fn ) {\n\t\tjQuery( this.context ).off( types, this.selector || \"**\", fn );\n\t\treturn this;\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length == 1? this.off( selector, \"**\" ) : this.off( types, selector, fn );\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tif ( this[0] ) {\n\t\t\treturn jQuery.event.trigger( type, data, this[0], true );\n\t\t}\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments,\n\t\t\tguid = fn.guid || jQuery.guid++,\n\t\t\ti = 0,\n\t\t\ttoggler = function( event ) {\n\t\t\t\t// Figure out which function to execute\n\t\t\t\tvar lastToggle = ( jQuery._data( this, \"lastToggle\" + fn.guid ) || 0 ) % i;\n\t\t\t\tjQuery._data( this, \"lastToggle\" + fn.guid, lastToggle + 1 );\n\n\t\t\t\t// Make sure that clicks stop\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\t// and execute the function\n\t\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n\t\t\t};\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\ttoggler.guid = guid;\n\t\twhile ( i < args.length ) {\n\t\t\targs[ i++ ].guid = guid;\n\t\t}\n\n\t\treturn this.click( toggler );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n});\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error contextmenu\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\tif ( fn == null ) {\n\t\t\tfn = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n\n\tif ( jQuery.attrFn ) {\n\t\tjQuery.attrFn[ name ] = true;\n\t}\n\n\tif ( rkeyEvent.test( name ) ) {\n\t\tjQuery.event.fixHooks[ name ] = jQuery.event.keyHooks;\n\t}\n\n\tif ( rmouseEvent.test( name ) ) {\n\t\tjQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;\n\t}\n});\n\n\n\n/*!\n * Sizzle CSS Selector Engine\n *  Copyright 2011, The Dojo Foundation\n *  Released under the MIT, BSD, and GPL Licenses.\n *  More information: http://sizzlejs.com/\n */\n(function(){\n\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,\n\texpando = \"sizcache\" + (Math.random() + '').replace('.', ''),\n\tdone = 0,\n\ttoString = Object.prototype.toString,\n\thasDuplicate = false,\n\tbaseHasDuplicate = true,\n\trBackslash = /\\\\/g,\n\trReturn = /\\r\\n/g,\n\trNonWord = /\\W/;\n\n// Here we check if the JavaScript engine is using some sort of\n// optimization where it does not always call our comparision\n// function. If that is the case, discard the hasDuplicate value.\n//   Thus far that includes Google Chrome.\n[0, 0].sort(function() {\n\tbaseHasDuplicate = false;\n\treturn 0;\n});\n\nvar Sizzle = function( selector, context, results, seed ) {\n\tresults = results || [];\n\tcontext = context || document;\n\n\tvar origContext = context;\n\n\tif ( context.nodeType !== 1 && context.nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tvar m, set, checkSet, extra, ret, cur, pop, i,\n\t\tprune = true,\n\t\tcontextXML = Sizzle.isXML( context ),\n\t\tparts = [],\n\t\tsoFar = selector;\n\n\t// Reset the position of the chunker regexp (start from head)\n\tdo {\n\t\tchunker.exec( \"\" );\n\t\tm = chunker.exec( soFar );\n\n\t\tif ( m ) {\n\t\t\tsoFar = m[3];\n\n\t\t\tparts.push( m[1] );\n\n\t\t\tif ( m[2] ) {\n\t\t\t\textra = m[3];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} while ( m );\n\n\tif ( parts.length > 1 && origPOS.exec( selector ) ) {\n\n\t\tif ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\n\t\t\tset = posProcess( parts[0] + parts[1], context, seed );\n\n\t\t} else {\n\t\t\tset = Expr.relative[ parts[0] ] ?\n\t\t\t\t[ context ] :\n\t\t\t\tSizzle( parts.shift(), context );\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tselector = parts.shift();\n\n\t\t\t\tif ( Expr.relative[ selector ] ) {\n\t\t\t\t\tselector += parts.shift();\n\t\t\t\t}\n\n\t\t\t\tset = posProcess( selector, set, seed );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t// (but not if it'll be faster if the inner selector is an ID)\n\t\tif ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&\n\t\t\t\tExpr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {\n\n\t\t\tret = Sizzle.find( parts.shift(), context, contextXML );\n\t\t\tcontext = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set )[0] :\n\t\t\t\tret.set[0];\n\t\t}\n\n\t\tif ( context ) {\n\t\t\tret = seed ?\n\t\t\t\t{ expr: parts.pop(), set: makeArray(seed) } :\n\t\t\t\tSizzle.find( parts.pop(), parts.length === 1 && (parts[0] === \"~\" || parts[0] === \"+\") && context.parentNode ? context.parentNode : context, contextXML );\n\n\t\t\tset = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set ) :\n\t\t\t\tret.set;\n\n\t\t\tif ( parts.length > 0 ) {\n\t\t\t\tcheckSet = makeArray( set );\n\n\t\t\t} else {\n\t\t\t\tprune = false;\n\t\t\t}\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tcur = parts.pop();\n\t\t\t\tpop = cur;\n\n\t\t\t\tif ( !Expr.relative[ cur ] ) {\n\t\t\t\t\tcur = \"\";\n\t\t\t\t} else {\n\t\t\t\t\tpop = parts.pop();\n\t\t\t\t}\n\n\t\t\t\tif ( pop == null ) {\n\t\t\t\t\tpop = context;\n\t\t\t\t}\n\n\t\t\t\tExpr.relative[ cur ]( checkSet, pop, contextXML );\n\t\t\t}\n\n\t\t} else {\n\t\t\tcheckSet = parts = [];\n\t\t}\n\t}\n\n\tif ( !checkSet ) {\n\t\tcheckSet = set;\n\t}\n\n\tif ( !checkSet ) {\n\t\tSizzle.error( cur || selector );\n\t}\n\n\tif ( toString.call(checkSet) === \"[object Array]\" ) {\n\t\tif ( !prune ) {\n\t\t\tresults.push.apply( results, checkSet );\n\n\t\t} else if ( context && context.nodeType === 1 ) {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && checkSet[i].nodeType === 1 ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\tmakeArray( checkSet, results );\n\t}\n\n\tif ( extra ) {\n\t\tSizzle( extra, origContext, results, seed );\n\t\tSizzle.uniqueSort( results );\n\t}\n\n\treturn results;\n};\n\nSizzle.uniqueSort = function( results ) {\n\tif ( sortOrder ) {\n\t\thasDuplicate = baseHasDuplicate;\n\t\tresults.sort( sortOrder );\n\n\t\tif ( hasDuplicate ) {\n\t\t\tfor ( var i = 1; i < results.length; i++ ) {\n\t\t\t\tif ( results[i] === results[ i - 1 ] ) {\n\t\t\t\t\tresults.splice( i--, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.matches = function( expr, set ) {\n\treturn Sizzle( expr, null, null, set );\n};\n\nSizzle.matchesSelector = function( node, expr ) {\n\treturn Sizzle( expr, null, null, [node] ).length > 0;\n};\n\nSizzle.find = function( expr, context, isXML ) {\n\tvar set, i, len, match, type, left;\n\n\tif ( !expr ) {\n\t\treturn [];\n\t}\n\n\tfor ( i = 0, len = Expr.order.length; i < len; i++ ) {\n\t\ttype = Expr.order[i];\n\n\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) ) {\n\t\t\tleft = match[1];\n\t\t\tmatch.splice( 1, 1 );\n\n\t\t\tif ( left.substr( left.length - 1 ) !== \"\\\\\" ) {\n\t\t\t\tmatch[1] = (match[1] || \"\").replace( rBackslash, \"\" );\n\t\t\t\tset = Expr.find[ type ]( match, context, isXML );\n\n\t\t\t\tif ( set != null ) {\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !set ) {\n\t\tset = typeof context.getElementsByTagName !== \"undefined\" ?\n\t\t\tcontext.getElementsByTagName( \"*\" ) :\n\t\t\t[];\n\t}\n\n\treturn { set: set, expr: expr };\n};\n\nSizzle.filter = function( expr, set, inplace, not ) {\n\tvar match, anyFound,\n\t\ttype, found, item, filter, left,\n\t\ti, pass,\n\t\told = expr,\n\t\tresult = [],\n\t\tcurLoop = set,\n\t\tisXMLFilter = set && set[0] && Sizzle.isXML( set[0] );\n\n\twhile ( expr && set.length ) {\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {\n\t\t\t\tfilter = Expr.filter[ type ];\n\t\t\t\tleft = match[1];\n\n\t\t\t\tanyFound = false;\n\n\t\t\t\tmatch.splice(1,1);\n\n\t\t\t\tif ( left.substr( left.length - 1 ) === \"\\\\\" ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ( curLoop === result ) {\n\t\t\t\t\tresult = [];\n\t\t\t\t}\n\n\t\t\t\tif ( Expr.preFilter[ type ] ) {\n\t\t\t\t\tmatch = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );\n\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\tanyFound = found = true;\n\n\t\t\t\t\t} else if ( match === true ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\tfor ( i = 0; (item = curLoop[i]) != null; i++ ) {\n\t\t\t\t\t\tif ( item ) {\n\t\t\t\t\t\t\tfound = filter( item, match, i, curLoop );\n\t\t\t\t\t\t\tpass = not ^ found;\n\n\t\t\t\t\t\t\tif ( inplace && found != null ) {\n\t\t\t\t\t\t\t\tif ( pass ) {\n\t\t\t\t\t\t\t\t\tanyFound = true;\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else if ( pass ) {\n\t\t\t\t\t\t\t\tresult.push( item );\n\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( found !== undefined ) {\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tcurLoop = result;\n\t\t\t\t\t}\n\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\n\t\t\t\t\tif ( !anyFound ) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Improper expression\n\t\tif ( expr === old ) {\n\t\t\tif ( anyFound == null ) {\n\t\t\t\tSizzle.error( expr );\n\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\told = expr;\n\t}\n\n\treturn curLoop;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Utility function for retreiving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\nvar getText = Sizzle.getText = function( elem ) {\n    var i, node,\n\t\tnodeType = elem.nodeType,\n\t\tret = \"\";\n\n\tif ( nodeType ) {\n\t\tif ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t\t// Use textContent || innerText for elements\n\t\t\tif ( typeof elem.textContent === 'string' ) {\n\t\t\t\treturn elem.textContent;\n\t\t\t} else if ( typeof elem.innerText === 'string' ) {\n\t\t\t\t// Replace IE's carriage returns\n\t\t\t\treturn elem.innerText.replace( rReturn, '' );\n\t\t\t} else {\n\t\t\t\t// Traverse it's children\n\t\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling) {\n\t\t\t\t\tret += getText( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\t} else {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\tfor ( i = 0; (node = elem[i]); i++ ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tif ( node.nodeType !== 8 ) {\n\t\t\t\tret += getText( node );\n\t\t\t}\n\t\t}\n\t}\n\treturn ret;\n};\n\nvar Expr = Sizzle.selectors = {\n\torder: [ \"ID\", \"NAME\", \"TAG\" ],\n\n\tmatch: {\n\t\tID: /#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tCLASS: /\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tNAME: /\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,\n\t\tATTR: /\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,\n\t\tTAG: /^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,\n\t\tCHILD: /:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,\n\t\tPOS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,\n\t\tPSEUDO: /:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/\n\t},\n\n\tleftMatch: {},\n\n\tattrMap: {\n\t\t\"class\": \"className\",\n\t\t\"for\": \"htmlFor\"\n\t},\n\n\tattrHandle: {\n\t\thref: function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\" );\n\t\t},\n\t\ttype: function( elem ) {\n\t\t\treturn elem.getAttribute( \"type\" );\n\t\t}\n\t},\n\n\trelative: {\n\t\t\"+\": function(checkSet, part){\n\t\t\tvar isPartStr = typeof part === \"string\",\n\t\t\t\tisTag = isPartStr && !rNonWord.test( part ),\n\t\t\t\tisPartStrNotTag = isPartStr && !isTag;\n\n\t\t\tif ( isTag ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t}\n\n\t\t\tfor ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {\n\t\t\t\tif ( (elem = checkSet[i]) ) {\n\t\t\t\t\twhile ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}\n\n\t\t\t\t\tcheckSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?\n\t\t\t\t\t\telem || false :\n\t\t\t\t\t\telem === part;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( isPartStrNotTag ) {\n\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t}\n\t\t},\n\n\t\t\">\": function( checkSet, part ) {\n\t\t\tvar elem,\n\t\t\t\tisPartStr = typeof part === \"string\",\n\t\t\t\ti = 0,\n\t\t\t\tl = checkSet.length;\n\n\t\t\tif ( isPartStr && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\t\t\tcheckSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tcheckSet[i] = isPartStr ?\n\t\t\t\t\t\t\telem.parentNode :\n\t\t\t\t\t\t\telem.parentNode === part;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( isPartStr ) {\n\t\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t\"\": function(checkSet, part, isXML){\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"parentNode\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t},\n\n\t\t\"~\": function( checkSet, part, isXML ) {\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"previousSibling\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t}\n\t},\n\n\tfind: {\n\t\tID: function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t}\n\t\t},\n\n\t\tNAME: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByName !== \"undefined\" ) {\n\t\t\t\tvar ret = [],\n\t\t\t\t\tresults = context.getElementsByName( match[1] );\n\n\t\t\t\tfor ( var i = 0, l = results.length; i < l; i++ ) {\n\t\t\t\t\tif ( results[i].getAttribute(\"name\") === match[1] ) {\n\t\t\t\t\t\tret.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn ret.length === 0 ? null : ret;\n\t\t\t}\n\t\t},\n\n\t\tTAG: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( match[1] );\n\t\t\t}\n\t\t}\n\t},\n\tpreFilter: {\n\t\tCLASS: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tmatch = \" \" + match[1].replace( rBackslash, \"\" ) + \" \";\n\n\t\t\tif ( isXML ) {\n\t\t\t\treturn match;\n\t\t\t}\n\n\t\t\tfor ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\n\t\t\t\tif ( elem ) {\n\t\t\t\t\tif ( not ^ (elem.className && (\" \" + elem.className + \" \").replace(/[\\t\\n\\r]/g, \" \").indexOf(match) >= 0) ) {\n\t\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\t\tresult.push( elem );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( inplace ) {\n\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t\tID: function( match ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" );\n\t\t},\n\n\t\tTAG: function( match, curLoop ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" ).toLowerCase();\n\t\t},\n\n\t\tCHILD: function( match ) {\n\t\t\tif ( match[1] === \"nth\" ) {\n\t\t\t\tif ( !match[2] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\tmatch[2] = match[2].replace(/^\\+|\\s*/g, '');\n\n\t\t\t\t// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'\n\t\t\t\tvar test = /(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(\n\t\t\t\t\tmatch[2] === \"even\" && \"2n\" || match[2] === \"odd\" && \"2n+1\" ||\n\t\t\t\t\t!/\\D/.test( match[2] ) && \"0n+\" + match[2] || match[2]);\n\n\t\t\t\t// calculate the numbers (first)n+(last) including if they are negative\n\t\t\t\tmatch[2] = (test[1] + (test[2] || 1)) - 0;\n\t\t\t\tmatch[3] = test[3] - 0;\n\t\t\t}\n\t\t\telse if ( match[2] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\t// TODO: Move to normal caching system\n\t\t\tmatch[0] = done++;\n\n\t\t\treturn match;\n\t\t},\n\n\t\tATTR: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tvar name = match[1] = match[1].replace( rBackslash, \"\" );\n\n\t\t\tif ( !isXML && Expr.attrMap[name] ) {\n\t\t\t\tmatch[1] = Expr.attrMap[name];\n\t\t\t}\n\n\t\t\t// Handle if an un-quoted value was used\n\t\t\tmatch[4] = ( match[4] || match[5] || \"\" ).replace( rBackslash, \"\" );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[4] = \" \" + match[4] + \" \";\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match, curLoop, inplace, result, not ) {\n\t\t\tif ( match[1] === \"not\" ) {\n\t\t\t\t// If we're dealing with a complex expression, or a simple one\n\t\t\t\tif ( ( chunker.exec(match[3]) || \"\" ).length > 1 || /^\\w/.test(match[3]) ) {\n\t\t\t\t\tmatch[3] = Sizzle(match[3], null, null, curLoop);\n\n\t\t\t\t} else {\n\t\t\t\t\tvar ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\n\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tresult.push.apply( result, ret );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPOS: function( match ) {\n\t\t\tmatch.unshift( true );\n\n\t\t\treturn match;\n\t\t}\n\t},\n\n\tfilters: {\n\t\tenabled: function( elem ) {\n\t\t\treturn elem.disabled === false && elem.type !== \"hidden\";\n\t\t},\n\n\t\tdisabled: function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\tchecked: function( elem ) {\n\t\t\treturn elem.checked === true;\n\t\t},\n\n\t\tselected: function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !!elem.firstChild;\n\t\t},\n\n\t\tempty: function( elem ) {\n\t\t\treturn !elem.firstChild;\n\t\t},\n\n\t\thas: function( elem, i, match ) {\n\t\t\treturn !!Sizzle( match[3], elem ).length;\n\t\t},\n\n\t\theader: function( elem ) {\n\t\t\treturn (/h\\d/i).test( elem.nodeName );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\tvar attr = elem.getAttribute( \"type\" ), type = elem.type;\n\t\t\t// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)\n\t\t\t// use getAttribute instead to test this case\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"text\" === type && ( attr === type || attr === null );\n\t\t},\n\n\t\tradio: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"radio\" === elem.type;\n\t\t},\n\n\t\tcheckbox: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"checkbox\" === elem.type;\n\t\t},\n\n\t\tfile: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"file\" === elem.type;\n\t\t},\n\n\t\tpassword: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"password\" === elem.type;\n\t\t},\n\n\t\tsubmit: function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn (name === \"input\" || name === \"button\") && \"submit\" === elem.type;\n\t\t},\n\n\t\timage: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"image\" === elem.type;\n\t\t},\n\n\t\treset: function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn (name === \"input\" || name === \"button\") && \"reset\" === elem.type;\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && \"button\" === elem.type || name === \"button\";\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn (/input|select|textarea|button/i).test( elem.nodeName );\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === elem.ownerDocument.activeElement;\n\t\t}\n\t},\n\tsetFilters: {\n\t\tfirst: function( elem, i ) {\n\t\t\treturn i === 0;\n\t\t},\n\n\t\tlast: function( elem, i, match, array ) {\n\t\t\treturn i === array.length - 1;\n\t\t},\n\n\t\teven: function( elem, i ) {\n\t\t\treturn i % 2 === 0;\n\t\t},\n\n\t\todd: function( elem, i ) {\n\t\t\treturn i % 2 === 1;\n\t\t},\n\n\t\tlt: function( elem, i, match ) {\n\t\t\treturn i < match[3] - 0;\n\t\t},\n\n\t\tgt: function( elem, i, match ) {\n\t\t\treturn i > match[3] - 0;\n\t\t},\n\n\t\tnth: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t},\n\n\t\teq: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t}\n\t},\n\tfilter: {\n\t\tPSEUDO: function( elem, match, i, array ) {\n\t\t\tvar name = match[1],\n\t\t\t\tfilter = Expr.filters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\n\t\t\t} else if ( name === \"contains\" ) {\n\t\t\t\treturn (elem.textContent || elem.innerText || getText([ elem ]) || \"\").indexOf(match[3]) >= 0;\n\n\t\t\t} else if ( name === \"not\" ) {\n\t\t\t\tvar not = match[3];\n\n\t\t\t\tfor ( var j = 0, l = not.length; j < l; j++ ) {\n\t\t\t\t\tif ( not[j] === elem ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\n\t\t\t} else {\n\t\t\t\tSizzle.error( name );\n\t\t\t}\n\t\t},\n\n\t\tCHILD: function( elem, match ) {\n\t\t\tvar first, last,\n\t\t\t\tdoneName, parent, cache,\n\t\t\t\tcount, diff,\n\t\t\t\ttype = match[1],\n\t\t\t\tnode = elem;\n\n\t\t\tswitch ( type ) {\n\t\t\t\tcase \"only\":\n\t\t\t\tcase \"first\":\n\t\t\t\t\twhile ( (node = node.previousSibling) ) {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( type === \"first\" ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tnode = elem;\n\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase \"last\":\n\t\t\t\t\twhile ( (node = node.nextSibling) ) {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\n\t\t\t\tcase \"nth\":\n\t\t\t\t\tfirst = match[2];\n\t\t\t\t\tlast = match[3];\n\n\t\t\t\t\tif ( first === 1 && last === 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tdoneName = match[0];\n\t\t\t\t\tparent = elem.parentNode;\n\n\t\t\t\t\tif ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) {\n\t\t\t\t\t\tcount = 0;\n\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tnode.nodeIndex = ++count;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tparent[ expando ] = doneName;\n\t\t\t\t\t}\n\n\t\t\t\t\tdiff = elem.nodeIndex - last;\n\n\t\t\t\t\tif ( first === 0 ) {\n\t\t\t\t\t\treturn diff === 0;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tID: function( elem, match ) {\n\t\t\treturn elem.nodeType === 1 && elem.getAttribute(\"id\") === match;\n\t\t},\n\n\t\tTAG: function( elem, match ) {\n\t\t\treturn (match === \"*\" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match;\n\t\t},\n\n\t\tCLASS: function( elem, match ) {\n\t\t\treturn (\" \" + (elem.className || elem.getAttribute(\"class\")) + \" \")\n\t\t\t\t.indexOf( match ) > -1;\n\t\t},\n\n\t\tATTR: function( elem, match ) {\n\t\t\tvar name = match[1],\n\t\t\t\tresult = Sizzle.attr ?\n\t\t\t\t\tSizzle.attr( elem, name ) :\n\t\t\t\t\tExpr.attrHandle[ name ] ?\n\t\t\t\t\tExpr.attrHandle[ name ]( elem ) :\n\t\t\t\t\telem[ name ] != null ?\n\t\t\t\t\t\telem[ name ] :\n\t\t\t\t\t\telem.getAttribute( name ),\n\t\t\t\tvalue = result + \"\",\n\t\t\t\ttype = match[2],\n\t\t\t\tcheck = match[4];\n\n\t\t\treturn result == null ?\n\t\t\t\ttype === \"!=\" :\n\t\t\t\t!type && Sizzle.attr ?\n\t\t\t\tresult != null :\n\t\t\t\ttype === \"=\" ?\n\t\t\t\tvalue === check :\n\t\t\t\ttype === \"*=\" ?\n\t\t\t\tvalue.indexOf(check) >= 0 :\n\t\t\t\ttype === \"~=\" ?\n\t\t\t\t(\" \" + value + \" \").indexOf(check) >= 0 :\n\t\t\t\t!check ?\n\t\t\t\tvalue && result !== false :\n\t\t\t\ttype === \"!=\" ?\n\t\t\t\tvalue !== check :\n\t\t\t\ttype === \"^=\" ?\n\t\t\t\tvalue.indexOf(check) === 0 :\n\t\t\t\ttype === \"$=\" ?\n\t\t\t\tvalue.substr(value.length - check.length) === check :\n\t\t\t\ttype === \"|=\" ?\n\t\t\t\tvalue === check || value.substr(0, check.length + 1) === check + \"-\" :\n\t\t\t\tfalse;\n\t\t},\n\n\t\tPOS: function( elem, match, i, array ) {\n\t\t\tvar name = match[2],\n\t\t\t\tfilter = Expr.setFilters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar origPOS = Expr.match.POS,\n\tfescape = function(all, num){\n\t\treturn \"\\\\\" + (num - 0 + 1);\n\t};\n\nfor ( var type in Expr.match ) {\n\tExpr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\\[]*\\])(?![^\\(]*\\))/.source) );\n\tExpr.leftMatch[ type ] = new RegExp( /(^(?:.|\\r|\\n)*?)/.source + Expr.match[ type ].source.replace(/\\\\(\\d+)/g, fescape) );\n}\n// Expose origPOS\n// \"global\" as in regardless of relation to brackets/parens\nExpr.match.globalPOS = origPOS;\n\nvar makeArray = function( array, results ) {\n\tarray = Array.prototype.slice.call( array, 0 );\n\n\tif ( results ) {\n\t\tresults.push.apply( results, array );\n\t\treturn results;\n\t}\n\n\treturn array;\n};\n\n// Perform a simple check to determine if the browser is capable of\n// converting a NodeList to an array using builtin methods.\n// Also verifies that the returned array holds DOM nodes\n// (which is not the case in the Blackberry browser)\ntry {\n\tArray.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;\n\n// Provide a fallback method if it does not work\n} catch( e ) {\n\tmakeArray = function( array, results ) {\n\t\tvar i = 0,\n\t\t\tret = results || [];\n\n\t\tif ( toString.call(array) === \"[object Array]\" ) {\n\t\t\tArray.prototype.push.apply( ret, array );\n\n\t\t} else {\n\t\t\tif ( typeof array.length === \"number\" ) {\n\t\t\t\tfor ( var l = array.length; i < l; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; array[i]; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nvar sortOrder, siblingCheck;\n\nif ( document.documentElement.compareDocumentPosition ) {\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tif ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {\n\t\t\treturn a.compareDocumentPosition ? -1 : 1;\n\t\t}\n\n\t\treturn a.compareDocumentPosition(b) & 4 ? -1 : 1;\n\t};\n\n} else {\n\tsortOrder = function( a, b ) {\n\t\t// The nodes are identical, we can exit early\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// Fallback to using sourceIndex (in IE) if it's available on both nodes\n\t\t} else if ( a.sourceIndex && b.sourceIndex ) {\n\t\t\treturn a.sourceIndex - b.sourceIndex;\n\t\t}\n\n\t\tvar al, bl,\n\t\t\tap = [],\n\t\t\tbp = [],\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tcur = aup;\n\n\t\t// If the nodes are siblings (or identical) we can do a quick check\n\t\tif ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\n\t\t// If no parents were found then the nodes are disconnected\n\t\t} else if ( !aup ) {\n\t\t\treturn -1;\n\n\t\t} else if ( !bup ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Otherwise they're somewhere else in the tree so we need\n\t\t// to build up a full list of the parentNodes for comparison\n\t\twhile ( cur ) {\n\t\t\tap.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tcur = bup;\n\n\t\twhile ( cur ) {\n\t\t\tbp.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tal = ap.length;\n\t\tbl = bp.length;\n\n\t\t// Start walking down the tree looking for a discrepancy\n\t\tfor ( var i = 0; i < al && i < bl; i++ ) {\n\t\t\tif ( ap[i] !== bp[i] ) {\n\t\t\t\treturn siblingCheck( ap[i], bp[i] );\n\t\t\t}\n\t\t}\n\n\t\t// We ended someplace up the tree so do a sibling check\n\t\treturn i === al ?\n\t\t\tsiblingCheck( a, bp[i], -1 ) :\n\t\t\tsiblingCheck( ap[i], b, 1 );\n\t};\n\n\tsiblingCheck = function( a, b, ret ) {\n\t\tif ( a === b ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar cur = a.nextSibling;\n\n\t\twhile ( cur ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tcur = cur.nextSibling;\n\t\t}\n\n\t\treturn 1;\n\t};\n}\n\n// Check to see if the browser returns elements by name when\n// querying by getElementById (and provide a workaround)\n(function(){\n\t// We're going to inject a fake input element with a specified name\n\tvar form = document.createElement(\"div\"),\n\t\tid = \"script\" + (new Date()).getTime(),\n\t\troot = document.documentElement;\n\n\tform.innerHTML = \"<a name='\" + id + \"'/>\";\n\n\t// Inject it into the root element, check its status, and remove it quickly\n\troot.insertBefore( form, root.firstChild );\n\n\t// The workaround has to do additional checks after a getElementById\n\t// Which slows things down for other browsers (hence the branching)\n\tif ( document.getElementById( id ) ) {\n\t\tExpr.find.ID = function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\n\t\t\t\treturn m ?\n\t\t\t\t\tm.id === match[1] || typeof m.getAttributeNode !== \"undefined\" && m.getAttributeNode(\"id\").nodeValue === match[1] ?\n\t\t\t\t\t\t[m] :\n\t\t\t\t\t\tundefined :\n\t\t\t\t\t[];\n\t\t\t}\n\t\t};\n\n\t\tExpr.filter.ID = function( elem, match ) {\n\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\n\t\t\treturn elem.nodeType === 1 && node && node.nodeValue === match;\n\t\t};\n\t}\n\n\troot.removeChild( form );\n\n\t// release memory in IE\n\troot = form = null;\n})();\n\n(function(){\n\t// Check to see if the browser returns only elements\n\t// when doing getElementsByTagName(\"*\")\n\n\t// Create a fake element\n\tvar div = document.createElement(\"div\");\n\tdiv.appendChild( document.createComment(\"\") );\n\n\t// Make sure no comments are found\n\tif ( div.getElementsByTagName(\"*\").length > 0 ) {\n\t\tExpr.find.TAG = function( match, context ) {\n\t\t\tvar results = context.getElementsByTagName( match[1] );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( match[1] === \"*\" ) {\n\t\t\t\tvar tmp = [];\n\n\t\t\t\tfor ( var i = 0; results[i]; i++ ) {\n\t\t\t\t\tif ( results[i].nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresults = tmp;\n\t\t\t}\n\n\t\t\treturn results;\n\t\t};\n\t}\n\n\t// Check to see if an attribute returns normalized href attributes\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\n\tif ( div.firstChild && typeof div.firstChild.getAttribute !== \"undefined\" &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") !== \"#\" ) {\n\n\t\tExpr.attrHandle.href = function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\", 2 );\n\t\t};\n\t}\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nif ( document.querySelectorAll ) {\n\t(function(){\n\t\tvar oldSizzle = Sizzle,\n\t\t\tdiv = document.createElement(\"div\"),\n\t\t\tid = \"__sizzle__\";\n\n\t\tdiv.innerHTML = \"<p class='TEST'></p>\";\n\n\t\t// Safari can't handle uppercase or unicode characters when\n\t\t// in quirks mode.\n\t\tif ( div.querySelectorAll && div.querySelectorAll(\".TEST\").length === 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tSizzle = function( query, context, extra, seed ) {\n\t\t\tcontext = context || document;\n\n\t\t\t// Only use querySelectorAll on non-XML documents\n\t\t\t// (ID selectors don't work in non-HTML documents)\n\t\t\tif ( !seed && !Sizzle.isXML(context) ) {\n\t\t\t\t// See if we find a selector to speed up\n\t\t\t\tvar match = /^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec( query );\n\n\t\t\t\tif ( match && (context.nodeType === 1 || context.nodeType === 9) ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t\t\tif ( match[1] ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByTagName( query ), extra );\n\n\t\t\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t\t\t} else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByClassName( match[2] ), extra );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( context.nodeType === 9 ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"body\")\n\t\t\t\t\t// The body element only exists once, optimize finding it\n\t\t\t\t\tif ( query === \"body\" && context.body ) {\n\t\t\t\t\t\treturn makeArray( [ context.body ], extra );\n\n\t\t\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\t\t\t} else if ( match && match[3] ) {\n\t\t\t\t\t\tvar elem = context.getElementById( match[3] );\n\n\t\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === match[3] ) {\n\t\t\t\t\t\t\t\treturn makeArray( [ elem ], extra );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn makeArray( [], extra );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn makeArray( context.querySelectorAll(query), extra );\n\t\t\t\t\t} catch(qsaError) {}\n\n\t\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t\t// IE 8 doesn't work on object elements\n\t\t\t\t} else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\t\tvar oldContext = context,\n\t\t\t\t\t\told = context.getAttribute( \"id\" ),\n\t\t\t\t\t\tnid = old || id,\n\t\t\t\t\t\thasParent = context.parentNode,\n\t\t\t\t\t\trelativeHierarchySelector = /^\\s*[+~]/.test( query );\n\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnid = nid.replace( /'/g, \"\\\\$&\" );\n\t\t\t\t\t}\n\t\t\t\t\tif ( relativeHierarchySelector && hasParent ) {\n\t\t\t\t\t\tcontext = context.parentNode;\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif ( !relativeHierarchySelector || hasParent ) {\n\t\t\t\t\t\t\treturn makeArray( context.querySelectorAll( \"[id='\" + nid + \"'] \" + query ), extra );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} catch(pseudoError) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\t\toldContext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn oldSizzle(query, context, extra, seed);\n\t\t};\n\n\t\tfor ( var prop in oldSizzle ) {\n\t\t\tSizzle[ prop ] = oldSizzle[ prop ];\n\t\t}\n\n\t\t// release memory in IE\n\t\tdiv = null;\n\t})();\n}\n\n(function(){\n\tvar html = document.documentElement,\n\t\tmatches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector;\n\n\tif ( matches ) {\n\t\t// Check to see if it's possible to do matchesSelector\n\t\t// on a disconnected node (IE 9 fails this)\n\t\tvar disconnectedMatch = !matches.call( document.createElement( \"div\" ), \"div\" ),\n\t\t\tpseudoWorks = false;\n\n\t\ttry {\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( document.documentElement, \"[test!='']:sizzle\" );\n\n\t\t} catch( pseudoError ) {\n\t\t\tpseudoWorks = true;\n\t\t}\n\n\t\tSizzle.matchesSelector = function( node, expr ) {\n\t\t\t// Make sure that attribute selectors are quoted\n\t\t\texpr = expr.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g, \"='$1']\");\n\n\t\t\tif ( !Sizzle.isXML( node ) ) {\n\t\t\t\ttry {\n\t\t\t\t\tif ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {\n\t\t\t\t\t\tvar ret = matches.call( node, expr );\n\n\t\t\t\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\t\t\t\tif ( ret || !disconnectedMatch ||\n\t\t\t\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t\t\t\t// fragment in IE 9, so check for that\n\t\t\t\t\t\t\t\tnode.document && node.document.nodeType !== 11 ) {\n\t\t\t\t\t\t\treturn ret;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\treturn Sizzle(expr, null, null, [node]).length > 0;\n\t\t};\n\t}\n})();\n\n(function(){\n\tvar div = document.createElement(\"div\");\n\n\tdiv.innerHTML = \"<div class='test e'></div><div class='test'></div>\";\n\n\t// Opera can't find a second classname (in 9.6)\n\t// Also, make sure that getElementsByClassName actually exists\n\tif ( !div.getElementsByClassName || div.getElementsByClassName(\"e\").length === 0 ) {\n\t\treturn;\n\t}\n\n\t// Safari caches class attributes, doesn't catch changes (in 3.2)\n\tdiv.lastChild.className = \"e\";\n\n\tif ( div.getElementsByClassName(\"e\").length === 1 ) {\n\t\treturn;\n\t}\n\n\tExpr.order.splice(1, 0, \"CLASS\");\n\tExpr.find.CLASS = function( match, context, isXML ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && !isXML ) {\n\t\t\treturn context.getElementsByClassName(match[1]);\n\t\t}\n\t};\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nfunction dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem[ expando ] === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 && !isXML ){\n\t\t\t\t\telem[ expando ] = doneName;\n\t\t\t\t\telem.sizset = i;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeName.toLowerCase() === cur ) {\n\t\t\t\t\tmatch = elem;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nfunction dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem[ expando ] === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !isXML ) {\n\t\t\t\t\t\telem[ expando ] = doneName;\n\t\t\t\t\t\telem.sizset = i;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof cur !== \"string\" ) {\n\t\t\t\t\t\tif ( elem === cur ) {\n\t\t\t\t\t\t\tmatch = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {\n\t\t\t\t\t\tmatch = elem;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nif ( document.documentElement.contains ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn a !== b && (a.contains ? a.contains(b) : true);\n\t};\n\n} else if ( document.documentElement.compareDocumentPosition ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn !!(a.compareDocumentPosition(b) & 16);\n\t};\n\n} else {\n\tSizzle.contains = function() {\n\t\treturn false;\n\t};\n}\n\nSizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;\n\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\nvar posProcess = function( selector, context, seed ) {\n\tvar match,\n\t\ttmpSet = [],\n\t\tlater = \"\",\n\t\troot = context.nodeType ? [context] : context;\n\n\t// Position selectors must be done after the filter\n\t// And so must :not(positional) so we move all PSEUDOs to the end\n\twhile ( (match = Expr.match.PSEUDO.exec( selector )) ) {\n\t\tlater += match[0];\n\t\tselector = selector.replace( Expr.match.PSEUDO, \"\" );\n\t}\n\n\tselector = Expr.relative[selector] ? selector + \"*\" : selector;\n\n\tfor ( var i = 0, l = root.length; i < l; i++ ) {\n\t\tSizzle( selector, root[i], tmpSet, seed );\n\t}\n\n\treturn Sizzle.filter( later, tmpSet );\n};\n\n// EXPOSE\n// Override sizzle attribute retrieval\nSizzle.attr = jQuery.attr;\nSizzle.selectors.attrMap = {};\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.filters;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n})();\n\n\nvar runtil = /Until$/,\n\trparentsprev = /^(?:parents|prevUntil|prevAll)/,\n\t// Note: This RegExp should be improved, or likely pulled from Sizzle\n\trmultiselector = /,/,\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\tslice = Array.prototype.slice,\n\tPOS = jQuery.expr.match.globalPOS,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar self = this,\n\t\t\ti, l;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn jQuery( selector ).filter(function() {\n\t\t\t\tfor ( i = 0, l = self.length; i < l; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tvar ret = this.pushStack( \"\", \"find\", selector ),\n\t\t\tlength, n, r;\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tlength = ret.length;\n\t\t\tjQuery.find( selector, this[i], ret );\n\n\t\t\tif ( i > 0 ) {\n\t\t\t\t// Make sure that the results are unique\n\t\t\t\tfor ( n = length; n < ret.length; n++ ) {\n\t\t\t\t\tfor ( r = 0; r < length; r++ ) {\n\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n\t\t\t\t\t\t\tret.splice(n--, 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar targets = jQuery( target );\n\t\treturn this.filter(function() {\n\t\t\tfor ( var i = 0, l = targets.length; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, false), \"not\", selector);\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, true), \"filter\", selector );\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && (\n\t\t\ttypeof selector === \"string\" ?\n\t\t\t\t// If this is a positional selector, check membership in the returned set\n\t\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\t\tPOS.test( selector ) ?\n\t\t\t\t\tjQuery( selector, this.context ).index( this[0] ) >= 0 :\n\t\t\t\t\tjQuery.filter( selector, this ).length > 0 :\n\t\t\t\tthis.filter( selector ).length > 0 );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar ret = [], i, l, cur = this[0];\n\n\t\t// Array (deprecated as of jQuery 1.7)\n\t\tif ( jQuery.isArray( selectors ) ) {\n\t\t\tvar level = 1;\n\n\t\t\twhile ( cur && cur.ownerDocument && cur !== context ) {\n\t\t\t\tfor ( i = 0; i < selectors.length; i++ ) {\n\n\t\t\t\t\tif ( jQuery( cur ).is( selectors[ i ] ) ) {\n\t\t\t\t\t\tret.push({ selector: selectors[ i ], elem: cur, level: level });\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcur = cur.parentNode;\n\t\t\t\tlevel++;\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t}\n\n\t\t// String\n\t\tvar pos = POS.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tcur = this[i];\n\n\t\t\twhile ( cur ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n\t\t\t\t\tret.push( cur );\n\t\t\t\t\tbreak;\n\n\t\t\t\t} else {\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tif ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tret = ret.length > 1 ? jQuery.unique( ret ) : ret;\n\n\t\treturn this.pushStack( ret, \"closest\", selectors );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;\n\t\t}\n\n\t\t// index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0], jQuery( elem ) );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context ) :\n\t\t\t\tjQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n\t\t\tall :\n\t\t\tjQuery.unique( all ) );\n\t},\n\n\tandSelf: function() {\n\t\treturn this.add( this.prevObject );\n\t}\n});\n\n// A painfully simple check to see if an element is disconnected\n// from a document (should be improved, where feasible).\nfunction isDisconnected( node ) {\n\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.makeArray( elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until );\n\n\t\tif ( !runtil.test( name ) ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;\n\n\t\tif ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {\n\t\t\tret = ret.reverse();\n\t\t}\n\n\t\treturn this.pushStack( ret, name, slice.call( arguments ).join(\",\") );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 ?\n\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n\t\t\tjQuery.find.matches(expr, elems);\n\t},\n\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tnth: function( cur, result, dir, elem ) {\n\t\tresult = result || 1;\n\t\tvar num = 0;\n\n\t\tfor ( ; cur; cur = cur[dir] ) {\n\t\t\tif ( cur.nodeType === 1 && ++num === result ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn cur;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, keep ) {\n\n\t// Can't pass null or undefined to indexOf in Firefox 4\n\t// Set to 0 to skip string check\n\tqualifier = qualifier || 0;\n\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n\t\t\treturn retVal === keep;\n\t\t});\n\n\t} else if ( qualifier.nodeType ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn ( elem === qualifier ) === keep;\n\t\t});\n\n\t} else if ( typeof qualifier === \"string\" ) {\n\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t});\n\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n\t\t} else {\n\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n\t\t}\n\t}\n\n\treturn jQuery.grep(elements, function( elem, i ) {\n\t\treturn ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;\n\t});\n}\n\n\n\n\nfunction createSafeFragment( document ) {\n\tvar list = nodeNames.split( \"|\" ),\n\tsafeFrag = document.createDocumentFragment();\n\n\tif ( safeFrag.createElement ) {\n\t\twhile ( list.length ) {\n\t\t\tsafeFrag.createElement(\n\t\t\t\tlist.pop()\n\t\t\t);\n\t\t}\n\t}\n\treturn safeFrag;\n}\n\nvar nodeNames = \"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|\" +\n\t\t\"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",\n\trinlinejQuery = / jQuery\\d+=\"(?:\\d+|null)\"/g,\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnoInnerhtml = /<(?:script|style)/i,\n\trnocache = /<(?:script|object|embed|option|style)/i,\n\trnoshimcache = new RegExp(\"<(?:\" + nodeNames + \")[\\\\s/>]\", \"i\"),\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptType = /\\/(java|ecma)script/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|\\-\\-)/,\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\t_default: [ 0, \"\", \"\" ]\n\t},\n\tsafeFragment = createSafeFragment( document );\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// IE can't serialize <link> and <script> tags normally\nif ( !jQuery.support.htmlSerialize ) {\n\twrapMap._default = [ 1, \"div<div>\", \"</div>\" ];\n}\n\njQuery.fn.extend({\n\ttext: function( value ) {\n\t\treturn jQuery.access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );\n\t\t}, null, value, arguments.length );\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\tvar isFunction = jQuery.isFunction( html );\n\n\t\treturn this.each(function(i) {\n\t\t\tjQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = jQuery.clean( arguments );\n\t\t\tset.push.apply( set, this.toArray() );\n\t\t\treturn this.pushStack( set, \"before\", arguments );\n\t\t}\n\t},\n\n\tafter: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = this.pushStack( this, \"after\", arguments );\n\t\t\tset.push.apply( set, jQuery.clean(arguments) );\n\t\t\treturn set;\n\t\t}\n\t},\n\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t\t\tjQuery.cleanData( [ elem ] );\n\t\t\t\t}\n\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function () {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\treturn jQuery.access( this, function( value ) {\n\t\t\tvar elem = this[0] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\treturn elem.nodeType === 1 ?\n\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, \"\" ) :\n\t\t\t\t\tnull;\n\t\t\t}\n\n\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [\"\", \"\"] )[1].toLowerCase() ] ) {\n\n\t\t\t\tvalue = value.replace( rxhtmlTag, \"<$1></$2>\" );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor (; i < l; i++ ) {\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\telem = this[i] || {};\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName( \"*\" ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function( value ) {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n\t\t\t// this can help fix replacing a parent with child elements\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each(function(i) {\n\t\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( typeof value !== \"string\" ) {\n\t\t\t\tvalue = jQuery( value ).detach();\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\tvar next = this.nextSibling,\n\t\t\t\t\tparent = this.parentNode;\n\n\t\t\t\tjQuery( this ).remove();\n\n\t\t\t\tif ( next ) {\n\t\t\t\t\tjQuery(next).before( value );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(parent).append( value );\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\treturn this.length ?\n\t\t\t\tthis.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), \"replaceWith\", value ) :\n\t\t\t\tthis;\n\t\t}\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\t\tvar results, first, fragment, parent,\n\t\t\tvalue = args[0],\n\t\t\tscripts = [];\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === \"string\" && rchecked.test( value ) ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery(this).domManip( args, table, callback, true );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\targs[0] = value.call(this, i, table ? self.html() : undefined);\n\t\t\t\tself.domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\tparent = value && value.parentNode;\n\n\t\t\t// If we're in a fragment, just use that instead of building a new one\n\t\t\tif ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {\n\t\t\t\tresults = { fragment: parent };\n\n\t\t\t} else {\n\t\t\t\tresults = jQuery.buildFragment( args, this, scripts );\n\t\t\t}\n\n\t\t\tfragment = results.fragment;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfirst = fragment = fragment.firstChild;\n\t\t\t} else {\n\t\t\t\tfirst = fragment.firstChild;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\ttable = table && jQuery.nodeName( first, \"tr\" );\n\n\t\t\t\tfor ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\ttable ?\n\t\t\t\t\t\t\troot(this[i], first) :\n\t\t\t\t\t\t\tthis[i],\n\t\t\t\t\t\t// Make sure that we do not leak memory by inadvertently discarding\n\t\t\t\t\t\t// the original fragment (which might have attached data) instead of\n\t\t\t\t\t\t// using it; in addition, use the original fragment object for the last\n\t\t\t\t\t\t// item instead of first because it can end up being emptied incorrectly\n\t\t\t\t\t\t// in certain situations (Bug #8070).\n\t\t\t\t\t\t// Fragments from the fragment cache must always be cloned and never used\n\t\t\t\t\t\t// in place.\n\t\t\t\t\t\tresults.cacheable || ( l > 1 && i < lastIndex ) ?\n\t\t\t\t\t\t\tjQuery.clone( fragment, true, true ) :\n\t\t\t\t\t\t\tfragment\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( scripts.length ) {\n\t\t\t\tjQuery.each( scripts, function( i, elem ) {\n\t\t\t\t\tif ( elem.src ) {\n\t\t\t\t\t\tjQuery.ajax({\n\t\t\t\t\t\t\ttype: \"GET\",\n\t\t\t\t\t\t\tglobal: false,\n\t\t\t\t\t\t\turl: elem.src,\n\t\t\t\t\t\t\tasync: false,\n\t\t\t\t\t\t\tdataType: \"script\"\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || \"\" ).replace( rcleanScript, \"/*$0*/\" ) );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\nfunction root( elem, cur ) {\n\treturn jQuery.nodeName(elem, \"table\") ?\n\t\t(elem.getElementsByTagName(\"tbody\")[0] ||\n\t\telem.appendChild(elem.ownerDocument.createElement(\"tbody\"))) :\n\t\telem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar type, i, l,\n\t\toldData = jQuery._data( src ),\n\t\tcurData = jQuery._data( dest, oldData ),\n\t\tevents = oldData.events;\n\n\tif ( events ) {\n\t\tdelete curData.handle;\n\t\tcurData.events = {};\n\n\t\tfor ( type in events ) {\n\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t}\n\t\t}\n\t}\n\n\t// make the cloned public data object a copy from the original\n\tif ( curData.data ) {\n\t\tcurData.data = jQuery.extend( {}, curData.data );\n\t}\n}\n\nfunction cloneFixAttributes( src, dest ) {\n\tvar nodeName;\n\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// clearAttributes removes the attributes, which we don't want,\n\t// but also removes the attachEvent events, which we *do* want\n\tif ( dest.clearAttributes ) {\n\t\tdest.clearAttributes();\n\t}\n\n\t// mergeAttributes, in contrast, only merges back on the\n\t// original attributes, not the events\n\tif ( dest.mergeAttributes ) {\n\t\tdest.mergeAttributes( src );\n\t}\n\n\tnodeName = dest.nodeName.toLowerCase();\n\n\t// IE6-8 fail to clone children inside object elements that use\n\t// the proprietary classid attribute value (rather than the type\n\t// attribute) to identify the type of content to display\n\tif ( nodeName === \"object\" ) {\n\t\tdest.outerHTML = src.outerHTML;\n\n\t} else if ( nodeName === \"input\" && (src.type === \"checkbox\" || src.type === \"radio\") ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\t\tif ( src.checked ) {\n\t\t\tdest.defaultChecked = dest.checked = src.checked;\n\t\t}\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\n\t// IE blanks contents when cloning scripts\n\t} else if ( nodeName === \"script\" && dest.text !== src.text ) {\n\t\tdest.text = src.text;\n\t}\n\n\t// Event data gets referenced instead of copied if the expando\n\t// gets copied too\n\tdest.removeAttribute( jQuery.expando );\n\n\t// Clear flags for bubbling special change/submit events, they must\n\t// be reattached when the newly cloned events are first activated\n\tdest.removeAttribute( \"_submit_attached\" );\n\tdest.removeAttribute( \"_change_attached\" );\n}\n\njQuery.buildFragment = function( args, nodes, scripts ) {\n\tvar fragment, cacheable, cacheresults, doc,\n\tfirst = args[ 0 ];\n\n\t// nodes may contain either an explicit document object,\n\t// a jQuery collection or context object.\n\t// If nodes[0] contains a valid object to assign to doc\n\tif ( nodes && nodes[0] ) {\n\t\tdoc = nodes[0].ownerDocument || nodes[0];\n\t}\n\n\t// Ensure that an attr object doesn't incorrectly stand in as a document object\n\t// Chrome and Firefox seem to allow this to occur and will throw exception\n\t// Fixes #8950\n\tif ( !doc.createDocumentFragment ) {\n\t\tdoc = document;\n\t}\n\n\t// Only cache \"small\" (1/2 KB) HTML strings that are associated with the main document\n\t// Cloning options loses the selected state, so don't cache them\n\t// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment\n\t// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache\n\t// Lastly, IE6,7,8 will not correctly reuse cached fragments that were created from unknown elems #10501\n\tif ( args.length === 1 && typeof first === \"string\" && first.length < 512 && doc === document &&\n\t\tfirst.charAt(0) === \"<\" && !rnocache.test( first ) &&\n\t\t(jQuery.support.checkClone || !rchecked.test( first )) &&\n\t\t(jQuery.support.html5Clone || !rnoshimcache.test( first )) ) {\n\n\t\tcacheable = true;\n\n\t\tcacheresults = jQuery.fragments[ first ];\n\t\tif ( cacheresults && cacheresults !== 1 ) {\n\t\t\tfragment = cacheresults;\n\t\t}\n\t}\n\n\tif ( !fragment ) {\n\t\tfragment = doc.createDocumentFragment();\n\t\tjQuery.clean( args, doc, fragment, scripts );\n\t}\n\n\tif ( cacheable ) {\n\t\tjQuery.fragments[ first ] = cacheresults ? fragment : 1;\n\t}\n\n\treturn { fragment: fragment, cacheable: cacheable };\n};\n\njQuery.fragments = {};\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tparent = this.length === 1 && this[0].parentNode;\n\n\t\tif ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {\n\t\t\tinsert[ original ]( this[0] );\n\t\t\treturn this;\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = insert.length; i < l; i++ ) {\n\t\t\t\tvar elems = ( i > 0 ? this.clone(true) : this ).get();\n\t\t\t\tjQuery( insert[i] )[ original ]( elems );\n\t\t\t\tret = ret.concat( elems );\n\t\t\t}\n\n\t\t\treturn this.pushStack( ret, name, insert.selector );\n\t\t}\n\t};\n});\n\nfunction getAll( elem ) {\n\tif ( typeof elem.getElementsByTagName !== \"undefined\" ) {\n\t\treturn elem.getElementsByTagName( \"*\" );\n\n\t} else if ( typeof elem.querySelectorAll !== \"undefined\" ) {\n\t\treturn elem.querySelectorAll( \"*\" );\n\n\t} else {\n\t\treturn [];\n\t}\n}\n\n// Used in clean, fixes the defaultChecked property\nfunction fixDefaultChecked( elem ) {\n\tif ( elem.type === \"checkbox\" || elem.type === \"radio\" ) {\n\t\telem.defaultChecked = elem.checked;\n\t}\n}\n// Finds all inputs and passes them to fixDefaultChecked\nfunction findInputs( elem ) {\n\tvar nodeName = ( elem.nodeName || \"\" ).toLowerCase();\n\tif ( nodeName === \"input\" ) {\n\t\tfixDefaultChecked( elem );\n\t// Skip scripts, get other children\n\t} else if ( nodeName !== \"script\" && typeof elem.getElementsByTagName !== \"undefined\" ) {\n\t\tjQuery.grep( elem.getElementsByTagName(\"input\"), fixDefaultChecked );\n\t}\n}\n\n// Derived From: http://www.iecss.com/shimprove/javascript/shimprove.1-0-1.js\nfunction shimCloneNode( elem ) {\n\tvar div = document.createElement( \"div\" );\n\tsafeFragment.appendChild( div );\n\n\tdiv.innerHTML = elem.outerHTML;\n\treturn div.firstChild;\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar srcElements,\n\t\t\tdestElements,\n\t\t\ti,\n\t\t\t// IE<=8 does not properly clone detached, unknown element nodes\n\t\t\tclone = jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( \"<\" + elem.nodeName + \">\" ) ?\n\t\t\t\telem.cloneNode( true ) :\n\t\t\t\tshimCloneNode( elem );\n\n\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\t\t\t// IE copies events bound via attachEvent when using cloneNode.\n\t\t\t// Calling detachEvent on the clone will also remove the events\n\t\t\t// from the original. In order to get around this, we use some\n\t\t\t// proprietary methods to clear the events. Thanks to MooTools\n\t\t\t// guys for this hotness.\n\n\t\t\tcloneFixAttributes( elem, clone );\n\n\t\t\t// Using Sizzle here is crazy slow, so we use getElementsByTagName instead\n\t\t\tsrcElements = getAll( elem );\n\t\t\tdestElements = getAll( clone );\n\n\t\t\t// Weird iteration because IE will replace the length property\n\t\t\t// with an element if you are cloning the body and one of the\n\t\t\t// elements on the page has a name or id of \"length\"\n\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\n\t\t\t\tif ( destElements[i] ) {\n\t\t\t\t\tcloneFixAttributes( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tcloneCopyEvent( elem, clone );\n\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = getAll( elem );\n\t\t\t\tdestElements = getAll( clone );\n\n\t\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsrcElements = destElements = null;\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tclean: function( elems, context, fragment, scripts ) {\n\t\tvar checkScriptType, script, j,\n\t\t\t\tret = [];\n\n\t\tcontext = context || document;\n\n\t\t// !context.createElement fails in IE with an error but returns typeof 'object'\n\t\tif ( typeof context.createElement === \"undefined\" ) {\n\t\t\tcontext = context.ownerDocument || context[0] && context[0].ownerDocument || document;\n\t\t}\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( typeof elem === \"number\" ) {\n\t\t\t\telem += \"\";\n\t\t\t}\n\n\t\t\tif ( !elem ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" ) {\n\t\t\t\tif ( !rhtml.test( elem ) ) {\n\t\t\t\t\telem = context.createTextNode( elem );\n\t\t\t\t} else {\n\t\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\t\telem = elem.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\t\t\t// Trim whitespace, otherwise indexOf won't work as expected\n\t\t\t\t\tvar tag = ( rtagName.exec( elem ) || [\"\", \"\"] )[1].toLowerCase(),\n\t\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default,\n\t\t\t\t\t\tdepth = wrap[0],\n\t\t\t\t\t\tdiv = context.createElement(\"div\"),\n\t\t\t\t\t\tsafeChildNodes = safeFragment.childNodes,\n\t\t\t\t\t\tremove;\n\n\t\t\t\t\t// Append wrapper element to unknown element safe doc fragment\n\t\t\t\t\tif ( context === document ) {\n\t\t\t\t\t\t// Use the fragment we've already created for this document\n\t\t\t\t\t\tsafeFragment.appendChild( div );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Use a fragment created with the owner document\n\t\t\t\t\t\tcreateSafeFragment( context ).appendChild( div );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t\t// Move to the right depth\n\t\t\t\t\twhile ( depth-- ) {\n\t\t\t\t\t\tdiv = div.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\t\tvar hasBody = rtbody.test(elem),\n\t\t\t\t\t\t\ttbody = tag === \"table\" && !hasBody ?\n\t\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\t\twrap[1] === \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t\t\t[];\n\n\t\t\t\t\t\tfor ( j = tbody.length - 1; j >= 0 ; --j ) {\n\t\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length ) {\n\t\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n\t\t\t\t\t}\n\n\t\t\t\t\telem = div.childNodes;\n\n\t\t\t\t\t// Clear elements from DocumentFragment (safeFragment or otherwise)\n\t\t\t\t\t// to avoid hoarding elements. Fixes #11356\n\t\t\t\t\tif ( div ) {\n\t\t\t\t\t\tdiv.parentNode.removeChild( div );\n\n\t\t\t\t\t\t// Guard against -1 index exceptions in FF3.6\n\t\t\t\t\t\tif ( safeChildNodes.length > 0 ) {\n\t\t\t\t\t\t\tremove = safeChildNodes[ safeChildNodes.length - 1 ];\n\n\t\t\t\t\t\t\tif ( remove && remove.parentNode ) {\n\t\t\t\t\t\t\t\tremove.parentNode.removeChild( remove );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Resets defaultChecked for any radios and checkboxes\n\t\t\t// about to be appended to the DOM in IE 6/7 (#8060)\n\t\t\tvar len;\n\t\t\tif ( !jQuery.support.appendChecked ) {\n\t\t\t\tif ( elem[0] && typeof (len = elem.length) === \"number\" ) {\n\t\t\t\t\tfor ( j = 0; j < len; j++ ) {\n\t\t\t\t\t\tfindInputs( elem[j] );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfindInputs( elem );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( elem.nodeType ) {\n\t\t\t\tret.push( elem );\n\t\t\t} else {\n\t\t\t\tret = jQuery.merge( ret, elem );\n\t\t\t}\n\t\t}\n\n\t\tif ( fragment ) {\n\t\t\tcheckScriptType = function( elem ) {\n\t\t\t\treturn !elem.type || rscriptType.test( elem.type );\n\t\t\t};\n\t\t\tfor ( i = 0; ret[i]; i++ ) {\n\t\t\t\tscript = ret[i];\n\t\t\t\tif ( scripts && jQuery.nodeName( script, \"script\" ) && (!script.type || rscriptType.test( script.type )) ) {\n\t\t\t\t\tscripts.push( script.parentNode ? script.parentNode.removeChild( script ) : script );\n\n\t\t\t\t} else {\n\t\t\t\t\tif ( script.nodeType === 1 ) {\n\t\t\t\t\t\tvar jsTags = jQuery.grep( script.getElementsByTagName( \"script\" ), checkScriptType );\n\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );\n\t\t\t\t\t}\n\t\t\t\t\tfragment.appendChild( script );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, id,\n\t\t\tcache = jQuery.cache,\n\t\t\tspecial = jQuery.event.special,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando;\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tid = elem[ jQuery.expando ];\n\n\t\t\tif ( id ) {\n\t\t\t\tdata = cache[ id ];\n\n\t\t\t\tif ( data && data.events ) {\n\t\t\t\t\tfor ( var type in data.events ) {\n\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Null the DOM reference to avoid IE6/7/8 leak (#7054)\n\t\t\t\t\tif ( data.handle ) {\n\t\t\t\t\t\tdata.handle.elem = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\tdelete elem[ jQuery.expando ];\n\n\t\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t\t}\n\n\t\t\t\tdelete cache[ id ];\n\t\t\t}\n\t\t}\n\t}\n});\n\n\n\n\nvar ralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity=([^)]*)/,\n\t// fixed for IE9, see #8346\n\trupper = /([A-Z]|^ms)/g,\n\trnum = /^[\\-+]?(?:\\d*\\.)?\\d+$/i,\n\trnumnonpx = /^-?(?:\\d*\\.)?\\d+(?!px)[^\\d\\s]+$/i,\n\trrelNum = /^([\\-+])=([\\-+.\\de]+)/,\n\trmargin = /^margin/,\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\n\t// order is important!\n\tcssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ],\n\n\tcurCSS,\n\n\tgetComputedStyle,\n\tcurrentStyle;\n\njQuery.fn.css = function( name, value ) {\n\treturn jQuery.access( this, function( elem, name, value ) {\n\t\treturn value !== undefined ?\n\t\t\tjQuery.style( elem, name, value ) :\n\t\t\tjQuery.css( elem, name );\n\t}, name, value, arguments.length > 1 );\n};\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\n\t\t\t\t} else {\n\t\t\t\t\treturn elem.style.opacity;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Exclude the following css properties to add px\n\tcssNumber: {\n\t\t\"fillOpacity\": true,\n\t\t\"fontWeight\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t\"float\": jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, origName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style, hooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// convert relative number strings (+= or -=) to relative numbers. #7345\n\t\t\tif ( type === \"string\" && (ret = rrelNum.exec( value )) ) {\n\t\t\t\tvalue = ( +( ret[1] + 1) * +ret[2] ) + parseFloat( jQuery.css( elem, name ) );\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that NaN and null values aren't set. See: #7116\n\t\t\tif ( value == null || type === \"number\" && isNaN( value ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( type === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {\n\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #5509\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra ) {\n\t\tvar ret, hooks;\n\n\t\t// Make sure that we're working with the right name\n\t\tname = jQuery.camelCase( name );\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tname = jQuery.cssProps[ name ] || name;\n\n\t\t// cssFloat needs a special treatment\n\t\tif ( name === \"cssFloat\" ) {\n\t\t\tname = \"float\";\n\t\t}\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {\n\t\t\treturn ret;\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\t} else if ( curCSS ) {\n\t\t\treturn curCSS( elem, name );\n\t\t}\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar old = {},\n\t\t\tret, name;\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tret = callback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\n\t\treturn ret;\n\t}\n});\n\n// DEPRECATED in 1.3, Use jQuery.css() instead\njQuery.curCSS = jQuery.css;\n\nif ( document.defaultView && document.defaultView.getComputedStyle ) {\n\tgetComputedStyle = function( elem, name ) {\n\t\tvar ret, defaultView, computedStyle, width,\n\t\t\tstyle = elem.style;\n\n\t\tname = name.replace( rupper, \"-$1\" ).toLowerCase();\n\n\t\tif ( (defaultView = elem.ownerDocument.defaultView) &&\n\t\t\t\t(computedStyle = defaultView.getComputedStyle( elem, null )) ) {\n\n\t\t\tret = computedStyle.getPropertyValue( name );\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// WebKit uses \"computed value (percentage if specified)\" instead of \"used value\" for margins\n\t\t// which is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values\n\t\tif ( !jQuery.support.pixelMargin && computedStyle && rmargin.test( name ) && rnumnonpx.test( ret ) ) {\n\t\t\twidth = style.width;\n\t\t\tstyle.width = ret;\n\t\t\tret = computedStyle.width;\n\t\t\tstyle.width = width;\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nif ( document.documentElement.currentStyle ) {\n\tcurrentStyle = function( elem, name ) {\n\t\tvar left, rsLeft, uncomputed,\n\t\t\tret = elem.currentStyle && elem.currentStyle[ name ],\n\t\t\tstyle = elem.style;\n\n\t\t// Avoid setting ret to empty string here\n\t\t// so we don't default to auto\n\t\tif ( ret == null && style && (uncomputed = style[ name ]) ) {\n\t\t\tret = uncomputed;\n\t\t}\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\tif ( rnumnonpx.test( ret ) ) {\n\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\t\t\trsLeft = elem.runtimeStyle && elem.runtimeStyle.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : ret;\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret === \"\" ? \"auto\" : ret;\n\t};\n}\n\ncurCSS = getComputedStyle || currentStyle;\n\nfunction getWidthOrHeight( elem, name, extra ) {\n\n\t// Start with offset property\n\tvar val = name === \"width\" ? elem.offsetWidth : elem.offsetHeight,\n\t\ti = name === \"width\" ? 1 : 0,\n\t\tlen = 4;\n\n\tif ( val > 0 ) {\n\t\tif ( extra !== \"border\" ) {\n\t\t\tfor ( ; i < len; i += 2 ) {\n\t\t\t\tif ( !extra ) {\n\t\t\t\t\tval -= parseFloat( jQuery.css( elem, \"padding\" + cssExpand[ i ] ) ) || 0;\n\t\t\t\t}\n\t\t\t\tif ( extra === \"margin\" ) {\n\t\t\t\t\tval += parseFloat( jQuery.css( elem, extra + cssExpand[ i ] ) ) || 0;\n\t\t\t\t} else {\n\t\t\t\t\tval -= parseFloat( jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\" ) ) || 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn val + \"px\";\n\t}\n\n\t// Fall back to computed then uncomputed css if necessary\n\tval = curCSS( elem, name );\n\tif ( val < 0 || val == null ) {\n\t\tval = elem.style[ name ];\n\t}\n\n\t// Computed unit is not pixels. Stop here and return.\n\tif ( rnumnonpx.test(val) ) {\n\t\treturn val;\n\t}\n\n\t// Normalize \"\", auto, and prepare for extra\n\tval = parseFloat( val ) || 0;\n\n\t// Add padding, border, margin\n\tif ( extra ) {\n\t\tfor ( ; i < len; i += 2 ) {\n\t\t\tval += parseFloat( jQuery.css( elem, \"padding\" + cssExpand[ i ] ) ) || 0;\n\t\t\tif ( extra !== \"padding\" ) {\n\t\t\t\tval += parseFloat( jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\" ) ) || 0;\n\t\t\t}\n\t\t\tif ( extra === \"margin\" ) {\n\t\t\t\tval += parseFloat( jQuery.css( elem, extra + cssExpand[ i ]) ) || 0;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn val + \"px\";\n}\n\njQuery.each([ \"height\", \"width\" ], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\t\t\t\tif ( elem.offsetWidth !== 0 ) {\n\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t} else {\n\t\t\t\t\treturn jQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\treturn rnum.test( value ) ?\n\t\t\t\tvalue + \"px\" :\n\t\t\t\tvalue;\n\t\t}\n\t};\n});\n\nif ( !jQuery.support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\" ) ?\n\t\t\t\t( parseFloat( RegExp.$1 ) / 100 ) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style,\n\t\t\t\tcurrentStyle = elem.currentStyle,\n\t\t\t\topacity = jQuery.isNumeric( value ) ? \"alpha(opacity=\" + value * 100 + \")\" : \"\",\n\t\t\t\tfilter = currentStyle && currentStyle.filter || style.filter || \"\";\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652\n\t\t\tif ( value >= 1 && jQuery.trim( filter.replace( ralpha, \"\" ) ) === \"\" ) {\n\n\t\t\t\t// Setting style.filter to null, \"\" & \" \" still leave \"filter:\" in the cssText\n\t\t\t\t// if \"filter:\" is present at all, clearType is disabled, we want to avoid this\n\t\t\t\t// style.removeAttribute is IE Only, but so apparently is this code path...\n\t\t\t\tstyle.removeAttribute( \"filter\" );\n\n\t\t\t\t// if there there is no filter style applied in a css rule, we are done\n\t\t\t\tif ( currentStyle && !currentStyle.filter ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// otherwise, set new filter values\n\t\t\tstyle.filter = ralpha.test( filter ) ?\n\t\t\t\tfilter.replace( ralpha, opacity ) :\n\t\t\t\tfilter + \" \" + opacity;\n\t\t}\n\t};\n}\n\njQuery(function() {\n\t// This hook cannot be added until DOM ready because the support test\n\t// for it is not run until after DOM ready\n\tif ( !jQuery.support.reliableMarginRight ) {\n\t\tjQuery.cssHooks.marginRight = {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\t\t// Work around by temporarily setting element display to inline-block\n\t\t\t\treturn jQuery.swap( elem, { \"display\": \"inline-block\" }, function() {\n\t\t\t\t\tif ( computed ) {\n\t\t\t\t\t\treturn curCSS( elem, \"margin-right\" );\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.style.marginRight;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\tvar width = elem.offsetWidth,\n\t\t\theight = elem.offsetHeight;\n\n\t\treturn ( width === 0 && height === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, \"display\" )) === \"none\");\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\n\n// These hooks are used by animate to expand properties\njQuery.each({\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i,\n\n\t\t\t\t// assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split(\" \") : [ value ],\n\t\t\t\texpanded = {};\n\n\t\t\tfor ( i = 0; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n});\n\n\n\n\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trhash = /#.*$/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n\trinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app\\-storage|.+\\-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trquery = /\\?/,\n\trscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n\trselectTextarea = /^(?:select|textarea)/i,\n\trspacesAjax = /\\s+/,\n\trts = /([?&])_=[^&]*/,\n\trurl = /^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+))?)?/,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Document location\n\tajaxLocation,\n\n\t// Document location segments\n\tajaxLocParts,\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = [\"*/\"] + [\"*\"];\n\n// #8138, IE may throw an exception when accessing\n// a field from window.location if document.domain has been set\ntry {\n\tajaxLocation = location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( \"a\" );\n\tajaxLocation.href = \"\";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\tvar dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),\n\t\t\t\ti = 0,\n\t\t\t\tlength = dataTypes.length,\n\t\t\t\tdataType,\n\t\t\t\tlist,\n\t\t\t\tplaceBefore;\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tdataType = dataTypes[ i ];\n\t\t\t\t// We control if we're asked to add before\n\t\t\t\t// any existing element\n\t\t\t\tplaceBefore = /^\\+/.test( dataType );\n\t\t\t\tif ( placeBefore ) {\n\t\t\t\t\tdataType = dataType.substr( 1 ) || \"*\";\n\t\t\t\t}\n\t\t\t\tlist = structure[ dataType ] = structure[ dataType ] || [];\n\t\t\t\t// then we add to the structure accordingly\n\t\t\t\tlist[ placeBefore ? \"unshift\" : \"push\" ]( func );\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,\n\t\tdataType /* internal */, inspected /* internal */ ) {\n\n\tdataType = dataType || options.dataTypes[ 0 ];\n\tinspected = inspected || {};\n\n\tinspected[ dataType ] = true;\n\n\tvar list = structure[ dataType ],\n\t\ti = 0,\n\t\tlength = list ? list.length : 0,\n\t\texecuteOnly = ( structure === prefilters ),\n\t\tselection;\n\n\tfor ( ; i < length && ( executeOnly || !selection ); i++ ) {\n\t\tselection = list[ i ]( options, originalOptions, jqXHR );\n\t\t// If we got redirected to another dataType\n\t\t// we try there if executing only and not done already\n\t\tif ( typeof selection === \"string\" ) {\n\t\t\tif ( !executeOnly || inspected[ selection ] ) {\n\t\t\t\tselection = undefined;\n\t\t\t} else {\n\t\t\t\toptions.dataTypes.unshift( selection );\n\t\t\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\t\t\tstructure, options, originalOptions, jqXHR, selection, inspected );\n\t\t\t}\n\t\t}\n\t}\n\t// If we're only executing or nothing was selected\n\t// we try the catchall dataType if not done already\n\tif ( ( executeOnly || !selection ) && !inspected[ \"*\" ] ) {\n\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\tstructure, options, originalOptions, jqXHR, \"*\", inspected );\n\t}\n\t// unnecessary when only executing (prefilters)\n\t// but it'll be ignored by the caller in that case\n\treturn selection;\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n}\n\njQuery.fn.extend({\n\tload: function( url, params, callback ) {\n\t\tif ( typeof url !== \"string\" && _load ) {\n\t\t\treturn _load.apply( this, arguments );\n\n\t\t// Don't do a request if no elements are being requested\n\t\t} else if ( !this.length ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar off = url.indexOf( \" \" );\n\t\tif ( off >= 0 ) {\n\t\t\tvar selector = url.slice( off, url.length );\n\t\t\turl = url.slice( 0, off );\n\t\t}\n\n\t\t// Default to a GET request\n\t\tvar type = \"GET\";\n\n\t\t// If the second parameter was provided\n\t\tif ( params ) {\n\t\t\t// If it's a function\n\t\t\tif ( jQuery.isFunction( params ) ) {\n\t\t\t\t// We assume that it's the callback\n\t\t\t\tcallback = params;\n\t\t\t\tparams = undefined;\n\n\t\t\t// Otherwise, build a param string\n\t\t\t} else if ( typeof params === \"object\" ) {\n\t\t\t\tparams = jQuery.param( params, jQuery.ajaxSettings.traditional );\n\t\t\t\ttype = \"POST\";\n\t\t\t}\n\t\t}\n\n\t\tvar self = this;\n\n\t\t// Request the remote document\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params,\n\t\t\t// Complete callback (responseText is used internally)\n\t\t\tcomplete: function( jqXHR, status, responseText ) {\n\t\t\t\t// Store the response as specified by the jqXHR object\n\t\t\t\tresponseText = jqXHR.responseText;\n\t\t\t\t// If successful, inject the HTML into all the matched elements\n\t\t\t\tif ( jqXHR.isResolved() ) {\n\t\t\t\t\t// #4825: Get the actual response in case\n\t\t\t\t\t// a dataFilter is present in ajaxSettings\n\t\t\t\t\tjqXHR.done(function( r ) {\n\t\t\t\t\t\tresponseText = r;\n\t\t\t\t\t});\n\t\t\t\t\t// See if a selector was specified\n\t\t\t\t\tself.html( selector ?\n\t\t\t\t\t\t// Create a dummy div to hold the results\n\t\t\t\t\t\tjQuery(\"<div>\")\n\t\t\t\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t\t\t\t.append(responseText.replace(rscript, \"\"))\n\n\t\t\t\t\t\t\t// Locate the specified elements\n\t\t\t\t\t\t\t.find(selector) :\n\n\t\t\t\t\t\t// If not, just inject the full result\n\t\t\t\t\t\tresponseText );\n\t\t\t\t}\n\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tself.each( callback, [ responseText, status, jqXHR ] );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn this;\n\t},\n\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\treturn this.elements ? jQuery.makeArray( this.elements ) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t( this.checked || rselectTextarea.test( this.nodeName ) ||\n\t\t\t\t\trinput.test( this.type ) );\n\t\t})\n\t\t.map(function( i, elem ){\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val, i ){\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split( \" \" ), function( i, o ){\n\tjQuery.fn[ o ] = function( f ){\n\t\treturn this.on( o, f );\n\t};\n});\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: method,\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t};\n});\n\njQuery.extend({\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\tif ( settings ) {\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( target, jQuery.ajaxSettings );\n\t\t} else {\n\t\t\t// Extending ajaxSettings\n\t\t\tsettings = target;\n\t\t\ttarget = jQuery.ajaxSettings;\n\t\t}\n\t\tajaxExtend( target, settings );\n\t\treturn target;\n\t},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\ttext: \"text/plain\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\t\"*\": allTypes\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\"\n\t\t},\n\n\t\t// List of data converters\n\t\t// 1) key format is \"source_type destination_type\" (a single space in-between)\n\t\t// 2) the catchall symbol \"*\" can be used for source_type\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": window.String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\tcontext: true,\n\t\t\turl: true\n\t\t}\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar // Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events\n\t\t\t// It's the callbackContext if one was provided in the options\n\t\t\t// and if it's a DOM node or a jQuery collection\n\t\t\tglobalEventContext = callbackContext !== s &&\n\t\t\t\t( callbackContext.nodeType || callbackContext instanceof jQuery ) ?\n\t\t\t\t\t\tjQuery( callbackContext ) : jQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// ifModified key\n\t\t\tifModifiedKey,\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\t\t\t// transport\n\t\t\ttransport,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\t\t\t// Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\tvar lname = name.toLowerCase();\n\t\t\t\t\t\tname = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match === undefined ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tstatusText = statusText || \"abort\";\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( statusText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, statusText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Callback for when everything is done\n\t\t// It is defined here because jslint complains if it is declared\n\t\t// at the end of the function (which would be more logical and readable)\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\tvar isSuccess,\n\t\t\t\tsuccess,\n\t\t\t\terror,\n\t\t\t\tstatusText = nativeStatusText,\n\t\t\t\tresponse = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,\n\t\t\t\tlastModified,\n\t\t\t\tetag;\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( status >= 200 && status < 300 || status === 304 ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\n\t\t\t\t\tif ( ( lastModified = jqXHR.getResponseHeader( \"Last-Modified\" ) ) ) {\n\t\t\t\t\t\tjQuery.lastModified[ ifModifiedKey ] = lastModified;\n\t\t\t\t\t}\n\t\t\t\t\tif ( ( etag = jqXHR.getResponseHeader( \"Etag\" ) ) ) {\n\t\t\t\t\t\tjQuery.etag[ ifModifiedKey ] = etag;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If not modified\n\t\t\t\tif ( status === 304 ) {\n\n\t\t\t\t\tstatusText = \"notmodified\";\n\t\t\t\t\tisSuccess = true;\n\n\t\t\t\t// If we have data\n\t\t\t\t} else {\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tsuccess = ajaxConvert( s, response );\n\t\t\t\t\t\tstatusText = \"success\";\n\t\t\t\t\t\tisSuccess = true;\n\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t// We have a parsererror\n\t\t\t\t\t\tstatusText = \"parsererror\";\n\t\t\t\t\t\terror = e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( !statusText || status ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = \"\" + ( nativeStatusText || statusText );\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajax\" + ( isSuccess ? \"Success\" : \"Error\" ),\n\t\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\t\tjqXHR.complete = completeDeferred.add;\n\n\t\t// Status-dependent callbacks\n\t\tjqXHR.statusCode = function( map ) {\n\t\t\tif ( map ) {\n\t\t\t\tvar tmp;\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tfor ( tmp in map ) {\n\t\t\t\t\t\tstatusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttmp = map[ jqXHR.status ];\n\t\t\t\t\tjqXHR.then( tmp, tmp );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url ) + \"\" ).replace( rhash, \"\" ).replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().split( rspacesAjax );\n\n\t\t// Determine if a cross-domain request is in order\n\t\tif ( s.crossDomain == null ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? 80 : 443 ) ) !=\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? 80 : 443 ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\tfireGlobals = s.global;\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.data;\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Get ifModifiedKey before adding the anti-cache parameter\n\t\t\tifModifiedKey = s.url;\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\n\t\t\t\tvar ts = jQuery.now(),\n\t\t\t\t\t// try replacing _= if it is there\n\t\t\t\t\tret = s.url.replace( rts, \"$1_=\" + ts );\n\n\t\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\t\ts.url = ret + ( ( ret === s.url ) ? ( rquery.test( s.url ) ? \"&\" : \"?\" ) + \"_=\" + ts : \"\" );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tifModifiedKey = ifModifiedKey || s.url;\n\t\t\tif ( jQuery.lastModified[ ifModifiedKey ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ ifModifiedKey ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ ifModifiedKey ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ ifModifiedKey ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t\t// Abort if not done already\n\t\t\t\tjqXHR.abort();\n\t\t\t\treturn false;\n\n\t\t}\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout( function(){\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch (e) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\t// Serialize an array of form elements or a set of\n\t// key/values into a query string\n\tparam: function( a, traditional ) {\n\t\tvar s = [],\n\t\t\tadd = function( key, value ) {\n\t\t\t\t// If value is a function, invoke it and return its value\n\t\t\t\tvalue = jQuery.isFunction( value ) ? value() : value;\n\t\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t\t};\n\n\t\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\t\tif ( traditional === undefined ) {\n\t\t\ttraditional = jQuery.ajaxSettings.traditional;\n\t\t}\n\n\t\t// If an array was passed in, assume that it is an array of form elements.\n\t\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t\t// Serialize the form elements\n\t\t\tjQuery.each( a, function() {\n\t\t\t\tadd( this.name, this.value );\n\t\t\t});\n\n\t\t} else {\n\t\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t\t// did it), otherwise encode params recursively.\n\t\t\tfor ( var prefix in a ) {\n\t\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t\t// Return the resulting serialization\n\t\treturn s.join( \"&\" ).replace( r20, \"+\" );\n\t}\n});\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tif ( jQuery.isArray( obj ) ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// If array item is non-scalar (array or object), encode its\n\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n\t\t\t\t// Note that rack (as of 1.0.0) can't currently deserialize\n\t\t\t\t// nested arrays properly, and attempting to do so may cause\n\t\t\t\t// a server error. Possible fixes are to modify rack's\n\t\t\t\t// deserialization algorithm or to provide an option or flag\n\t\t\t\t// to force array serialization to be shallow.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && jQuery.type( obj ) === \"object\" ) {\n\t\t// Serialize object item.\n\t\tfor ( var name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// This is still on the jQuery object... for now\n// Want to move this to jQuery.ajax some day\njQuery.extend({\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {}\n\n});\n\n/* Handles responses to an ajax request:\n * - sets all responseXXX fields accordingly\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar contents = s.contents,\n\t\tdataTypes = s.dataTypes,\n\t\tresponseFields = s.responseFields,\n\t\tct,\n\t\ttype,\n\t\tfinalDataType,\n\t\tfirstDataType;\n\n\t// Fill responseXXX fields\n\tfor ( type in responseFields ) {\n\t\tif ( type in responses ) {\n\t\t\tjqXHR[ responseFields[type] ] = responses[ type ];\n\t\t}\n\t}\n\n\t// Remove auto dataType and get content-type in the process\n\twhile( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"content-type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n// Chain conversions given the request and the original response\nfunction ajaxConvert( s, response ) {\n\n\t// Apply the dataFilter if provided\n\tif ( s.dataFilter ) {\n\t\tresponse = s.dataFilter( response, s.dataType );\n\t}\n\n\tvar dataTypes = s.dataTypes,\n\t\tconverters = {},\n\t\ti,\n\t\tkey,\n\t\tlength = dataTypes.length,\n\t\ttmp,\n\t\t// Current and previous dataTypes\n\t\tcurrent = dataTypes[ 0 ],\n\t\tprev,\n\t\t// Conversion expression\n\t\tconversion,\n\t\t// Conversion function\n\t\tconv,\n\t\t// Conversion functions (transitive conversion)\n\t\tconv1,\n\t\tconv2;\n\n\t// For each dataType in the chain\n\tfor ( i = 1; i < length; i++ ) {\n\n\t\t// Create converters map\n\t\t// with lowercased keys\n\t\tif ( i === 1 ) {\n\t\t\tfor ( key in s.converters ) {\n\t\t\t\tif ( typeof key === \"string\" ) {\n\t\t\t\t\tconverters[ key.toLowerCase() ] = s.converters[ key ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Get the dataTypes\n\t\tprev = current;\n\t\tcurrent = dataTypes[ i ];\n\n\t\t// If current is auto dataType, update it to prev\n\t\tif ( current === \"*\" ) {\n\t\t\tcurrent = prev;\n\t\t// If no auto and dataTypes are actually different\n\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t// Get the converter\n\t\t\tconversion = prev + \" \" + current;\n\t\t\tconv = converters[ conversion ] || converters[ \"* \" + current ];\n\n\t\t\t// If there is no direct converter, search transitively\n\t\t\tif ( !conv ) {\n\t\t\t\tconv2 = undefined;\n\t\t\t\tfor ( conv1 in converters ) {\n\t\t\t\t\ttmp = conv1.split( \" \" );\n\t\t\t\t\tif ( tmp[ 0 ] === prev || tmp[ 0 ] === \"*\" ) {\n\t\t\t\t\t\tconv2 = converters[ tmp[1] + \" \" + current ];\n\t\t\t\t\t\tif ( conv2 ) {\n\t\t\t\t\t\t\tconv1 = converters[ conv1 ];\n\t\t\t\t\t\t\tif ( conv1 === true ) {\n\t\t\t\t\t\t\t\tconv = conv2;\n\t\t\t\t\t\t\t} else if ( conv2 === true ) {\n\t\t\t\t\t\t\t\tconv = conv1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If we found no converter, dispatch an error\n\t\t\tif ( !( conv || conv2 ) ) {\n\t\t\t\tjQuery.error( \"No conversion from \" + conversion.replace(\" \",\" to \") );\n\t\t\t}\n\t\t\t// If found converter is not an equivalence\n\t\t\tif ( conv !== true ) {\n\t\t\t\t// Convert with 1 or 2 converters accordingly\n\t\t\t\tresponse = conv ? conv( response ) : conv2( conv1(response) );\n\t\t\t}\n\t\t}\n\t}\n\treturn response;\n}\n\n\n\n\nvar jsc = jQuery.now(),\n\tjsre = /(\\=)\\?(&|$)|\\?\\?/i;\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\treturn jQuery.expando + \"_\" + ( jsc++ );\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar inspectData = ( typeof s.data === \"string\" ) && /^application\\/x\\-www\\-form\\-urlencoded/.test( s.contentType );\n\n\tif ( s.dataTypes[ 0 ] === \"jsonp\" ||\n\t\ts.jsonp !== false && ( jsre.test( s.url ) ||\n\t\t\t\tinspectData && jsre.test( s.data ) ) ) {\n\n\t\tvar responseContainer,\n\t\t\tjsonpCallback = s.jsonpCallback =\n\t\t\t\tjQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,\n\t\t\tprevious = window[ jsonpCallback ],\n\t\t\turl = s.url,\n\t\t\tdata = s.data,\n\t\t\treplace = \"$1\" + jsonpCallback + \"$2\";\n\n\t\tif ( s.jsonp !== false ) {\n\t\t\turl = url.replace( jsre, replace );\n\t\t\tif ( s.url === url ) {\n\t\t\t\tif ( inspectData ) {\n\t\t\t\t\tdata = data.replace( jsre, replace );\n\t\t\t\t}\n\t\t\t\tif ( s.data === data ) {\n\t\t\t\t\t// Add callback manually\n\t\t\t\t\turl += (/\\?/.test( url ) ? \"&\" : \"?\") + s.jsonp + \"=\" + jsonpCallback;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ts.url = url;\n\t\ts.data = data;\n\n\t\t// Install callback\n\t\twindow[ jsonpCallback ] = function( response ) {\n\t\t\tresponseContainer = [ response ];\n\t\t};\n\n\t\t// Clean-up function\n\t\tjqXHR.always(function() {\n\t\t\t// Set callback back to previous value\n\t\t\twindow[ jsonpCallback ] = previous;\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && jQuery.isFunction( previous ) ) {\n\t\t\t\twindow[ jsonpCallback ]( responseContainer[ 0 ] );\n\t\t\t}\n\t\t});\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[\"script json\"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( jsonpCallback + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n});\n\n\n\n\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /javascript|ecmascript/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache's special case and global\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t\ts.global = false;\n\t}\n});\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function(s) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\n\t\tvar script,\n\t\t\thead = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\t\tscript.async = \"async\";\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( head && script.parentNode ) {\n\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = undefined;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, \"success\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t\t// This arises when a base node is used (#2709 and #4378).\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( 0, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n});\n\n\n\n\nvar // #5280: Internet Explorer will keep connections alive if we don't abort on unload\n\txhrOnUnloadAbort = window.ActiveXObject ? function() {\n\t\t// Abort all pending requests\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( 0, 1 );\n\t\t}\n\t} : false,\n\txhrId = 0,\n\txhrCallbacks;\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject( \"Microsoft.XMLHTTP\" );\n\t} catch( e ) {}\n}\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject ?\n\t/* Microsoft failed to properly\n\t * implement the XMLHttpRequest in IE7 (can't request local files),\n\t * so we use the ActiveXObject when it is available\n\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n\t * we need a fallback.\n\t */\n\tfunction() {\n\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\n// Determine support properties\n(function( xhr ) {\n\tjQuery.extend( jQuery.support, {\n\t\tajax: !!xhr,\n\t\tcors: !!xhr && ( \"withCredentials\" in xhr )\n\t});\n})( jQuery.ajaxSettings.xhr() );\n\n// Create transport if the browser can provide an xhr\nif ( jQuery.support.ajax ) {\n\n\tjQuery.ajaxTransport(function( s ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\n\t\t\t\t\t// Get a new xhr\n\t\t\t\t\tvar xhr = s.xhr(),\n\t\t\t\t\t\thandle,\n\t\t\t\t\t\ti;\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\t\t\t\tif ( s.username ) {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n\t\t\t\t\t} else {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( s.xhrFields ) {\n\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// X-Requested-With header\n\t\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\t\tif ( !s.crossDomain && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch( _ ) {}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\n\t\t\t\t\t\tvar status,\n\t\t\t\t\t\t\tstatusText,\n\t\t\t\t\t\t\tresponseHeaders,\n\t\t\t\t\t\t\tresponses,\n\t\t\t\t\t\t\txml;\n\n\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n\t\t\t\t\t\t// of an xhr when a network error occured\n\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\n\t\t\t\t\t\t\t\t// Only called once\n\t\t\t\t\t\t\t\tcallback = undefined;\n\n\t\t\t\t\t\t\t\t// Do not keep as active anymore\n\t\t\t\t\t\t\t\tif ( handle ) {\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If it's an abort\n\t\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n\t\t\t\t\t\t\t\t\tresponses = {};\n\t\t\t\t\t\t\t\t\txml = xhr.responseXML;\n\n\t\t\t\t\t\t\t\t\t// Construct response list\n\t\t\t\t\t\t\t\t\tif ( xml && xml.documentElement /* #4958 */ ) {\n\t\t\t\t\t\t\t\t\t\tresponses.xml = xml;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// When requesting binary data, IE6-9 will throw an exception\n\t\t\t\t\t\t\t\t\t// on any attempt to access responseText (#11426)\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\t\t\t\t\t\t\t\t\t} catch( _ ) {\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\t\tstatusText = \"\";\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\t\tstatus = 204;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch( firefoxAccessException ) {\n\t\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\t// if we're in sync mode or it's in cache\n\t\t\t\t\t// and has been retrieved directly (IE6 & IE7)\n\t\t\t\t\t// we need to manually fire the callback\n\t\t\t\t\tif ( !s.async || xhr.readyState === 4 ) {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else {\n\t\t\t\t\t\thandle = ++xhrId;\n\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n\t\t\t\t\t\t\t// and attach the unload handler\n\t\t\t\t\t\t\tif ( !xhrCallbacks ) {\n\t\t\t\t\t\t\t\txhrCallbacks = {};\n\t\t\t\t\t\t\t\tjQuery( window ).unload( xhrOnUnloadAbort );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Add to list of active xhrs callbacks\n\t\t\t\t\t\t\txhrCallbacks[ handle ] = callback;\n\t\t\t\t\t\t}\n\t\t\t\t\t\txhr.onreadystatechange = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback(0,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\n\n\n\n\nvar elemdisplay = {},\n\tiframe, iframeDoc,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = /^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,\n\ttimerId,\n\tfxAttrs = [\n\t\t// height animations\n\t\t[ \"height\", \"marginTop\", \"marginBottom\", \"paddingTop\", \"paddingBottom\" ],\n\t\t// width animations\n\t\t[ \"width\", \"marginLeft\", \"marginRight\", \"paddingLeft\", \"paddingRight\" ],\n\t\t// opacity animations\n\t\t[ \"opacity\" ]\n\t],\n\tfxNow;\n\njQuery.fn.extend({\n\tshow: function( speed, easing, callback ) {\n\t\tvar elem, display;\n\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"show\", 3), speed, easing, callback );\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\telem = this[ i ];\n\n\t\t\t\tif ( elem.style ) {\n\t\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t\t\t// being hidden by cascaded rules or not\n\t\t\t\t\tif ( !jQuery._data(elem, \"olddisplay\") && display === \"none\" ) {\n\t\t\t\t\t\tdisplay = elem.style.display = \"\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Set elements which have been overridden with display: none\n\t\t\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t\t\t// for such an element\n\t\t\t\t\tif ( (display === \"\" && jQuery.css(elem, \"display\") === \"none\") ||\n\t\t\t\t\t\t!jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {\n\t\t\t\t\t\tjQuery._data( elem, \"olddisplay\", defaultDisplay(elem.nodeName) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of most of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\telem = this[ i ];\n\n\t\t\t\tif ( elem.style ) {\n\t\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\t\tif ( display === \"\" || display === \"none\" ) {\n\t\t\t\t\t\telem.style.display = jQuery._data( elem, \"olddisplay\" ) || \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\thide: function( speed, easing, callback ) {\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"hide\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tvar elem, display,\n\t\t\t\ti = 0,\n\t\t\t\tj = this.length;\n\n\t\t\tfor ( ; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tif ( elem.style ) {\n\t\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\n\t\t\t\t\tif ( display !== \"none\" && !jQuery._data( elem, \"olddisplay\" ) ) {\n\t\t\t\t\t\tjQuery._data( elem, \"olddisplay\", display );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\tif ( this[i].style ) {\n\t\t\t\t\tthis[i].style.display = \"none\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\t// Save the old toggle function\n\t_toggle: jQuery.fn.toggle,\n\n\ttoggle: function( fn, fn2, callback ) {\n\t\tvar bool = typeof fn === \"boolean\";\n\n\t\tif ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {\n\t\t\tthis._toggle.apply( this, arguments );\n\n\t\t} else if ( fn == null || bool ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar state = bool ? fn : jQuery(this).is(\":hidden\");\n\t\t\t\tjQuery(this)[ state ? \"show\" : \"hide\" ]();\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.animate(genFx(\"toggle\", 3), fn, fn2, callback);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tfadeTo: function( speed, to, easing, callback ) {\n\t\treturn this.filter(\":hidden\").css(\"opacity\", 0).show().end()\n\t\t\t\t\t.animate({opacity: to}, speed, easing, callback);\n\t},\n\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar optall = jQuery.speed( speed, easing, callback );\n\n\t\tif ( jQuery.isEmptyObject( prop ) ) {\n\t\t\treturn this.each( optall.complete, [ false ] );\n\t\t}\n\n\t\t// Do not change referenced properties as per-property easing will be lost\n\t\tprop = jQuery.extend( {}, prop );\n\n\t\tfunction doAnimation() {\n\t\t\t// XXX 'this' does not always have a nodeName when running the\n\t\t\t// test suite\n\n\t\t\tif ( optall.queue === false ) {\n\t\t\t\tjQuery._mark( this );\n\t\t\t}\n\n\t\t\tvar opt = jQuery.extend( {}, optall ),\n\t\t\t\tisElement = this.nodeType === 1,\n\t\t\t\thidden = isElement && jQuery(this).is(\":hidden\"),\n\t\t\t\tname, val, p, e, hooks, replace,\n\t\t\t\tparts, start, end, unit,\n\t\t\t\tmethod;\n\n\t\t\t// will store per property easing and be used to determine when an animation is complete\n\t\t\topt.animatedProperties = {};\n\n\t\t\t// first pass over propertys to expand / normalize\n\t\t\tfor ( p in prop ) {\n\t\t\t\tname = jQuery.camelCase( p );\n\t\t\t\tif ( p !== name ) {\n\t\t\t\t\tprop[ name ] = prop[ p ];\n\t\t\t\t\tdelete prop[ p ];\n\t\t\t\t}\n\n\t\t\t\tif ( ( hooks = jQuery.cssHooks[ name ] ) && \"expand\" in hooks ) {\n\t\t\t\t\treplace = hooks.expand( prop[ name ] );\n\t\t\t\t\tdelete prop[ name ];\n\n\t\t\t\t\t// not quite $.extend, this wont overwrite keys already present.\n\t\t\t\t\t// also - reusing 'p' from above because we have the correct \"name\"\n\t\t\t\t\tfor ( p in replace ) {\n\t\t\t\t\t\tif ( ! ( p in prop ) ) {\n\t\t\t\t\t\t\tprop[ p ] = replace[ p ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( name in prop ) {\n\t\t\t\tval = prop[ name ];\n\t\t\t\t// easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default)\n\t\t\t\tif ( jQuery.isArray( val ) ) {\n\t\t\t\t\topt.animatedProperties[ name ] = val[ 1 ];\n\t\t\t\t\tval = prop[ name ] = val[ 0 ];\n\t\t\t\t} else {\n\t\t\t\t\topt.animatedProperties[ name ] = opt.specialEasing && opt.specialEasing[ name ] || opt.easing || 'swing';\n\t\t\t\t}\n\n\t\t\t\tif ( val === \"hide\" && hidden || val === \"show\" && !hidden ) {\n\t\t\t\t\treturn opt.complete.call( this );\n\t\t\t\t}\n\n\t\t\t\tif ( isElement && ( name === \"height\" || name === \"width\" ) ) {\n\t\t\t\t\t// Make sure that nothing sneaks out\n\t\t\t\t\t// Record all 3 overflow attributes because IE does not\n\t\t\t\t\t// change the overflow attribute when overflowX and\n\t\t\t\t\t// overflowY are set to the same value\n\t\t\t\t\topt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];\n\n\t\t\t\t\t// Set display property to inline-block for height/width\n\t\t\t\t\t// animations on inline elements that are having width/height animated\n\t\t\t\t\tif ( jQuery.css( this, \"display\" ) === \"inline\" &&\n\t\t\t\t\t\t\tjQuery.css( this, \"float\" ) === \"none\" ) {\n\n\t\t\t\t\t\t// inline-level elements accept inline-block;\n\t\t\t\t\t\t// block-level elements need to be inline with layout\n\t\t\t\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout || defaultDisplay( this.nodeName ) === \"inline\" ) {\n\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.style.zoom = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( opt.overflow != null ) {\n\t\t\t\tthis.style.overflow = \"hidden\";\n\t\t\t}\n\n\t\t\tfor ( p in prop ) {\n\t\t\t\te = new jQuery.fx( this, opt, p );\n\t\t\t\tval = prop[ p ];\n\n\t\t\t\tif ( rfxtypes.test( val ) ) {\n\n\t\t\t\t\t// Tracks whether to show or hide based on private\n\t\t\t\t\t// data attached to the element\n\t\t\t\t\tmethod = jQuery._data( this, \"toggle\" + p ) || ( val === \"toggle\" ? hidden ? \"show\" : \"hide\" : 0 );\n\t\t\t\t\tif ( method ) {\n\t\t\t\t\t\tjQuery._data( this, \"toggle\" + p, method === \"show\" ? \"hide\" : \"show\" );\n\t\t\t\t\t\te[ method ]();\n\t\t\t\t\t} else {\n\t\t\t\t\t\te[ val ]();\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\tparts = rfxnum.exec( val );\n\t\t\t\t\tstart = e.cur();\n\n\t\t\t\t\tif ( parts ) {\n\t\t\t\t\t\tend = parseFloat( parts[2] );\n\t\t\t\t\t\tunit = parts[3] || ( jQuery.cssNumber[ p ] ? \"\" : \"px\" );\n\n\t\t\t\t\t\t// We need to compute starting value\n\t\t\t\t\t\tif ( unit !== \"px\" ) {\n\t\t\t\t\t\t\tjQuery.style( this, p, (end || 1) + unit);\n\t\t\t\t\t\t\tstart = ( (end || 1) / e.cur() ) * start;\n\t\t\t\t\t\t\tjQuery.style( this, p, start + unit);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\t\t\tif ( parts[1] ) {\n\t\t\t\t\t\t\tend = ( (parts[ 1 ] === \"-=\" ? -1 : 1) * end ) + start;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\te.custom( start, end, unit );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\te.custom( start, val, \"\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// For JS strict compliance\n\t\t\treturn true;\n\t\t}\n\n\t\treturn optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar index,\n\t\t\t\thadTimers = false,\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = jQuery._data( this );\n\n\t\t\t// clear marker counters if we know they won't be\n\t\t\tif ( !gotoEnd ) {\n\t\t\t\tjQuery._unmark( true, this );\n\t\t\t}\n\n\t\t\tfunction stopQueue( elem, data, index ) {\n\t\t\t\tvar hooks = data[ index ];\n\t\t\t\tjQuery.removeData( elem, index, true );\n\t\t\t\thooks.stop( gotoEnd );\n\t\t\t}\n\n\t\t\tif ( type == null ) {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && index.indexOf(\".run\") === index.length - 4 ) {\n\t\t\t\t\t\tstopQueue( this, data, index );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if ( data[ index = type + \".run\" ] && data[ index ].stop ){\n\t\t\t\tstopQueue( this, data, index );\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {\n\t\t\t\t\tif ( gotoEnd ) {\n\n\t\t\t\t\t\t// force the next step to be the last\n\t\t\t\t\t\ttimers[ index ]( true );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttimers[ index ].saveState();\n\t\t\t\t\t}\n\t\t\t\t\thadTimers = true;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// start the next in the queue if the last step wasn't forced\n\t\t\t// timers currently will call their complete callbacks, which will dequeue\n\t\t\t// but only if they were gotoEnd\n\t\t\tif ( !( gotoEnd && hadTimers ) ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t}\n\n});\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\tsetTimeout( clearFxNow, 0 );\n\treturn ( fxNow = jQuery.now() );\n}\n\nfunction clearFxNow() {\n\tfxNow = undefined;\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, num ) {\n\tvar obj = {};\n\n\tjQuery.each( fxAttrs.concat.apply([], fxAttrs.slice( 0, num )), function() {\n\t\tobj[ this ] = type;\n\t});\n\n\treturn obj;\n}\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx( \"show\", 1 ),\n\tslideUp: genFx( \"hide\", 1 ),\n\tslideToggle: genFx( \"toggle\", 1 ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.extend({\n\tspeed: function( speed, easing, fn ) {\n\t\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\t\tcomplete: fn || !fn && easing ||\n\t\t\t\tjQuery.isFunction( speed ) && speed,\n\t\t\tduration: speed,\n\t\t\teasing: fn && easing || easing && !jQuery.isFunction( easing ) && easing\n\t\t};\n\n\t\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;\n\n\t\t// normalize opt.queue - true/undefined/null -> \"fx\"\n\t\tif ( opt.queue == null || opt.queue === true ) {\n\t\t\topt.queue = \"fx\";\n\t\t}\n\n\t\t// Queueing\n\t\topt.old = opt.complete;\n\n\t\topt.complete = function( noUnmark ) {\n\t\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\t\topt.old.call( this );\n\t\t\t}\n\n\t\t\tif ( opt.queue ) {\n\t\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t\t} else if ( noUnmark !== false ) {\n\t\t\t\tjQuery._unmark( this );\n\t\t\t}\n\t\t};\n\n\t\treturn opt;\n\t},\n\n\teasing: {\n\t\tlinear: function( p ) {\n\t\t\treturn p;\n\t\t},\n\t\tswing: function( p ) {\n\t\t\treturn ( -Math.cos( p*Math.PI ) / 2 ) + 0.5;\n\t\t}\n\t},\n\n\ttimers: [],\n\n\tfx: function( elem, options, prop ) {\n\t\tthis.options = options;\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\n\t\toptions.orig = options.orig || {};\n\t}\n\n});\n\njQuery.fx.prototype = {\n\t// Simple function for setting a style value\n\tupdate: function() {\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\t( jQuery.fx.step[ this.prop ] || jQuery.fx.step._default )( this );\n\t},\n\n\t// Get the current size\n\tcur: function() {\n\t\tif ( this.elem[ this.prop ] != null && (!this.elem.style || this.elem.style[ this.prop ] == null) ) {\n\t\t\treturn this.elem[ this.prop ];\n\t\t}\n\n\t\tvar parsed,\n\t\t\tr = jQuery.css( this.elem, this.prop );\n\t\t// Empty strings, null, undefined and \"auto\" are converted to 0,\n\t\t// complex values such as \"rotate(1rad)\" are returned as is,\n\t\t// simple values such as \"10px\" are parsed to Float.\n\t\treturn isNaN( parsed = parseFloat( r ) ) ? !r || r === \"auto\" ? 0 : r : parsed;\n\t},\n\n\t// Start an animation from one number to another\n\tcustom: function( from, to, unit ) {\n\t\tvar self = this,\n\t\t\tfx = jQuery.fx;\n\n\t\tthis.startTime = fxNow || createFxNow();\n\t\tthis.end = to;\n\t\tthis.now = this.start = from;\n\t\tthis.pos = this.state = 0;\n\t\tthis.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? \"\" : \"px\" );\n\n\t\tfunction t( gotoEnd ) {\n\t\t\treturn self.step( gotoEnd );\n\t\t}\n\n\t\tt.queue = this.options.queue;\n\t\tt.elem = this.elem;\n\t\tt.saveState = function() {\n\t\t\tif ( jQuery._data( self.elem, \"fxshow\" + self.prop ) === undefined ) {\n\t\t\t\tif ( self.options.hide ) {\n\t\t\t\t\tjQuery._data( self.elem, \"fxshow\" + self.prop, self.start );\n\t\t\t\t} else if ( self.options.show ) {\n\t\t\t\t\tjQuery._data( self.elem, \"fxshow\" + self.prop, self.end );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tif ( t() && jQuery.timers.push(t) && !timerId ) {\n\t\t\ttimerId = setInterval( fx.tick, fx.interval );\n\t\t}\n\t},\n\n\t// Simple 'show' function\n\tshow: function() {\n\t\tvar dataShow = jQuery._data( this.elem, \"fxshow\" + this.prop );\n\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[ this.prop ] = dataShow || jQuery.style( this.elem, this.prop );\n\t\tthis.options.show = true;\n\n\t\t// Begin the animation\n\t\t// Make sure that we start at a small width/height to avoid any flash of content\n\t\tif ( dataShow !== undefined ) {\n\t\t\t// This show is picking up where a previous hide or show left off\n\t\t\tthis.custom( this.cur(), dataShow );\n\t\t} else {\n\t\t\tthis.custom( this.prop === \"width\" || this.prop === \"height\" ? 1 : 0, this.cur() );\n\t\t}\n\n\t\t// Start by showing the element\n\t\tjQuery( this.elem ).show();\n\t},\n\n\t// Simple 'hide' function\n\thide: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[ this.prop ] = jQuery._data( this.elem, \"fxshow\" + this.prop ) || jQuery.style( this.elem, this.prop );\n\t\tthis.options.hide = true;\n\n\t\t// Begin the animation\n\t\tthis.custom( this.cur(), 0 );\n\t},\n\n\t// Each step of an animation\n\tstep: function( gotoEnd ) {\n\t\tvar p, n, complete,\n\t\t\tt = fxNow || createFxNow(),\n\t\t\tdone = true,\n\t\t\telem = this.elem,\n\t\t\toptions = this.options;\n\n\t\tif ( gotoEnd || t >= options.duration + this.startTime ) {\n\t\t\tthis.now = this.end;\n\t\t\tthis.pos = this.state = 1;\n\t\t\tthis.update();\n\n\t\t\toptions.animatedProperties[ this.prop ] = true;\n\n\t\t\tfor ( p in options.animatedProperties ) {\n\t\t\t\tif ( options.animatedProperties[ p ] !== true ) {\n\t\t\t\t\tdone = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( done ) {\n\t\t\t\t// Reset the overflow\n\t\t\t\tif ( options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {\n\n\t\t\t\t\tjQuery.each( [ \"\", \"X\", \"Y\" ], function( index, value ) {\n\t\t\t\t\t\telem.style[ \"overflow\" + value ] = options.overflow[ index ];\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Hide the element if the \"hide\" operation was done\n\t\t\t\tif ( options.hide ) {\n\t\t\t\t\tjQuery( elem ).hide();\n\t\t\t\t}\n\n\t\t\t\t// Reset the properties, if the item has been hidden or shown\n\t\t\t\tif ( options.hide || options.show ) {\n\t\t\t\t\tfor ( p in options.animatedProperties ) {\n\t\t\t\t\t\tjQuery.style( elem, p, options.orig[ p ] );\n\t\t\t\t\t\tjQuery.removeData( elem, \"fxshow\" + p, true );\n\t\t\t\t\t\t// Toggle data is no longer needed\n\t\t\t\t\t\tjQuery.removeData( elem, \"toggle\" + p, true );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Execute the complete function\n\t\t\t\t// in the event that the complete function throws an exception\n\t\t\t\t// we must ensure it won't be called twice. #5684\n\n\t\t\t\tcomplete = options.complete;\n\t\t\t\tif ( complete ) {\n\n\t\t\t\t\toptions.complete = false;\n\t\t\t\t\tcomplete.call( elem );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t} else {\n\t\t\t// classical easing cannot be used with an Infinity duration\n\t\t\tif ( options.duration == Infinity ) {\n\t\t\t\tthis.now = t;\n\t\t\t} else {\n\t\t\t\tn = t - this.startTime;\n\t\t\t\tthis.state = n / options.duration;\n\n\t\t\t\t// Perform the easing function, defaults to swing\n\t\t\t\tthis.pos = jQuery.easing[ options.animatedProperties[this.prop] ]( this.state, n, 0, 1, options.duration );\n\t\t\t\tthis.now = this.start + ( (this.end - this.start) * this.pos );\n\t\t\t}\n\t\t\t// Perform the next step of the animation\n\t\t\tthis.update();\n\t\t}\n\n\t\treturn true;\n\t}\n};\n\njQuery.extend( jQuery.fx, {\n\ttick: function() {\n\t\tvar timer,\n\t\t\ttimers = jQuery.timers,\n\t\t\ti = 0;\n\n\t\tfor ( ; i < timers.length; i++ ) {\n\t\t\ttimer = timers[ i ];\n\t\t\t// Checks the timer has not already been removed\n\t\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\t\ttimers.splice( i--, 1 );\n\t\t\t}\n\t\t}\n\n\t\tif ( !timers.length ) {\n\t\t\tjQuery.fx.stop();\n\t\t}\n\t},\n\n\tinterval: 13,\n\n\tstop: function() {\n\t\tclearInterval( timerId );\n\t\ttimerId = null;\n\t},\n\n\tspeeds: {\n\t\tslow: 600,\n\t\tfast: 200,\n\t\t// Default speed\n\t\t_default: 400\n\t},\n\n\tstep: {\n\t\topacity: function( fx ) {\n\t\t\tjQuery.style( fx.elem, \"opacity\", fx.now );\n\t\t},\n\n\t\t_default: function( fx ) {\n\t\t\tif ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {\n\t\t\t\tfx.elem.style[ fx.prop ] = fx.now + fx.unit;\n\t\t\t} else {\n\t\t\t\tfx.elem[ fx.prop ] = fx.now;\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Ensure props that can't be negative don't go there on undershoot easing\njQuery.each( fxAttrs.concat.apply( [], fxAttrs ), function( i, prop ) {\n\t// exclude marginTop, marginLeft, marginBottom and marginRight from this list\n\tif ( prop.indexOf( \"margin\" ) ) {\n\t\tjQuery.fx.step[ prop ] = function( fx ) {\n\t\t\tjQuery.style( fx.elem, prop, Math.max(0, fx.now) + fx.unit );\n\t\t};\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\n\n// Try to restore the default display value of an element\nfunction defaultDisplay( nodeName ) {\n\n\tif ( !elemdisplay[ nodeName ] ) {\n\n\t\tvar body = document.body,\n\t\t\telem = jQuery( \"<\" + nodeName + \">\" ).appendTo( body ),\n\t\t\tdisplay = elem.css( \"display\" );\n\t\telem.remove();\n\n\t\t// If the simple way fails,\n\t\t// get element's real default display by attaching it to a temp iframe\n\t\tif ( display === \"none\" || display === \"\" ) {\n\t\t\t// No iframe to use yet, so create it\n\t\t\tif ( !iframe ) {\n\t\t\t\tiframe = document.createElement( \"iframe\" );\n\t\t\t\tiframe.frameBorder = iframe.width = iframe.height = 0;\n\t\t\t}\n\n\t\t\tbody.appendChild( iframe );\n\n\t\t\t// Create a cacheable copy of the iframe document on first call.\n\t\t\t// IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML\n\t\t\t// document to it; WebKit & Firefox won't allow reusing the iframe document.\n\t\t\tif ( !iframeDoc || !iframe.createElement ) {\n\t\t\t\tiframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;\n\t\t\t\tiframeDoc.write( ( jQuery.support.boxModel ? \"<!doctype html>\" : \"\" ) + \"<html><body>\" );\n\t\t\t\tiframeDoc.close();\n\t\t\t}\n\n\t\t\telem = iframeDoc.createElement( nodeName );\n\n\t\t\tiframeDoc.body.appendChild( elem );\n\n\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\tbody.removeChild( iframe );\n\t\t}\n\n\t\t// Store the correct default display\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn elemdisplay[ nodeName ];\n}\n\n\n\n\nvar getOffset,\n\trtable = /^t(?:able|d|h)$/i,\n\trroot = /^(?:body|html)$/i;\n\nif ( \"getBoundingClientRect\" in document.documentElement ) {\n\tgetOffset = function( elem, doc, docElem, box ) {\n\t\ttry {\n\t\t\tbox = elem.getBoundingClientRect();\n\t\t} catch(e) {}\n\n\t\t// Make sure we're not dealing with a disconnected DOM node\n\t\tif ( !box || !jQuery.contains( docElem, elem ) ) {\n\t\t\treturn box ? { top: box.top, left: box.left } : { top: 0, left: 0 };\n\t\t}\n\n\t\tvar body = doc.body,\n\t\t\twin = getWindow( doc ),\n\t\t\tclientTop  = docElem.clientTop  || body.clientTop  || 0,\n\t\t\tclientLeft = docElem.clientLeft || body.clientLeft || 0,\n\t\t\tscrollTop  = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop,\n\t\t\tscrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft,\n\t\t\ttop  = box.top  + scrollTop  - clientTop,\n\t\t\tleft = box.left + scrollLeft - clientLeft;\n\n\t\treturn { top: top, left: left };\n\t};\n\n} else {\n\tgetOffset = function( elem, doc, docElem ) {\n\t\tvar computedStyle,\n\t\t\toffsetParent = elem.offsetParent,\n\t\t\tprevOffsetParent = elem,\n\t\t\tbody = doc.body,\n\t\t\tdefaultView = doc.defaultView,\n\t\t\tprevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,\n\t\t\ttop = elem.offsetTop,\n\t\t\tleft = elem.offsetLeft;\n\n\t\twhile ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {\n\t\t\tif ( jQuery.support.fixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcomputedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;\n\t\t\ttop  -= elem.scrollTop;\n\t\t\tleft -= elem.scrollLeft;\n\n\t\t\tif ( elem === offsetParent ) {\n\t\t\t\ttop  += elem.offsetTop;\n\t\t\t\tleft += elem.offsetLeft;\n\n\t\t\t\tif ( jQuery.support.doesNotAddBorder && !(jQuery.support.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {\n\t\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t\t}\n\n\t\t\t\tprevOffsetParent = offsetParent;\n\t\t\t\toffsetParent = elem.offsetParent;\n\t\t\t}\n\n\t\t\tif ( jQuery.support.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== \"visible\" ) {\n\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t}\n\n\t\t\tprevComputedStyle = computedStyle;\n\t\t}\n\n\t\tif ( prevComputedStyle.position === \"relative\" || prevComputedStyle.position === \"static\" ) {\n\t\t\ttop  += body.offsetTop;\n\t\t\tleft += body.offsetLeft;\n\t\t}\n\n\t\tif ( jQuery.support.fixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\ttop  += Math.max( docElem.scrollTop, body.scrollTop );\n\t\t\tleft += Math.max( docElem.scrollLeft, body.scrollLeft );\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t};\n}\n\njQuery.fn.offset = function( options ) {\n\tif ( arguments.length ) {\n\t\treturn options === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t}\n\n\tvar elem = this[0],\n\t\tdoc = elem && elem.ownerDocument;\n\n\tif ( !doc ) {\n\t\treturn null;\n\t}\n\n\tif ( elem === doc.body ) {\n\t\treturn jQuery.offset.bodyOffset( elem );\n\t}\n\n\treturn getOffset( elem, doc, doc.documentElement );\n};\n\njQuery.offset = {\n\n\tbodyOffset: function( body ) {\n\t\tvar top = body.offsetTop,\n\t\t\tleft = body.offsetLeft;\n\n\t\tif ( jQuery.support.doesNotIncludeMarginInBodyOffset ) {\n\t\t\ttop  += parseFloat( jQuery.css(body, \"marginTop\") ) || 0;\n\t\t\tleft += parseFloat( jQuery.css(body, \"marginLeft\") ) || 0;\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t},\n\n\tsetOffset: function( elem, options, i ) {\n\t\tvar position = jQuery.css( elem, \"position\" );\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tvar curElem = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurCSSTop = jQuery.css( elem, \"top\" ),\n\t\t\tcurCSSLeft = jQuery.css( elem, \"left\" ),\n\t\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) && jQuery.inArray(\"auto\", [curCSSTop, curCSSLeft]) > -1,\n\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\n\tposition: function() {\n\t\tif ( !this[0] ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar elem = this[0],\n\n\t\t// Get *real* offsetParent\n\t\toffsetParent = this.offsetParent(),\n\n\t\t// Get correct offsets\n\t\toffset       = this.offset(),\n\t\tparentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t// Subtract element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\toffset.top  -= parseFloat( jQuery.css(elem, \"marginTop\") ) || 0;\n\t\toffset.left -= parseFloat( jQuery.css(elem, \"marginLeft\") ) || 0;\n\n\t\t// Add offsetParent borders\n\t\tparentOffset.top  += parseFloat( jQuery.css(offsetParent[0], \"borderTopWidth\") ) || 0;\n\t\tparentOffset.left += parseFloat( jQuery.css(offsetParent[0], \"borderLeftWidth\") ) || 0;\n\n\t\t// Subtract the two offsets\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\tleft: offset.left - parentOffset.left\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || document.body;\n\t\t\twhile ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, \"position\") === \"static\") ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( {scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\"}, function( method, prop ) {\n\tvar top = /Y/.test( prop );\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn jQuery.access( this, function( elem, method, val ) {\n\t\t\tvar win = getWindow( elem );\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? (prop in win) ? win[ prop ] :\n\t\t\t\t\tjQuery.support.boxModel && win.document.documentElement[ method ] ||\n\t\t\t\t\t\twin.document.body[ method ] :\n\t\t\t\t\telem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : jQuery( win ).scrollLeft(),\n\t\t\t\t\t top ? val : jQuery( win ).scrollTop()\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length, null );\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n\n\n\n\n// Create width, height, innerHeight, innerWidth, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tvar clientProp = \"client\" + name,\n\t\tscrollProp = \"scroll\" + name,\n\t\toffsetProp = \"offset\" + name;\n\n\t// innerHeight and innerWidth\n\tjQuery.fn[ \"inner\" + name ] = function() {\n\t\tvar elem = this[0];\n\t\treturn elem ?\n\t\t\telem.style ?\n\t\t\tparseFloat( jQuery.css( elem, type, \"padding\" ) ) :\n\t\t\tthis[ type ]() :\n\t\t\tnull;\n\t};\n\n\t// outerHeight and outerWidth\n\tjQuery.fn[ \"outer\" + name ] = function( margin ) {\n\t\tvar elem = this[0];\n\t\treturn elem ?\n\t\t\telem.style ?\n\t\t\tparseFloat( jQuery.css( elem, type, margin ? \"margin\" : \"border\" ) ) :\n\t\t\tthis[ type ]() :\n\t\t\tnull;\n\t};\n\n\tjQuery.fn[ type ] = function( value ) {\n\t\treturn jQuery.access( this, function( elem, type, value ) {\n\t\t\tvar doc, docElemProp, orig, ret;\n\n\t\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t\t// 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat\n\t\t\t\tdoc = elem.document;\n\t\t\t\tdocElemProp = doc.documentElement[ clientProp ];\n\t\t\t\treturn jQuery.support.boxModel && docElemProp ||\n\t\t\t\t\tdoc.body && doc.body[ clientProp ] || docElemProp;\n\t\t\t}\n\n\t\t\t// Get document width or height\n\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height], whichever is greater\n\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t// when a window > document, IE6 reports a offset[Width/Height] > client[Width/Height]\n\t\t\t\t// so we can't use max, as it'll choose the incorrect offset[Width/Height]\n\t\t\t\t// instead we use the correct client[Width/Height]\n\t\t\t\t// support:IE6\n\t\t\t\tif ( doc[ clientProp ] >= doc[ scrollProp ] ) {\n\t\t\t\t\treturn doc[ clientProp ];\n\t\t\t\t}\n\n\t\t\t\treturn Math.max(\n\t\t\t\t\telem.body[ scrollProp ], doc[ scrollProp ],\n\t\t\t\t\telem.body[ offsetProp ], doc[ offsetProp ]\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Get width or height on the element\n\t\t\tif ( value === undefined ) {\n\t\t\t\torig = jQuery.css( elem, type );\n\t\t\t\tret = parseFloat( orig );\n\t\t\t\treturn jQuery.isNumeric( ret ) ? ret : orig;\n\t\t\t}\n\n\t\t\t// Set the width or height on the element\n\t\t\tjQuery( elem ).css( type, value );\n\t\t}, type, value, arguments.length, null );\n\t};\n});\n\n\n\n\n// Expose jQuery to the global object\nwindow.jQuery = window.$ = jQuery;\n\n// Expose jQuery as an AMD module, but only for AMD loaders that\n// understand the issues with loading multiple versions of jQuery\n// in a page that all might call define(). The loader will indicate\n// they have special allowances for multiple jQuery versions by\n// specifying define.amd.jQuery = true. Register as a named module,\n// since jQuery can be concatenated with other files that may use define,\n// but not use a proper concatenation script that understands anonymous\n// AMD modules. A named AMD is safest and most robust way to register.\n// Lowercase jquery is used because AMD module names are derived from\n// file names, and jQuery is normally delivered in a lowercase file name.\n// Do this after creating the global so that if an AMD module wants to call\n// noConflict to hide this version of jQuery, it will work.\nif ( typeof define === \"function\" && define.amd && define.amd.jQuery ) {\n\tdefine( \"jquery\", [], function () { return jQuery; } );\n}\n\n\n\n})( window );\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/static/js/jquery.pagination.js",
    "content": "jQuery.fn.pagination = function(maxentries, opts) {\n\topts = jQuery.extend({\n\t\t\t\titems_per_page : 10, // 每页显示多少条记录\n\t\t\t\tcurrent_page : 0,      //当前页码\n\t\t\t\tnum_display_entries : 4, // 中间显示页码的个数\n\t\t\t\tnum_edge_entries : 2, // 末尾显示页码的个数\n\t\t\t\tlink_to : \"javascript:;\",         //页码点击后的链接\n\t\t\t\tprev_text : \"&#xe612;\",   //上一页的文字\n\t\t\t\tnext_text : \"&#xe611;\",\t   //下一页的文字\n\t\t\t\tellipse_text : \"...\",  //页码之间的省略号\n\t\t\t\tdisplay_msg : true, // 是否显示记录信息\n\t\t\t\tprev_show_always : true, //是否总是显示最前页\n\t\t\t\tnext_show_always : true,//是否总是显示最后页\n\t\t\t\tsetPageNo:false,//是否显示跳转第几页\n\t\t\t\tsetItems_per_page:false,//每页显示多少条\n\t\t\t\tcallback : function() {\n\t\t\t\t\treturn false;\n\t\t\t\t} // 回调函数\n\t\t\t}, opts || {});\n\n\treturn this.each(function() {\n\t\t// 总页数\n\t\tfunction numPages() {\n\t\t\treturn Math.ceil(maxentries / opts.items_per_page);\n\t\t}\n\t\t/**\n\t\t * 计算页码\n\t\t */\n\t\tfunction getInterval() {\n\t\t\tvar ne_half = Math.ceil(opts.num_display_entries / 2);\n\t\t\tvar np = numPages();\n\t\t\tvar upper_limit = np - opts.num_display_entries;\n\t\t\tvar start = current_page > ne_half ? Math.max(Math.min(current_page\n\t\t\t\t\t\t\t\t\t- ne_half, upper_limit), 0) : 0;\n\t\t\tvar end = current_page > ne_half ? Math.min(current_page + ne_half,\n\t\t\t\t\tnp) : Math.min(opts.num_display_entries, np);\n\t\t\treturn [start, end];\n\t\t}\n\n\t\t/**\n\t\t * 点击事件\n\t\t */\n\t\tfunction pageSelected(page_id, evt) {\n\t\t\tvar page_id = parseInt(page_id);\n\t\t\tcurrent_page = page_id;\n\t\t\tdrawLinks();\n\t\t\tvar continuePropagation = opts.callback(page_id, opts.items_per_page, panel);\n\t\t\tif (!continuePropagation) {\n\t\t\t\tif (evt.stopPropagation) {\n\t\t\t\t\tevt.stopPropagation();\n\t\t\t\t} else {\n\t\t\t\t\tevt.cancelBubble = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn continuePropagation;\n\t\t}\n\n\t\t/**\n\t\t * 链接\n\t\t */\n\t\tfunction drawLinks() {\n\t\t\tvar $paginLins = $('<div class=\"pagin-links\"></div>');\n\t\t\tpanel.empty();\n\t\t\tvar interval = getInterval();\n\t\t\tvar np = numPages();\n\t\t\tvar getClickHandler = function(page_id) {\n\t\t\t\treturn function(evt) {\n\t\t\t\t\treturn pageSelected(page_id, evt);\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar appendItem = function(page_id, appendopts) {\n\t\t\t\tpage_id = page_id < 0 ? 0 : (page_id < np ? page_id : np-1);\n\t\t\t\tappendopts = jQuery.extend({\n\t\t\t\t\t\t\ttext : page_id+1,\n\t\t\t\t\t\t\tclasses : \"\"\n\t\t\t\t\t\t}, appendopts || {});\n\t\t\t\tif (page_id == current_page) {\n\t\t\t\t\tvar lnk = $(\"<span class='current'>\" + (appendopts.text)\n\t\t\t\t\t\t\t+ \"</span>\");\n\t\t\t\t} else {\n\t\t\t\t\tvar lnk = $(\"<a>\" + (appendopts.text) + \"</a>\").bind(\n\t\t\t\t\t\t\t\"click\", getClickHandler(page_id)).attr('href',\n\t\t\t\t\t\t\topts.link_to.replace(/__id__/, page_id));\n\n\t\t\t\t}\n\t\t\t\tif (appendopts.classes) {\n\t\t\t\t\tlnk.addClass(appendopts.classes);\n\t\t\t\t}\n\t\t\t\t$paginLins.append(lnk);\n\t\t\t}\n\t\t\t// 上一页\n\t\t\tif (opts.prev_text && (current_page > 0 || opts.prev_show_always)) {\n\t\t\t\tappendItem(current_page - 1, {\n\t\t\t\t\t\t\ttext : opts.prev_text,\n\t\t\t\t\t\t\tclasses : \"prev iconfont\"\n\t\t\t\t\t\t});\n\t\t\t}\n\t\t\t// 点点点\n\t\t\tif (interval[0] > 0 && opts.num_edge_entries > 0) {\n\t\t\t\tvar end = Math.min(opts.num_edge_entries, interval[0]);\n\t\t\t\tfor (var i = 0; i < end; i++) {\n\t\t\t\t\tappendItem(i);\n\t\t\t\t}\n\t\t\t\tif (opts.num_edge_entries < interval[0] && opts.ellipse_text) {\n\t\t\t\t\tjQuery(\"<span>\" + opts.ellipse_text + \"</span>\")\n\t\t\t\t\t\t\t.appendTo($paginLins);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// 中间的页码\n\t\t\tfor (var i = interval[0]; i < interval[1]; i++) {\n\t\t\t\tappendItem(i);\n\t\t\t}\n\t\t\t// 最后的页码\n\t\t\tif (interval[1] < np && opts.num_edge_entries > 0) {\n\t\t\t\tif (np - opts.num_edge_entries > interval[1]\n\t\t\t\t\t\t&& opts.ellipse_text) {\n\t\t\t\t\tjQuery(\"<span>\" + opts.ellipse_text + \"</span>\")\n\t\t\t\t\t\t\t.appendTo($paginLins);\n\t\t\t\t}\n\t\t\t\tvar begin = Math.max(np - opts.num_edge_entries, interval[1]);\n\t\t\t\tfor (var i = begin; i < np; i++) {\n\t\t\t\t\tappendItem(i);\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t// 下一页\n\t\t\tif (opts.next_text\n\t\t\t\t\t&& (current_page < np - 1 || opts.next_show_always)) {\n\t\t\t\tappendItem(current_page + 1, {\n\t\t\t\t\t\t\ttext : opts.next_text,\n\t\t\t\t\t\t\tclasses : \"next iconfont\"\n\t\t\t\t\t\t});\n\t\t\t}\n\n\t\t\t//设置跳到第几页\n\t\t\tif(opts.setPageNo){\n\t\t\t\t  panel.append(\"<div class='goto'><span class='text'>跳转到</span><input type='text'/><span class='page'>页</span><button type='button' class='ue-button long2'>确定</button></div>\");\t\n\t\t\t}\n\n\t\t\tpanel.append($paginLins);\n\t\t\t// 记录显示\n\t\t\tif (opts.display_msg) {\n\t\t\t\tif(!maxentries){\n\t\t\t\t\tpanel\n\t\t\t\t\t\t.append('<div class=\"pxofy\">暂时无数据可以显示</div>');\n\t\t\t\t}else{\n\t\t\t\tpanel\n\t\t\t\t\t\t.append('<div class=\"pxofy\">显示第&nbsp;'\n\t\t\t\t\t\t\t\t+ ((current_page * opts.items_per_page) + 1)\n\t\t\t\t\t\t\t\t+ '&nbsp;条到&nbsp;'\n\t\t\t\t\t\t\t\t+ (((current_page + 1) * opts.items_per_page) > maxentries\n\t\t\t\t\t\t\t\t\t\t? maxentries\n\t\t\t\t\t\t\t\t\t\t: ((current_page + 1) * opts.items_per_page))\n\t\t\t\t\t\t\t\t+ '&nbsp;条记录，总共&nbsp;' + maxentries + '&nbsp;条</div>');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//显示设置每页多少条\n\t\t\tif(opts.setItems_per_page){\n\t\t\t\tpanel.append('<div class=\"items-per\">每页显示&nbsp;<select value=' + opts.items_per_page + '><option value=\"10\">10</option><option value=\"20\">20</option><option value=\"50\">50</option></select>&nbsp;条记录</div>');\n\t\t\t\tpanel.find(\".items-per select option[value='\"+opts.items_per_page+\"']\").prop(\"selected\",true);\n\t\t\t}\n\t\t}\n\n\t\t// 当前页\n\t\tvar current_page = opts.current_page;\n\t\tmaxentries = ( maxentries < 0) ? 0 : maxentries;\n\t\topts.items_per_page = (!opts.items_per_page || opts.items_per_page < 0)\n\t\t\t\t? 1\n\t\t\t\t: opts.items_per_page;\n\t\tvar panel = jQuery(this);\n\t\tthis.selectPage = function(page_id) {\n\t\t\tpageSelected(page_id);\n\t\t}\n\t\tthis.prevPage = function() {\n\t\t\tif (current_page > 0) {\n\t\t\t\tpageSelected(current_page - 1);\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\tthis.nextPage = function() {\n\t\t\tif (current_page < numPages() - 1) {\n\t\t\t\tpageSelected(current_page + 1);\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(maxentries==0){\n\t\t\tpanel.append('<span class=\"current prev iconfont\">'+opts.prev_text+'</span><span class=\"current next iconfont\">'+opts.next_text+'</span><div class=\"pxofy\">暂时无数据可以显示</div>');\n\t\t}else{\n\t\t\tdrawLinks();\n\t\t}\n\t\t$(this).find(\".goto input\").live(\"keydown\",function(evt){\n\t\t\tif(evt.which == 13){\n\t\t\t\tvar setPageNo = $(this).val();\n\t\t\t\tif(setPageNo!=null && setPageNo!=\"\"&&setPageNo>0&&setPageNo<=numPages()){\n\t\t\t\t\tpageSelected(setPageNo-1, evt);\n\t\t\t\t}\n\t\t\t}\n\t\t});\t\t\n\n\t\t$('.pagin.pagination').on('change',\".items-per select\",function(evt){\n\t\t\topts.current_page = 0;\n\t\t\tcurrent_page = opts.current_page;\n\t\t\topts.items_per_page = parseInt($(this).children('option:selected').val(),10); \n\t\t\tpageSelected(current_page, evt);\n\t\t})\n\t\t\t\n\t\t\n\t});\n}\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/static/js/jquery.tips.js",
    "content": "/**\n* jquery tips 提示插件 jquery.tips.js v0.1beta\n*\n* 使用方法\n* $(selector).tips({   //selector 为jquery选择器\n*  msg:'your messages!',    //你的提示消息  必填\n*  side:1,  //提示窗显示位置  1，2，3，4 分别代表 上右下左 默认为1（上） 可选\n*  color:'#FFF', //提示文字色 默认为白色 可选\n*  bg:'#F00',//提示窗背景色 默认为红色 可选\n*  time:2,//自动关闭时间 默认2秒 设置0则不自动关闭 可选\n*  x:0,//横向偏移  正数向右偏移 负数向左偏移 默认为0 可选\n*  y:0,//纵向偏移  正数向下偏移 负数向上偏移 默认为0 可选\n* })\n*\n*\n*/\n(function ($) {\n    $.fn.tips = function(options){\n        var defaults = {\n            side:1,\n            msg:'',\n            color:'#FFF',\n            bg:'#F00',\n            time:2,\n            x:0,\n            y:0\n        }\n        var options = $.extend(defaults, options);\n        if (!options.msg||isNaN(options.side)) {\n        throw new Error('params error');\n    }\n    if(!$('#jquery_tips_style').length){\n        var style='<style id=\"jquery_tips_style\" type=\"text/css\">';\n        style+='.jq_tips_box{padding:10px;position:absolute;overflow:hidden;display:inline;display:none;z-index:10176523;}';\n        style+='.jq_tips_arrow{display:block;width:0px;height:0px;position:absolute;}';\n        style+='.jq_tips_top{border-left:10px solid transparent;left:20px;bottom:0px;}';\n        style+='.jq_tips_left{border-top:10px solid transparent;right:0px;top:18px;}';\n        style+='.jq_tips_bottom{border-left:10px solid transparent;left:20px;top:0px;}';\n        style+='.jq_tips_right{border-top:10px solid transparent;left:0px;top:18px;}';\n        style+='.jq_tips_info{word-wrap: break-word;word-break:normal;border-radius:4px;padding:5px 8px;max-width:130px;overflow:hidden;box-shadow:1px 1px 1px #999;font-size:12px;cursor:pointer;}';\n        style+='</style>';\n        $(document.body).append(style);\n    }\n        this.each(function(){\n            var element=$(this);\n            var element_top=element.offset().top,element_left=element.offset().left,element_height=element.outerHeight(),element_width=element.outerWidth();\n            options.side=options.side<1?1:options.side>4?4:Math.round(options.side);\n            var sideName=options.side==1?'top':options.side==2?'right':options.side==3?'bottom':options.side==4?'left':'top';\n            var tips=$('<div class=\"jq_tips_box\"><i class=\"jq_tips_arrow jq_tips_'+sideName+'\"></i><div class=\"jq_tips_info\">'+options.msg+'</div></div>').appendTo(document.body);\n            tips.find('.jq_tips_arrow').css('border-'+sideName,'10px solid '+options.bg);\n            tips.find('.jq_tips_info').css({\n                color:options.color,\n                backgroundColor:options.bg\n            });\n            switch(options.side){\n                case 1:\n                    tips.css({\n                        top:element_top-tips.outerHeight()+options.x,\n                        left:element_left-10+options.y\n                    });\n                    break;\n                case 2:\n                    tips.css({\n                        top:element_top-20+options.x,\n                        left:element_left+element_width+options.y\n                    });\n                    break;\n                case 3:\n                    tips.css({\n                        top:element_top+element_height+options.x,\n                        left:element_left-10+options.y\n                    });\n                    break;\n                case 4:\n                    tips.css({\n                        top:element_top-20+options.x,\n                        left:element_left-tips.outerWidth()+options.y\n                    });\n                    break;\n                default:\n            }\n            var closeTime;\n            tips.fadeIn('fast').click(function(){\n                clearTimeout(closeTime);\n                tips.fadeOut('fast',function(){\n                    tips.remove();\n                })\n            })\n            if(options.time){\n                closeTime=setTimeout(function(){\n                    tips.click();\n                },options.time*1000);\n                tips.hover(function(){\n                    clearTimeout(closeTime);\n                },function(){\n                    closeTime=setTimeout(function(){\n                        tips.click();\n                    },options.time*1000);\n                })\n            }\n        });\n        return this;\n    };\n})(jQuery);"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/templates/admin/frame/common.html",
    "content": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\"\n      xmlns:th=\"http://www.thymeleaf.org\">\n<head th:fragment=\"header\">\n    <meta charset=\"utf-8\" />\n    <title>电商运营平台</title>\n    <link th:href=\"@{/static/css/style.css}\" rel=\"stylesheet\" />\n    <link th:href=\"@{/static/css/backend.css}\" rel=\"stylesheet\" />\n    <link th:href=\"@{/static/css/page/backend/account_center.css}\" rel=\"stylesheet\" />\n    <link th:href=\"@{/plugins/datepicker/css/bootstrap.css}\" rel=\"stylesheet\" />\n    <link th:href=\"@{/plugins/select2/css/select2.min.css}\" rel=\"stylesheet\" />\n    <script type=\"text/javascript\" th:src=\"@{/static/js/jquery.js}\"></script>\n    <script type=\"text/javascript\" th:src=\"@{/static/js/common.js}\"></script>\n</head>\n</html>"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/templates/admin/frame/index.html",
    "content": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\"\n      xmlns:th=\"http://www.thymeleaf.org\">\n<!-- 引入公共页面的一些样式和脚本-->\n<head th:include=\"admin/frame/common :: header\"></head>\n<body>\n\n<!-- 顶部导航栏 -->\n<div id=\"hd\" th:include=\"admin/frame/nav :: #hd\"></div>\n\n<div id=\"bd\">\n\n    <div class=\"main-wrap-bk clearfix\">\n        <!-- 左边菜单栏 -->\n        <div class=\"\" th:replace=\"admin/frame/sider_bar_bk :: .sider-bar-bk\"></div>\n        <!-- 用户中心 -->\n        <div class=\"bd-content-wrap\" th:replace=\"admin/user/user_content_wrap :: .bd-content-wrap\"></div>\n    </div>\n\n</div>\n\n\n</body>\n</html>"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/templates/admin/frame/nav.html",
    "content": "<div id=\"hd\" xmlns:th=\"http://www.w3.org/1999/xhtml\">\n\n    <div class=\"header-nav\">\n        <div class=\"navigation-inner\">\n            <div class=\"logo\">\n                <h1>\n                    <a th:href=\"@{/admin/login/api/toIndex}\" class=\"logo-img\">电商运营平台</a>\n                </h1>\n            </div>\n            <div class=\"header-categories\" id=\"nav-con\">\n                <ul class=\"menu\">\n                    <li class=\"menu-item selected\">\n                        <h2>\n                            <a href=\"mgt_console.html\">安全总览</a>\n                        </h2>\n                    </li>\n                </ul>\n            </div>\n\n\n            <div class=\"user-message\">\n                <span class=\"label label-default\">32</span>\n            </div>\n\n\n            <div class=\"login-user\">\n                <i class=\"iconfont\">&#xe60d;</i>\n                <a class=\"javascript:;\">您好！系统管理员</a>\n                <i class=\"iconfont\">&#xe61c;</i>\n\n                <div class=\"user-opt-panel\">\n                    <ul class=\"user-opt\">\n                        <li>\n                            <a th:href=\"@{/admin/user/api/toUserCenter}\">\n                                <i class=\"iconfont\">&#xe60d;</i>\n                                <span class=\"pf-opt-name\">账户信息</span>\n                            </a>\n                        </li>\n                        <li>\n                            <a th:href=\"@{/admin/order/api/toOrder}\">\n                                <i class=\"iconfont\">&#xe60c;</i>\n                                <span class=\"pf-opt-name\">订单信息</span>\n                            </a>\n                        </li>\n                        <li>\n                            <a href=\"javascript:;\">\n                                <i class=\"iconfont\">&#xe60f;</i>\n                                <span class=\"pf-opt-name\">结算信息</span>\n                            </a>\n                        </li>\n                        <li class=\"div-line\">\n                            <a href=\"javascript:;\">\n                                <i class=\"iconfont\">&#xe60e;</i>\n                                <span class=\"pf-opt-name\">资产信息</span>\n                            </a>\n                        </li>\n                        <li class=\"div-line\">\n                            <a th:href=\"@{/admin/login/api/toLogout}\">\n                                <i class=\"iconfont\">&#xe60b;</i>\n                                <span class=\"pf-opt-name\">退出</span>\n                            </a>\n                        </li>\n                    </ul>\n                </div>\n            </div>\n\n        </div>\n    </div>\n</div>"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/templates/admin/frame/sider_bar_bk.html",
    "content": "<div class=\"sider-bar-bk\" xmlns:th=\"http://www.thymeleaf.org\">\n    <div class=\"sider-bar-hd\">\n        <i class=\"iconfont\">&#xe616;</i>\n        <span>云服务</span>\n    </div>\n    <ul class=\"sider-nav\">\n\n        <li class=\"sider-nav-item\" th:each=\"menu : ${menus}\">\n            <h3>\n                <a href=\"javascript:;\">\n                    <i class=\"iconfont\">&#xe613;</i>\n                    <span th:text=\"${menu.menuName}\">系统管理</span>\n                    <i class=\"iconfont arrow-right\">&#xe611;</i>\n                    <i class=\"iconfont arrow-down\">&#xe615;</i>\n                </a>\n            </h3>\n            <ul class=\"sider-nav-s\">\n                <li th:each=\"subM : ${menu.subMenu}\"><a href=\"#\" th:text=\"${subM.menuName}\">系统用户管理</a></li>\n            </ul>\n        </li>\n\n    </ul>\n</div>"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/templates/admin/order/order_content_wrap.html",
    "content": "<div class=\"bd-content-wrap\">\n    <div class=\"bd-content\">\n        <div class=\"title-left-line\">订单管理</div>\n\n        <div class=\"ip-manage page\" data-tab=\"data-result\">\n\n            <div class=\"search-box clearfix\">\n                <div class=\"form-kv clearfix\">\n                    <div class=\"form-kv-label\">提交时间范围：</div>\n                    <div class=\"form-content\">\n                        <div class=\"date-pick\">\n                            <input type=\"text\" id=\"starttime\" />\n                            <i class=\"iconfont\">&#xe619;</i>\n                        </div>\n                        <span class=\"divsion\">-</span>\n                        <div class=\"date-pick\">\n                            <input type=\"text\" id=\"endtime\" />\n                            <i class=\"iconfont\">&#xe619;</i>\n                        </div>\n                    </div>\n                </div>\n\n                <div class=\"form-kv clearfix\">\n                    <div class=\"form-kv-label\">订单编号：</div>\n                    <div class=\"form-content\">\n                        <input type=\"text\" />\n                    </div>\n                </div>\n\n                <div class=\"form-kv leter4 clearfix\">\n                    <div class=\"form-kv-label\">服务商：</div>\n                    <div class=\"form-content\">\n                        <select>\n                            <option>请选择</option>\n                            <option>电信</option>\n                            <option>联通</option>\n                            <option>移动</option>\n                        </select>\n                    </div>\n                </div>\n\n                <div class=\"form-kv leter3 clearfix\">\n                    <div class=\"form-kv-label\">状态：</div>\n                    <div class=\"form-content\">\n                        <select>\n                            <option>请选择</option>\n                            <option>已支付</option>\n                            <option>已过期</option>\n                        </select>\n                        <button class=\"btn btn-blue search-btn\">查询</button>\n                    </div>\n                </div>\n\n            </div>\n\n            <div class=\"grid\">\n                <div class=\"grid-opt clearfix\">\n                    <button class=\"btn btn-red\">\n                        <i class=\"iconfont\">&#xe627;</i>\n                        <span>删除所选</span>\n                    </button>\n                </div>\n\n                <table>\n                    <colgroup>\n                        <col width=\"50\"></col>\n                        <col width=\"50\"></col>\n                        <col width=\"180\"></col>\n                        <col width=\"*\"></col>\n                        <col width=\"110\"></col>\n                        <col width=\"80\"></col>\n                        <col width=\"120\"></col>\n                        <col width=\"180\"></col>\n                    </colgroup>\n\n                    <thead>\n                    <tr>\n                        <th class=\"ck\"><input type=\"checkbox\" /></th>\n                        <th>序号</th>\n                        <th>订单编号</th>\n                        <th>服务名称</th>\n                        <th>服务商</th>\n                        <th>服务时长</th>\n                        <th>状态</th>\n                        <th>提交时间</th>\n                        <th>操作</th>\n                    </tr>\n                    </thead>\n\n                    <tbody>\n                    <tr>\n                        <td class=\"ck\"><input type=\"checkbox\" /></td>\n                        <td class=\"num\">1</td>\n                        <td>201604031212</td>\n                        <td>网站漏洞扫描</td>\n                        <td>dell</td>\n                        <td>1年</td>\n                        <td>正常</td>\n                        <td>2016-04-03</td>\n                        <td class=\"opt\"><a href=\"order-detail.html\">详情</a><a href=\"order-handle.html\">处理</a><a href=\"javascript:;\" class=\"disabled\">续订</a></td>\n                    </tr>\n\n                    <tr>\n                        <td class=\"ck\"><input type=\"checkbox\" /></td>\n                        <td class=\"num\">1</td>\n                        <td>201604031212</td>\n                        <td>网站漏洞扫描</td>\n                        <td>dell</td>\n                        <td>1年</td>\n                        <td class=\"impInfo\">未支付</td>\n                        <td>2016-04-03</td>\n                        <td class=\"opt\"><a href=\"order-detail.html\">详情</a><a href=\"order-handle.html\">处理</a><a href=\"javascript:;\" class=\"disabled\">续订</a></td>\n                    </tr>\n                    <tr>\n                        <td class=\"ck\"><input type=\"checkbox\" /></td>\n                        <td class=\"num\">1</td>\n                        <td>201604031212</td>\n                        <td>网站漏洞扫描</td>\n                        <td>dell</td>\n                        <td>1年</td>\n                        <td>正常</td>\n                        <td>2016-04-03</td>\n                        <td class=\"opt\"><a href=\"javascript:;\">详情</a><a href=\"javascript:;\">处理</a><a href=\"javascript:;\" class=\"disabled\">续订</a></td>\n                    </tr>\n\n                    </tbody>\n                </table>\n            </div>\n\n            <div class=\"pagin pagination clearfix\"></div>\n        </div>\n    </div>\n</div>\n<script type=\"text/javascript\">\n\n    $(\"#starttime\").datepicker({\n        \"language\":\"zh-CN\",\n        \"format\": 'yyyy-mm-dd'\n    })\n    $(\"#endtime\").datepicker({\n        \"language\":\"zh-CN\",\n        \"format\": 'yyyy-mm-dd'\n    })\n    $(\".date-pick .iconfont\").click(function(){\n        $(this).prev().trigger(\"focus\");\n    });\n\n    $('.pagin').pagination(200, {\n        current_page: 5,\n        items_per_page: 10,\n        callback: function(page, panel, evt){\n\n\n        }\n    });\n\n    $('table').on('click', 'a', function() {\n        $('.s-page').show();\n    });\n\n    $('.s-page').on('click', '.close-spage', function() {\n        $('.s-page').hide();\n    });\n\n    $('select').select2();\n\n\n\n</script>"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/templates/admin/order/order_list.html",
    "content": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\"\n      xmlns:th=\"http://www.thymeleaf.org\">\n<!-- 引入公共页面的一些样式和脚本-->\n<head >\n    <link th:href=\"@{/static/css/style.css}\" rel=\"stylesheet\" />\n    <link th:href=\"@{/static/css/backend.css}\" rel=\"stylesheet\" />\n    <link th:href=\"@{/static/css/page/backend/order_manage.css}\" rel=\"stylesheet\" />\n    <link th:href=\"@{/plugins/datepicker/css/bootstrap.css}\" rel=\"stylesheet\" />\n    <link th:href=\"@{/plugins/datepicker/css/bootstrap-datepicker.css}\" rel=\"stylesheet\" />\n    <link th:href=\"@{/plugins/select2/css/select2.min.css}\" rel=\"stylesheet\" />\n    <script type=\"text/javascript\" th:src=\"@{/static/js/jquery.js}\"></script>\n    <script type=\"text/javascript\" th:src=\"@{/static/js/common.js}\"></script>\n    <script type=\"text/javascript\" th:src=\"@{/plugins/datepicker/js/bootstrap-datepicker.js}\"></script>\n    <script type=\"text/javascript\" th:src=\"@{/plugins/datepicker/locales/bootstrap-datepicker.zh-CN.min.js}\"></script>\n    <script type=\"text/javascript\" th:src=\"@{/static/js/jquery.pagination.js}\"></script>\n    <script type=\"text/javascript\" th:src=\"@{/plugins/select2/js/select2.min.js}\"></script>\n</head>\n<body>\n\n<!-- 顶部导航栏 -->\n<div id=\"hd\" th:include=\"admin/frame/nav :: #hd\"></div>\n\n<div id=\"bd\">\n\n    <div class=\"main-wrap-bk clearfix\">\n        <!-- 左边菜单栏 -->\n        <div class=\"\" th:replace=\"admin/frame/sider_bar_bk :: .sider-bar-bk\"></div>\n        <!-- 订单管理 -->\n        <div class=\"bd-content-wrap\" th:replace=\"admin/order/order_content_wrap :: .bd-content-wrap\"></div>\n    </div>\n\n</div>\n\n\n</body>\n</html>"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/templates/admin/user/user_center.html",
    "content": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\"\n      xmlns:th=\"http://www.thymeleaf.org\">\n<!-- 引入公共页面的一些样式和脚本-->\n<head>\n    <link th:href=\"@{/static/css/page/backend/account_center.css}\" rel=\"stylesheet\" />\n    <link th:href=\"@{/static/css/style.css}\" rel=\"stylesheet\" />\n    <link th:href=\"@{/static/css/backend.css}\" rel=\"stylesheet\" />\n    <link th:href=\"@{/plugins/datepicker/css/bootstrap.css}\" rel=\"stylesheet\" />\n    <link th:href=\"@{/plugins/select2/css/select2.min.css}\" rel=\"stylesheet\" />\n    <script type=\"text/javascript\" th:src=\"@{/static/js/jquery.js}\"></script>\n    <script type=\"text/javascript\" th:src=\"@{/static/js/common.js}\"></script>\n</head>\n<body>\n<!-- 顶部导航栏 -->\n<div id=\"hd\" th:include=\"admin/frame/nav :: #hd\"></div>\n\n<div id=\"bd\">\n    <div class=\"main-wrap-bk clearfix\">\n        <!-- 左边菜单栏 -->\n        <div class=\"\" th:replace=\"admin/frame/sider_bar_bk :: .sider-bar-bk\"></div>\n\n        <!-- 用户中心 -->\n        <div class=\"bd-content-wrap\" th:replace=\"admin/user/user_content_wrap :: .bd-content-wrap\"></div>\n    </div>\n</div>\n\n<script type=\"text/javascript\" src=\"../js/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"../js/common.js\"></script>\n<script type=\"text/javascript\">\n\n\n\n</script>\n</body>\n</html>"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/templates/admin/user/user_content_wrap.html",
    "content": "<div class=\"bd-content-wrap\" xmlns:th=\"http://www.w3.org/1999/xhtml\">\n    <div class=\"bd-content\">\n\n        <div class=\"title-left-line\">账户中心</div>\n\n        <div class=\"basic-info\">\n            <div class=\"info-title\">基本信息<a href=\"javascript:;\" class=\"modify\">[修改]</a></div>\n            <div class=\"search-box\">\n                <div class=\"form-kv clearfix\">\n                    <div class=\"form-kv-label\">单位账号：</div>\n                    <div class=\"form-content\">\n                        <span th:text=\"${session.sessionUser.username}\">kie*****@163.com</span>\n                    </div>\n                </div>\n                <div class=\"form-kv clearfix\">\n                    <div class=\"form-kv-label\">单位名称：</div>\n                    <div class=\"form-content\">\n                        <span>市地税局</span>\n                        <i class=\"iconfont\">&#xe652;</i>\n                        <span class=\"status\">已认证</span>\n                    </div>\n                </div>\n                <div class=\"form-kv clearfix\">\n                    <div class=\"form-kv-label\">单位管理员：</div>\n                    <div class=\"form-content\">\n                        <span th:text=\"${session.sessionUser.mark}\">管理员</span>\n                        <i class=\"iconfont\">&#xe652;</i>\n                        <span class=\"status\">已认证</span>\n                    </div>\n                </div>\n                <div class=\"form-kv clearfix\">\n                    <div class=\"form-kv-label\">手机号码：</div>\n                    <div class=\"form-content\">\n                        <span th:text=\"${session.sessionUser.phone}\">137****8564</span>\n                        <i class=\"iconfont\">&#xe652;</i>\n                        <span class=\"status\">已认证</span>\n                    </div>\n                </div>\n                <div class=\"form-kv clearfix\">\n                    <div class=\"form-kv-label\">邮箱地址：</div>\n                    <div class=\"form-content\">\n                        <span th:text=\"${session.sessionUser.email}\">kie*****@163.com</span>\n                        <i class=\"iconfont\">&#xe652;</i>\n                        <span class=\"status\">已认证</span>\n                    </div>\n                </div>\n                <div class=\"form-kv clearfix\">\n                    <div class=\"form-kv-label\">上次登录：</div>\n                    <div class=\"form-content\">\n                        <span th:text=\"${session.sessionUser.lastLogin}\">2018-08-08</span>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"safe-setting\">\n            <div class=\"info-title\">安全设置</div>\n            <div class=\"search-box\">\n                <div class=\"form-kv clearfix\">\n                    <div class=\"form-kv-label\">登录密码：</div>\n                    <div class=\"form-content clearfix\">\n                        <p class=\"content-value\">安全性高的密码可以使账号安全，建议您定期更换密码，设置一个包含字母，符号或数字中至少两种且长度超过6位的密码</p>\n                        <i class=\"iconfont\">&#xe652;</i>\n                        <span class=\"status\">已设置</span>\n                        <a href=\"javascript:;\">修改</a>\n                    </div>\n                </div>\n                <div class=\"form-kv clearfix\">\n                    <div class=\"form-kv-label\">手机绑定：</div>\n                    <div class=\"form-content clearfix\">\n                        <p class=\"content-value\">您已绑定了手机<span>137****6789，</span>您的手机号可以直接用户登录、找回密码</p>\n                        <i class=\"iconfont no\">&#xe617;</i>\n                        <span class=\"status no\">未设置</span>\n                        <a href=\"javascript:;\">修改</a>\n                    </div>\n                </div>\n                <div class=\"form-kv clearfix\">\n                    <div class=\"form-kv-label\">邮箱绑定：</div>\n                    <div class=\"form-content clearfix\">\n                        <p class=\"content-value\">您已绑定了 kie****@163.com</p>\n                        <i class=\"iconfont no\">&#xe617;</i>\n                        <span class=\"status no\">未设置</span>\n                        <a href=\"javascript:;\">修改</a>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n    </div>\n</div>"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/templates/login.html",
    "content": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\"\n      xmlns:th=\"http://www.thymeleaf.org\">\n<head>\n    <meta charset=\"utf-8\" />\n    <title>运营系统登录页</title>\n    <link th:href=\"@{/static/css/style.css}\" rel=\"stylesheet\" />\n    <link th:href=\"@{/static/css/page/backend/login.css}\" rel=\"stylesheet\" />\n</head>\n<body>\n<div id=\"hd\">\n    <div class=\"logo main-content\">\n        <h1><a href=\"../index.html\" title=\"电商平台\">账号登录</a></h1>\n        <ul class=\"head-link\">\n            <li><a href=\"\">电商平台首页</a></li>\n            <li><a href=\"\">帮助中心</a></li>\n        </ul>\n    </div>\n</div>\n\n<div id=\"bd\" class=\"login-bd\">\n    <div class=\"main-content\">\n        <div class=\"input-box\">\n            <div class=\"input-hd\"><h2>用户登录</h2></div>\n\n            <div class=\"input-area\">\n                <form>\n                    <div class=\"input-item\">\n                        <p>登录名：</p>\n                        <input type=\"text\" id=\"username\" th:value=\"admin\" placeholder=\"请输入账号/邮箱\" />\n                    </div>\n\n                    <div class=\"input-item\">\n                        <p>登录密码：</p>\n                        <input type=\"text\" id=\"password\" th:value=\"123\" placeholder=\"请输入密码\" />\n                    </div>\n\n                    <div class=\"input-item\">\n                        <p>验证码：</p>\n                        <input type=\"text\" placeholder=\"\" id=\"code\" th:value=\"1223\" class=\"img-code\" />\n                        <img src=\"\"  id=\"codeImg\" alt=\"点击更换\"\n                             title=\"点击更换\" />\n                    </div>\n\n                    <div class=\"login-btn\" onclick=\"loginCheck();\">登录</div>\n                </form>\n            </div>\n            <p class=\"reg\" >忘记密码？ <a href=\"javascript:;\" >立即注册</a></p>\n        </div>\n    </div>\n</div>\n\n<div id=\"ft\" class=\"login-ft\">\n    <div class=\"footer-copyright\">\n        <p class=\"clearfix links\">\n            <a href=\"javascript:;\" target=\"_blank\">关于我们</a>\n            <a href=\"javascript:;\" target=\"_blank\">法律声明</a>\n            <a href=\"javascript:;\">服务条款</a>\n            <a href=\"javascript:;\" target=\"_blank\">联系方式</a>\n        </p>\n        <p style=\"font-family:arial;\">地址：江苏省南京市建邺区88号&nbsp;&nbsp;增值电信业务许可证B1-20160901&nbsp;&nbsp;COPYRIGHT&nbsp;&nbsp;©&nbsp; 2010-2016<a href=\"http://www.uimaker.com\">uimaker</a>&nbsp;版权所有&nbsp;ICP证：苏A2-20160101</p>\n        <p style=\"font-family:arial;\">增值电信营业许可证B1-20150962&nbsp;&nbsp;云平台&nbsp;&nbsp;版权所有</p>\n    </div>\n</div>\n\n<script type=\"text/javascript\" th:src=\"@{/static/js/jquery.js}\"></script>\n<!-- 引入JQuery提示库 start-->\n<script type=\"text/javascript\" th:src=\"@{/static/js/jquery.tips.js}\"></script>\n<!-- 引入JQuery提示库 end-->\n<!-- 引入Cookie库 start-->\n<script type=\"text/javascript\" th:src=\"@{/static/js/jquery.cookie.js}\"></script>\n<!-- 引入Cookie库 end -->\n<script type=\"text/javascript\">\n\n    /**加载页面时获取验证码**/\n    $(document).ready(function() {\n        changeCode();\n        $(\"#codeImg\").bind(\"click\", changeCode);\n    });\n    /**按回车键触发登录按钮事件**/\n    $(document).keyup(function(event) {\n        if (event.keyCode == 13) {\n            $(\".login-btn\").trigger(\"click\");\n        }\n    });\n    /**获取时间戳**/\n    function genTimestamp() {\n        var time = new Date();\n        return time.getTime();\n    }\n    /**刷新验证码的脚本处理**/\n    function changeCode() {\n        $(\"#codeImg\").attr(\"src\", \"/admin/code/api/generate?t=\" + genTimestamp());\n    }\n    /**客户端校验**/\n    function checkValidity() {\n        if ($(\"#username\").val() == \"\") {\n            $(\"#username\").tips({\n                side : 2,\n                msg : '用户名不得为空',\n                bg : '#AE81FF',\n                time : 3\n            });\n            $(\"#username\").focus();\n            return false;\n        }\n        if ($(\"#password\").val() == \"\") {\n            $(\"#password\").tips({\n                side : 2,\n                msg : '密码不得为空',\n                bg : '#AE81FF',\n                time : 3\n            });\n            $(\"#password\").focus();\n            return false;\n        }\n        if ($(\"#code\").val() == \"\") {\n            $(\"#code\").tips({\n                side : 1,\n                msg : '验证码不得为空',\n                bg : '#AE81FF',\n                time : 3\n            });\n            $(\"#code\").focus();\n            return false;\n        }\n        return true;\n    }\n    /**服务器校验**/\n    function loginCheck(){\n        if(checkValidity()){\n            var username = $(\"#username\").val();\n            var password = $(\"#password\").val();\n            var code = username+\",\"+password+\",\"+$(\"#code\").val();\n            $.ajax({\n                type: \"POST\",//请求方式为POST\n                url: 'loginCheck',//检验url\n                data: {LOGINDATA:code,tm:new Date().getTime()},//请求数据\n                dataType:'json',//数据类型为JSON类型\n                cache: false,//关闭缓存\n                success: function(data){//响应成功\n                    if(\"success\" == data.result){\n                        $(\"#login\").tips({\n                            side : 1,\n                            msg : '正在登录 , 请稍后 ...',\n                            bg : '#68B500',\n                            time : 10\n                        });\n                        window.location.href=\"toIndex\";\n                    }else if(\"uerror\" == data.result){\n                        $(\"#username\").tips({\n                            side : 1,\n                            msg : \"用户名或密码有误\",\n                            bg : '#FF5080',\n                            time : 15\n                        });\n                        $(\"#username\").focus();\n                    }else if(\"codeerror\" == data.result){\n                        $(\"#code\").tips({\n                            side : 1,\n                            msg : \"验证码输入有误\",\n                            bg : '#FF5080',\n                            time : 15\n                        });\n                        $(\"#code\").focus();\n                    }else if(\"locked\" == data.result){\n                        alert('您的账号被锁定了，呜呜');\n                    }else{\n                        $(\"#username\").tips({\n                            side : 1,\n                            msg : \"缺少参数\",\n                            bg : '#FF5080',\n                            time : 15\n                        });\n                        $(\"#username\").focus();\n                    }\n                }\n            });\n        }\n    }\n</script>\n</body>\n</html>"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/webapp/WEB-INF/web.xml",
    "content": "<!DOCTYPE web-app PUBLIC\n \"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN\"\n \"http://java.sun.com/dtd/web-app_2_3.dtd\" >\n\n<web-app>\n  <display-name>Archetype Created Web Application</display-name>\n</web-app>\n"
  },
  {
    "path": "src/taoshop-manager/taoshop-manager-web/src/main/webapp/index.jsp",
    "content": "<html>\n<body>\n<h2>Hello World!</h2>\n</body>\n</html>\n"
  },
  {
    "path": "src/taoshop-order/ReadMe.md",
    "content": "### 订单系统"
  },
  {
    "path": "src/taoshop-order/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <parent>\n        <artifactId>taoshop</artifactId>\n        <groupId>com.muses.taoshop</groupId>\n        <version>1.0-SNAPSHOT</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n\n    <artifactId>taoshop-order</artifactId>\n    <version>1.0-SNAPSHOT</version>\n    <packaging>war</packaging>\n\n    <name>taoshop-order Maven Webapp</name>\n\n    <url>http://www.example.com</url>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n        <maven.compiler.source>1.7</maven.compiler.source>\n        <maven.compiler.target>1.7</maven.compiler.target>\n    </properties>\n\n    <dependencies>\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <version>4.11</version>\n            <scope>test</scope>\n        </dependency>\n    </dependencies>\n\n    <build>\n        <finalName>taoshop-order</finalName>\n        <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->\n            <plugins>\n                <plugin>\n                    <artifactId>maven-clean-plugin</artifactId>\n                    <version>3.0.0</version>\n                </plugin>\n                <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->\n                <plugin>\n                    <artifactId>maven-resources-plugin</artifactId>\n                    <version>3.0.2</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-compiler-plugin</artifactId>\n                    <version>3.7.0</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-surefire-plugin</artifactId>\n                    <version>2.20.1</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-war-plugin</artifactId>\n                    <version>3.2.0</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-install-plugin</artifactId>\n                    <version>2.5.2</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-deploy-plugin</artifactId>\n                    <version>2.8.2</version>\n                </plugin>\n            </plugins>\n        </pluginManagement>\n    </build>\n</project>\n"
  },
  {
    "path": "src/taoshop-order/src/main/java/com/muses/taoshop/order/OrderApplication.java",
    "content": "package com.muses.taoshop.order;\n\nimport org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration;\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.EnableAutoConfiguration;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;\nimport org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;\nimport org.springframework.cache.annotation.EnableCaching;\nimport org.springframework.scheduling.annotation.EnableAsync;\nimport org.springframework.scheduling.annotation.EnableScheduling;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.transaction.annotation.EnableTransactionManagement;\n\n/**\n *\n * <pre>\n *  SpringBoot启动配置类\n * </pre>\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期:     修改内容:\n * </pre>\n */\n@Controller\n@EnableScheduling//开启对计划任务的支持\n@EnableTransactionManagement//开启对事务管理配置的支持\n@EnableCaching\n@EnableAsync//开启对异步方法的支持\n@EnableAutoConfiguration\n@SpringBootApplication(exclude={DataSourceAutoConfiguration.class,\n        MybatisAutoConfiguration.class,\n        DataSourceTransactionManagerAutoConfiguration.class})\npublic class OrderApplication {\n\n    public static void main(String[] args) throws Exception{\n        SpringApplication.run(OrderApplication.class, args);\n    }\n}\n"
  },
  {
    "path": "src/taoshop-order/src/main/java/com/muses/taoshop/order/web/controller/BaseController.java",
    "content": "package com.muses.taoshop.order.web.controller;\n\n\n\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.web.context.request.RequestContextHolder;\nimport org.springframework.web.context.request.ServletRequestAttributes;\nimport org.springframework.web.servlet.ModelAndView;\n\nimport javax.servlet.http.HttpServletRequest;\n\n/**\n * <pre>\n *  基础控制类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.06.18 00:12    修改内容:\n * </pre>\n */\npublic class BaseController {\n    public Logger log = LoggerFactory.getLogger(BaseController.class);\n\n    public void debug(String message , Exception e){\n        log.debug(message , e);\n    }\n\n    public void info(String message,Exception e){\n        log.info(message , e);\n    }\n\n    public void error(String message,Exception e){\n        log.error(message , e);\n    }\n\n    /***\n     * 获取request值\n     * @return\n     */\n    public HttpServletRequest getRequest() {\n        return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();\n    }\n\n    /**\n     * 得到ModelAndView\n     */\n    public ModelAndView getModelAndView(){\n        return new ModelAndView();\n    }\n\n}\n"
  },
  {
    "path": "src/taoshop-order/src/main/java/com/muses/taoshop/order/web/controller/OrderController.java",
    "content": "package com.muses.taoshop.order.web.controller;\n\nimport org.springframework.stereotype.Controller;\n\n/**\n * <pre>\n *  订单控制类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.10.22 23:50    修改内容:\n * </pre>\n */\n@Controller\npublic class OrderController {\n\n\n}\n"
  },
  {
    "path": "src/taoshop-order/src/main/resources/application.yml",
    "content": "server:\n  port: 8082\n#logging:\n#  config: classpath:logback_spring.xml\n#  level:\n#    com.muses.taoshop: debug\n#  path: /data/logs\n\nspring:\n  datasource:\n\n    # 主数据源\n    shop:\n      url: jdbc:mysql://127.0.0.1:3306/taoshop?autoReconnect=true&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false\n      username: root\n      password: root\n\n    driver-class-name: com.mysql.jdbc.Driver\n    type: com.alibaba.druid.pool.DruidDataSource\n\n    # 连接池设置\n    druid:\n      initial-size: 5\n      min-idle: 5\n      max-active: 20\n      # 配置获取连接等待超时的时间\n      max-wait: 60000\n      # 配置间隔多久才进行一次检测，检测需要关闭的空闲连接，单位是毫秒\n      time-between-eviction-runs-millis: 60000\n      # 配置一个连接在池中最小生存的时间，单位是毫秒\n      min-evictable-idle-time-millis: 300000\n      # Oracle请使用select 1 from dual\n      validation-query: SELECT 'x'\n      test-while-idle: true\n      test-on-borrow: false\n      test-on-return: false\n      # 打开PSCache，并且指定每个连接上PSCache的大小\n      pool-prepared-statements: true\n      max-pool-prepared-statement-per-connection-size: 20\n      # 配置监控统计拦截的filters，去掉后监控界面sql无法统计，'wall'用于防火墙\n      filters: stat,wall,slf4j\n      # 通过connectProperties属性来打开mergeSql功能；慢SQL记录\n      connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000\n      # 合并多个DruidDataSource的监控数据\n      use-global-data-source-stat: true\n\n#  jpa:\n#    database: mysql\n#    hibernate:\n#      show_sql: true\n#      format_sql: true\n#      ddl-auto: none\n#      naming:\n#        physical-strategy: org.hibernate.boot.entity.naming.PhysicalNamingStrategyStandardImpl\n\n#  mvc:\n#    view:\n#      prefix: /WEB-INF/jsp/\n#      suffix: .jsp\n\n  #添加Thymeleaf配置\n  thymeleaf:\n    cache: false\n    prefix: classpath:/templates/\n    suffix: .html\n    mode: HTML5\n    encoding: UTF-8\n    content-type: text/html\n\n  #Jedis配置\n#  jedis :\n#    pool :\n#      host : 127.0.0.1\n#      port : 6379\n#      password : redispassword\n#      timeout : 0\n#      config :\n#        maxTotal : 100\n#        maxIdle : 10\n#        maxWaitMillis : 100000\n\n\n\n"
  },
  {
    "path": "src/taoshop-order/src/main/webapp/WEB-INF/web.xml",
    "content": "<!DOCTYPE web-app PUBLIC\n \"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN\"\n \"http://java.sun.com/dtd/web-app_2_3.dtd\" >\n\n<web-app>\n  <display-name>Archetype Created Web Application</display-name>\n</web-app>\n"
  },
  {
    "path": "src/taoshop-order/src/main/webapp/index.jsp",
    "content": "<html>\n<body>\n<h2>Hello World!</h2>\n</body>\n</html>\n"
  },
  {
    "path": "src/taoshop-portal/ReadMe.md",
    "content": "### 门户网站\n电商系统门户网站\n\n电商门户网站，正在开发中...\n\n技术栈：前端拟采用Themeleaf，后台SpringBoot\n"
  },
  {
    "path": "src/taoshop-portal/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <parent>\n        <artifactId>taoshop</artifactId>\n        <groupId>com.muses.taoshop</groupId>\n        <version>1.0-SNAPSHOT</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n\n    <artifactId>taoshop-portal</artifactId>\n    <packaging>war</packaging>\n\n    <name>taoshop-portal Maven Webapp</name>\n\n    <url>http://www.example.com</url>\n\n    <properties>\n        <poi.version>3.7</poi.version>\n        <cas.client.version>3.4.1</cas.client.version>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    </properties>\n\n\n    <dependencies>\n        <!-- 热部署-->\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-devtools</artifactId>\n            <optional>true</optional>\n        </dependency>\n        <!-- logback -->\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-logging</artifactId>\n        </dependency>\n        <!-- thymeleaf-->\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-thymeleaf</artifactId>\n        </dependency>\n\n        <!-- 商品信息服务-->\n        <dependency>\n            <groupId>com.muses.taoshop.provider</groupId>\n            <artifactId>taoshop-provider-item</artifactId>\n            <version>1.0-SNAPSHOT</version>\n        </dependency>\n        <!-- 用户信息服务-->\n        <dependency>\n            <groupId>com.muses.taoshop.provider</groupId>\n            <artifactId>taoshop-provider-usc</artifactId>\n            <version>1.0-SNAPSHOT</version>\n        </dependency>\n        <!-- 平台核心服务 -->\n        <dependency>\n            <groupId>com.muses.taoshop.common</groupId>\n            <artifactId>taoshop-common-core</artifactId>\n            <version>1.0-SNAPSHOT</version>\n        </dependency>\n\n\n        <!-- Apache POI -->\n        <dependency>\n            <groupId>org.apache.poi</groupId>\n            <artifactId>poi</artifactId>\n            <version>${poi.version}</version>\n        </dependency>\n\n        <!-- email -->\n        <dependency>\n            <groupId>com.sun.mail</groupId>\n            <artifactId>javax.mail</artifactId>\n            <version>1.5.6</version>\n        </dependency>\n\n        <!-- cas client-->\n        <dependency>\n            <groupId>org.jasig.cas.client</groupId>\n            <artifactId>cas-client-core</artifactId>\n            <version>${cas.client.version}</version>\n        </dependency>\n\n    </dependencies>\n\n\n    <build>\n        <resources>\n            <resource>\n                <directory>src/main/java</directory>\n                <includes>\n                    <include>**/*.xml</include>\n                </includes>\n                <filtering>true</filtering>\n            </resource>\n        </resources>\n        <plugins>\n            <!-- 设置源文件编译 -->\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-compiler-plugin</artifactId>\n                <version>3.6.1</version>\n                <configuration>\n                    <source>1.8</source>\n                    <target>1.8</target>\n                    <compilerVersion>1.8</compilerVersion>\n                    <encoding>UTF-8</encoding>\n                    <skipMain></skipMain>\n                    <annotationProcessorPaths>\n                        <path>\n                            <groupId>org.projectlombok</groupId>\n                            <artifactId>lombok</artifactId>\n                            <version>${lombok.version}</version>\n                        </path>\n                    </annotationProcessorPaths>\n\n                </configuration>\n            </plugin>\n\n            <!-- 解决资源文件的编码问题 -->\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-resources-plugin</artifactId>\n                <version>3.0.2</version>\n                <configuration>\n                    <encoding>UTF-8</encoding>\n                </configuration>\n            </plugin>\n\n        </plugins>\n    </build>\n\n\n</project>\n"
  },
  {
    "path": "src/taoshop-portal/src/main/java/com/muses/taoshop/PortalApplication.java",
    "content": "package com.muses.taoshop;\n\n\n\nimport org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration;\nimport org.springframework.boot.*;\nimport org.springframework.boot.autoconfigure.*;\nimport org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;\nimport org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;\nimport org.springframework.boot.web.servlet.ServletComponentScan;\nimport org.springframework.cache.annotation.EnableCaching;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.scheduling.annotation.EnableAsync;\nimport org.springframework.scheduling.annotation.EnableScheduling;\nimport org.springframework.stereotype.*;\nimport org.springframework.transaction.annotation.EnableTransactionManagement;\nimport org.springframework.web.bind.annotation.*;\n/**\n *\n * <pre>\n *  SpringBoot启动配置类\n * </pre>\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期:     修改内容:\n * </pre>\n */\n@Controller\n@EnableScheduling//开启对计划任务的支持\n@EnableTransactionManagement//开启对事务管理配置的支持\n@EnableCaching\n@EnableAsync//开启对异步方法的支持\n@EnableAutoConfiguration\n@ServletComponentScan\n@SpringBootApplication(exclude={DataSourceAutoConfiguration.class,\n        MybatisAutoConfiguration.class,\n        DataSourceTransactionManagerAutoConfiguration.class})\npublic class PortalApplication {\n\n    @RequestMapping(\"/\")\n    @ResponseBody\n    String home() {\n        return \"portal web!\";\n    }\n\n    @RequestMapping(\"/doTest\")\n    @ResponseBody\n    String doTest(){\n        System.out.println(Thread.currentThread().getName());\n        String threadName = Thread.currentThread().getName();\n        return threadName;\n    }\n\n\n    public static void main(String[] args) throws Exception {\n        SpringApplication.run(PortalApplication.class, args);\n    }\n\n\n}"
  },
  {
    "path": "src/taoshop-portal/src/main/java/com/muses/taoshop/aop/OperationRecordLog.java",
    "content": "//package com.muses.taoshop.aop;\n//\n//import org.aspectj.lang.ProceedingJoinPoint;\n//import org.aspectj.lang.annotation.Around;\n//import org.aspectj.lang.annotation.Aspect;\n//import org.springframework.beans.factory.annotation.Autowired;\n//import org.springframework.stereotype.Component;\n//\n//\n//\n//@Component\n//@Aspect\n//public class OperationRecordLog {\n//\n//    @Autowired\n//    //private SystemService systemService;\n//\n//    @Around(value = \"execution(* org.springframework.orm.ibatis.SqlMapClientTemplate.delete(..)) or execution(* org.springframework.orm.ibatis.SqlMapClientTemplate.insert(..)) or execution(* org.springframework.orm.ibatis.SqlMapClientTemplate.queryForList(..)) or execution(* org.springframework.orm.ibatis.SqlMapClientTemplate.queryForMap(..)) or execution(* org.springframework.orm.ibatis.SqlMapClientTemplate.queryForObject(..)) or execution(* org.springframework.orm.ibatis.SqlMapClientTemplate.queryWithRowHandler(..)) or execution(* org.springframework.orm.ibatis.SqlMapClientTemplate.update(..))\")\n//    public Object exec(ProceedingJoinPoint invocation) throws Throwable {\n//        Object result = invocation.proceed();\n//        Object[] args = invocation.getArgs();\n//        if (args.length > 0) {\n//            if (!args[0].toString().equals(\"system.saveSqlOperationRecord\")) {\n//                try {\n//                    if (args.length>1) {\n//                        //systemService.saveSqlOperationRecord(args[0].toString(), args[1]);\n//                    } else {\n//                        //systemService.saveSqlOperationRecord(args[0].toString(), \"\");\n//                    }\n//                } catch (Exception e) {\n//                    e.printStackTrace();\n//                }\n//            }\n//        }\n//        return result;\n//    }\n//\n//}\n"
  },
  {
    "path": "src/taoshop-portal/src/main/java/com/muses/taoshop/base/ConfigConsts.java",
    "content": "package com.muses.taoshop.base;\n\n/**\n * <pre>\n *  配置相关常量类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.09.23 16:30    修改内容:\n * </pre>\n */\npublic class ConfigConsts {\n\n}\n"
  },
  {
    "path": "src/taoshop-portal/src/main/java/com/muses/taoshop/base/SessionConsts.java",
    "content": "package com.muses.taoshop.base;\n\n/**\n * <pre>\n *  会话常量类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.09.23 22:54    修改内容:\n * </pre>\n */\npublic class SessionConsts {\n    /**\n     * 用户信息会话\n     */\n    public static final String PORTAL_SESSION_USER = \"potalSessionUser\";\n\n    /**\n     * 验证码信息会话\n     */\n    public static final String SESSION_SECURITY_CODE = \"sessionSecurityCode\";\n}\n"
  },
  {
    "path": "src/taoshop-portal/src/main/java/com/muses/taoshop/base/ViewNameConsts.java",
    "content": "package com.muses.taoshop.base;\n\n/**\n * <pre>\n *  ModeAndView的viewName配置\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.09.23 22:47    修改内容:\n * </pre>\n */\npublic class ViewNameConsts {\n\n}\n"
  },
  {
    "path": "src/taoshop-portal/src/main/java/com/muses/taoshop/config/WebConfig.java",
    "content": "package com.muses.taoshop.config;\n\n\nimport org.mybatis.spring.annotation.MapperScan;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.util.ResourceUtils;\nimport org.springframework.web.servlet.config.annotation.EnableWebMvc;\nimport org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;\nimport org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;\n\n@EnableWebMvc\n@Configuration\n@MapperScan(\"com.muese.taoshop.**.mapper*\")\npublic class WebConfig extends WebMvcConfigurerAdapter {\n  \n    @Override  \n    public void addResourceHandlers(ResourceHandlerRegistry registry) {\n  \n        registry.addResourceHandler(\"/templates/**\").addResourceLocations(ResourceUtils.CLASSPATH_URL_PREFIX+\"/templates/\");\n        registry.addResourceHandler(\"/static/**\").addResourceLocations(ResourceUtils.CLASSPATH_URL_PREFIX+\"/static/\");  \n        super.addResourceHandlers(registry);  \n    }\n\n\n   /* @Override\n    public void addInterceptors(InterceptorRegistry registry){\n        registry.addInterceptor(new MybatisSqlInterceptor());\n        super.addInterceptors(registry);\n    }*/\n\n\n}  "
  },
  {
    "path": "src/taoshop-portal/src/main/java/com/muses/taoshop/util/CategoryTreeUtils.java",
    "content": "package com.muses.taoshop.util;\n\nimport com.muses.taoshop.item.entity.ItemCategory;\n\nimport javax.mail.FetchProfile;\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n * <pre>\n *  构造一棵品类树\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.06.24 17:12    修改内容:\n * </pre>\n */\npublic class CategoryTreeUtils {\n\n\n    public List<ItemCategory> commonCategorys;\n\n    public List<ItemCategory> list = new ArrayList<ItemCategory>();\n\n    public List<ItemCategory> buildCategoryTree(List<ItemCategory> categories ) {\n        this.commonCategorys = categories;\n        for (ItemCategory c : categories){\n            ItemCategory category = new ItemCategory();\n            if(c.getSjid() == 0){\n                category.setSjid(c.getSjid());\n                category.setId(c.getId());\n                category.setCategoryName(c.getCategoryName());\n                category.setSubCategorys(treeChild(c.getId()));\n                list.add(category);\n            }\n        }\n        return list;\n    }\n\n    public List<ItemCategory> treeChild(long id){\n        List<ItemCategory> list = new ArrayList<ItemCategory>();\n        for(ItemCategory c : commonCategorys){\n            ItemCategory category = new ItemCategory();\n            if(c.getSjid() == id){\n                category.setSjid(c.getSjid());\n                category.setId(c.getId());\n                category.setCategoryName(c.getCategoryName());\n                category.setSubCategorys(treeChild(c.getId()));//递归循环\n                list.add(category);\n            }\n        }\n        return list;\n    }\n}\n"
  },
  {
    "path": "src/taoshop-portal/src/main/java/com/muses/taoshop/web/controller/BaseController.java",
    "content": "package com.muses.taoshop.web.controller;\n\n\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.web.context.request.RequestContextHolder;\nimport org.springframework.web.context.request.ServletRequestAttributes;\nimport org.springframework.web.servlet.ModelAndView;\n\nimport javax.servlet.http.HttpServletRequest;\n\n/**\n * <pre>\n *  基础控制类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.06.18 00:12    修改内容:\n * </pre>\n */\npublic class BaseController {\n    public Logger log = LoggerFactory.getLogger(getClass());\n\n    public void debug(String message){\n        log.debug(message);\n    }\n\n    public void debug(String message , Exception e){\n        log.debug(message , e);\n    }\n\n    public void info(String message) {\n        log.info(message);\n    }\n\n    public void info(String message,Exception e){\n        log.info(message , e);\n    }\n\n    public void error(String message) {\n        log.error(message);\n    }\n\n    public void error(String message,Exception e){\n        log.error(message , e);\n    }\n\n    /***\n     * 获取request值\n     * @return\n     */\n    public HttpServletRequest getRequest() {\n        return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();\n    }\n\n    /**\n     * 得到ModelAndView\n     */\n    public ModelAndView getModelAndView(){\n        return new ModelAndView();\n    }\n\n}\n"
  },
  {
    "path": "src/taoshop-portal/src/main/java/com/muses/taoshop/web/controller/CodeController.java",
    "content": "package com.muses.taoshop.web.controller;\n\n\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.RequestMapping;\n\nimport javax.imageio.ImageIO;\nimport javax.servlet.ServletOutputStream;\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\nimport javax.servlet.http.HttpSession;\nimport java.awt.*;\nimport java.awt.font.FontRenderContext;\nimport java.awt.geom.Rectangle2D;\nimport java.awt.image.BufferedImage;\nimport java.io.ByteArrayOutputStream;\nimport java.io.IOException;\nimport java.util.Random;\n\nimport static com.muses.taoshop.base.SessionConsts.SESSION_SECURITY_CODE;\n\n\n@Controller\n@RequestMapping(\"/code\")\npublic class CodeController {\n\n\t@RequestMapping(\"/generate\")\n\tpublic void generate(HttpServletRequest request, HttpServletResponse response){\n\t\tByteArrayOutputStream output = new ByteArrayOutputStream();\n\t\tString code = drawImg(output);\n\n//\t\tSubject currentUser = SecurityUtils.getSubject();\n//\t\tSession session = currentUser.getSession();\n\t\tHttpSession session = request.getSession();\n\t\tsession.setAttribute(SESSION_SECURITY_CODE, code);\n\n\t\ttry {\n\t\t\tServletOutputStream out = response.getOutputStream();\n\t\t\toutput.writeTo(out);\n\t\t} catch (IOException e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t}\n\n\t/**\n\t * 绘画验证码\n\t * @param output\n\t * @return\n\t */\n\tprivate String drawImg(ByteArrayOutputStream output){\n\t\tString code = \"\";\n\t\t//随机产生4个字符\n\t\tfor(int i=0; i<4; i++){\n\t\t\tcode += randomChar();\n\t\t}\n\t\tint width = 70;\n\t\tint height = 25;\n\t\tBufferedImage bi = new BufferedImage(width,height,BufferedImage.TYPE_3BYTE_BGR);\n\t\tFont font = new Font(\"Times New Roman\",Font.PLAIN,20);\n\t\t//调用Graphics2D绘画验证码\n\t\tGraphics2D g = bi.createGraphics();\n\t\tg.setFont(font);\n\t\tColor color = new Color(66,2,82);\n\t\tg.setColor(color);\n\t\tg.setBackground(new Color(226,226,240));\n\t\tg.clearRect(0, 0, width, height);\n\t\tFontRenderContext context = g.getFontRenderContext();\n\t\tRectangle2D bounds = font.getStringBounds(code, context);\n\t\tdouble x = (width - bounds.getWidth()) / 2;\n\t\tdouble y = (height - bounds.getHeight()) / 2;\n\t\tdouble ascent = bounds.getY();\n\t\tdouble baseY = y - ascent;\n\t\tg.drawString(code, (int)x, (int)baseY);\n\t\tg.dispose();\n\t\ttry {\n\t\t\tImageIO.write(bi, \"jpg\", output);\n\t\t} catch (IOException e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t\treturn code;\n\t}\n\n\t/**\n\t * 随机参数一个字符\n\t * @return\n\t */\n\tprivate char randomChar(){\n\t\tRandom r = new Random();\n\t\tString s = \"ABCDEFGHJKLMNPRSTUVWXYZ0123456789\";\n\t\treturn s.charAt(r.nextInt(s.length()));\n\t}\n\n\t/**\n\t * 获取随机颜色值\n\t * @param fc\n\t * @param bc\n\t * @return\n\t */\n\tColor getRandColor(int fc,int bc){\n\t\tRandom random=new Random();\n\t\tif(fc>255) fc=255;\n\t\tif(bc>255) bc=255;\n\t\tint r=fc+random.nextInt(bc-fc);\n\t\tint g=fc+random.nextInt(bc-fc);\n\t\tint b=fc+random.nextInt(bc-fc);\n\t\treturn new Color(r,g,b);\n\t}\n}"
  },
  {
    "path": "src/taoshop-portal/src/main/java/com/muses/taoshop/web/controller/LoginController.java",
    "content": "package com.muses.taoshop.web.controller;\n\nimport com.muses.taoshop.user.entity.User;\nimport com.muses.taoshop.user.service.IUserService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.*;\nimport org.springframework.web.servlet.ModelAndView;\n\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpSession;\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport static com.muses.taoshop.base.SessionConsts.PORTAL_SESSION_USER;\nimport static com.muses.taoshop.base.SessionConsts.SESSION_SECURITY_CODE;\n\n/**\n * <pre>\n *  登录控制类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.08.05 11:41    修改内容:\n * </pre>\n */\n@Controller\n@RequestMapping(\"/portal\")\npublic class LoginController extends BaseController{\n\n    @Autowired\n    IUserService userService;\n\n    /**\n     * 跳转到登录页面\n     * @return\n     */\n    @GetMapping(value = \"/toLogin\")\n    public ModelAndView toLogin(){\n        ModelAndView mv = this.getModelAndView();\n        mv.setViewName(\"login\");\n        return mv;\n    }\n\n    /**\n     * 登录验证\n     * @return\n     */\n    @RequestMapping(value = \"/loginCheck\")\n    @ResponseBody\n    public Map<String, String> loginCheck(HttpServletRequest request){\n        Map<String, String> result = new HashMap<String, String>();\n        String flag = \"faild\";\n        String logindata[] = request.getParameter(\"LOGINDATA\").split(\",\");\n        HttpSession session = request.getSession();\n        if(logindata != null && logindata.length == 3) {\n            String codeSession = (String)session.getAttribute(SESSION_SECURITY_CODE);\n            String username = logindata[0];\n            String password = logindata[1];\n            String code = logindata[2];\n            //先不要验证码校验\n            //if(!code.equalsIgnoreCase(codeSession)){//验证码校验\n               // flag = \"codeError\";\n            //}else{ //账号密码校验\n                User user =  userService.loginCheck(username, password);\n                if(user != null){//校验成功\n                    session.setAttribute(PORTAL_SESSION_USER,username);\n                    flag = \"success\";\n                }else{//账号或者密码错误\n                    flag = \"faild\";\n                }\n            //}\n        }\n        result.put(\"flag\",flag);\n        return result;\n    }\n\n\n\n\n}\n"
  },
  {
    "path": "src/taoshop-portal/src/main/java/com/muses/taoshop/web/controller/cart/ShopCartController.java",
    "content": "package com.muses.taoshop.web.controller.cart;\n\nimport com.muses.taoshop.web.controller.BaseController;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.servlet.ModelAndView;\n\n/**\n * <pre>\n *  购物车控制类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.06.17 00:46    修改内容:\n * </pre>\n */\n@Controller\n@RequestMapping(\"/portal/shopcart\")\npublic class ShopCartController extends BaseController{\n\n    /**\n     * 添加购物车成功\n     * @return\n     */\n    @GetMapping(value = \"/toAddSuccess\")\n    public ModelAndView toAddSuccess() {\n        ModelAndView mv = this.getModelAndView();\n        mv.setViewName(\"/shopcart/add_shopcart_success\");\n        return mv;\n    }\n\n}\n"
  },
  {
    "path": "src/taoshop-portal/src/main/java/com/muses/taoshop/web/controller/portal/IndexController.java",
    "content": "package com.muses.taoshop.web.controller.portal;\n\nimport com.alibaba.fastjson.JSON;\nimport com.muses.taoshop.item.entity.ItemBrand;\nimport com.muses.taoshop.item.entity.ItemCategory;\nimport com.muses.taoshop.item.entity.ItemPortal;\nimport com.muses.taoshop.item.service.IItemBrankService;\nimport com.muses.taoshop.item.service.IItemCategoryService;\nimport com.muses.taoshop.item.service.IItemService;\nimport com.muses.taoshop.util.CategoryTreeUtils;\nimport com.muses.taoshop.web.controller.BaseController;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.util.CollectionUtils;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.ResponseBody;\nimport org.springframework.web.servlet.ModelAndView;\n\nimport java.util.List;\n\n/**\n * <pre>\n *  门户网站控制类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期:     修改内容:\n * </pre>\n */\n@Controller\n@RequestMapping(\"/portal\")\npublic class IndexController extends BaseController{\n\n    @Autowired\n    IItemService iItemService;\n    @Autowired\n    IItemBrankService iItemBrankService;\n    @Autowired\n    IItemCategoryService iItemCategoryService;\n\n    /**\n     * 跳转到门户网站\n     * @return\n     */\n    @GetMapping(value = \"/toIndex.do\")\n    public ModelAndView toIndex(){\n        info(\"跳转到门户网站\");\n        ModelAndView mv = this.getModelAndView();\n        mv.setViewName(\"index\");\n        List<ItemPortal> items = iItemService.listItemPortal();\n        CategoryTreeUtils treeUtil = new CategoryTreeUtils();\n        List<ItemCategory> list = iItemCategoryService.listCategory();\n        List<ItemCategory> categories = treeUtil.buildCategoryTree(list);\n        mv.addObject(\"items\" , items);\n        mv.addObject(\"categories\" , categories);\n        return mv;\n    }\n\n    @GetMapping(value = \"/doTest\")\n    @ResponseBody\n    public  String doTest(){\n        List<ItemBrand> itemBrands = iItemBrankService.listItemBrand();\n        String str = JSON.toJSON(itemBrands).toString();\n        return str;\n    }\n\n    /**\n     * 加载root级商品品类\n     * @return\n     */\n    @GetMapping(value = \"/listCategory\" , produces = \"application/json;charset=UTF-8\")\n    @ResponseBody\n    public String listCategory(){\n        CategoryTreeUtils treeUtil = new CategoryTreeUtils();\n        List<ItemCategory> list = iItemCategoryService.listCategory();\n        List<ItemCategory> categories = treeUtil.buildCategoryTree(list);\n        String jsonString = \"\";\n        if(!CollectionUtils.isEmpty(categories)){\n            jsonString = JSON.toJSON(categories).toString();\n            log.debug(\"get category info:\"+jsonString);\n            return jsonString;\n        }\n        return jsonString;\n    }\n\n}\n"
  },
  {
    "path": "src/taoshop-portal/src/main/java/com/muses/taoshop/web/controller/portal/ItemCategoryController.java",
    "content": "package com.muses.taoshop.web.controller.portal;\n\nimport com.muses.taoshop.item.entity.ItemList;\nimport com.muses.taoshop.item.service.IItemCategoryService;\nimport com.muses.taoshop.web.controller.BaseController;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.PathVariable;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.servlet.ModelAndView;\n\nimport java.util.List;\n\n/**\n * <pre>\n *  商品品类控制类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.10.27 11:53    修改内容:\n * </pre>\n */\n@Controller\n@RequestMapping(value = \"/portal/category\")\npublic class ItemCategoryController extends BaseController{\n\n    @Autowired\n    IItemCategoryService iItemCategoryService;\n\n    /**\n     * 根据品类id检索商品信息\n     * @param categoryId\n     * @return\n     */\n    @GetMapping(value = \"/toCategoryList/{categoryId}\")\n    public ModelAndView toCategoryList(@PathVariable(\"categoryId\")int categoryId) {\n        ModelAndView mv = this.getModelAndView();\n        mv.setViewName(\"item/item_category\");\n        List<ItemList> items = iItemCategoryService.listItemByCategoryId(categoryId);\n        mv.addObject(\"items\", items);\n        return mv;\n    }\n\n\n}\n"
  },
  {
    "path": "src/taoshop-portal/src/main/java/com/muses/taoshop/web/controller/portal/ItemDetailController.java",
    "content": "package com.muses.taoshop.web.controller.portal;\n\nimport com.muses.taoshop.item.entity.ItemDetail;\nimport com.muses.taoshop.item.entity.ItemSpec;\nimport com.muses.taoshop.item.entity.ItemSpecValue;\nimport com.muses.taoshop.item.service.IItemService;\nimport com.muses.taoshop.item.service.IItemSpecService;\nimport com.muses.taoshop.web.controller.BaseController;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.PathVariable;\nimport org.springframework.web.bind.annotation.PostMapping;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.servlet.ModelAndView;\n\nimport java.util.List;\n\n/**\n * <pre>\n *  商品详情页面控制类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.07.01 19:40    修改内容:\n * </pre>\n */\n@Controller\n@RequestMapping(\"/portal/item\")\npublic class ItemDetailController extends BaseController{\n\n    @Autowired\n    IItemService iItemService;\n    @Autowired\n    IItemSpecService iItemSpecService;\n\n    @GetMapping(\"/toDetail/{spuId}/{skuId}\")\n    public ModelAndView toDetail(@PathVariable int spuId, @PathVariable int skuId){\n        ModelAndView mv = this.getModelAndView();\n        ItemDetail itemDetail = iItemService.getItemDetailInfo(spuId);\n        List<ItemSpec> itemSpecList = iItemSpecService.getSpecBySpuId(spuId);\n        List<ItemSpecValue> itemSpecValueList = iItemSpecService.getSpecValueBySkuId(skuId);\n        mv.addObject(\"itemDetail\", itemDetail);\n        mv.addObject(\"itemSpec\", itemSpecList);\n        mv.addObject(\"itemSpecValue\", itemSpecValueList);\n        mv.setViewName(\"item/item_detail\");\n        return mv;\n    }\n\n}\n"
  },
  {
    "path": "src/taoshop-portal/src/main/java/com/muses/taoshop/web/controller/user/UserController.java",
    "content": "package com.muses.taoshop.web.controller.user;\n\nimport com.muses.taoshop.web.controller.BaseController;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.servlet.ModelAndView;\n\n/**\n * <pre>\n *  用户中心控制类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.08.11 11:08    修改内容:\n * </pre>\n */\n@RequestMapping(\"/portal/user\")\n@Controller\npublic class UserController extends BaseController{\n\n    /**\n     * 跳转用户中心\n     * @return\n     */\n    @GetMapping(\"/toUserCenter\")\n    public ModelAndView toUserCenter(){\n        ModelAndView mv = this.getModelAndView();\n        mv.setViewName(\"user/portal_user_center\");\n        return mv;\n    }\n}\n"
  },
  {
    "path": "src/taoshop-portal/src/main/resources/application-dev.properties",
    "content": "##Դ\n#spring.datasource.shop.url=jdbc:mysql://localhost:3306/taoshop\n#spring.datasource.shop.username=root\n#spring.datasource.shop.password=root\n#spring.datasource.driver-class-name=com.mysql.jdbc.Driver\n#spring.datasource.type=com.alibaba.druid.pool.DruidDataSource\n### Mybatis \n#mybatis.typeAliasesPackage=cn.muses.taoshop.entity\n#mybatis.mapperLocations=classpath:mapper/*.xml"
  },
  {
    "path": "src/taoshop-portal/src/main/resources/application-prod.properties",
    "content": "##Դ\n#spring.datasource.url=jdbc:mysql://localhost:3306/taoshop\n#spring.datasource.username=root\n#spring.datasource.password=root\n#spring.datasource.driver-class-name=com.mysql.jdbc.Driver\n### Mybatis \n#mybatis.typeAliasesPackage=cn.muses.taoshop.entity\n#mybatis.mapperLocations=classpath:mapper/*.xml"
  },
  {
    "path": "src/taoshop-portal/src/main/resources/application-uat.properties",
    "content": "##Դ\n#spring.datasource.url=jdbc:mysql://localhost:3306/taoshop\n#spring.datasource.username=root\n#spring.datasource.password=root\n#spring.datasource.driver-class-name=com.mysql.jdbc.Driver\n### Mybatis \n#mybatis.typeAliasesPackage=cn.muses.taoshop.entity\n#mybatis.mapperLocations=classpath:mapper/*.xml"
  },
  {
    "path": "src/taoshop-portal/src/main/resources/application.properties",
    "content": "##server\n#server.port=8081\n#\n##logging\n##logging.config=classpath:logback-spring.xml\n##logging.level.com.muses.taoshop.*.mybatis: debug\n#\n## datasource\n#spring.datasource.url=jdbc:mysql://127.0.0.1/taoshop?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&useSSL=true\n#spring.datasource.username=root\n#spring.datasource.password=root\n#spring.datasource.driver-class-name=com.mysql.jdbc.Driver\n#spring.datasource.type=com.alibaba.druid.pool.DruidDataSource\n## ӳ\n#spring.datasource.druid.initial-size=5\n#spring.datasource.druid.min-idle=5\n#spring.datasource.druid.max-active=20\n## ûȡӵȴʱʱ\n#spring.datasource.druid.max-wait=60000\n## üòŽһμ⣬ҪرյĿӣλǺ\n#spring.datasource.druid.time-between-eviction-runs-millis=60000\n## һڳСʱ䣬λǺ\n#spring.datasource.druid.min-evictable-idle-time-millis=300000\n## Oracleʹselect 1 from dual\n#spring.datasource.druid.validation-query=SELECT 'X'\n#spring.datasource.druid.test-while-idle=true\n#spring.datasource.druid.test-on-borrow=false\n#\n#\n#spring.thymeleaf.prefix=classpath:/templates/\n#spring.thymeleaf.suffix=.html\n#spring.thymeleaf.mode=HTML5\n#spring.thymeleaf.encoding=UTF-8\n#spring.thymeleaf.content-type=text/html\n#spring.thymeleaf.cache=false\n#spring.resources.chain.strategy.content.enabled=true\n#spring.resources.chain.strategy.content.paths=/**"
  },
  {
    "path": "src/taoshop-portal/src/main/resources/application.yml",
    "content": "server:\n  port: 8081\n#logging:\n#  config: classpath:logback_spring.xml.bat\n#  level:\n#    com.muses.taoshop: debug\n#  path: /data/logs\n\nspring:\n  datasource:\n\n    # 主数据源\n    shop:\n      url: jdbc:mysql://127.0.0.1:3306/taoshop?autoReconnect=true&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false\n      username: root\n      password: root\n\n    driver-class-name: com.mysql.jdbc.Driver\n    type: com.alibaba.druid.pool.DruidDataSource\n\n    # 连接池设置\n    druid:\n      initial-size: 5\n      min-idle: 5\n      max-active: 20\n      # 配置获取连接等待超时的时间\n      max-wait: 60000\n      # 配置间隔多久才进行一次检测，检测需要关闭的空闲连接，单位是毫秒\n      time-between-eviction-runs-millis: 60000\n      # 配置一个连接在池中最小生存的时间，单位是毫秒\n      min-evictable-idle-time-millis: 300000\n      # Oracle请使用select 1 from dual\n      validation-query: SELECT 'x'\n      test-while-idle: true\n      test-on-borrow: false\n      test-on-return: false\n      # 打开PSCache，并且指定每个连接上PSCache的大小\n      pool-prepared-statements: true\n      max-pool-prepared-statement-per-connection-size: 20\n      # 配置监控统计拦截的filters，去掉后监控界面sql无法统计，'wall'用于防火墙\n      filters: stat,wall,slf4j\n      # 通过connectProperties属性来打开mergeSql功能；慢SQL记录\n      connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000\n      # 合并多个DruidDataSource的监控数据\n      use-global-data-source-stat: true\n\n#  jpa:\n#    database: mysql\n#    hibernate:\n#      show_sql: true\n#      format_sql: true\n#      ddl-auto: none\n#      naming:\n#        physical-strategy: org.hibernate.boot.entity.naming.PhysicalNamingStrategyStandardImpl\n\n#  mvc:\n#    view:\n#      prefix: /WEB-INF/jsp/\n#      suffix: .jsp\n\n  #添加Thymeleaf配置\n  thymeleaf:\n    cache: false\n    prefix: classpath:/templates/\n    suffix: .html\n    mode: HTML5\n    encoding: UTF-8\n    content-type: text/html\n\n  #Jedis配置\n#  jedis :\n#    pool :\n#      host : 127.0.0.1\n#      port : 6379\n#      password : redispassword\n#      timeout : 0\n#      config :\n#        maxTotal : 100\n#        maxIdle : 10\n#        maxWaitMillis : 100000\n\n\n\n"
  },
  {
    "path": "src/taoshop-portal/src/main/resources/logback_spring.xml.bat",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<configuration debug=\"false\" scan=\"true\">\n    <!-- 日志级别 -->\n    <springProperty scope=\"context\" name=\"LOG_ROOT_LEVEL\" source=\"logging.level.root\" defaultValue=\"DEBUG\"/>\n    <!--  标识这个\"STDOUT\" 将会添加到这个logger -->\n    <springProperty scope=\"context\" name=\"STDOUT\" source=\"log.stdout\" defaultValue=\"STDOUT\"/>\n    <!-- 日志格式，%d：日期；%thread：线程名；%-5level：日志级别从左显示5个字符长度，列如:DEBUG；\n        %logger{36}：java类名，例如:com.muses.taoshop.MyTest，36表示字符长度；%msg：日志内容；%d：换行 -->\n    <property name=\"LOG_PATTERN\"\n              value=\"%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n\" />\n    <!-- root日志级别-->\n    <property name=\"${LOG_ROOT_LEVEL}\" value=\"DEBUG\" />\n    <!-- 日志跟目录 -->\n    <property name=\"LOG_HOME\" value=\"data/logs\" />\n    <!-- 日志文件路径-->\n    <property name=\"LOG_DIR\" value=\"${LOG_HOME}/%d{yyyyMMdd}\" />\n    <!-- 日志文件名称 -->\n    <property name=\"LOG_PREFIX\" value=\"portal\" />\n    <!-- 日志文件编码 -->\n    <property name=\"LOG_CHARSET\" value=\"utf-8\" />\n    <!-- 配置日志的滚动时间，保存时间为15天-->\n    <property name=\"MAX_HISTORY\" value=\"15\" />\n    <!-- 文件大小，默认为10MB-->\n    <property name=\"MAX_FILE_SIZE\" value=\"10\" />\n\n\n    <!-- 打印到控制台 -->\n    <appender name=\"STDOUT\" class=\"ch.qos.logback.core.ConsoleAppender\">\n        <!-- 格式化日志内容-->\n        <encoder>\n            <pattern>${LOG_PATTERN}</pattern>\n        </encoder>\n    </appender>\n    <!-- 打印所有日志，保存到文件-->\n    <appender name=\"FILE_ALL\"\n              class=\"ch.qos.logback.core.rolling.RollingFileAppender\">\n        <file>${LOG_HOME}/all_${LOG_PREFIX}.log</file>\n        <!-- 设置滚动策略，当日志文件大小超过${MAX_FILE_SIZE}时，新的日志内容写到新的日志文件-->\n        <rollingPolicy class=\"ch.qos.logback.core.rolling.TimeBasedRollingPolicy\">\n            <!-- 新的日志文件路径名称，%d:日期 %i:i是变量 -->\n            <fileNamePattern>${LOG_DIR}/all_${LOG_PREFIX}%d{yyyy-MM-dd}.%i.log</fileNamePattern>\n            <!-- 保存日志15天 -->\n            <maxHistory>${MAX_HISTORY}</maxHistory>\n            <timeBasedFileNamingAndTriggeringPolicy\n                    class=\"ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP\">\n                <!-- 日志文件的最大大小 -->\n                <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>\n            </timeBasedFileNamingAndTriggeringPolicy>\n        </rollingPolicy>\n        <!-- 格式日志文件内容-->\n        <layout class=\"ch.qos.logback.classic.PatternLayout\">\n            <pattern>${LOG_PATTERN}</pattern>\n        </layout>\n    </appender>\n\n    <!-- 打印错误日志，保存到文件-->\n    <appender name=\"FILE_ERR\"\n              class=\"ch.qos.logback.core.rolling.RollingFileAppender\">\n        <file>${LOG_HOME}/err_${LOG_PREFIX}.log</file>\n        <!-- 设置滚动策略，当日志文件大小超过${MAX_FILE_SIZE}时，新的日志内容写到新的日志文件-->\n        <rollingPolicy class=\"ch.qos.logback.core.rolling.TimeBasedRollingPolicy\">\n            <!-- 新的日志文件路径名称，%d:日期 %i:i是变量 -->\n            <fileNamePattern>${LOG_DIR}/err_${LOG_PREFIX}%d{yyyy-MM-dd}.%i.log</fileNamePattern>\n            <!-- 保存日志15天 -->\n            <maxHistory>${MAX_HISTORY}</maxHistory>\n            <timeBasedFileNamingAndTriggeringPolicy\n                    class=\"ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP\">\n                <!-- 日志文件的最大大小 -->\n                <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>\n            </timeBasedFileNamingAndTriggeringPolicy>\n        </rollingPolicy>\n        <!-- 格式日志文件内容-->\n        <layout class=\"ch.qos.logback.classic.PatternLayout\">\n            <pattern>${LOG_PATTERN}</pattern>\n        </layout>\n    </appender>\n\n    <!-- rest template logger-->\n    <!--<logger name=\"org.springframework.web.client.RestTemplate\" level=\"DEBUG\" />-->\n    <!--<logger name=\"org.springframework\" level=\"DEBUG\" />-->\n\n    <!-- jdbc-->\n    <!--<logger name=\"jdbc.sqltiming\" level=\"DEBUG\" />-->\n    <logger name=\"org.mybatis\" level=\"DEBUG\" />\n\n    <!-- zookeeper-->\n    <logger name=\"org.apache.zookeeper\"    level=\"ERROR\"  />\n\n    <!-- dubbo -->\n    <logger name=\"com.alibaba.dubbo.monitor\" level=\"ERROR\"/>\n    <logger name=\"com.alibaba.dubbo.remoting\" level=\"ERROR\" />\n\n    <!-- 日志输出级别 -->\n    <root leve=\"${LOG_ROOT_LEVEL}\">\n        <appender-ref ref=\"STDOUT\" />\n        <appender-ref ref=\"FILE_ALL\" />\n        <appender-ref ref=\"FILE_ERR\" />\n    </root>\n\n</configuration>"
  },
  {
    "path": "src/taoshop-portal/src/main/resources/static/css/cart.css",
    "content": "﻿@charset \"utf-8\";\n\n.cart-step{position:absolute;left:440px;top:40px;}\n.cart-step ul{width:723px;padding-top:36px;}\n.cart-step li{width:32%;float:left;color:#8b8b8b;text-align:center;}\n.cart-step .cart-step-li01{width:29%;}\n.cart-step .cart-step-li02{width:38%;}\n.cart-step .cart-step-li03{width:27%;}\n.cart-step ul{background:url(../images/step-bg.png) no-repeat;}\n.cart-step .cart-step01{background-position:0 0;}\n.cart-step .cart-step02{background-position:-736px 0;}\n.cart-step .cart-step03{background-position:-1473px 0;}\n\n.cart,.orders{width:1200px;margin:25px auto;font-size:14px;}\n.cart-table th{border-top:2px solid #ea4621;padding:13px 0;font-size:14px;font-weight:bold;color:#787878;background:#fff7e5;}\n.cart-table td,.cart-table th{vertical-align:middle;text-align:center;}\n.cart-table .tl{text-align:left;}\n.cart-table .goods-price{color:#ef4218;}\n.cart-table .per-price,.cart-table .goods-delete,.cart-table .extra-per-price,.cart-table .extra-original-price{color:#919191;}\n.cart-table .goods-delete:hover{color:#f30;}\n.cart-table .extra-per-price{margin-left:56px;margin-right:15px;}\n.cart-table .goods-img{width:53px;height:53px;margin:15px 0;border:1px solid #e6e6e6;}\n.cart-table .goods-info,.cart-table .extra-goods-info{text-align:left;}\n.cart-table .goods-info{color:#999;font-size:12px;}\n.cart-table .goods-name{display:block;margin-bottom:10px;color:#333;font-size:14px;}\n.cart-table .extra-td{padding-bottom:25px;color:#787878;}\n.cart-table .num-action{padding:1px 4px;border:1px solid #c8c8c8;vertical-align:middle;}\n.cart-table .num-action:hover{text-decoration:none;}\n.cart-table .num-input{width:34px;height:18px;border:1px solid #999999;text-align:center;}\n.cart-other{margin-bottom:15px;}\n.cart-other .cart-other-hd{height:30px;text-align:left;background:#f1f1f1;}\n.cart-other .cart-other-tit{float:left;padding-left:10px;color:#636363;font:bold 14px/30px \"Microsoft Yahei\";}\n.cart-other .cart-other-action{float:right;width:12px;margin-right:12px;font:18px/30px \"Microsoft Yahei\";overflow:hidden;}\n.cart-other .cart-other-action:hover{color:#333;text-decoration:none;}\n.cart-other .cart-other-reset{float:right;border:1px solid #e13131;margin-right:12px;margin-top:4px;width:72px;color:#fff;font:12px/20px \"Microsoft Yahei\";text-align:center;background:#ef4218;}\n.cart-other .cart-other-reset:hover,.cart-other .cart-other-reset:active{color:#fff;background:#e13131;}\n\n.cart-other-bd .number-info{padding:12px 0;font-size:12px;text-align:left;}\n.number-info span{margin:0 9px;}\n.number-info input{margin-right:5px;}\n.number-info .search-number-input{width:106px;height:23px;line-height:23px;padding-left:3px;border:1px solid #b6b6b6;}\n.number-info .search-number-btn{width:53px;height:22px;border:1px solid #ef4218;color:#fff;font-size:14px;cursor:pointer;\nbackground:-moz-linear-gradient(top,#ec2e00,#f85601);\nbackground:-webkit-gradient(linear,0% 0%,0% 100%,from(#ec2e00),to(#f85601));\nbackground:-webkit-linear-gradient(top,#ec2e00,#f85601);\nbackground:-o-linear-gradient(top,#ec2e00,#f85601);\nbackground: -ms-linear-gradient(top,#ec2e00, #f85601);\nfilter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0,startColorstr=#ec2e00,endColorstr=#f85601);\nbackground: linear-gradient(top,#ec2e00, #f85601);}\n.number-list,.package-action,.owner-info-forms{position:relative;overflow:hidden;zoom:1;}\n.number-list-box{margin-bottom:20px;margin-left:-13px;}\n.number-list-table{float:left;width:370px;margin-left:14px;_display:inline;}\n.number-list-table,.number-list-table td,.number-list-table th,.package-category-tab,.package-category-tab td,.package-category-tab th{border:1px solid #d3d3d3;text-align:center;line-height:34px;cursor:pointer;}\n.number-list-table th{padding:5px;font-weight:normal;background-color:#fbfbfb;}\n.number-list-table th,.number-list-table td{line-height:28px;}\n.list-cur td{background:#fff6e5;}\n.number-list-table .last-four{color:#ef4218;}\n.cart-other .confirm-btn{position:absolute;left:50%;top:15px;width:120px;margin-left:-60px;padding:5px 0;font-size:14px;line-height:1.5;}\n\n.package-action{height:3px;padding:15px 0 40px;}\n.contract-period{float:left;display:inline-block;*display:inline;*zoom:1;margin-top:18px;padding:4px 16px;text-align:left;color:#fff;background-color:#ef4218;}\n.package-category-tab th{font-weight:normal;background:#fbfbfb;}\n.package-category-tab th,.package-category-tab td{padding:5px 7px;font-size:12px;line-height:1.5;color:#404040;}\n.package-category-tab .list-cur th,.package-category-tab .list-cur td{background:#fff6e5;}\n.owner-info-forms p{margin-top:12px;line-height:32px;text-align:left;}\n.owner-info-forms .label{display:inline-block;width:90px;padding-right:5px;text-align:right;font-family:simsun;}\n.owner-info-forms .required{display:inline-block;margin-right:10px;color:#ef4218;font-weight:normal;}\n.owner-info-forms .user-text{width:285px;height:28px;border:1px solid #dfdfdf;padding-left:3px;line-height:28px;}\n\n.cart-settlement{margin-top:30px;border-top:1px solid #d5d5d5;}\n.cart-table-all .total-td{border-top:1px solid #dfdfdf;border-bottom:1px solid #dfdfdf;line-height:58px;background:#f0f0f0;}\n.cart-table-all .total-first-td{border-left:1px solid #dfdfdf;}\n.cart-table-all .total-last-td{border-right:1px solid #dfdfdf;}\n.cart-table-all .total-price-td{border-left:1px solid #dfdfdf;border-right:1px solid #dfdfdf;}\n.cart-table-all .total-action-td{text-align:left;}\n.cart-table-all .all-price{font:18px/58px \"Microsoft Yahei\";}\n.cart-table-all .goods-num,.cart-table-all .all-price .val{margin:0 5px;color:#ef4218;}\n.cart-table-all .settlement{display:inline-block;width:110px;font:18px/35px \"Microsoft Yahei\";border-radius:3px;background:#f30;}\n.cart-table-all .settlement:hover{background:#ef4218;}\n\n.cart-other-about{padding-left:10px;text-align:left;}\n.cart-other-about h4{color:#909090;font:bold 12px/40px \"宋体\";}\n.cart-other-about p{margin-bottom:6px;color:#909090;font-size:12px;}\n.cart-other-about a{color:#ef4218;}\n.cart-other-info{margin-left:100px;line-height:30px;font-family:\"宋体\";color:#636363;}\n.cart-other-info span{margin-right:20px;font-size:12px;}\n.cart-other-info span em{color:#ef4218;}\n.cart-other-info .u-number,.cart-other-info .u-package,.cart-other-info .u-name,.cart-other-info .u-id-card{color:#ef4218;} \n\n.number-list-page .pages{text-align:center;}\n.cart-top-line{border-top:1px solid #d5d5d5;}\n\n\n/***订单页***/\n.bread-crumbs-tit{padding-bottom:20px;color:#333;font:bold 18px/26px \"Microsoft Yahei\";}\n.orders-item-hd{border-bottom:1px solid #e7e7e7;}\n.consignee-address,.send-time-category{padding-left:35px;}\n.consignee-default-address,.use-new-address,.consignee-new-address{margin-top:15px;padding-left:10px;}\n.edit-address{float:right;}\n.use-new-address{padding:5px 0 5px 10px;background:#f6f6f6;}\n.forms-box p{margin-top:12px;line-height:32px;}\n.forms-box .label{display:inline-block;width:90px;padding-right:5px;color:#6b6b6b;text-align:right;font-family:simsun;}\n.forms-box .required{display:inline-block;margin-right:4px;color:#ef4218;font-weight:normal;}\n.forms-box .user-text{width:200px;height:28px;border:1px solid #dfdfdf;padding-left:3px;line-height:28px;}\n.forms-box .user-pwd{width:126px;}\n.forms-box .user-code{width:78px;}\n.forms-box select{width:75px;margin-right:10px;}\n.sava-new-address{border:0 none;padding:8px 32px;color:#fff;font-size:14px;overflow:visible;cursor:pointer;}\n.send-time{margin-top:30px;margin-bottom:40px;}\n.send-time-item{float:left;border:1px solid #e7e7e7;margin-top:22px;margin-right:18px;padding:15px 40px;cursor:pointer;background:#fbfbfb;}\n.send-time-item:hover,.send-time-cur{border:1px solid #ef4218;background:#fff;}\n.send-time-item dt{color:#666;font-size:14px;}\n.send-time-item dd{color:#9e9e9e;}\n.receipt-select{padding:18px 0;}\n.receipt-select .note{color:#9e9e9e;font-size:12px;}\n.receipt-detail{margin-left:35px;padding:10px 0 10px 22px;font-size:12px;line-height:35px;background:#f6f6f6;}\n.receipt-detail span{margin-right:15px;}\n.receipt-detail .receipt-category{margin-right:8px;}\n.confirm-orders{margin-top:28px;}\n.subtotal-price{color:#ef4218;}\n.orders-total-table .solid-line-td{border-bottom:1px solid #d5d5d5;line-height:30px;}\n.activity .solid-line-td{border-bottom:1px solid #d5d5d5;line-height:30px;}\n.orders-total-table .dashed-line-td{border-bottom:1px dashed #d5d5d5;}\n\ntr.activity td{ background:#f0f0f0;}\ntr.activity td.spec{ text-align:left;}\n.yh-act{ margin:6px 10px 6px 62px; width:57px; height:29px; background:url(../images/login-reg-bg.png) 0 -112px no-repeat; display:inline-block; font:normal 12px/180% Microsoft YaHei; text-align:center; color:#fff; vertical-align:middle;}\n.yh-act.spec{ margin-left:0;}\nspan.yh-info{ vertical-align:middle;}\n\n.orders-total-info,.orders-action{padding:20px 0;text-align:right;line-height:35px;}\n.orders-total-des{display:inline-block;width:120px;color:#ef4218;}\n.orders-total-des strong{font:bold 20px/50px \"宋体\";}\n.orders-action{background:#f6f6f6;}\n.orders-action a{display:inline-block;margin:0 9px;padding:0 28px;font-size:14px;}\n.order-about-item{margin:0 5px;color:#999;}\n.order-item-price{margin-left:3px;color:#ef4218;}\n\n.orders-tips{border:1px solid #dfdfdf;}\n.bg-td{width:240px;vertical-align:middle;background:#fbfbfb;}\n.bg-td .pay-way{padding:33px 0 33px 26px;}\n.bg-td strong{display:block;color:#666;font-size:14px;}\n.bg-td p{color:#7c7c7c;}\n.orders-success-icon{display:block;width:100px;height:100px;margin:0 auto;background:url(../images/orders-bg.png) 0 0 no-repeat;}\n.orders-failure-icon{display:block;width:100px;height:100px;margin:0 auto;background:url(../images/orders-bg.png) -100px 0 no-repeat;}\n.orders-info{padding-left:28px;padding-bottom:26px;line-height:26px;}\n.orders-tips-tit{color:#000;font:22px/100px \"Microsoft Yahei\";}\n.payment{margin-top:26px;}\n.payment-select{border:1px solid #dfdfdf;border-top:none;margin-bottom:22px;}\n.payment-select .line-td{border-bottom:1px solid #dfdfdf;}\n.payment-select .payment-td{padding-left:32px;vertical-align:middle;}\n.payment-select .alipay input{vertical-align:middle;}\n.payment-select .alipay label{display:inline-block;width:175px;margin:13px 0;}\n.payment-select .alipay span{display:inline-block;*display:inline;*zoom:1;width:130px;height:43px;overflow:hidden;border:1px solid #ddd;text-align:center;margin-left:5px;vertical-align:middle;}\n.payment-select .alipay label:hover span{border-color:#f50;}\n.bank-list{padding:20px 0 15px;}\n.bank-list-con{height:140px;overflow:hidden;}\n.bank-list label{display:inline-block;width:175px;margin:13px 0;}\n.bank-list span{display:inline-block;*display:inline;*zoom:1;width:130px;height:35px;overflow:hidden;border:1px solid #ddd;text-align:center;padding-top:8px;margin-left:5px;vertical-align:middle;}\n.bank-list label:hover span{border-color:#f50;}\n.payment-select .bank-list input{vertical-align:middle;}\n.bank-list-action{padding-right:22px;text-align:right;font:14px/30px \"宋体\";}\n.orders-info .payment-price{color:#ef4218;font:bold 22px/30px \"宋体\";}\n.orders-info .other-link a{margin:0 10px;color:#00469d;}\n\n/***热门商品***/\n.hot-goods{width:1200px;margin:35px auto 20px;}\n.hot-goods-hd{border-bottom:1px solid #d5d5d5;}\n.hot-goods-tit,.cart-tit,.orders-item-tit{color:#6b6b6b;font: 18px/36px \"Microsoft Yahei\";}\n.hot-goods-bd .goods{width:185px;margin:30px 27px;float:left;display:inline;}\n.hot-goods-bd .goods-name{color:#393636;font: 16px/36px \"Microsoft Yahei\";}\n.hot-goods-bd .goods-des,.hot-goods-bd .goods-des a{color:#868686;}\n.hot-goods-bd .goods-des a:hover{color:#f30;}\n.hot-goods-bd .goods-price .val{color:#535353;font: 18px/36px \"Microsoft Yahei\";}\n.hot-goods-bd .goods-buy{margin-top:15px;text-align:center;}\n.hot-goods-bd .add-cart{border-top:1px solid #e4e4e4;border-bottom:1px solid #e4e4e4;}\n.hot-goods-bd .add-cart,.hot-goods-bd .add-cart span{display:inline-block;vertical-align:top;}\n.add-cart span{margin:0 -1px;_margin:0;padding:3px 10px;border-left:1px solid #e4e4e4;border-right:1px solid #e4e4e4;background:#fafafa;}\n\n.cart-nothing{border-top:2px solid #ea4621;background:url(../images/cart-nothing.jpg) 590px 120px no-repeat;}\n.cart-nothing-tips{padding:163px 656px 230px 285px;}\n.cart-nothing-tit{padding-bottom:37px;color:#6d6d6d;font:28px/38px \"Microsoft Yahei\";}\n.cart-nothing-tips .shopping-now{padding:10px 35px;}\n\n/***统一按钮***/\n.gray-btn{border:1px solid #e3e3e3;border-radius:2px;color:#666;text-align:center;background:#fff;}\n.gray-btn:hover,.gray-btn:active{color:#666;background:#f8f8f8;}\n\n.orange-btn{color:#fff;text-align:center;background:#ef4218;}\n.orange-btn:hover,.orange-btn:active{color:#fff;background:#ff3300;}\n\n/***购物车遮罩层***/\n.other-number-section-relative{ position:relative;}\n.car-block-bg{  background:#000;filter:alpha(opacity=30) !important; opacity:0.3; z-index:999; width:1140px; height:185px; position:absolute; left:0; top:0; }\n.car-block-bg img{ margin-top:110px;}\n\n.line{ height:1px; border-bottom:1px solid #CCC;}\n\n/*加入购物车成功*/\n.success-toCart{ margin:60px auto 10px; width:760px; text-align:center;}\n.success-toCart .mb-3em{ width:290px; float:right; display:inline;}\n.success-toCart .btn{ font-size:16px; margin-right:10px;}\n\n.success-toCart .tip{ padding-left:70px; width:340px; float:left; display:inline; background:url(../images/login-reg-bg.png) 0 -150px no-repeat; font:normal 26px/180% '微软雅黑'; color:#8cc220; text-align:left;}\n\n/*购物车增加选择宽带20140804*/\n.ymall-form.select-wb{ padding:0; overflow:hidden;}\n.select-wb p{ padding-left:10px; text-align:left;}\n.package-des p.title{ color:#f00;}\n.cart-other-reset.wb{ min-width:100px;}\n.select-wb p .label{ width:82px;}\n.select-wb p textarea{width:278px;line-height:20px;padding:4px;border:1px solid #dfdfdf;font-size:14px; resize:none;}\n.select-wb .left{ width:610px; float:left; display:inline;}\n.select-wb .right{ width:520px; float:left; display:inline;}\n.popbox.wb-con{ padding:30px; width:360px; background:#fff; text-align:center; color:#858585; border:none;}\n.popbox .wb-body{ position:relative; z-index:101;}\n.popbox .wb-body .close{ width:30px; height:30px; position:absolute; right:-60px; top:-30px; background:#ef4218; text-align:center; line-height:30px; font:normal 20px/30px Gotham, \"Helvetica Neue\", Helvetica, Arial, sans-serif; color:#f6b79f; cursor:pointer;}\n.popbox .wb-body a{ margin-top:30px; min-width:80px;}"
  },
  {
    "path": "src/taoshop-portal/src/main/resources/static/css/category.css",
    "content": "@charset \"utf-8\";\n.header{margin-bottom:20px;}\n\n/**phoneSearch**/\n.phoneSearch-title{padding:0 0 10px 10px;border-bottom:1px solid #ccc;font-size:18px;font-weight:bold;font-family:'微软雅黑';color:#666;}\n.phoneSearch-filter{position:relative;zoom:1;line-height:25px;margin-bottom:30px;padding-top:15px;}\n.phoneSearch-filter-item{position:relative;zoom:1;border-bottom:1px solid #f4f4f4;margin:0 5px 15px 5px;}\n.phoneSearch-filter-item h3{float:left;width:70px;font-weight:normal;padding-left:10px;}\n.phoneSearch-filter-item p{margin-left:80px;overflow:hidden;}\n.phoneSearch-filter-item p a{display:inline-block;*zoom:1;margin-right:20px;margin-bottom:15px;color:#666;}\n.phoneSearch-filter-item p a.selected{background:#ef4218;color:#fff;padding:0 10px;}\n.phoneSearch-filter-item p a:hover{color:#f30;}\n.phoneSearch-filter-item p a.selected:hover{color:#fff;}\n.phoneSearch-filter-more{height:5px;background:#ffddaa;border-top:1px solid #ffaa66;}\n.phoneSearch-filter-more a{display:block;margin:-1px auto -20px auto;width:100px;border:1px solid #ff6600;border-top-color:#fff;text-align:center;height:20px;line-height:20px;margin-bottom:-20px;*position:relative;background:#fff;}\n.phoneSearch-filter .ft{width:50px;line-height:26px;position:absolute;right:10px;top:-27px;}\n.phoneSearch-filter .ft a{color:#00469d;}\n.phoneSearch-filter .ft span{display:inline-block;*display:inline;*zoom:1;width:8px;height:7px;overflow:hidden;margin-left:9px;font-size:0;background:url(../images/more-expand.png) no-repeat;}\n.phoneSearch-filter .ft a:hover{color:#f30;}\n\n/*排序*/\n.reorder{height:45px;overflow:hidden;background:#f7f7f7;border:1px solid #ddd;}\n.reorder .reorder-wrapper{float:left;line-height:45px;}\n.reorder .reorder-wrapper a{float:left;height:45px;display:block;border-right:1px solid #ddd;padding:0 20px;cursor:pointer;overflow:hidden;}\n.reorder .reorder-wrapper a:hover,.reorder .reorder-wrapper a.selected{position:relative;background:#fff;text-decoration:none;cursor:pointer;}\n.reorder .reorder-styles{float:right;line-height:26px;padding-top:10px;padding-right:15px;}\n\n/*商品列表*/\n.phoneList{overflow:hidden;}\n.phoneList-wrap{position:relative;left:-10px;width:1220px;}\n.phoneListItem{float:left;display:inline;width:253px;height:358px;text-align:center;border:1px solid #fff;padding:15px;margin:10px;word-break:break-all;}\n.phoneListItem .item-img,.phoneListItem .item-img img{width:240px;height:240px;margin:0 auto;}\n.phoneListItem .item-name{font-weight:bold;white-space:nowrap;overflow:hidden;}\n.phoneListItem .item-name a{color:#5b5b5b;}\n.phoneListItem .item-name a:hover{color:#f30;}\n.phoneListItem .item-info{height:20px;line-height:20px;margin-bottom:5px;white-space:nowrap;overflow:hidden;color:#707070;}\n.phoneListItem .item-price{padding:2px 0 10px 0;font-size:16px;color:#f75831;}\n.phoneListItem .item-btn .btn{width:94px;height:34px;line-height:34px;padding:0;margin-right:10px;border-radius:0;font-size:14px;}\n.phoneListItem .item-btn .btn-gray{border:1px solid #e7e7e7;color:#898989;background-color:#f8f8f8;}\n.phoneListItem .item-btn .btn-red{border:1px solid #ef4218;background-color:#ef4218;}\n.phoneListItem .item-btn .btn-gray:hover{background:#fefefe;}\n.phoneListItem .item-btn .btn-red:hover{background:#f30;}\n.phoneListItem:hover{border-color:#f60;}\n\n/*相关搜索*/\n.searchResult-key{color:#858585;padding-left:10px;margin-bottom:15px;}\n.searchResult-key a{color:#0444a6;margin-right:10px;}\n.searchResult-key a:hover{color:#f30;}"
  },
  {
    "path": "src/taoshop-portal/src/main/resources/static/css/detail.css",
    "content": "@charset \"utf-8\";\n.header{margin-bottom:20px;}\n\n/* detail */\n.product-intro{margin-bottom:10px;}\n.product-info-img{float:left;width:488px;}\n.img-wrap{width:488px;height:352px;margin-bottom:10px;}\n.img-wrap .img-big{width:486px;height:350px;border:1px solid #ccc;}\n\n.spec-lists{position:relative;height:54px;overflow:hidden;}\n.bx-prev{position:absolute;top:0;left:-20px;width:17px;outline:0;height:54px;background:url(../images/detail_sprices.png) no-repeat 0 0;cursor:pointer;text-indent:-999999px;}\n.bx-next{position:absolute;top:0;right:-23px;width:17px;outline:0;height:54px;background:url(../images/detail_sprices.png) no-repeat -83px 0;cursor:pointer;text-indent:-999999px;}\n.bx-prev:hover{background-position:0 -59px;}\n.bx-next:hover{background-position:-83px -59px;}\n.spec-items{float:left;width:468px;height:54px;padding-left:20px;}\n.spec-items .items-in{width:800%;}\n.spec-items li{float:left;width:54px;height:54px;display:inline;cursor:pointer;padding:0 17px 0 18px;}\n.spec-items li span,.spec_items li a{float:left;width:52px;height:52px;border:1px solid #ccc;}\n.spec-items li img{width:52px; height:52px;}\n.spec-items li span:hover,.spec_items li a:hover{border-color:#f30;}\n.spec-items .selected span,.spec-items .selected span:hover,.spec-items li .zoomThumbActive{border-color:#f30;}\n.share-sns{padding-top:20px;}\n.share-sns span{float:left;padding-left:10px;color:#666;}\n.share-sns a{float:left;width:16px;height:16px;overflow:hidden;margin:0 3px;display:inline;}\n.share-sns .collect{width:55px; height:18px; margin-left:40px;}\n\n/*右侧属性*/\n.product_property{width:664px;overflow:hidden;padding-left:45px;color:#666;}\n.pro_meta ul{width:790px;}\n.pro_meta li{padding:11px 0 11px 10px;width:100%;float:left;}\n.pro_meta li.border-b{border-bottom:1px dotted #ccc;}\n.pro_meta .name{ width:660px; padding-left:0;color:#666;font-size:16px;font-weight:bold;}\n.pro_meta .sp_l{float:left;width:70px;font-family:'宋体';}\n.pro_meta .action-bate{width:600px;}\n.pro_meta .action-bate a{border:1px solid #ddd;padding:6px 11px;_padding-bottom:4px;margin-right:10px;cursor:pointer;position:relative;overflow:hidden;_zoom:1;}\n.pro_meta .action-bate a:hover{border-color:#e4393c;color:#333;text-decoration:none;}\n.pro_meta .action-bate a.selected{border:2px solid #e4393c;padding:5px 10px;_padding-bottom:3px;}\n.pro_meta .action-bate a.selected em{width:13px;height:13px;display:block;position:absolute;right:-2px;bottom:-2px;background:url(../images/detail_sprices.png) no-repeat 0 -266px;}\n.pro_meta .tb-rmb-num{color:#e94609;font-size:14px;font-weight:bold;}\n.phone_num{padding-top:5px;padding-left:10px;}\n.phone_num dt{width:70px;}\n.phone_num .tb_stock a{float:left;width:13px;height:13px;line-height:13px;border:1px solid #c9c9c9;background:#fff;text-align:center;overflow:hidden;font-family:Verdana, Geneva, sans-serif;color:#333;}\n.phone_num .tb_stock a:hover{text-decoration:none;color:#f60;}\n.phone_num .tb_stock input{position:relative;float:left;height:20px;line-height:20px;width:34px;margin:-3px 5px 0 5px;border:1px solid #ccc;color:#333;text-align:center;}\n.phone_choosed{padding-top:20px;padding-left:10px;}\n.phone_choosed span{color:#333;}\n.phone_choosed .add_btn{padding:20px 0 0 0;position:relative;}\n.phone_choosed .add_btn .btn{height:40px;line-height:40px;margin-right:25px;padding:0 40px;border-radius:0;font-size:16px;}\n\n/**详情**/\n.product-detail{width:950px;}\n/*随心配*/\n.bundle{border-bottom:1px solid #ccc;}\n.bundle .bundle-head{position:relative;height:40px;line-height:40px;border-bottom:1px solid #ccc;font-size:18px;font-family:'微软雅黑';text-indent:10px;}\n.bundle .bundle-head a{position:absolute;right:5px;top:0;font-size:14px;color:#e94609;}\n.bundle-list{float:left;width:669px;height:170px;border-right:1px solid #ccc;padding:15px 0 25px 41px;}\n.bundle-list ul{width:800%;}\n.bundle-list .bundle-item{float:left;width:110px;height:170px;overflow:hidden;padding:0 60px 0 35px;display:inline;cursor:pointer;background:url(../images/bundle_addIcon.png) no-repeat right center;word-break:break-all;}\n.bundle-item .item-img{text-align:center;}\n.bundle-item .item-img,.bundle-item .item-img img{width:110px;height:110px;margin:0 auto;}\n.bundle-item .item-info{height:40px;line-height:20px;overflow:hidden;}\n.bundle-item .item-info a{color:#666;display:block;}\n.bundle-item .item-info a:hover{color:#f30;}\n.bundle-item .item-price{line-height:20px;font-weight:bold;color:#ef4e2d;}\n.bundle-item .item-price em{font-weight:bold;}\n.bundle-item .item-price input{margin-right:4px;}\n.bundle .bx-prev{left:-41px;top:50%;margin-top:-34px;width:41px;height:69px;background:url(../images/detail_sprices.png) no-repeat 0 -118px;}\n.bundle .bx-next{right:-55px;top:50%;margin-top:-34px;width:41px;height:69px;background:url(../images/detail_sprices.png) no-repeat -59px -118px;}\n.bundle .bx-prev:hover{ background-position:0 -192px;}\n.bundle .bx-next:hover{ background-position:-59px -192px;}\n.bundle-extra{float:left;width:199px;overflow:hidden;padding:30px 10px 0 30px;}\n.bundle-extra p{line-height:30px;}\n.bundle-extra .extra-price{color:#ef4e2d;}\n.bundle-extra .extra-price,.bundle-extra .extra-price em{font-weight:bold;}\n.bundle-extra .btn-sku{padding-top:45px;}\n.bundle-extra .btn-sku .btn{height:40px;line-height:40px;margin-right:25px;padding:0 40px;border-radius:0;font-size:16px;}\n/*商品详情*/\n.detail{position:relative;zoom:1;overflow:hidden;}\n.detail .btn-sku{width:122px;height:55px;position:absolute;right:20px;top:8px;background:url(../images/btn-sku.png) no-repeat;}\n.detail .cut{position:fixed;z-index:100;top:0;left:50%;margin-left:-350px;_position:absolute;_top:expression(eval(document.documentElement.scrollTop));width:950px;height:40px;border:1px solid #ccc;background:#fbfbfb;}\n.detail .fixed{position:static;margin-left:0;}\n.detail .cut li{width:130px;height:20px;line-height:20px;border-right:1px dotted #d2d2d2;overflow:hidden;margin-top:10px;font-size:14px;font-weight:bold;float:left;text-align:center;cursor:pointer;}\n.detail .cut li:hover{color:#e94609;}\n.detail .cut .current{height:38px;line-height:38px;margin-top:-1px;margin-left:-1px;color:#e94609;background:#fff;border-top:2px solid #f30;border-left:1px solid #ddd;border-right:1px solid #ddd;}\n.detail .detail-main{padding:20px;border-top:0;}\n.detail .detail-main img{display:block;margin:0 auto;max-width:910px;_width:910px;}\n\n.detail-main .detail-list{font-size:14px;background:#fffbe0;color:#666;padding:20px 40px;}\n.detail-main .detail-list li{float:left; width:259px; margin-right:10px; display:inline; line-height:35px;}\n.detail-main h4{padding:7px 15px;font-size:16px;font-weight:bold;border:1px solid #dfdfdf;background-color:#fbfbfb;}\n.detail-main table{width:100%;border:1px solid #ddd;margin:0 auto;}\n.detail-main table th{width:13%;vertical-align:middle;padding:8px;text-align:right;border:1px solid #ddd;}\n.detail-main table td{border:1px solid #ddd;padding:8px;}\n.detail-main .aq-head{font-size:16px;font-weight:bold;font-family:'微软雅黑';padding:0 0 10px 15px;}\n.detail-main .aq-con{border:1px solid #dfdfdf;}\n.detail-main .aq-con dl{padding:10px 15px;}\n.detail-main .aq-con dl dt{padding-top:10px;padding-bottom:5px;font-size:14px;color:#666;}\n.detail-main .aq-con dl dd{padding-bottom:15px;color:#999;border-bottom:1px dotted #d0d0d0;}\n\nspan.span01{ color:#e4393c;}\nspan.span02{ padding:1px 2px; background:#e4393c; color:#fff;}\nem.em01{ margin-left:10px; color:#e4393c;}\na.to-detail{ margin-left:10px; color:#336699}\na.to-detail:hover{ color:#e4393c;}"
  },
  {
    "path": "src/taoshop-portal/src/main/resources/static/css/index.css",
    "content": "@charset \"utf-8\";\n/* index */\n\n/**首页BANNER**/\n.banner{position:relative;width:727px;height:350px;margin-left:235px;margin-bottom:15px; margin-top:4px; float:left; display:inline;}\n.banner-img{position:relative;height:350px;overflow:hidden;}\n.banner-img ul{width:2000em;position:absolute;}\n.banner-img ul li{float:left;height:350px;}\n.banner-btn{position:absolute;left:0;bottom:20px;width:100%;height:10px;text-align:center;}\n.banner-btn li{display:inline-block;*display:inline;*zoom:1;width:10px;height:10px;margin:0 8px;background-color:#8f8f8f;cursor:pointer;border-radius:10px;}\n.banner-btn .current{background-color:#ef4218;}\n\n/**first-pannel**/\n.first-pannel .index-f{float:left;width:1200px;_overflow:hidden;}\n/*话费充值*/\n.index-fast-recharge{ margin-top:5px;float:right;width:233px;}\n.index-fast-recharge .recharge-head h2{height:39px;line-height:39px;padding:0 8px;font-size:18px;font-family:'微软雅黑';color:#5f5e5e;}\n.index-fast-recharge .recharge-head h2 .icon-phone{display:inline-block;*zoom:1;*display:inline;width:15px;height:21px;background:url(../images/index_sprices.png) no-repeat;vertical-align:top;margin-top:10px;margin-right:8px;}\n.index-fast-recharge .recharge-body{overflow:hidden;padding:9px; padding-top:7px;border:1px solid #e3e3e3;background-color:#f5f7fa;}\n.index-fast-recharge .recharge-con{padding:17px 10px;background-color:#fff;}\n.index-fast-recharge .recharge-form p{padding-bottom:10px;}\n.index-fast-recharge .recharge-form p .name{display:block;padding-bottom:5px;} \n.index-fast-recharge .recharge-form .text-box{width:180px;height:18px;line-height:18px;padding:10px 5px;border:1px solid #e6e9ed;border-radius:5px;}\n.index-fast-recharge .recharge-form .rd{vertical-align:top;margin:2px 4px 0 0;*vertical-align:middle;*margin:0 2px 0 0;}\n.index-fast-recharge .recharge-form .recharge-sub-btn{padding-top:10px;margin-bottom:15px;}\n.index-fast-recharge .recharge-form .recharge-sub-btn .btn{width:100%;padding:9px 0;font-size:14px;}\n.index-fast-recharge .recharge-ad img{width:194px;height:70px;}\n\n/**index-f**/\n.index-f{margin-bottom:15px;}\n.index-f-head{height:35px;line-height:35px;padding:0 5px;white-space:nowrap;overflow:hidden;font-size:18px;font-family:'微软雅黑';color:#5f5e5e;}\n.index-f-head span{padding-left:20px;font-size:12px;font-family:Arial, '宋体';color:#787878;}\n.index-f-head .more{float:right;font-size:14px;line-height:40px;font-family:'宋体';color:#5f5e5e;}\n.index-f-head .more em{font-size:12px;}\n.index-f-head .more:hover{color:#f30;}\n.index-f-body{position:relative;left:0;padding-top:5px;}\n.index-f-boxS li,.index-f-boxM,.index-f-boxL,.index-f-boxMixedS li,.index-f-boxMixedM li{float:left;margin:-1px 0 0 -1px;border:1px solid #dcdcdc;}\n.index-f-boxS li:hover,.index-f-boxM:hover,.index-f-boxL:hover,.index-f-boxMixedS li:hover,.index-f-boxMixedM li:hover{position:relative;border-color:#f60;}\n.index-f-boxS li,.index-f-boxS img{width:240px;height:160px;overflow:hidden;}\n.index-f-boxM,.index-f-boxM img{width:240px;height:321px;overflow:hidden;}\n.index-f-boxL,.index-f-boxL img{width:475px;height:321px;overflow:hidden;}\n.index-f-boxMixed{width:482px;float:left;}\n.index-f-boxMixedS li,.index-f-boxMixedS img{width:240px;height:160px;overflow:hidden;}\n.index-f-boxMixedM li,.index-f-boxMixedM img{width:481px;height:160px;overflow:hidden;}\n/*4f商家精选*/\n.top-sales-item{float:left;display:inline;width:283px;margin-left:-1px;padding:8px;border:1px solid #dcdcdc;}\n.top-sales-item:hover{position:relative;border-color:#f60;}\n.top-sales-item .item-img,.top-sales-item .item-img img{width:200px;height:200px;margin:0 auto;}\n.top-sales-item .item-buss{line-height:30px;font-size:14px;text-align:center;padding:0 10px;white-space:nowrap;overflow:hidden;}\n.top-sales-item .item-buss a{font-weight:bold;color:#535353;}\n.top-sales-item .item-name{font-size:16px;font-family:'微软雅黑';padding:0 40px;white-space:nowrap;overflow:hidden;}\n.top-sales-item .item-name.spec{ margin:0 20px; padding:0;}\n.top-sales-item .item-name a{color:#393636;}\n.top-sales-item .item-info{padding:0 40px;white-space:nowrap;overflow:hidden;}\n.top-sales-item .item-info a{color:#868686;}\n.top-sales-item .item-price{font-size:18px;font-family:'微软雅黑';color:#535353;padding:0 40px;white-space:nowrap;overflow:hidden;}\n.top-sales-item a:hover{color:#f30;}\n/*新品上架0728*/\n.top-sales-item.newProduct{ width:223px; margin-top:-1px;}\n.top-sales-item .item-price.spec{ margin-left:20px; margin-right:20px; padding:0; color:#f00;}\n.top-sales.newProduct{ margin-bottom:15px;}\n\n\n/*左侧菜单0804*/\n.wrap { width: 1210px; margin: 0px auto; }\n.all-sort-list { position: relative; width: 223px; border-top: none; padding: 3px 3px 3px 0px; background: #FAFAFA; }\n.all-sort-list .item { height: 33px; border-top: 1px solid #FFFFFF; }\n.all-sort-list .item.bo { border-top: none; }\n.all-sort-list .item h3 { padding-left:16px; height: 30px; line-height: 30px; border: 1px 0px; font-size: 14px; font-weight: normal; width: 210px; overflow: hidden; }\n.all-sort-list .hover h3 { position: relative; z-index: 13; background: #FFF; border-color: #DDD; border-top:1px solid #ddd; line-height:32px; }\n.all-sort-list .item span { padding: 0px 5px; color: #A40000; font-family: \"\\5B8B\\4F53\"; }\n.all-sort-list .item a { color: #000; text-decoration: none; }\n.all-sort-list .item a:hover { font-weight: normal; color: #E4393C; }\n.all-sort-list .item-list { display: none; position: absolute; width: 746px; min-height: 160px; _height: 160px; background: #FFF; left: 220px; box-shadow: 0px 0px 10px #DDDDDD; border: 1px solid #DDD; top:0; z-index: 10; }\n.all-sort-list .item-list .close { position: absolute; width: 26px; height: 26px; color: #FFFFFF; cursor: pointer; top: -1px; right: -26px; font-size: 20px; line-height: 20px; text-align: center; font-family: \"Microsoft Yahei\"; background: rgba(0, 0, 0, 0.6); background-color: transparent\\9;  filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=1, startColorstr='#60000000', endColorstr='#60000000');\n}\n.item-list .subitem { float: left; width: 520px; padding: 0px 4px 0px 8px; }\n.item-list .subitem dl { padding: 6px 0px; overflow: hidden; zoom: 1; }\n.item-list .subitem .fore1 { border-top: none; }\n.item-list .subitem dt { width:100%; font-size:14px; line-height: 22px; text-align:left; padding: 3px 6px 0px 0px; font-weight: 700; color: #f75730; border-bottom:1px solid #f75730; clear:both; }\n.item-list .subitem dt a { color: #f75730; }\n.item-list .subitem dd { float: left; width: 520px; padding: 3px 0px 0px; overflow: hidden; }\n.item-list .subitem dd em { float: left; height: 16px; line-height: 16px; padding: 0px 8px; margin-top:4px; margin-bottom: 8px; border-right: 1px solid #CCC; }\n.item-list .subitem dd em a, .item-list .cat-right dd a { color: #666; text-decoration: none; }\n.item-list .subitem dd em a:hover, .item-list .cat-right dd a:hover { font-weight: normal; text-decoration: underline; }\n.item-list .cat-right { float: right; width: 210px; }\n.item-list .cat-right dl { width: 194px; padding: 6px 8px; }\n.item-list .cat-right dl li{ margin:8px 0; width:194px; height:70px;}\n.item-list .cat-right dd { padding-top: 6px; line-height: 22px; overflow: hidden; padding: 3px 0px 0px; }\n.item-list .cat-right dt { padding: 3px 6px 0px 0px; font-weight: 700; color: #E4393C; }\n.item-list .cat-right dd a:hover { color: #666; }\n"
  },
  {
    "path": "src/taoshop-portal/src/main/resources/static/css/jqzoom.css",
    "content": ".zoomPad{\n\tposition:relative;\n\tfloat:left;\n\tz-index:99;\n\tcursor:crosshair;\n}\n\n\n.zoomPreload{\n   -moz-opacity:0.8;\n   opacity: 0.8;\n   filter: alpha(opacity = 80);\n   color: #333;\n   font-size: 12px;\n   font-family: Tahoma;\n   text-decoration: none;\n   border: 1px solid #CCC;\n   background-color: white;\n   padding: 8px;\n   text-align:center;\n   background-image: url(../images/zoomloader.gif);\n   background-repeat: no-repeat;\n   background-position: 43px 30px;\n   z-index:110;\n   width:90px;\n   height:43px;\n   position:absolute;\n   top:0px;\n   left:0px;\n    * width:100px;\n    * height:49px;\n}\n\n\n.zoomPup{\n\toverflow:hidden;\n\tbackground-color: #FFF;\n\t-moz-opacity:0.6;\n\topacity: 0.6;\n\tfilter: alpha(opacity = 60);\n\tz-index:120;\n\tposition:absolute;\n\tborder:1px solid #CCC;\n  z-index:101;\n  cursor:crosshair;\n}\n\n.zoomOverlay{\n\tposition:absolute;\n\tleft:0px;\n\ttop:0px;\n\tbackground:#FFF;\n\t/*opacity:0.5;*/\n\tz-index:5000;\n\twidth:100%;\n\theight:100%;\n\tdisplay:none;\n  z-index:101;\n}\n\n.zoomWindow{\n\tposition:absolute;\n\tleft:110%;\n\ttop:40px;\n\tbackground:#FFF;\n\tz-index:6000;\n\theight:auto;\n  z-index:10000;\n  z-index:110;\n}\n.zoomWrapper{\n\tposition:relative;\n\tborder:1px solid #999;\n  z-index:110;\n}\n.zoomWrapperTitle{\n\tdisplay:block;\n\tbackground:#999;\n\tcolor:#FFF;\n\theight:18px;\n\tline-height:18px;\n\twidth:100%;\n  overflow:hidden;\n\ttext-align:center;\n\tfont-size:10px;\n  position:absolute;\n  top:0px;\n  left:0px;\n  z-index:120;\n  -moz-opacity:0.6;\n  opacity: 0.6;\n  filter: alpha(opacity = 60);\n}\n.zoomWrapperImage{\n\tdisplay:block;\n  position:relative;\n  overflow:hidden;\n  z-index:110;\n\n}\n.zoomWrapperImage img{\n  border:0px;\n  display:block;\n  position:absolute;\n  z-index:101;\n}\n\n.zoomIframe{\n  z-index: -1;\n  filter:alpha(opacity=0);\n  -moz-opacity: 0.80;\n  opacity: 0.80;\n  position:absolute;\n  display:block;\n}\n\n/*********************************************************\n/ When clicking on thumbs jqzoom will add the class\n/ \"zoomThumbActive\" on the anchor selected\n/*********************************************************/"
  },
  {
    "path": "src/taoshop-portal/src/main/resources/static/css/public.css",
    "content": "@charset \"utf-8\";\n\n/* reset */\nhtml,body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0;outline:none;}\naddress,cite,code,dfn,em,var{font-style:normal;font-weight:normal;}\nb,strong{font-weight:bold}\nh1,h2,h3,h4,h5,h6{font-weight:normal;font-size:12px;}\nul,ol,li{list-style:none;}\ntable{border-collapse:collapse;border-spacing:0;}\nth,td,caption{font-weight:normal;vertical-align:top;text-align:left;}\nimg{border:0;}\ninput,textarea,select{vertical-align:middle;}\n/*html5*/\narticle,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;margin:0;padding:0;}\naudio{display:none}\ncanvas,video{display:inline-block;*display:inline;*zoom:1}\n[hidden]{display:none}\naudio[controls]{display:inline-block;*display:inline;*zoom:1}\nmark{background-color:#ff0;color:#000}\n\n/*public*/\nbody{font:12px/1.5 Arial,\"宋体\",sans-serif;color:#333;background-color:#fff;}\na{text-decoration:none;color:#333;}\n.clearfix:after{font-size:0;line-height:0;content:\"\\020\";display:block;height:0;clear:both;}\n.clearfix{zoom:1;}\na:hover{color:#f30;text-decoration:underline;}\n.layout{width:1200px;margin:auto;clear:both;} /*默认1200宽度*/\n.c{clear:both;} /*清除浮动*/\n\n/*****************public elements define*******************/\n/*font style*/\n.f-red1{color:#ff0000;}\n.f-red2{color:#cc0000;}\n.f-orange1{color:#ff6600;}\n.f-orange2{color:#ff9900;}\n.f-blue1{color:#0000ff;}\n.f-blue2{color:#336699;}\n.f-black{color:#000000;}\n.f-gray1{color:#333333;}\n.f-gray2{color:#666666;}\n.f-gray3{color:#999999;}\n.f-gray4{color:#cccccc;}\n.f-white{color:#ffffff;}\n.f-u{text-decoration:underline;}\n.f-b{font-weight:bold;}\n.f-big{font-size:1.2em;}\n\n/*float*/\n.fl-l{float:left;}\n.fl-r{float:right;}\n\n/**col**/\n.col-200{width:200px;}\n.col-260{width:260px;}\n.col-280{width:280px;}\n.col-265{width:265px;}\n.col-500{width:500px;}\n.col-740{width:740px;}\n.col-900{width:900px;}\n.col-930{width:930px;}\n\n/**margin 10**/\n.m10-l{margin-left:10px;}\n.m10-r{margin-right:10px;}\n.m10-b{margin-bottom:10px;}\n.m20-b{margin-bottom:20px;}\n\n/*btn style*/\n.btn{display:inline-block;*display:inline;*zoom:1;text-align:center;padding:9px 18px;font-size:100%;font-family:Arial,\"宋体\",sans-serif;line-height:normal;text-decoration:none;border:0 none;vertical-align:middle;box-shadow:0 1px 0 #e2e2e2;cursor:pointer;color:#333;background-color:#ddd;}\n.btn:hover{color:#333;text-decoration:none;background-color:#ccc;}\n.btn-disabled,.btn-disabled:hover{opacity:0.4;background-color:#e6e6e6;cursor:not-allowed;}\n.btn-red{color:#fff;background:#e94609;}\n.btn-orange{color:#fff;border-color:#f5b843;\nbackground:#ffa830;background:-moz-linear-gradient(top,#ffb761,#ff9a03);\nbackground:-webkit-gradient(linear,0% 0%,0% 100%,from(#ffb761),to(#ff9a03));\nbackground:-webkit-linear-gradient(top,#ffb761,#ff9a03);\nbackground:-o-linear-gradient(top,#ffb761,#ff9a03);\nbackground: -ms-linear-gradient(top,#ffb761, #ff9a03);\nfilter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0,startColorstr=#ffb761,endColorstr=#ff9a03);\nbackground: linear-gradient(top,#ffb761, #ff9a03);}\n.btn-blue{color:#fff;background:#2fafe0;border-color:#2fafe0;}\n.btn-coffee{color:#fff;background:#b67136;}\n.btn-gray{color:#333;background:#eee;}\n.btn-orange:hover{color:#fff;background:#ff9a03;}\n.btn-red:hover{color:#fff;background:#f30;}\n.btn-blue:hover{color:#fff;background:#2ca2d1;}\n.btn-coffee:hover{color:#fff;background:#cf813e;}\n.btn-gray:hover{color:#525252;background:#f2f2f2;}\n\n/*tables style*/\n.ymall-table{empty-cells:show;border:1px solid #cbcbcb;font-size:12px;}\n.ymall-table th,.ymall-table td{padding:8px 16px;border-left:1px solid #cbcbcb;border-width:0 0 0 1px;}\n.ymall-table th{font-weight:bold;color:#333;background:#e0e0e0;}\n.ymall-table td{color:#525252;}\n.ymall-table .ymall-table-odd td{background:#f2f2f2;border-width:0 0 0 1px;}\n\n ymall-table-border th,.ymall-table-border td{border-bottom:1px solid #cbcbcb;}\n.ymall-table-horizontal th,.ymall-table-horizontal td{border:0 none;border-bottom:1px solid #cbcbcb;}\n\n/***************public frameset***************/\n\n/*header*/\n.header{position:relative;z-index:100;zoom:1;width:100%;min-width:1200px;margin:0 auto;}\n/**topBar**/\n.topBar{position:relative;z-index:100;width:100%;min-height:36px;_height:36px;line-height:36px;text-align:right;color:#8a8a8a;background-color:#f8f8f8;box-shadow:1px 1px 1px #ddd;border-bottom:1px solid #eee\\0;*border:1px #eee;}\n.topBar-userWelcome{padding-right:10px;}\n.topBar-userWelcome a{color:#00469d;}\n.topBar-userWelcome a:hover{color:#f30;}\n.topBar .logined{padding-right:0;}\n.topBar-userWelcome .user{position:relative;zoom:1;*padding-right:5px;}\n.topBar-userWelcome .user .user-link{color:#584c4c;}\n.topBar-userWelcome .user .icon-arr{display:inline-block;*display:inline;*zoom:1;width:12px;height:5px;margin-left:5px;background:url(../images/base.png) no-repeat -218px -254px;*vertical-align:middle;*margin-top:4px;_vertical-align:-5px;_margin-top:16px;}\n.topBar-userWelcome .user .user-link:hover{color:#f30;}\n.topBar-userWelcome .user .user-cs{position:absolute;left:50%;top:10px;*top:23px;margin-left:-55px;padding-top:11px;text-align:left;}\n.topBar-userWelcome .user .user-cs .user-cs-con{display:block;width:110px;border:1px solid #e8ebed;background:#fff;}\n.topBar-userWelcome .user .user-cs a{display:block;line-height:30px;padding:0 15px;color:#979797;white-space:nowrap;overflow:hidden;}\n.topBar-userWelcome .user .user-cs a:hover{text-decoration:none;color:#f30;background:#f9f9f9;}\n.topBar-userWelcome .user .user-cs .icon-arr{position:absolute;left:50%;top:5px;display:block;margin-left:-6px;width:13px;height:7px;background:url(../images/base.png) no-repeat -216px -264px;*margin-top:0;}\n.topBar-menu a{padding:0 6px;color:#8a8a8a;}\n.topBar-menu a:hover{color:#f30;}\n/**headerMain**/\n.headerMain{padding:30px 0 12px 0;position:relative;z-index:10;}\n.headerMain .siteLogo{background:url(../images/logo.png) no-repeat;width:360px;height:50px;float:left;}\n.headerMain .siteLogo a{height:50px;float:left;display:block;}\n.headerMain .siteLogo-homepage{width:165px;margin-right:25px;}\n.headerMain .siteLogo-mallpage{width:170px;}\n/***headerMain search***/\n.headerMain .search{position:relative;width:491px;height:63px;float:left;padding-top:5px;padding-left:75px;}\n.search-area{width:487px;height:30px;border:2px solid #f75730;margin-bottom:8px;}\n.search-input-text,\n.search-input-submit{border:0 none;float:left;display:block;}\n.search-input-text{width:421px;height:20px;line-height:20px;padding:5px 8px;font-size:14px;}\n.search-input-submit{float:right;width:50px;height:30px;cursor:pointer;background:url(../images/base.png) no-repeat 12px 2px #f75730;}\n.search-suggest{position:absolute;left:77px;top:37px;width:435px;overflow:hidden;border:1px solid #d5d5d5;background:#fff;}\n.search-suggest li{line-height:29px;color:#868686;padding:0 5px;cursor:default;}\n.search-suggest li:hover{background:#39f;color:#fff;}\n.search-suggest li b{font-weight:bold;}\n.search-hotkey{padding-left:10px;color:#606060;}\n.search-hotkey a{margin-right:10px;color:#999;}\n.search-hotkey a:hover{color:#f30;}\n/*myYmall*/\n.myYmall{float:left;height:32px;overflow:hidden;line-height:32px;margin:5px 0 0 15px;padding:0 10px;font-size:14px;text-align:center;border:1px solid #efefef;background-color:#f7f7f7;}\n.myYmall .icon-user{display:inline-block;*display:inline;*zoom:1;width:15px;height:19px;background:url(../images/base.png) no-repeat -48px -74px;vertical-align:top;margin:5px 5px 0 0;*margin-top:-1px;_vertical-align:-1px;_margin-top:5px;}\n.myYmall a{color:#666;}\n.myYmall a:hover{color:#f30;}\n/*to-cart*/\n.to-cart{height:32px;position:relative;float:right;margin-top:5px;}\n.to-cart dt{position:relative;z-index:10;float:left;width:144px;height:32px;text-align:center;line-height:32px;border:1px solid #efefef;background-color:#f7f7f7;}\n.to-cart .selected{border-bottom:1px solid #fff;background-color:#fff;}\n.to-cart dt .shop-amount{position:absolute;left:30px;top:-14px;display:block;width:18px;height:19px;line-height:18px;text-align:center;color:#fff;background:url(../images/base.png) no-repeat 0 -32px;}\n.to-cart dt a{font-size:14px;color:#666;}\n.to-cart dt a:hover{color:#f30;}\n.to-cart dt .icon-cart{display:inline-block;*display:inline;*zoom:1;width:21px;height:20px;background:url(../images/base.png) no-repeat 0 -56px;vertical-align:top;margin:5px 5px 0 0;*margin-top:-1px;_vertical-align:-1px;_margin-top:5px;}\n.to-cart dt .angle{display:inline-block;*display:inline;*zoom:1;width:5px;height:9px;background:url(../images/base.png) no-repeat 0 -81px;vertical-align:top;margin:11px 0 0 5px;*margin-top:3px;_vertical-align:1px;}\n.to-cart dt .down{width:9px;height:5px;background:url(../images/base.png) no-repeat -21px -81px;margin:12px 0 0 1px;*margin-top:4px;_vertical-align:-1px;}\n.to-cart dd{position:absolute;top:33px;right:0;border:1px solid #efefef;background-color:#fff;}\n.to-cart dd .nogoods{width:200px;padding:20px 10px 20px 20px;color:#8d8d8d;}\n.to-cart .cart-table{width:300px;}\n.to-cart .cart-table .cart-table-body{height:144px;}\n.to-cart .cart-item{border-bottom:1px solid #e2e2e2;height:55px;padding:8px;overflow:hidden;}\n.to-cart .cart-item li{float:left;overflow:hidden;background:none;}\n.to-cart .cart-item img{width:55px;height:55px;}\n.to-cart .cart-item .item-operate{float:right;width:38px;}\n.to-cart .cart-item .item-img{width:55px;overflow:hidden;height:55px;}\n.to-cart .cart-item .item-intro{width:132px;height:54px;overflow:hidden;padding-left:10px;}\n.to-cart .cart-item .item-intro a{display:block;color:#666;}\n.to-cart .cart-item .item-intro a:hover{color:#f30;}\n.to-cart .cart-item .item-extra{float:right;color:#999;}\n.to-cart .cart-item .item-extra .delete{color:#016dca;}\n.to-cart .cart-item .item-extra .delete:hover{color:#f30;}\n.to-cart .cart-item .item-extra p{text-align:right;padding-top:20px;}\n.to-cart .cart-item .item-operate a{background:#eee;color:#999;padding:3px;}\n.to-cart .item-price{color:#f6572f;font-weight:bold;}\n.to-cart .cart-bottom{padding:10px 15px;background:#fff;line-height:20px;text-align:right;}\n.to-cart .cart-bottom .item-price{font-size:14px;}\n.to-cart .cart-goMyCart{display:inline-block;*display:inline;*zoom:1;height:32px;line-height:32px;padding:0 30px;margin-top:5px;font-size:14px;cursor:pointer;color:#fff;background-color:#f65730;border-radius:0;}\n.to-cart .cart-goMyCart:hover{background-color:#f30;}\n/**headerNav**/\n.headerNav{height:38px;border-bottom:1px solid #f58e74;background-color:#ef4218;}\n.headerNav-main{width:970px;height:38px;float:left;display:inline;}\n/*商品分类*/\n.headerNav .all-brands{position:relative;z-index:10;float:left;width:230px;height:38px;}\n.headerNav .all-brands .all-brands-head{width:230px;height:38px;overflow:hidden;}\n.headerNav .all-brands .all-brands-head a{display:block;height:34px;line-height:38px;color:#fff;font-size:15px;font-weight:bold;text-indent:1em;border:2px solid #f75730;background:#f75730;}\n.all-brands-list{position:relative;top:0;left:0;width:226px;height:350px;padding-bottom:3px;border:2px solid #ef4218;\tborder-top:0;background-color:#fafafa;}\n.all-brands-item{padding:4px 15px;border-top:1px solid #fff;}\n.all-brands-item h3{margin-bottom:5px;font-size:14px;font-weight:normal;color:#353535;}\n.all-brands-item h3 i{font-size:12px;font-weight:bold;color:#ff6920;}\n.all-brands-item h3 em{margin-left:5px;font-size:12px;color:#ff6920;}\n.all-brands-item p{display:inline-block;*display:inline;*zoom:1;width:155px;white-space:nowrap;vertical-align:top;*vertical-align:0;}\n.all-brands-item p a{margin-right:20px;color:#838383;}\n.all-brands-item .more{color:#838383;}\n.all-brands-item p a:hover,.all-brands-item .more:hover{color:#f30;}\n/*导航*/\n.headerNav-nav{float:left;width:600px;height:38px;font-size:16px;font-family:'微软雅黑';white-space:nowrap;}\n.headerNav-nav li{float:left;width:130px;height:38px;line-height:38px;margin-right:5px;}\n.headerNav-nav li a{display:block;width:100%;height:38px;text-align:center;text-decoration:none;color:#fff;}\n.headerNav-nav li a:hover{color:#fff;text-decoration:none;background-color:#d62a00;}\n.headerNav-nav li .selected{background:#d62a00;}\n\n/*container*/\n.container{width:100%;min-width:1200px;margin:auto;}\n\n/*footer*/\n.footer{width:100%;min-width:1200px;margin:auto;border-top:1px solid #f3f1f1;background-color:#f6f6f6;}\n.footer-service{float:left;width:983px;padding:105px 0 20px 7px;background:url(../images/foot_service.png) no-repeat 5px 30px;}\n.footer-service dl{display:inline-block;*display:inline;*zoom:1;width:205px;vertical-align:top;position:relative;padding-left:40px;}\n.footer-service dt{position:relative;zoom:1;font-size:14px;font-weight:bold;margin-bottom:5px;}\n.footer-service dt .icon-aq{position:absolute;left:-28px;top:0;display:block;width:22px;height:22px;background:url(../images/base.png) no-repeat -207px 0;}\n.footer-service dt .icon-service{position:absolute;left:-28px;top:0;display:block;width:22px;height:22px;background:url(../images/base.png) no-repeat -207px -27px;}\n.footer-service dt .icon-pay{position:absolute;left:-28px;top:0;display:block;width:22px;height:22px;background:url(../images/base.png) no-repeat -207px -54px;}\n.footer-service dd{line-height:22px;}\n.footer-service dd a{color:#666;}\n.footer-service dd a:hover{color:#333;}\n\n.online{float:left;display:inline;width:210px;padding-top:25px;padding-bottom:20px;}\n.online li{float:left;display:inline;width:98px;height:27px;margin:0 0 7px 7px;overflow:hidden;}\n.online li a{display:block;width:96px;height:25px;border:1px solid #c0c0c0;background:url(../images/base.png) no-repeat;}\n.online .line1 a{background-position:0 -96px;}\n.online .line2 a{background-position:0 -126px;}\n.online .line3 a{background-position:0 -156px;}\n.online .line4 a{background-position:0 -186px;}\n.online .line5 a{background-position:0 -216px;}\n.online .line6 a{background-position:0 -246px;}\n.online li a:hover{border-color:#f70;}\n\n.footer-copyright{color:#777;border-top:1px solid #dddddd;padding:25px 0;text-align:center;line-height:25px;background-color:#fff;}\n.footer-copyright p a{color:#777;margin:0 5px;}\n.footer-copyright p a:hover{color:#333;}\n.copyright{padding-bottom:5px;color:#999;}\n.footer-copyright .cr-icon{display:block;width:229px;height:41px;margin:0 auto;background:url(../images/base.png) no-repeat 0 -276px;}\n\n/*popbox*/\n.mark{position:fixed;top:0;left:0;z-index:100;width:100%;height:100%;background-color:#000;filter:alpha(opacity=30);-moz-opacity:0.3;-khtml-opacity:0.3;opacity:0.3;}\n* html .mark{position:absolute;top:expression(eval(document.documentElement.scrollTop))}\n.popbox{position:fixed;z-index:100;width:470px;font-size:14px;border:3px solid #ef421a;background:#fff;}\n* html .popbox{position:absolute;top:expression(eval(document.documentElement.scrollTop)+110)}\n.popbox .pop-head{height:50px;line-height:50px;position:relative;}\n.popbox .pop-head h2{padding:0 18px;font-size:18px;font-family:'微软雅黑';color:#535353;}\n.popbox .pop-head .pop-close{width:21px;height:21px;display:block;cursor:pointer;position:absolute;top:50%;margin-top:-11px;right:15px;background:url(../images/pop_sprices.png) no-repeat 0 0;}\n.popbox .pop-foot{text-align:center;padding:0 15px 30px 15px;}\n.popbox .pop-foot .btn{width:120px;}\n.pop-body{padding:15px;}\n.pop-body .icon-cue{width:29px;height:29px;display:inline-block;*display:inline;*zoom:1;background:url(../images/popbox_sprices.png) no-repeat -1px -24px;vertical-align:middle;margin-right:8px;}\n.pop-body .icon-suc{width:29px;height:30px;display:inline-block;*display:inline;*zoom:1;background:url(../images/popbox_sprices.png) no-repeat -1px -119px;vertical-align:middle;margin-right:8px;}\n.pop-body .icon-fai{width:29px;height:30px;display:inline-block;*display:inline;*zoom:1;background:url(../images/popbox_sprices.png) no-repeat -1px -85px;vertical-align:middle;margin-right:8px;}\n.pop-massage{padding:30px 0 20px 0;text-align:center;}\n/*popform*/\n.pop-form .text-box{width:120px;height:18px;padding:2px;line-height:18px;border:1px solid #ccc;}\n.pop-form .select-box{width:126px;height:22px;border:1px solid #ccc;}\n.pop-form .textarea-box{width:535px;height:54px;padding:3px;border:1px solid #ccc;}\n.pop-form .pop-form-btn{margin-top:26px;text-align:right;}\n.pop-form .pop-form-btn .btn{width:120px;font-size:14px;font-weight:bold;}\n/*pop-login*/\n.pop-login-cut{border-top:1px solid #dfdfdf;border-bottom:1px solid #dfdfdf;}\n.pop-login-cut li{float:left;width:50%;text-align:center;line-height:48px;font-size:14px;background-color:#f7f7f7;cursor:pointer;}\n.pop-login-cut .current{color:#fff;background-color:#ef4218;}\n.pop-login-form{width:385px;margin:0 auto;padding-top:20px;color:#606060;}\n.pop-login-form p{padding-bottom:10px;}\n.pop-login-form .tyhz{padding:2px 0 12px 0;}\n.pop-login-form .sub-btn{padding-bottom:20px;}\n.pop-login-form .label{display:inline-block;*display:inline;*zoom:1;width:89px;font-size:14px; font-family:'宋体';}\n.pop-login-form .label em{margin-right:8px;}\n.pop-login-form .text-box{height:34px;line-height:34px;text-indent:4px;border:1px solid #dfdfdf;}\n.pop-login-form .code-img{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;margin-top:5px;margin-left:15px;}\n.pop-login-form .code-img img{width:48px;height:31px;}\n.pop-login-form .cg{margin-left:15px;color:#3399e0;}\n.pop-login-form .cg:hover{color:#f30;}\n.pop-login-form .btn{width:122px;border-radius:2px;}\n.pop-login-form .btn-red{background-color:#ff3300;}\n.pop-login-form .btn-red:hover{background-color:#e94609;}\n.pop-login-extra{width:385px;margin:0 auto;padding:15px 0;text-align:center;border-top:1px dotted #d0d0d0;color:#606060;}\n.pop-login-extra a{margin-left:15px;color:#f30;text-decoration:underline;}\n.pop-login-form .gt{width:33px;height:14px;line-height:1em;margin-left:15px;}\n\n/*通用模块（框架）*/\n.module .module-head{background:#f2f2f2;padding:15px;}\n.module .module-head h2{font-size:14px;font-weight:bold;}\n.module .module-head h2 .sub-text{font-weight:normal;padding:0 30px;}\n.module .module-body{border:1px solid #ccc;border-top:3px solid #f30;background:#fff;}\n\n/*表单*/\n.ymall-form{padding:20px;font-size:14px;color:#666;}\n.ymall-form p{height:45px;}\n.ymall-form .label{display:inline-block;*display:inline;*zoom:1;width:126px;font-family:'宋体';text-align:right;vertical-align:middle;}\n.ymall-form .label em{margin-right:5px;}\n.ymall-form .tt{margin-left:5px;font-size:12px;color:#999;}\n.ymall-form .text-boxS{width:120px;height:20px;line-height:20px;padding:4px;border:1px solid #dfdfdf;font-size:14px;}\n.ymall-form .text-boxM{width:278px;height:20px;line-height:20px;padding:4px;border:1px solid #dfdfdf;font-size:14px;}\n.ymall-form .text-boxL{width:417px;height:20px;line-height:20px;padding:4px;border:1px solid #dfdfdf;font-size:14px;}\n.ymall-form .select-box{height:22px;border:1px solid #dfdfdf;}\n.ymall-form .ck-box{margin:4px 4px 0 0;vertical-align:top;*vertical-align:-1px;}\n.ymall-form .sub-btn{height:36px;line-height:36px;padding:0 30px;*padding:0 15px;font-size:14px;border-radius:0;}\n\n/*tabs*/\n.ymall-cut{height:40px;border:1px solid #ccc;background:#fbfbfb;}\n.ymall-cut li{width:130px;height:20px;line-height:20px;border-right:1px dotted #d2d2d2;overflow:hidden;margin-top:10px;font-size:14px;font-weight:bold;float:left;text-align:center;cursor:pointer;}\n.ymall-cut li:hover{color:#e94609;}\n.ymall-cut .current{height:38px;line-height:38px;margin-top:-1px;margin-left:-1px;color:#e94609;background:#fff;border-top:2px solid #f30;border-left:1px solid #ddd;border-right:1px solid #ddd;}\n.ymall-tab{padding:20px;}\n\n/*翻页*/\n.pages{text-align:center;}\n.pages a{display:inline-block;*zoom:1;*display:inline;width:30px;padding:5px 0;margin-left:5px;font-family:\"宋体\";background:url(../images/page-bg.png) no-repeat;}\n.pages .page-action{width:66px;}\n.pages .page-num{background-position:0 -127px;}\n.pages .selected{background:none;}\n.pages .page-prev{background-position:0 -31px;}\n.pages .page-prev-unable{background-position:0 0;cursor:default;}\n.pages .page-prev-unable:hover{color:#333;text-decoration:none;}\n.pages .page-next{background-position:0 -95px;}\n.pages .page-next-unable{background-position:0 -62px;}\n.pages .page-next-unable:hover{color:#333;text-decoration:none;}\n\n/*面包屑*/\n.breadcrumb{padding-left:10px;padding-bottom:15px;font-family:\"宋体\";color:#858585;}\n.breadcrumb a{color:#858585;}\n.breadcrumb a:hover{color:#f30;}\n\n/*温馨提示*/\n.reminder{padding:20px 35px;margin-bottom:30px;line-height:30px;color:#666;background-color:#fbfbfb;}\n.reminder h3{font-weight:bold;}\n\n/*提示信息*/\n.alarm{border:1px solid #ff9900;padding:20px;color:#ff6600;background:#ffffcc;}\n.prompt{padding:20px;color:#666;background:#fff;overflow:hidden;border:1px solid #ddd;}\n.warning{border:1px solid #ff0000;padding:20px;color:#ff0000;background:#ffff99;}\n\n.hello-notice{display:none!important;}"
  },
  {
    "path": "src/taoshop-portal/src/main/resources/static/css/reg-login.css",
    "content": "﻿@charset \"utf-8\";\n\n.login-reg-page .siteLogo{margin-left:100px;}\n.login-reg-section{width:985px;margin:0 auto 30px;border:4px solid #eaeaea;font-size:14px;color:#606060;}\n.login-reg-main{position:relative;padding:25px 45px 25px 0;}\n.login-pic{position:absolute;left:0;top:25px;}\n.login{margin-left:548px;width:390px;border:1px solid #dfdfdf;}\n.login-hd li{float:left;width:195px;height:40px;border-bottom:1px solid #dfdfdf;text-align:center;line-height:40px;cursor:pointer;background:#f7f7f7;}\n.login-hd .current{color:#fff;background:#ef4218;}\n.login-bd{height:266px;padding:18px 25px 0 30px;}\n.login-bd .login-tips{font-size:12px;color:#ef4218;}\n.login-box-phone{padding-bottom:25px;}\n.forms-box p{margin-top:12px;line-height:32px;}\n.forms-box .label{display:inline-block;width:90px;padding-right:5px;text-align:right;font-family:simsun;}\n.forms-box .required{display:inline-block;margin-right:10px;color:#ef4218;font-weight:normal;}\n.forms-box .user-text{width:200px;height:28px;border:1px solid #dfdfdf;padding-left:3px;line-height:28px;}\n.forms-box .user-pwd{width:126px;}\n.forms-box .user-code{width:78px;}\n.forms-box .code-img{width:40px;height:26px;margin:0 8px;vertical-align:-9px;}\n.forms-box .smsCapt{font-size:12px;}\n.forms-box .input-tips{margin-left:5px;color:#3399e0;font-size:12px;}\n.forms-box .input-tips:hover{color:#f30;}\n.forms-box .get-pwd{display:inline-block;width:58px;height:24px;margin-left:17px;font-size:12px;line-height:24px;vertical-align:middle;}\n.forms-box .pwd-type{margin:0 5px;font-size:12px;}\n.forms-box .enter-btn{width:116px;height:31px;cursor:pointer;}\n.forms-box .reg-tips{margin-top:20px;padding-top:6px;padding-bottom:11px;border-top:1px dotted #d0d0d0;text-align:center;}\n.forms-box .reg-now{margin-left:5px;color:#3399e0;text-decoration:underline;}\n.forms-box .reg-now:hover{color:#f30;}\n\n.reg-main{padding:25px 45px; }\n.reg-top{padding-left:28px;border-bottom:1px dotted #d0d0d0;}\n.reg-top-tit{color:#ef4218;font:18px/20px \"Microsoft Yahei\";}\n.reg-top-tips{padding:20px 0;font-size:12px;}\n.reg-forms{padding:30px 0 30px 90px;border-bottom:1px dotted #d0d0d0;}\n.reg-forms .user-pwd{width:200px;}\n.reg-forms-tips{font-size:12px;}\n\n/***统一按钮***/\n.brown-btn{border-radius:2px;color:#fff;text-align:center;background:#b67136;}\n.brown-btn:hover,.brown-btn:active{color:#fff;background:#9f5e27;}\n\n.orange-btn{border:1px solid #ff3300;border-radius:2px;color:#fff;text-align:center;background:#ff3300;}\n.orange-btn:hover,.orange-btn:active{color:#fff;background:#ef4218;}\n\n.forms-box .entry{margin-left:15px;font-size:12px;color:#3399e0;text-decoration:underline;}\n.forms-box .entry:hover{color:#f30;}\n\n/**成功绑定**/\n.binding-cue{padding:35px 0;text-align:center;}\n.binding-cue .icon-cue{display:inline-block;*display:inline;*zoom:1;width:44px;height:40px;overflow:hidden;background:url(../images/login-reg-bg.png) no-repeat 0 -72px;vertical-align:top;margin:-8px 20px 0 0;}\n.binding-cue .btn-action{padding-top:30px;}\n.binding-cue .btn-action .btn-red{padding:9px 24px;border-radius:5px;background-color:#f65730;}\n.binding-cue .btn-action .btn-red:hover{background-color:#f30;}\n/**电信手机初次登录**/\n.reg-binding{float:left;width:365px;margin-top:10px;}\n.reg-binding .reg-top{padding-left:10px;}\n.reg-binding .reg-top-tips{padding:15px 0;}\n.reg-binding .reg-forms{padding:5px 0 0 10px;border-bottom:0;}\n.reg-binding .reg-forms p{margin-top:10px;}\n.reg-binding .reg-forms .action{float:right;margin-right:44px;color:#3399e0;}\n.reg-binding .reg-forms .action:hover{color:#f30;}\n.reg-binding .reg-forms .j-massage{display:block;line-height:18px;padding-top:5px;padding-left:95px;font-size:12px;color:#f40;}\n.reg-binding .reg-forms .reg-forms-tips{margin-top:25px;padding-top:5px;border-top:1px dotted #d0d0d0;}\n.reg-binding .reg-forms .reg-forms-tips a{text-decoration:underline;color:#3399e0;}\n.reg-binding .reg-forms .reg-forms-tips a:hover{color:#f30;}\n.direct-binding{float:right;width:355px;margin-top:25px;padding:30px;border:3px solid #eaeaea;}\n.direct-binding .reg-top{padding-left:10px;}\n.direct-binding .reg-top-tit{padding:0 0 15px 0;color:#606060;}\n.direct-binding .reg-forms{padding:5px 0 0 10px;border-bottom:0;}\n.direct-binding .forms-box .label{display:block;width:auto;text-align:left;}\n.direct-binding .reg-forms .j-massage{display:block;line-height:18px;padding-top:5px;padding-left:0;font-size:12px;color:#f40;}\n"
  },
  {
    "path": "src/taoshop-portal/src/main/resources/static/css/user.css",
    "content": "﻿@charset \"utf-8\";\n\n.user{padding:20px 0;}\n.user-aside{width:230px;float:left;padding:10px 0;background:#fbfbfb;}\n.user-aside .user-list-items{padding:0 18px;margin-bottom:18px;}\n.user-list-items .user-list-tit{border-bottom:1px solid #e7e7e7;color:#333;font:18px/45px \"Microsoft Yahei\";}\n.user-list-items li{margin-top:15px;font-size:14px;}\n.user-list-items li a{border-left:2px solid #fbfbfb;padding-left:10px;}\n.user-list-items .cur a,.user-list-items li a:hover{border-left:2px solid #f76a48;color:#f76a48;}\n\n.user-main{width:950px;float:right;}\n.user-main .user-info{height:80px;padding:18px 25px;border:1px solid #dfdfdf;}\n.user-info .user-avatar{vertical-align:middle; cursor:pointer;}\n.user-info .user-name{margin:0 30px;color:#333;font:20px/30px \"Microsoft Yahei\";}\n.user-info .user-welcome{color:#666;font:16px/30px \"Microsoft Yahei\";}\n\n.user-about-items{margin-top:15px;border:1px solid #dfdfdf;}\n.user-about-items .user-about-hd{height:40px;border-bottom:1px solid #dfdfdf;background:#fbfbfb;}\n.user-about-hd .user-about-tit{float:left;padding-left:16px;font:bold 14px/40px \"宋体\";}\n.user-about-hd .view-cart{float:right;margin:13px 14px 0 0;color:#ef4218;}\n.user-about-bd{font-size:14px;}\n.user-about-none{padding:45px 0;color:#8c8c8c;text-align:center;}\n.user-about-none a{color:#ef4218;}\n\n.orders-table{width:96%;margin:0 auto;}\n.orders-table td{padding:28px 0;vertical-align:middle;border-bottom:1px solid #f8f8f8;}\n.orders-table .orders-pic-td{padding-left:15px;}\n.orders-table .tc{text-align:center;}\n.orders-table .orders-pic{width:58px;height:58px;border:1px solid #e5e5e5;}\n.orders-table .orders-price,.orders-table .orders-detail{display:inline-block;padding:16px 35px;border-left:1px dotted #b8b8b8;}\n.orders-table .orders-price{color:#919191;}\n.orders-table .orders-detail{border-right:1px dotted #b8b8b8;color:#919191;text-decoration:underline;}\n.paid-orders-table .orders-detail{border-right:none;}\n.buynow{padding:8px 28px;}\n\n.my-cart{width:950px;overflow:hidden;}\n.my-cart-list{width:1000px;padding:30px 0 15px;}\n.my-cart-list li{float:left;width:120px;margin-left:35px;font-size:12px;line-height:30px;}\n.my-cart-list img{width:103px;height:103px;border:1px solid #e5e5e5;}\n.my-cart-list img:hover{border:1px solid #ef4218;}\n.my-cart-list a{color:#707070;}\n.my-cart-list a:hover{color:#ef4218;}\n\n.user-bread-crumbs{padding-top:13px;border-bottom:1px solid #d5d5d5;}\n.bread-crumbs-tit{color:#666;font:18px/40px \"Microsoft Yahei\";}\n.my-address{width:952px;padding-top:25px;overflow:hidden;}\n.address-section{width:1100px;padding-bottom:200px;}\n.my-address .address-box{position:relative;float:left;width:298px;height:192px;border:1px solid #dfdfdf;margin-left:10px;margin-right:6px;margin-bottom:25px;color:#999;font-size:14px;background:#fbfbfb;}\n.my-address .address-add,.my-address .address-info,.my-address .address-edit{position:absolute;top:0;left:0;display:none;}\n.my-address .address-add{text-align:center;width:100%;height:100%;}\n.my-address .address-add-control{display:inline-block;width:60px;margin-top:25px;padding-top:90px;background:url(../images/add-address.png) center center no-repeat;}\n.my-address .address-add a{color:#999;}\n.address-info{padding:15px 10px;}\n.address-info p{padding:10px 0;}\n.address-info .important-info{border-bottom:1px solid #d5d5d5;color:#666;}\n.important-info .phone{float:right;}\n.address-action a{margin-right:10px;padding:6px 28px;}\n.address-action .address-confirm{padding:6px 15px;}\n.address-info .location-info,.address-info .address-action{padding-left:6px;}\n.my-address .address-edit{left:-1px;top:-1px;width:250px;padding:20px 22px;color:#999;border:3px solid #f3f3f3;overflow:hidden;background:#fff;}\n.address-edit p{margin-bottom:12px;}\n.address-edit .address-text{width:242px;height:28px;line-height:28px;border:1px solid #e7e7e7;padding-left:10px;}\n.address-edit .address-text-area{height:100px;resize:none;}\n.address-edit .address-province,.address-edit .address-city{width:123px;border:1px solid #e7e7e7;}\n.address-edit .address-district{width:254px;border:1px solid #e7e7e7;}\n\n.address-add-box .address-add{display:block;}\n.address-info-box .address-info{display:block;}\n.address-edit-box .address-edit{display:block;}\n\n.my-orders-items{margin-top:15px;line-height:35px;}\n.orders-info-table{border:1px solid #dfdfdf;font-size:14px;}\n.orders-info-table th{border-bottom:1px solid #dfdfdf;padding-left:15px;color:#666;background:#fbfbfb;}\n.orders-info-table .orders-items-status{color:#ef4218;}\n.orders-info-table .orders-items-number,.orders-info-table .orders-items-time{margin:0 20px;}\n.orders-info-table td{border:1px solid #dfdfdf;padding:5px 0;text-align:center;vertical-align:middle;}\n.orders-info-table .orders-items-descri{padding-left:30px;text-align:left;border-left:none;}\n.orders-info-table .orders-items-pic{border-right:none;}\n.orders-info-table .orders-pic{width:58px;height:58px;border:1px solid #e5e5e5;margin-top:15px;}\n.orders-info-table .orders-items-price,.orders-info-table .my-number{color:#ef4218;}\n.orders-info-table .orders-items-price{margin-right:5px;}\n.orders-info-table .orders-items-num{margin-left:5px;}\n.my-orders-link{text-decoration:underline;margin:0 5px;}\n.my-orders-detail{color:#ef4218;}\n.my-orders-cancel{color:#00469d;}\n.orders-items-descri p{color:#999;font-size:12px;line-height:22px;}\n.orders-detail-table th{text-align:center;}\n.orders-total-info{padding:15px 28px 15px 0;text-align:right;line-height:35px;}\n.orders-total-des{display:inline-block;width:120px;color:#ef4218;}\n.orders-total-des strong{font:bold 20px/50px \"宋体\";}\n.order-about-item{margin:0 5px;color:#999;}\n.order-item-price{margin-left:3px;color:#ef4218;}\n\n.receive-info{margin:18px 0;padding:18px 0 18px 38px;line-height:32px;background:#fbfbfb;}\n\n.application-table{margin-top:25px;}\n.application-table th{border-top:2px solid #ea4621;padding:10px 0 10px 22px;font-size:14px;font-weight:bold;color:#787878;background:#fff7e5;}\n.application-table td{line-height:45px;font-size:14px;vertical-align:middle;}\n.application-table .key-td{padding-right:10px;text-align:right;}\n.application-table label{margin-right:40px;vertical-align:middle;}\n.application-table .return-type{margin-right:5px;}\n.application-table .form-text{width:285px;height:26px;border:1px solid #dfdfdf;padding-left:3px;line-height:28px;}\n.application-table .form-text-area{height:115px;resize:none;}\n.application-table .note{color:#fe0000;}\n.application-table .submit-form{border:0 none;padding:8px 32px;font-size:14px;overflow:visible;cursor:pointer;}\n\n/***统一按钮***/\n.gray-btn{border:1px solid #e3e3e3;border-radius:2px;color:#666;text-align:center;background:#fff;}\n.gray-btn:hover,.gray-btn:active{color:#666;background:#f8f8f8;}\n\n.orange-btn{border:1px solid #ff3300;border-radius:2px;color:#fff;text-align:center;background:#ff3300;}\n.orange-btn:hover,.orange-btn:active{color:#fff;background:#ef4218;}\n\n/**找回密码**/\n.gb-password{margin-bottom:50px;padding-top:40px;}\n.gb-password h3{padding-bottom:3px;text-indent:9px;font-size:18px;font-family:'微软雅黑';color:#656565;}\n.gb-password .gb-password-main{padding:20px;border:1px solid #cfcfcf;}\n.gb-password-proBar{width:1000px;height:29px;line-height:29px;margin:0 auto 60px;background:url(../images/parbar.png) no-repeat;}\n.bar02{background-position:0 -29px;}\n.bar03{background-position:0 -58px;}\n.bar04{background-position:0 -87px;}\n.gb-password-proBar span{display:block;width:270px;text-align:center;float:left;font-size:18px;font-family:'微软雅黑';color:#fff;}\n.gb-password-proBar .ft{width:250px}\n.gb-password-proBar .lt{width:185px}\n.gb-password-proBar .cur{color:#ff8601;}\n.gb-password-form{width:400px;margin:0 auto;padding-bottom:30px;}\n.gb-password-form .gb-password-tip{display:inline-block;*display:inline;*zoom:1;padding:0 8px;margin-bottom:20px;font-size:14px;line-height:24px;border:1px solid #b9b9b9;background:url(../images/kengdie_sheji.png) repeat-x;}\n.gb-password-form .gb-password-tip a{font-family:'宋体';color:#087cdf;}\n.gb-password-form  p{padding-bottom:15px;}\n.gb-password-form .label{display:inline-block;width:112px;text-align:right;font-size:14px;color:#333;}\n.gb-password-form .text-box{text-indent:3px;height:30px;line-height:30px;border:1px solid #dfdfdf;}\n.gb-password-form .code-img{display:inline-block;*display:inline;*zoom:1;width:50px;height:30px;vertical-align:middle;margin:2px 0 0 10px;}\n.gb-password-form .code-img img{width:50px;height:28px;}\n.gb-password-form .entry{display:inline-block;*display:inline;*zoom:1;margin-left:15px;line-height:32px;}\n.gb-password-form .entry a{color:#3399e0;}\n.gb-password-form .entry a:hover{color:#f30;}\n.gb-password-form .sub-btn{font-size:14px;}\n.gb-password-suc{width:400px;margin:0 auto;padding-bottom:40px;font-size:14px;}\n.gb-password-suc .emall{padding-bottom:20px;text-align:center;font-family:'宋体';}\n.gb-password-suc .reset{padding-bottom:20px;text-align:center;font-size:14px;color:#18b71c;}\n.gb-password-suc .reset-btn{padding-bottom:20px;text-align:center;}\n.gb-password-suc .btn-red{font-size:14px;}\n.gb-password-suc .tips{line-height:24px;}\n.gb-password-suc .icon-suc{display:inline-block;*display:inline;*zoom:1;width:35px;height:29px;background:url(../images/xdyz.png) no-repeat;vertical-align:top;margin:-6px 5px 0 0;}\n.user-main .gb-password-form{padding:30px 275px 20px 275px;background-color:#fbfbfb;}\n.user-main .gb-password-suc{padding:50px 275px 40px 275px;background-color:#fbfbfb;}\n\n/**安全中心**/\n.safe-center{margin-bottom:40px;border:1px solid #dfdfdf;border-bottom:0;}\n.safe-center h2{padding:6px;font-size:16px;text-indent:10px;font-weight:bold;border-bottom:1px solid #dfdfdf;background-color:#fbfbfb;}\n.safe-plate{padding:20px 0;border-bottom:1px solid #dfdfdf;}\n.safe-plate .safe-plate-method{float:left;padding:0 40px;height:70px;line-height:70px;font-size:20px;font-weight:bold;border-right:1px solid #dfdfdf;}\n.safe-plate .safe-plate-method .icon-password{display:inline-block;*display:inline;*zoom:1;width:35px;height:38px;overflow:hidden;background:url(../images/safe_plate.png) no-repeat;vertical-align:top;margin:14px 10px 0 0;}\n.safe-plate .safe-plate-method .icon-email{display:inline-block;*display:inline;*zoom:1;width:35px;height:38px;overflow:hidden;background:url(../images/safe_plate.png) no-repeat 0 -38px;vertical-align:top;margin:14px 10px 0 0;}\n.safe-plate .safe-plate-method .icon-tel{display:inline-block;*display:inline;*zoom:1;width:35px;height:38px;overflow:hidden;background:url(../images/safe_plate.png) no-repeat 0 -76px;vertical-align:top;margin:14px 10px 0 0;}\n.safe-plate .safe-plate-span{float:left;padding:0 40px;height:70px;line-height:70px;overflow:hidden;font-size:14px;white-space:nowrap;}\n.safe-plate .safe-plate-action{float:right;padding-right:40px;line-height:70px;font-size:14px;}\n\n/**验证手机**/\n.code-proBar {height:29px;line-height:29px;overflow:hidden;margin:0 auto 10px;background:url(../images/code_parbar.png) no-repeat;}\n.bar02{background-position:0 -29px;}\n.bar03{background-position:0 -58px;}\n.code-proBar span{display:block;width:310px;text-align:center;float:left;font-size:18px;font-family:'微软雅黑';color:#fff;}\n.code-proBar .ft{width:305px}\n.code-proBar .lt{width:335px}\n.code-proBar .cur{color:#ff8601;}\n.code-main{padding:20px;border:1px solid #cfcfcf;}\n.code-cue{font-size:14px;padding:35px 0;text-align:center;}\n.code-cue .icon-cue{display:inline-block;*display:inline;*zoom:1;width:44px;height:40px;overflow:hidden;background:url(../images/login-reg-bg.png) no-repeat 0 -72px;vertical-align:top;margin:-8px 20px 0 0;}\n.code-main .gb-password-form,.code-main .gb-password-suc{padding:30px 255px 20px 255px;background-color:#fff;}\n.gb-password-form .j-massage{display:block;line-height:18px;padding-top:5px;padding-left:115px;font-size:12px;color:#f40;}\n.code-main .gb-password-form .btn-coffee{padding:6px 15px;}"
  },
  {
    "path": "src/taoshop-portal/src/main/resources/static/css/you_like.css",
    "content": "@charset \"utf-8\";\n.you-like{float:left;width:225px;}\n.you-like h3{height:40px;line-height:40px;border-bottom:1px solid #ccc;font-size:18px;font-family:'微软雅黑';text-indent:10px;}\n.you-like-list{padding:0 15px;}\n.you-like-item{padding:10px 0;border-bottom:1px dotted #ddd;word-break:break-all;}\n.you-like-item .item-img{text-align:center;}\n.you-like-item .item-img,.you-like-item .item-img img{width:110px;height:110px;margin:0 auto;}\n.you-like-item .item-info a{color:#666;display:block;text-align:center;}\n.you-like-item .item-info a:hover{color:#f30;}\n.you-like-item .item-price{text-align:center;color:#ef4e2d;}"
  },
  {
    "path": "src/taoshop-portal/src/main/resources/static/js/html5.js",
    "content": "(function(){if(!/*@cc_on!@*/0)return;var e = \"abbr,article,aside,audio,canvas,datalist,details,dialog,eventsource,figure,footer,header,hgroup,mark,menu,meter,nav,output,progress,section,time,video\".split(','),i=e.length;while(i--){document.createElement(e[i])}})()"
  },
  {
    "path": "src/taoshop-portal/src/main/resources/static/js/jquery.cookie.js",
    "content": "/*!\n * jQuery Cookie Plugin v1.4.1\n * https://github.com/carhartl/jquery-cookie\n *\n * Copyright 2006, 2014 Klaus Hartl\n * Released under the MIT license\n */\n(function (factory) {\n\tif (typeof define === 'function' && define.amd) {\n\t\t// AMD\n\t\tdefine(['jquery'], factory);\n\t} else if (typeof exports === 'object') {\n\t\t// CommonJS\n\t\tfactory(require('jquery'));\n\t} else {\n\t\t// Browser globals\n\t\tfactory(jQuery);\n\t}\n}(function ($) {\n\n\tvar pluses = /\\+/g;\n\n\tfunction encode(s) {\n\t\treturn config.raw ? s : encodeURIComponent(s);\n\t}\n\n\tfunction decode(s) {\n\t\treturn config.raw ? s : decodeURIComponent(s);\n\t}\n\n\tfunction stringifyCookieValue(value) {\n\t\treturn encode(config.json ? JSON.stringify(value) : String(value));\n\t}\n\n\tfunction parseCookieValue(s) {\n\t\tif (s.indexOf('\"') === 0) {\n\t\t\t// This is a quoted cookie as according to RFC2068, unescape...\n\t\t\ts = s.slice(1, -1).replace(/\\\\\"/g, '\"').replace(/\\\\\\\\/g, '\\\\');\n\t\t}\n\n\t\ttry {\n\t\t\t// Replace server-side written pluses with spaces.\n\t\t\t// If we can't decode the cookie, ignore it, it's unusable.\n\t\t\t// If we can't parse the cookie, ignore it, it's unusable.\n\t\t\ts = decodeURIComponent(s.replace(pluses, ' '));\n\t\t\treturn config.json ? JSON.parse(s) : s;\n\t\t} catch(e) {}\n\t}\n\n\tfunction read(s, converter) {\n\t\tvar value = config.raw ? s : parseCookieValue(s);\n\t\treturn $.isFunction(converter) ? converter(value) : value;\n\t}\n\n\tvar config = $.cookie = function (key, value, options) {\n\n\t\t// Write\n\n\t\tif (arguments.length > 1 && !$.isFunction(value)) {\n\t\t\toptions = $.extend({}, config.defaults, options);\n\n\t\t\tif (typeof options.expires === 'number') {\n\t\t\t\tvar days = options.expires, t = options.expires = new Date();\n\t\t\t\tt.setTime(+t + days * 864e+5);\n\t\t\t}\n\n\t\t\treturn (document.cookie = [\n\t\t\t\tencode(key), '=', stringifyCookieValue(value),\n\t\t\t\toptions.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE\n\t\t\t\toptions.path    ? '; path=' + options.path : '',\n\t\t\t\toptions.domain  ? '; domain=' + options.domain : '',\n\t\t\t\toptions.secure  ? '; secure' : ''\n\t\t\t].join(''));\n\t\t}\n\n\t\t// Read\n\n\t\tvar result = key ? undefined : {};\n\n\t\t// To prevent the for loop in the first place assign an empty array\n\t\t// in case there are no cookies at all. Also prevents odd result when\n\t\t// calling $.cookie().\n\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\n\t\tfor (var i = 0, l = cookies.length; i < l; i++) {\n\t\t\tvar parts = cookies[i].split('=');\n\t\t\tvar name = decode(parts.shift());\n\t\t\tvar cookie = parts.join('=');\n\n\t\t\tif (key && key === name) {\n\t\t\t\t// If second argument (value) is a function it's a converter...\n\t\t\t\tresult = read(cookie, value);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// Prevent storing a cookie that we couldn't decode.\n\t\t\tif (!key && (cookie = read(cookie)) !== undefined) {\n\t\t\t\tresult[name] = cookie;\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\tconfig.defaults = {};\n\n\t$.removeCookie = function (key, options) {\n\t\tif ($.cookie(key) === undefined) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Must not alter options, thus extending a fresh object...\n\t\t$.cookie(key, '', $.extend({}, options, { expires: -1 }));\n\t\treturn !$.cookie(key);\n\t};\n\n}));\n"
  },
  {
    "path": "src/taoshop-portal/src/main/resources/static/js/jquery.js",
    "content": "/*!\n * jQuery JavaScript Library v1.7.2\n * http://jquery.com/\n *\n * Copyright 2011, John Resig\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n * Copyright 2011, The Dojo Foundation\n * Released under the MIT, BSD, and GPL Licenses.\n *\n * Date: Wed Mar 21 12:46:34 2012 -0700\n */\n(function( window, undefined ) {\n\n// Use the correct document accordingly with window argument (sandbox)\nvar document = window.document,\n\tnavigator = window.navigator,\n\tlocation = window.location;\nvar jQuery = (function() {\n\n// Define a local copy of jQuery\nvar jQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n\t},\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// A simple way to check for HTML strings or ID strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\tquickExpr = /^(?:[^#<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)/,\n\n\t// Check if a string has a non-whitespace character in it\n\trnotwhite = /\\S/,\n\n\t// Used for trimming whitespace\n\ttrimLeft = /^\\s+/,\n\ttrimRight = /\\s+$/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\n\t// Useragent RegExp\n\trwebkit = /(webkit)[ \\/]([\\w.]+)/,\n\tropera = /(opera)(?:.*version)?[ \\/]([\\w.]+)/,\n\trmsie = /(msie) ([\\w.]+)/,\n\trmozilla = /(mozilla)(?:.*? rv:([\\w.]+))?/,\n\n\t// Matches dashed string for camelizing\n\trdashAlpha = /-([a-z]|[0-9])/ig,\n\trmsPrefix = /^-ms-/,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn ( letter + \"\" ).toUpperCase();\n\t},\n\n\t// Keep a UserAgent string for use with jQuery.browser\n\tuserAgent = navigator.userAgent,\n\n\t// For matching the engine and version of the browser\n\tbrowserMatch,\n\n\t// The deferred used on DOM ready\n\treadyList,\n\n\t// The ready event handler\n\tDOMContentLoaded,\n\n\t// Save a reference to some core methods\n\ttoString = Object.prototype.toString,\n\thasOwn = Object.prototype.hasOwnProperty,\n\tpush = Array.prototype.push,\n\tslice = Array.prototype.slice,\n\ttrim = String.prototype.trim,\n\tindexOf = Array.prototype.indexOf,\n\n\t// [[Class]] -> type pairs\n\tclass2type = {};\n\njQuery.fn = jQuery.prototype = {\n\tconstructor: jQuery,\n\tinit: function( selector, context, rootjQuery ) {\n\t\tvar match, elem, ret, doc;\n\n\t\t// Handle $(\"\"), $(null), or $(undefined)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// The body element only exists once, optimize finding it\n\t\tif ( selector === \"body\" && !context && document.body ) {\n\t\t\tthis.context = document;\n\t\t\tthis[0] = document.body;\n\t\t\tthis.selector = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\t// Are we dealing with HTML string or an ID?\n\t\t\tif ( selector.charAt(0) === \"<\" && selector.charAt( selector.length - 1 ) === \">\" && selector.length >= 3 ) {\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = quickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Verify a match, and that no context was specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\t\t\t\t\tdoc = ( context ? context.ownerDocument || context : document );\n\n\t\t\t\t\t// If a single string is passed in and it's a single tag\n\t\t\t\t\t// just do a createElement and skip the rest\n\t\t\t\t\tret = rsingleTag.exec( selector );\n\n\t\t\t\t\tif ( ret ) {\n\t\t\t\t\t\tif ( jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\t\tselector = [ document.createElement( ret[1] ) ];\n\t\t\t\t\t\t\tjQuery.fn.attr.call( selector, context, true );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tselector = [ doc.createElement( ret[1] ) ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret = jQuery.buildFragment( [ match[1] ], [ doc ] );\n\t\t\t\t\t\tselector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.merge( this, selector );\n\n\t\t\t\t// HANDLE: $(\"#id\")\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || rootjQuery ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.7.2\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\ttoArray: function() {\n\t\treturn slice.call( this, 0 );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = this.constructor();\n\n\t\tif ( jQuery.isArray( elems ) ) {\n\t\t\tpush.apply( ret, elems );\n\n\t\t} else {\n\t\t\tjQuery.merge( ret, elems );\n\t\t}\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" ) {\n\t\t\tret.selector = this.selector + ( this.selector ? \" \" : \"\" ) + selector;\n\t\t} else if ( name ) {\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\t\t}\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tready: function( fn ) {\n\t\t// Attach the listeners\n\t\tjQuery.bindReady();\n\n\t\t// Add the callback\n\t\treadyList.add( fn );\n\n\t\treturn this;\n\t},\n\n\teq: function( i ) {\n\t\ti = +i;\n\t\treturn i === -1 ?\n\t\t\tthis.slice( i ) :\n\t\t\tthis.slice( i, i + 1 );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ),\n\t\t\t\"slice\", slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\tif ( window.$ === jQuery ) {\n\t\t\twindow.$ = _$;\n\t\t}\n\n\t\tif ( deep && window.jQuery === jQuery ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\t\t// Either a released hold or an DOMready/load event and not yet ready\n\t\tif ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {\n\t\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\t\tif ( !document.body ) {\n\t\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t\t}\n\n\t\t\t// Remember that the DOM is ready\n\t\t\tjQuery.isReady = true;\n\n\t\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If there are functions bound, to execute\n\t\t\treadyList.fireWith( document, [ jQuery ] );\n\n\t\t\t// Trigger any bound ready events\n\t\t\tif ( jQuery.fn.trigger ) {\n\t\t\t\tjQuery( document ).trigger( \"ready\" ).off( \"ready\" );\n\t\t\t}\n\t\t}\n\t},\n\n\tbindReady: function() {\n\t\tif ( readyList ) {\n\t\t\treturn;\n\t\t}\n\n\t\treadyList = jQuery.Callbacks( \"once memory\" );\n\n\t\t// Catch cases where $(document).ready() is called after the\n\t\t// browser event has already occurred.\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t}\n\n\t\t// Mozilla, Opera and webkit nightlies currently support this event\n\t\tif ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", jQuery.ready, false );\n\n\t\t// If IE event model is used\n\t\t} else if ( document.attachEvent ) {\n\t\t\t// ensure firing before onload,\n\t\t\t// maybe late but safe also for iframes\n\t\t\tdocument.attachEvent( \"onreadystatechange\", DOMContentLoaded );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", jQuery.ready );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar toplevel = false;\n\n\t\t\ttry {\n\t\t\t\ttoplevel = window.frameElement == null;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( document.documentElement.doScroll && toplevel ) {\n\t\t\t\tdoScrollCheck();\n\t\t\t}\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\tisWindow: function( obj ) {\n\t\treturn obj != null && obj == obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\t\treturn !isNaN( parseFloat(obj) ) && isFinite( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\treturn obj == null ?\n\t\t\tString( obj ) :\n\t\t\tclass2type[ toString.call(obj) ] || \"object\";\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// Not own constructor property must be Object\n\t\t\tif ( obj.constructor &&\n\t\t\t\t!hasOwn.call(obj, \"constructor\") &&\n\t\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\n\t\tvar key;\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tfor ( var name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tparseJSON: function( data ) {\n\t\tif ( typeof data !== \"string\" || !data ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\tdata = jQuery.trim( data );\n\n\t\t// Attempt to parse using the native JSON parser first\n\t\tif ( window.JSON && window.JSON.parse ) {\n\t\t\treturn window.JSON.parse( data );\n\t\t}\n\n\t\t// Make sure the incoming data is actual JSON\n\t\t// Logic borrowed from http://json.org/json2.js\n\t\tif ( rvalidchars.test( data.replace( rvalidescape, \"@\" )\n\t\t\t.replace( rvalidtokens, \"]\" )\n\t\t\t.replace( rvalidbraces, \"\")) ) {\n\n\t\t\treturn ( new Function( \"return \" + data ) )();\n\n\t\t}\n\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t},\n\n\t// Cross-browser xml parsing\n\tparseXML: function( data ) {\n\t\tif ( typeof data !== \"string\" || !data ) {\n\t\t\treturn null;\n\t\t}\n\t\tvar xml, tmp;\n\t\ttry {\n\t\t\tif ( window.DOMParser ) { // Standard\n\t\t\t\ttmp = new DOMParser();\n\t\t\t\txml = tmp.parseFromString( data , \"text/xml\" );\n\t\t\t} else { // IE\n\t\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\t\txml.async = \"false\";\n\t\t\t\txml.loadXML( data );\n\t\t\t}\n\t\t} catch( e ) {\n\t\t\txml = undefined;\n\t\t}\n\t\tif ( !xml || !xml.documentElement || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\t\tjQuery.error( \"Invalid XML: \" + data );\n\t\t}\n\t\treturn xml;\n\t},\n\n\tnoop: function() {},\n\n\t// Evaluates a script in a global context\n\t// Workarounds based on findings by Jim Driscoll\n\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\n\tglobalEval: function( data ) {\n\t\tif ( data && rnotwhite.test( data ) ) {\n\t\t\t// We use execScript on Internet Explorer\n\t\t\t// We use an anonymous function so that context is window\n\t\t\t// rather than jQuery in Firefox\n\t\t\t( window.execScript || function( data ) {\n\t\t\t\twindow[ \"eval\" ].call( window, data );\n\t\t\t} )( data );\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( object, callback, args ) {\n\t\tvar name, i = 0,\n\t\t\tlength = object.length,\n\t\t\tisObj = length === undefined || jQuery.isFunction( object );\n\n\t\tif ( args ) {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn object;\n\t},\n\n\t// Use native String.trim function wherever possible\n\ttrim: trim ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttrim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttext.toString().replace( trimLeft, \"\" ).replace( trimRight, \"\" );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( array, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( array != null ) {\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930\n\t\t\tvar type = jQuery.type( array );\n\n\t\t\tif ( array.length == null || type === \"string\" || type === \"function\" || type === \"regexp\" || jQuery.isWindow( array ) ) {\n\t\t\t\tpush.call( ret, array );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, array );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, array, i ) {\n\t\tvar len;\n\n\t\tif ( array ) {\n\t\t\tif ( indexOf ) {\n\t\t\t\treturn indexOf.call( array, elem, i );\n\t\t\t}\n\n\t\t\tlen = array.length;\n\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t// Skip accessing in sparse arrays\n\t\t\t\tif ( i in array && array[ i ] === elem ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar i = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof second.length === \"number\" ) {\n\t\t\tfor ( var l = second.length; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar ret = [], retVal;\n\t\tinv = !!inv;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar value, key, ret = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\t// jquery objects are treated as arrays\n\t\t\tisArray = elems instanceof jQuery || length !== undefined && typeof length === \"number\" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;\n\n\t\t// Go through the array, translating each of the items to their\n\t\tif ( isArray ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( key in elems ) {\n\t\t\t\tvalue = callback( elems[ key ], key, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn ret.concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tif ( typeof context === \"string\" ) {\n\t\t\tvar tmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\tvar args = slice.call( arguments, 2 ),\n\t\t\tproxy = function() {\n\t\t\t\treturn fn.apply( context, args.concat( slice.call( arguments ) ) );\n\t\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\t// Mutifunctional method to get and set values to a collection\n\t// The value/s can optionally be executed if it's a function\n\taccess: function( elems, fn, key, value, chainable, emptyGet, pass ) {\n\t\tvar exec,\n\t\t\tbulk = key == null,\n\t\t\ti = 0,\n\t\t\tlength = elems.length;\n\n\t\t// Sets many values\n\t\tif ( key && typeof key === \"object\" ) {\n\t\t\tfor ( i in key ) {\n\t\t\t\tjQuery.access( elems, fn, i, key[i], 1, emptyGet, value );\n\t\t\t}\n\t\t\tchainable = 1;\n\n\t\t// Sets one value\n\t\t} else if ( value !== undefined ) {\n\t\t\t// Optionally, function values get executed if exec is true\n\t\t\texec = pass === undefined && jQuery.isFunction( value );\n\n\t\t\tif ( bulk ) {\n\t\t\t\t// Bulk operations only iterate when executing function values\n\t\t\t\tif ( exec ) {\n\t\t\t\t\texec = fn;\n\t\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\t\treturn exec.call( jQuery( elem ), value );\n\t\t\t\t\t};\n\n\t\t\t\t// Otherwise they run against the entire set\n\t\t\t\t} else {\n\t\t\t\t\tfn.call( elems, value );\n\t\t\t\t\tfn = null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( fn ) {\n\t\t\t\tfor (; i < length; i++ ) {\n\t\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchainable = 1;\n\t\t}\n\n\t\treturn chainable ?\n\t\t\telems :\n\n\t\t\t// Gets\n\t\t\tbulk ?\n\t\t\t\tfn.call( elems ) :\n\t\t\t\tlength ? fn( elems[0], key ) : emptyGet;\n\t},\n\n\tnow: function() {\n\t\treturn ( new Date() ).getTime();\n\t},\n\n\t// Use of jQuery.browser is frowned upon.\n\t// More details: http://docs.jquery.com/Utilities/jQuery.browser\n\tuaMatch: function( ua ) {\n\t\tua = ua.toLowerCase();\n\n\t\tvar match = rwebkit.exec( ua ) ||\n\t\t\tropera.exec( ua ) ||\n\t\t\trmsie.exec( ua ) ||\n\t\t\tua.indexOf(\"compatible\") < 0 && rmozilla.exec( ua ) ||\n\t\t\t[];\n\n\t\treturn { browser: match[1] || \"\", version: match[2] || \"0\" };\n\t},\n\n\tsub: function() {\n\t\tfunction jQuerySub( selector, context ) {\n\t\t\treturn new jQuerySub.fn.init( selector, context );\n\t\t}\n\t\tjQuery.extend( true, jQuerySub, this );\n\t\tjQuerySub.superclass = this;\n\t\tjQuerySub.fn = jQuerySub.prototype = this();\n\t\tjQuerySub.fn.constructor = jQuerySub;\n\t\tjQuerySub.sub = this.sub;\n\t\tjQuerySub.fn.init = function init( selector, context ) {\n\t\t\tif ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {\n\t\t\t\tcontext = jQuerySub( context );\n\t\t\t}\n\n\t\t\treturn jQuery.fn.init.call( this, selector, context, rootjQuerySub );\n\t\t};\n\t\tjQuerySub.fn.init.prototype = jQuerySub.fn;\n\t\tvar rootjQuerySub = jQuerySub(document);\n\t\treturn jQuerySub;\n\t},\n\n\tbrowser: {}\n});\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nbrowserMatch = jQuery.uaMatch( userAgent );\nif ( browserMatch.browser ) {\n\tjQuery.browser[ browserMatch.browser ] = true;\n\tjQuery.browser.version = browserMatch.version;\n}\n\n// Deprecated, use jQuery.browser.webkit instead\nif ( jQuery.browser.webkit ) {\n\tjQuery.browser.safari = true;\n}\n\n// IE doesn't match non-breaking spaces with \\s\nif ( rnotwhite.test( \"\\xA0\" ) ) {\n\ttrimLeft = /^[\\s\\xA0]+/;\n\ttrimRight = /[\\s\\xA0]+$/;\n}\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n\n// Cleanup functions for the document ready method\nif ( document.addEventListener ) {\n\tDOMContentLoaded = function() {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\tjQuery.ready();\n\t};\n\n} else if ( document.attachEvent ) {\n\tDOMContentLoaded = function() {\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\tdocument.detachEvent( \"onreadystatechange\", DOMContentLoaded );\n\t\t\tjQuery.ready();\n\t\t}\n\t};\n}\n\n// The DOM ready check for Internet Explorer\nfunction doScrollCheck() {\n\tif ( jQuery.isReady ) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\t// If IE is used, use the trick by Diego Perini\n\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\tdocument.documentElement.doScroll(\"left\");\n\t} catch(e) {\n\t\tsetTimeout( doScrollCheck, 1 );\n\t\treturn;\n\t}\n\n\t// and execute any waiting functions\n\tjQuery.ready();\n}\n\nreturn jQuery;\n\n})();\n\n\n// String to Object flags format cache\nvar flagsCache = {};\n\n// Convert String-formatted flags into Object-formatted ones and store in cache\nfunction createFlags( flags ) {\n\tvar object = flagsCache[ flags ] = {},\n\t\ti, length;\n\tflags = flags.split( /\\s+/ );\n\tfor ( i = 0, length = flags.length; i < length; i++ ) {\n\t\tobject[ flags[i] ] = true;\n\t}\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\tflags:\tan optional list of space-separated flags that will change how\n *\t\t\tthe callback list behaves\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible flags:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( flags ) {\n\n\t// Convert flags from String-formatted to Object-formatted\n\t// (we check in cache first)\n\tflags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {};\n\n\tvar // Actual callback list\n\t\tlist = [],\n\t\t// Stack of fire calls for repeatable lists\n\t\tstack = [],\n\t\t// Last fire value (for non-forgettable lists)\n\t\tmemory,\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\t\t// Flag to know if list is currently firing\n\t\tfiring,\n\t\t// First callback to fire (used internally by add and fireWith)\n\t\tfiringStart,\n\t\t// End of the loop when firing\n\t\tfiringLength,\n\t\t// Index of currently firing callback (modified by remove if needed)\n\t\tfiringIndex,\n\t\t// Add one or several callbacks to the list\n\t\tadd = function( args ) {\n\t\t\tvar i,\n\t\t\t\tlength,\n\t\t\t\telem,\n\t\t\t\ttype,\n\t\t\t\tactual;\n\t\t\tfor ( i = 0, length = args.length; i < length; i++ ) {\n\t\t\t\telem = args[ i ];\n\t\t\t\ttype = jQuery.type( elem );\n\t\t\t\tif ( type === \"array\" ) {\n\t\t\t\t\t// Inspect recursively\n\t\t\t\t\tadd( elem );\n\t\t\t\t} else if ( type === \"function\" ) {\n\t\t\t\t\t// Add if not in unique mode and callback is not in\n\t\t\t\t\tif ( !flags.unique || !self.has( elem ) ) {\n\t\t\t\t\t\tlist.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Fire callbacks\n\t\tfire = function( context, args ) {\n\t\t\targs = args || [];\n\t\t\tmemory = !flags.memory || [ context, args ];\n\t\t\tfired = true;\n\t\t\tfiring = true;\n\t\t\tfiringIndex = firingStart || 0;\n\t\t\tfiringStart = 0;\n\t\t\tfiringLength = list.length;\n\t\t\tfor ( ; list && firingIndex < firingLength; firingIndex++ ) {\n\t\t\t\tif ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) {\n\t\t\t\t\tmemory = true; // Mark as halted\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfiring = false;\n\t\t\tif ( list ) {\n\t\t\t\tif ( !flags.once ) {\n\t\t\t\t\tif ( stack && stack.length ) {\n\t\t\t\t\t\tmemory = stack.shift();\n\t\t\t\t\t\tself.fireWith( memory[ 0 ], memory[ 1 ] );\n\t\t\t\t\t}\n\t\t\t\t} else if ( memory === true ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t} else {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Actual Callbacks object\n\t\tself = {\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tvar length = list.length;\n\t\t\t\t\tadd( arguments );\n\t\t\t\t\t// Do we need to add the callbacks to the\n\t\t\t\t\t// current firing batch?\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tfiringLength = list.length;\n\t\t\t\t\t// With memory, if we're not firing then\n\t\t\t\t\t// we should call right away, unless previous\n\t\t\t\t\t// firing was halted (stopOnFalse)\n\t\t\t\t\t} else if ( memory && memory !== true ) {\n\t\t\t\t\t\tfiringStart = length;\n\t\t\t\t\t\tfire( memory[ 0 ], memory[ 1 ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tvar args = arguments,\n\t\t\t\t\t\targIndex = 0,\n\t\t\t\t\t\targLength = args.length;\n\t\t\t\t\tfor ( ; argIndex < argLength ; argIndex++ ) {\n\t\t\t\t\t\tfor ( var i = 0; i < list.length; i++ ) {\n\t\t\t\t\t\t\tif ( args[ argIndex ] === list[ i ] ) {\n\t\t\t\t\t\t\t\t// Handle firingIndex and firingLength\n\t\t\t\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\t\t\t\tif ( i <= firingLength ) {\n\t\t\t\t\t\t\t\t\t\tfiringLength--;\n\t\t\t\t\t\t\t\t\t\tif ( i <= firingIndex ) {\n\t\t\t\t\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Remove the element\n\t\t\t\t\t\t\t\tlist.splice( i--, 1 );\n\t\t\t\t\t\t\t\t// If we have some unicity property then\n\t\t\t\t\t\t\t\t// we only need to do this once\n\t\t\t\t\t\t\t\tif ( flags.unique ) {\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Control if a given callback is in the list\n\t\t\thas: function( fn ) {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tvar i = 0,\n\t\t\t\t\t\tlength = list.length;\n\t\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\t\tif ( fn === list[ i ] ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tlist = [];\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Have the list do nothing anymore\n\t\t\tdisable: function() {\n\t\t\t\tlist = stack = memory = undefined;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it disabled?\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\t\t\t// Lock the list in its current state\n\t\t\tlock: function() {\n\t\t\t\tstack = undefined;\n\t\t\t\tif ( !memory || memory === true ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it locked?\n\t\t\tlocked: function() {\n\t\t\t\treturn !stack;\n\t\t\t},\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( stack ) {\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tif ( !flags.once ) {\n\t\t\t\t\t\t\tstack.push( [ context, args ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if ( !( flags.once && memory ) ) {\n\t\t\t\t\t\tfire( context, args );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\n\n\nvar // Static reference to slice\n\tsliceDeferred = [].slice;\n\njQuery.extend({\n\n\tDeferred: function( func ) {\n\t\tvar doneList = jQuery.Callbacks( \"once memory\" ),\n\t\t\tfailList = jQuery.Callbacks( \"once memory\" ),\n\t\t\tprogressList = jQuery.Callbacks( \"memory\" ),\n\t\t\tstate = \"pending\",\n\t\t\tlists = {\n\t\t\t\tresolve: doneList,\n\t\t\t\treject: failList,\n\t\t\t\tnotify: progressList\n\t\t\t},\n\t\t\tpromise = {\n\t\t\t\tdone: doneList.add,\n\t\t\t\tfail: failList.add,\n\t\t\t\tprogress: progressList.add,\n\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\n\t\t\t\t// Deprecated\n\t\t\t\tisResolved: doneList.fired,\n\t\t\t\tisRejected: failList.fired,\n\n\t\t\t\tthen: function( doneCallbacks, failCallbacks, progressCallbacks ) {\n\t\t\t\t\tdeferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tpipe: function( fnDone, fnFail, fnProgress ) {\n\t\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( {\n\t\t\t\t\t\t\tdone: [ fnDone, \"resolve\" ],\n\t\t\t\t\t\t\tfail: [ fnFail, \"reject\" ],\n\t\t\t\t\t\t\tprogress: [ fnProgress, \"notify\" ]\n\t\t\t\t\t\t}, function( handler, data ) {\n\t\t\t\t\t\t\tvar fn = data[ 0 ],\n\t\t\t\t\t\t\t\taction = data[ 1 ],\n\t\t\t\t\t\t\t\treturned;\n\t\t\t\t\t\t\tif ( jQuery.isFunction( fn ) ) {\n\t\t\t\t\t\t\t\tdeferred[ handler ](function() {\n\t\t\t\t\t\t\t\t\treturned = fn.apply( this, arguments );\n\t\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\t\treturned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify );\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tnewDefer[ action + \"With\" ]( this === deferred ? newDefer : this, [ returned ] );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdeferred[ handler ]( newDefer[ action ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}).promise();\n\t\t\t\t},\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\tif ( obj == null ) {\n\t\t\t\t\t\tobj = promise;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfor ( var key in promise ) {\n\t\t\t\t\t\t\tobj[ key ] = promise[ key ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn obj;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = promise.promise({}),\n\t\t\tkey;\n\n\t\tfor ( key in lists ) {\n\t\t\tdeferred[ key ] = lists[ key ].fire;\n\t\t\tdeferred[ key + \"With\" ] = lists[ key ].fireWith;\n\t\t}\n\n\t\t// Handle state\n\t\tdeferred.done( function() {\n\t\t\tstate = \"resolved\";\n\t\t}, failList.disable, progressList.lock ).fail( function() {\n\t\t\tstate = \"rejected\";\n\t\t}, doneList.disable, progressList.lock );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( firstParam ) {\n\t\tvar args = sliceDeferred.call( arguments, 0 ),\n\t\t\ti = 0,\n\t\t\tlength = args.length,\n\t\t\tpValues = new Array( length ),\n\t\t\tcount = length,\n\t\t\tpCount = length,\n\t\t\tdeferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ?\n\t\t\t\tfirstParam :\n\t\t\t\tjQuery.Deferred(),\n\t\t\tpromise = deferred.promise();\n\t\tfunction resolveFunc( i ) {\n\t\t\treturn function( value ) {\n\t\t\t\targs[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdeferred.resolveWith( deferred, args );\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tfunction progressFunc( i ) {\n\t\t\treturn function( value ) {\n\t\t\t\tpValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;\n\t\t\t\tdeferred.notifyWith( promise, pValues );\n\t\t\t};\n\t\t}\n\t\tif ( length > 1 ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) {\n\t\t\t\t\targs[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) );\n\t\t\t\t} else {\n\t\t\t\t\t--count;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !count ) {\n\t\t\t\tdeferred.resolveWith( deferred, args );\n\t\t\t}\n\t\t} else if ( deferred !== firstParam ) {\n\t\t\tdeferred.resolveWith( deferred, length ? [ firstParam ] : [] );\n\t\t}\n\t\treturn promise;\n\t}\n});\n\n\n\n\njQuery.support = (function() {\n\n\tvar support,\n\t\tall,\n\t\ta,\n\t\tselect,\n\t\topt,\n\t\tinput,\n\t\tfragment,\n\t\ttds,\n\t\tevents,\n\t\teventName,\n\t\ti,\n\t\tisSupported,\n\t\tdiv = document.createElement( \"div\" ),\n\t\tdocumentElement = document.documentElement;\n\n\t// Preliminary tests\n\tdiv.setAttribute(\"className\", \"t\");\n\tdiv.innerHTML = \"   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>\";\n\n\tall = div.getElementsByTagName( \"*\" );\n\ta = div.getElementsByTagName( \"a\" )[ 0 ];\n\n\t// Can't get basic test support\n\tif ( !all || !all.length || !a ) {\n\t\treturn {};\n\t}\n\n\t// First batch of supports tests\n\tselect = document.createElement( \"select\" );\n\topt = select.appendChild( document.createElement(\"option\") );\n\tinput = div.getElementsByTagName( \"input\" )[ 0 ];\n\n\tsupport = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: ( div.firstChild.nodeType === 3 ),\n\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText instead)\n\t\tstyle: /top/.test( a.getAttribute(\"style\") ),\n\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: ( a.getAttribute(\"href\") === \"/a\" ),\n\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\t// Use a regex to work around a WebKit issue. See #5145\n\t\topacity: /^0.55/.test( a.style.opacity ),\n\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Make sure that if no value is specified for a checkbox\n\t\t// that it defaults to \"on\".\n\t\t// (WebKit defaults to \"\" instead)\n\t\tcheckOn: ( input.value === \"on\" ),\n\n\t\t// Make sure that a selected-by-default option has a working selected property.\n\t\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\t\toptSelected: opt.selected,\n\n\t\t// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)\n\t\tgetSetAttribute: div.className !== \"t\",\n\n\t\t// Tests for enctype support on a form(#6743)\n\t\tenctype: !!document.createElement(\"form\").enctype,\n\n\t\t// Makes sure cloning an html5 element does not cause problems\n\t\t// Where outerHTML is undefined, this still works\n\t\thtml5Clone: document.createElement(\"nav\").cloneNode( true ).outerHTML !== \"<:nav></:nav>\",\n\n\t\t// Will be defined later\n\t\tsubmitBubbles: true,\n\t\tchangeBubbles: true,\n\t\tfocusinBubbles: false,\n\t\tdeleteExpando: true,\n\t\tnoCloneEvent: true,\n\t\tinlineBlockNeedsLayout: false,\n\t\tshrinkWrapBlocks: false,\n\t\treliableMarginRight: true,\n\t\tpixelMargin: true\n\t};\n\n\t// jQuery.boxModel DEPRECATED in 1.3, use jQuery.support.boxModel instead\n\tjQuery.boxModel = support.boxModel = (document.compatMode === \"CSS1Compat\");\n\n\t// Make sure checked status is properly cloned\n\tinput.checked = true;\n\tsupport.noCloneChecked = input.cloneNode( true ).checked;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as disabled)\n\tselect.disabled = true;\n\tsupport.optDisabled = !opt.disabled;\n\n\t// Test to see if it's possible to delete an expando from an element\n\t// Fails in Internet Explorer\n\ttry {\n\t\tdelete div.test;\n\t} catch( e ) {\n\t\tsupport.deleteExpando = false;\n\t}\n\tvar onclicktmp = null; \n\tif ( !div.addEventListener && div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent( \"onclick\", onclicktmp = function() {\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tsupport.noCloneEvent = false;\n\t\t});\n\t\tdiv.cloneNode( true ).fireEvent( \"onclick\" );\n\t\tdiv.detachEvent( \"onclick\", onclicktmp);  // adamki added\n\t}\n\n\t// Check if a radio maintains its value\n\t// after being appended to the DOM\n\tinput = document.createElement(\"input\");\n\tinput.value = \"t\";\n\tinput.setAttribute(\"type\", \"radio\");\n\tsupport.radioValue = input.value === \"t\";\n\n\tinput.setAttribute(\"checked\", \"checked\");\n\n\t// #11217 - WebKit loses check when the name is after the checked attribute\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\tfragment = document.createDocumentFragment();\n\tfragment.appendChild( div.lastChild );\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Check if a disconnected checkbox will retain its checked\n\t// value of true after appended to the DOM (IE6/7)\n\tsupport.appendChecked = input.checked;\n\n\tfragment.removeChild( input );\n\tfragment.appendChild( div );\n\n\t// Technique from Juriy Zaytsev\n\t// http://perfectionkills.com/detecting-event-support-without-browser-sniffing/\n\t// We only care about the case where non-standard event systems\n\t// are used, namely in IE. Short-circuiting here helps us to\n\t// avoid an eval call (in setAttribute) which can cause CSP\n\t// to go haywire. See: https://developer.mozilla.org/en/Security/CSP\n\tif ( div.attachEvent ) {\n\t\tfor ( i in {\n\t\t\tsubmit: 1,\n\t\t\tchange: 1,\n\t\t\tfocusin: 1\n\t\t}) {\n\t\t\teventName = \"on\" + i;\n\t\t\tisSupported = ( eventName in div );\n\t\t\tif ( !isSupported ) {\n\t\t\t\tdiv.setAttribute( eventName, \"return;\" );\n\t\t\t\tisSupported = ( typeof div[ eventName ] === \"function\" );\n\t\t\t}\n\t\t\tsupport[ i + \"Bubbles\" ] = isSupported;\n\t\t}\n\t}\n\n\tfragment.removeChild( div );\n\n\t// Null elements to avoid leaks in IE\n\tfragment = select = opt = div = input = null;\n\n\t// Run tests that need a body at doc ready\n\tjQuery(function() {\n\t\tvar container, outer, inner, table, td, offsetSupport,\n\t\t\tmarginDiv, conMarginTop, style, html, positionTopLeftWidthHeight,\n\t\t\tpaddingMarginBorderVisibility, paddingMarginBorder,\n\t\t\tbody = document.getElementsByTagName(\"body\")[0];\n\n\t\tif ( !body ) {\n\t\t\t// Return for frameset docs that don't have a body\n\t\t\treturn;\n\t\t}\n\n\t\tconMarginTop = 1;\n\t\tpaddingMarginBorder = \"padding:0;margin:0;border:\";\n\t\tpositionTopLeftWidthHeight = \"position:absolute;top:0;left:0;width:1px;height:1px;\";\n\t\tpaddingMarginBorderVisibility = paddingMarginBorder + \"0;visibility:hidden;\";\n\t\tstyle = \"style='\" + positionTopLeftWidthHeight + paddingMarginBorder + \"5px solid #000;\";\n\t\thtml = \"<div \" + style + \"display:block;'><div style='\" + paddingMarginBorder + \"0;display:block;overflow:hidden;'></div></div>\" +\n\t\t\t\"<table \" + style + \"' cellpadding='0' cellspacing='0'>\" +\n\t\t\t\"<tr><td></td></tr></table>\";\n\n\t\tcontainer = document.createElement(\"div\");\n\t\tcontainer.style.cssText = paddingMarginBorderVisibility + \"width:0;height:0;position:static;top:0;margin-top:\" + conMarginTop + \"px\";\n\t\tbody.insertBefore( container, body.firstChild );\n\n\t\t// Construct the test element\n\t\tdiv = document.createElement(\"div\");\n\t\tcontainer.appendChild( div );\n\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\t// (only IE 8 fails this test)\n\t\tdiv.innerHTML = \"<table><tr><td style='\" + paddingMarginBorder + \"0;display:none'></td><td>t</td></tr></table>\";\n\t\ttds = div.getElementsByTagName( \"td\" );\n\t\tisSupported = ( tds[ 0 ].offsetHeight === 0 );\n\n\t\ttds[ 0 ].style.display = \"\";\n\t\ttds[ 1 ].style.display = \"none\";\n\n\t\t// Check if empty table cells still have offsetWidth/Height\n\t\t// (IE <= 8 fail this test)\n\t\tsupport.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );\n\n\t\t// Check if div with explicit width and no margin-right incorrectly\n\t\t// gets computed margin-right based on width of container. For more\n\t\t// info see bug #3333\n\t\t// Fails in WebKit before Feb 2011 nightlies\n\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\tif ( window.getComputedStyle ) {\n\t\t\tdiv.innerHTML = \"\";\n\t\t\tmarginDiv = document.createElement( \"div\" );\n\t\t\tmarginDiv.style.width = \"0\";\n\t\t\tmarginDiv.style.marginRight = \"0\";\n\t\t\tdiv.style.width = \"2px\";\n\t\t\tdiv.appendChild( marginDiv );\n\t\t\tsupport.reliableMarginRight =\n\t\t\t\t( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0;\n\t\t}\n\n\t\tif ( typeof div.style.zoom !== \"undefined\" ) {\n\t\t\t// Check if natively block-level elements act like inline-block\n\t\t\t// elements when setting their display to 'inline' and giving\n\t\t\t// them layout\n\t\t\t// (IE < 8 does this)\n\t\t\tdiv.innerHTML = \"\";\n\t\t\tdiv.style.width = div.style.padding = \"1px\";\n\t\t\tdiv.style.border = 0;\n\t\t\tdiv.style.overflow = \"hidden\";\n\t\t\tdiv.style.display = \"inline\";\n\t\t\tdiv.style.zoom = 1;\n\t\t\tsupport.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );\n\n\t\t\t// Check if elements with layout shrink-wrap their children\n\t\t\t// (IE 6 does this)\n\t\t\tdiv.style.display = \"block\";\n\t\t\tdiv.style.overflow = \"visible\";\n\t\t\tdiv.innerHTML = \"<div style='width:5px;'></div>\";\n\t\t\tsupport.shrinkWrapBlocks = ( div.offsetWidth !== 3 );\n\t\t}\n\n\t\tdiv.style.cssText = positionTopLeftWidthHeight + paddingMarginBorderVisibility;\n\t\tdiv.innerHTML = html;\n\n\t\touter = div.firstChild;\n\t\tinner = outer.firstChild;\n\t\ttd = outer.nextSibling.firstChild.firstChild;\n\n\t\toffsetSupport = {\n\t\t\tdoesNotAddBorder: ( inner.offsetTop !== 5 ),\n\t\t\tdoesAddBorderForTableAndCells: ( td.offsetTop === 5 )\n\t\t};\n\n\t\tinner.style.position = \"fixed\";\n\t\tinner.style.top = \"20px\";\n\n\t\t// safari subtracts parent border width here which is 5px\n\t\toffsetSupport.fixedPosition = ( inner.offsetTop === 20 || inner.offsetTop === 15 );\n\t\tinner.style.position = inner.style.top = \"\";\n\n\t\touter.style.overflow = \"hidden\";\n\t\touter.style.position = \"relative\";\n\n\t\toffsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 );\n\t\toffsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop );\n\n\t\tif ( window.getComputedStyle ) {\n\t\t\tdiv.style.marginTop = \"1%\";\n\t\t\tsupport.pixelMargin = ( window.getComputedStyle( div, null ) || { marginTop: 0 } ).marginTop !== \"1%\";\n\t\t}\n\n\t\tif ( typeof container.style.zoom !== \"undefined\" ) {\n\t\t\tcontainer.style.zoom = 1;\n\t\t}\n\n\t\tbody.removeChild( container );\n\t\tmarginDiv = div = container = null;\n\n\t\tjQuery.extend( support, offsetSupport );\n\t});\n\n\treturn support;\n})();\n\n\n\n\nvar rbrace = /^(?:\\{.*\\}|\\[.*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\njQuery.extend({\n\tcache: {},\n\n\t// Please use with caution\n\tuuid: 0,\n\n\t// Unique for each copy of jQuery on the page\n\t// Non-digits removed to match rinlinejQuery\n\texpando: \"jQuery\" + ( jQuery.fn.jquery + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"embed\": true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t\"object\": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",\n\t\t\"applet\": true\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar privateCache, thisCache, ret,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tgetByName = typeof name === \"string\",\n\n\t\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t\t// can't GC object references properly across the DOM-JS boundary\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t\t// attached directly to the object so GC can occur automatically\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey,\n\t\t\tisEvents = name === \"events\";\n\n\t\t// Avoid doing any more work than we need to when trying to get data on an\n\t\t// object that has no data at all\n\t\tif ( (!id || !cache[id] || (!isEvents && !pvt && !cache[id].data)) && getByName && data === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !id ) {\n\t\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t\t// ends up in the global cache\n\t\t\tif ( isNode ) {\n\t\t\t\telem[ internalKey ] = id = ++jQuery.uuid;\n\t\t\t} else {\n\t\t\t\tid = internalKey;\n\t\t\t}\n\t\t}\n\n\t\tif ( !cache[ id ] ) {\n\t\t\tcache[ id ] = {};\n\n\t\t\t// Avoids exposing jQuery metadata on plain JS objects when the object\n\t\t\t// is serialized using JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\t\t}\n\n\t\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t\t// shallow copied over onto the existing cache\n\t\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\t\tif ( pvt ) {\n\t\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\n\t\t\t} else {\n\t\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\n\t\t\t}\n\t\t}\n\n\t\tprivateCache = thisCache = cache[ id ];\n\n\t\t// jQuery data() is stored in a separate object inside the object's internal data\n\t\t// cache in order to avoid key collisions between internal data and user-defined\n\t\t// data.\n\t\tif ( !pvt ) {\n\t\t\tif ( !thisCache.data ) {\n\t\t\t\tthisCache.data = {};\n\t\t\t}\n\n\t\t\tthisCache = thisCache.data;\n\t\t}\n\n\t\tif ( data !== undefined ) {\n\t\t\tthisCache[ jQuery.camelCase( name ) ] = data;\n\t\t}\n\n\t\t// Users should not attempt to inspect the internal events object using jQuery.data,\n\t\t// it is undocumented and subject to change. But does anyone listen? No.\n\t\tif ( isEvents && !thisCache[ name ] ) {\n\t\t\treturn privateCache.events;\n\t\t}\n\n\t\t// Check for both converted-to-camel and non-converted data property names\n\t\t// If a data property was specified\n\t\tif ( getByName ) {\n\n\t\t\t// First Try to find as-is property data\n\t\t\tret = thisCache[ name ];\n\n\t\t\t// Test for null|undefined property data\n\t\t\tif ( ret == null ) {\n\n\t\t\t\t// Try to find the camelCased property\n\t\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\n\t\t\t}\n\t\t} else {\n\t\t\tret = thisCache;\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tremoveData: function( elem, name, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar thisCache, i, l,\n\n\t\t\t// Reference to internal data cache key\n\t\t\tinternalKey = jQuery.expando,\n\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tid = isNode ? elem[ internalKey ] : internalKey;\n\n\t\t// If there is already no cache entry for this object, there is no\n\t\t// purpose in continuing\n\t\tif ( !cache[ id ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( name ) {\n\n\t\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\n\n\t\t\tif ( thisCache ) {\n\n\t\t\t\t// Support array or space separated string names for data keys\n\t\t\t\tif ( !jQuery.isArray( name ) ) {\n\n\t\t\t\t\t// try the string as a key before any manipulation\n\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\n\t\t\t\t\t\tname = jQuery.camelCase( name );\n\t\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tname = name.split( \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor ( i = 0, l = name.length; i < l; i++ ) {\n\t\t\t\t\tdelete thisCache[ name[i] ];\n\t\t\t\t}\n\n\t\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t\t// and let the cache object itself get destroyed\n\t\t\t\tif ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// See jQuery.data for more information\n\t\tif ( !pvt ) {\n\t\t\tdelete cache[ id ].data;\n\n\t\t\t// Don't destroy the parent cache unless the internal data object\n\t\t\t// had been the only thing left in it\n\t\t\tif ( !isEmptyDataObject(cache[ id ]) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Browsers that fail expando deletion also refuse to delete expandos on\n\t\t// the window, but it will allow it on all other JS objects; other browsers\n\t\t// don't care\n\t\t// Ensure that `cache` is not a window object #10080\n\t\tif ( jQuery.support.deleteExpando || !cache.setInterval ) {\n\t\t\tdelete cache[ id ];\n\t\t} else {\n\t\t\tcache[ id ] = null;\n\t\t}\n\n\t\t// We destroyed the cache and need to eliminate the expando on the node to avoid\n\t\t// false lookups in the cache for entries that no longer exist\n\t\tif ( isNode ) {\n\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t// we must handle all of these cases\n\t\t\tif ( jQuery.support.deleteExpando ) {\n\t\t\t\tdelete elem[ internalKey ];\n\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\telem.removeAttribute( internalKey );\n\t\t\t} else {\n\t\t\t\telem[ internalKey ] = null;\n\t\t\t}\n\t\t}\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn jQuery.data( elem, name, data, true );\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\tif ( elem.nodeName ) {\n\t\t\tvar match = jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t\tif ( match ) {\n\t\t\t\treturn !(match === true || elem.getAttribute(\"classid\") !== match);\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar parts, part, attr, name, l,\n\t\t\telem = this[0],\n\t\t\ti = 0,\n\t\t\tdata = null;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, \"parsedAttrs\" ) ) {\n\t\t\t\t\tattr = elem.attributes;\n\t\t\t\t\tfor ( l = attr.length; i < l; i++ ) {\n\t\t\t\t\t\tname = attr[i].name;\n\n\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\tname = jQuery.camelCase( name.substring(5) );\n\n\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tjQuery._data( elem, \"parsedAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\tparts = key.split( \".\", 2 );\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\t\tpart = parts[1] + \"!\";\n\n\t\treturn jQuery.access( this, function( value ) {\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\tdata = this.triggerHandler( \"getData\" + part, [ parts[0] ] );\n\n\t\t\t\t// Try to fetch any internally stored data first\n\t\t\t\tif ( data === undefined && elem ) {\n\t\t\t\t\tdata = jQuery.data( elem, key );\n\t\t\t\t\tdata = dataAttr( elem, key, data );\n\t\t\t\t}\n\n\t\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\t\tdata;\n\t\t\t}\n\n\t\t\tparts[1] = value;\n\t\t\tthis.each(function() {\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.triggerHandler( \"setData\" + part, parts );\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t\tself.triggerHandler( \"changeData\" + part, parts );\n\t\t\t});\n\t\t}, null, value, arguments.length > 1, null, false );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\n\t\tvar name = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\n\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\tdata === \"false\" ? false :\n\t\t\t\tdata === \"null\" ? null :\n\t\t\t\tjQuery.isNumeric( data ) ? +data :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// checks a cache object for emptiness\nfunction isEmptyDataObject( obj ) {\n\tfor ( var name in obj ) {\n\n\t\t// if the public data object is empty, the private is still empty\n\t\tif ( name === \"data\" && jQuery.isEmptyObject( obj[name] ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n\n\n\nfunction handleQueueMarkDefer( elem, type, src ) {\n\tvar deferDataKey = type + \"defer\",\n\t\tqueueDataKey = type + \"queue\",\n\t\tmarkDataKey = type + \"mark\",\n\t\tdefer = jQuery._data( elem, deferDataKey );\n\tif ( defer &&\n\t\t( src === \"queue\" || !jQuery._data(elem, queueDataKey) ) &&\n\t\t( src === \"mark\" || !jQuery._data(elem, markDataKey) ) ) {\n\t\t// Give room for hard-coded callbacks to fire first\n\t\t// and eventually mark/queue something else on the element\n\t\tsetTimeout( function() {\n\t\t\tif ( !jQuery._data( elem, queueDataKey ) &&\n\t\t\t\t!jQuery._data( elem, markDataKey ) ) {\n\t\t\t\tjQuery.removeData( elem, deferDataKey, true );\n\t\t\t\tdefer.fire();\n\t\t\t}\n\t\t}, 0 );\n\t}\n}\n\njQuery.extend({\n\n\t_mark: function( elem, type ) {\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"mark\";\n\t\t\tjQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 );\n\t\t}\n\t},\n\n\t_unmark: function( force, elem, type ) {\n\t\tif ( force !== true ) {\n\t\t\ttype = elem;\n\t\t\telem = force;\n\t\t\tforce = false;\n\t\t}\n\t\tif ( elem ) {\n\t\t\ttype = type || \"fx\";\n\t\t\tvar key = type + \"mark\",\n\t\t\t\tcount = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 );\n\t\t\tif ( count ) {\n\t\t\t\tjQuery._data( elem, key, count );\n\t\t\t} else {\n\t\t\t\tjQuery.removeData( elem, key, true );\n\t\t\t\thandleQueueMarkDefer( elem, type, \"mark\" );\n\t\t\t}\n\t\t}\n\t},\n\n\tqueue: function( elem, type, data ) {\n\t\tvar q;\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tq = jQuery._data( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !q || jQuery.isArray(data) ) {\n\t\t\t\t\tq = jQuery._data( elem, type, jQuery.makeArray(data) );\n\t\t\t\t} else {\n\t\t\t\t\tq.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn q || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tfn = queue.shift(),\n\t\t\thooks = {};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\tjQuery._data( elem, type + \".run\", hooks );\n\t\t\tfn.call( elem, function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t}, hooks );\n\t\t}\n\n\t\tif ( !queue.length ) {\n\t\t\tjQuery.removeData( elem, type + \"queue \" + type + \".run\", true );\n\t\t\thandleQueueMarkDefer( elem, type, \"queue\" );\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function( next, hooks ) {\n\t\t\tvar timeout = setTimeout( next, time );\n\t\t\thooks.stop = function() {\n\t\t\t\tclearTimeout( timeout );\n\t\t\t};\n\t\t});\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, object ) {\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobject = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\t\tvar defer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = elements.length,\n\t\t\tcount = 1,\n\t\t\tdeferDataKey = type + \"defer\",\n\t\t\tqueueDataKey = type + \"queue\",\n\t\t\tmarkDataKey = type + \"mark\",\n\t\t\ttmp;\n\t\tfunction resolve() {\n\t\t\tif ( !( --count ) ) {\n\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t}\n\t\t}\n\t\twhile( i-- ) {\n\t\t\tif (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) ||\n\t\t\t\t\t( jQuery.data( elements[ i ], queueDataKey, undefined, true ) ||\n\t\t\t\t\t\tjQuery.data( elements[ i ], markDataKey, undefined, true ) ) &&\n\t\t\t\t\tjQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( \"once memory\" ), true ) )) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( object );\n\t}\n});\n\n\n\n\nvar rclass = /[\\n\\t\\r]/g,\n\trspace = /\\s+/,\n\trreturn = /\\r/g,\n\trtype = /^(?:button|input)$/i,\n\trfocusable = /^(?:button|input|object|select|textarea)$/i,\n\trclickable = /^a(?:rea)?$/i,\n\trboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,\n\tgetSetAttribute = jQuery.support.getSetAttribute,\n\tnodeHook, boolHook, fixSpecified;\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t});\n\t},\n\n\tprop: function( name, value ) {\n\t\treturn jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\tname = jQuery.propFix[ name ] || name;\n\t\treturn this.each(function() {\n\t\t\t// try/catch handles cases where IE balks (such as removing a property on window)\n\t\t\ttry {\n\t\t\t\tthis[ name ] = undefined;\n\t\t\t\tdelete this[ name ];\n\t\t\t} catch( e ) {}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tvar classNames, i, l, elem,\n\t\t\tsetClass, c, cl;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call(this, j, this.className) );\n\t\t\t});\n\t\t}\n\n\t\tif ( value && typeof value === \"string\" ) {\n\t\t\tclassNames = value.split( rspace );\n\n\t\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\telem = this[ i ];\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !elem.className && classNames.length === 1 ) {\n\t\t\t\t\t\telem.className = value;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetClass = \" \" + elem.className + \" \";\n\n\t\t\t\t\t\tfor ( c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tif ( !~setClass.indexOf( \" \" + classNames[ c ] + \" \" ) ) {\n\t\t\t\t\t\t\t\tsetClass += classNames[ c ] + \" \";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, i, l, elem, className, c, cl;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call(this, j, this.className) );\n\t\t\t});\n\t\t}\n\n\t\tif ( (value && typeof value === \"string\") || value === undefined ) {\n\t\t\tclassNames = ( value || \"\" ).split( rspace );\n\n\t\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\telem = this[ i ];\n\n\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n\t\t\t\t\tif ( value ) {\n\t\t\t\t\t\tclassName = (\" \" + elem.className + \" \").replace( rclass, \" \" );\n\t\t\t\t\t\tfor ( c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tclassName = className.replace(\" \" + classNames[ c ] + \" \", \" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( className );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.className = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.split( rspace );\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space seperated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t} else if ( type === \"undefined\" || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// toggle whole className\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \",\n\t\t\ti = 0,\n\t\t\tl = this.length;\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tif ( this[i].nodeType === 1 && (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tvar hooks, ret, isFunction,\n\t\t\telem = this[0];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, \"value\" )) !== undefined ) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\treturn typeof ret === \"string\" ?\n\t\t\t\t\t// handle most common string cases\n\t\t\t\t\tret.replace(rreturn, \"\") :\n\t\t\t\t\t// handle cases where value is null/undef or number\n\t\t\t\t\tret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tisFunction = jQuery.isFunction( value );\n\n\t\treturn this.each(function( i ) {\n\t\t\tvar self = jQuery(this), val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call( this, i, self.val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.isArray( val ) ) {\n\t\t\t\tval = jQuery.map(val, function ( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !(\"set\" in hooks) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// attributes.value is undefined in Blackberry 4.7 but\n\t\t\t\t// uses .value. See #6932\n\t\t\t\tvar val = elem.attributes.value;\n\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, i, max, option,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tvalues = [],\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tone = elem.type === \"select-one\";\n\n\t\t\t\t// Nothing was selected\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\ti = one ? index : 0;\n\t\t\t\tmax = one ? index + 1 : options.length;\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\tif ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null) &&\n\t\t\t\t\t\t\t(!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" )) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Fixes Bug #2551 -- select.val() broken in IE after form.reset()\n\t\t\t\tif ( one && !values.length && options.length ) {\n\t\t\t\t\treturn jQuery( options[ index ] ).val();\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar values = jQuery.makeArray( value );\n\n\t\t\t\tjQuery(elem).find(\"option\").each(function() {\n\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t},\n\n\tattrFn: {\n\t\tval: true,\n\t\tcss: true,\n\t\thtml: true,\n\t\ttext: true,\n\t\tdata: true,\n\t\twidth: true,\n\t\theight: true,\n\t\toffset: true\n\t},\n\n\tattr: function( elem, name, value, pass ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( pass && name in jQuery.attrFn ) {\n\t\t\treturn jQuery( elem )[ name ]( value );\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\t// All attributes are lowercase\n\t\t// Grab necessary hook if one is defined\n\t\tif ( notxml ) {\n\t\t\tname = name.toLowerCase();\n\t\t\thooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\n\t\t\t} else if ( hooks && \"set\" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\telem.setAttribute( name, \"\" + value );\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t} else if ( hooks && \"get\" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\treturn ret;\n\n\t\t} else {\n\n\t\t\tret = elem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn ret === null ?\n\t\t\t\tundefined :\n\t\t\t\tret;\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar propName, attrNames, name, l, isBool,\n\t\t\ti = 0;\n\n\t\tif ( value && elem.nodeType === 1 ) {\n\t\t\tattrNames = value.toLowerCase().split( rspace );\n\t\t\tl = attrNames.length;\n\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tname = attrNames[ i ];\n\n\t\t\t\tif ( name ) {\n\t\t\t\t\tpropName = jQuery.propFix[ name ] || name;\n\t\t\t\t\tisBool = rboolean.test( name );\n\n\t\t\t\t\t// See #9699 for explanation of this approach (setting first, then removal)\n\t\t\t\t\t// Do not do this for boolean attributes (see #10870)\n\t\t\t\t\tif ( !isBool ) {\n\t\t\t\t\t\tjQuery.attr( elem, name, \"\" );\n\t\t\t\t\t}\n\t\t\t\t\telem.removeAttribute( getSetAttribute ? name : propName );\n\n\t\t\t\t\t// Set corresponding property to false for boolean attributes\n\t\t\t\t\tif ( isBool && propName in elem ) {\n\t\t\t\t\t\telem[ propName ] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\tif ( rtype.test( elem.nodeName ) && elem.parentNode ) {\n\t\t\t\t\tjQuery.error( \"type property can't be changed\" );\n\t\t\t\t} else if ( !jQuery.support.radioValue && value === \"radio\" && jQuery.nodeName(elem, \"input\") ) {\n\t\t\t\t\t// Setting the type on a radio button after the value resets the value in IE6-9\n\t\t\t\t\t// Reset value to it's default in case type is set after value\n\t\t\t\t\t// This is for element creation\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Use the value property for back compat\n\t\t// Use the nodeHook for button elements in IE6/7 (#1954)\n\t\tvalue: {\n\t\t\tget: function( elem, name ) {\n\t\t\t\tif ( nodeHook && jQuery.nodeName( elem, \"button\" ) ) {\n\t\t\t\t\treturn nodeHook.get( elem, name );\n\t\t\t\t}\n\t\t\t\treturn name in elem ?\n\t\t\t\t\telem.value :\n\t\t\t\t\tnull;\n\t\t\t},\n\t\t\tset: function( elem, value, name ) {\n\t\t\t\tif ( nodeHook && jQuery.nodeName( elem, \"button\" ) ) {\n\t\t\t\t\treturn nodeHook.set( elem, value, name );\n\t\t\t\t}\n\t\t\t\t// Does not return so that setAttribute is also used\n\t\t\t\telem.value = value;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\ttabindex: \"tabIndex\",\n\t\treadonly: \"readOnly\",\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\",\n\t\tmaxlength: \"maxLength\",\n\t\tcellspacing: \"cellSpacing\",\n\t\tcellpadding: \"cellPadding\",\n\t\trowspan: \"rowSpan\",\n\t\tcolspan: \"colSpan\",\n\t\tusemap: \"useMap\",\n\t\tframeborder: \"frameBorder\",\n\t\tcontenteditable: \"contentEditable\"\n\t},\n\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set properties on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\tif ( notxml ) {\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\treturn ( elem[ name ] = value );\n\t\t\t}\n\n\t\t} else {\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\t\t}\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tvar attributeNode = elem.getAttributeNode(\"tabindex\");\n\n\t\t\t\treturn attributeNode && attributeNode.specified ?\n\t\t\t\t\tparseInt( attributeNode.value, 10 ) :\n\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\tundefined;\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional)\njQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex;\n\n// Hook for boolean attributes\nboolHook = {\n\tget: function( elem, name ) {\n\t\t// Align boolean attributes with corresponding properties\n\t\t// Fall back to attribute presence where some booleans are not supported\n\t\tvar attrNode,\n\t\t\tproperty = jQuery.prop( elem, name );\n\t\treturn property === true || typeof property !== \"boolean\" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?\n\t\t\tname.toLowerCase() :\n\t\t\tundefined;\n\t},\n\tset: function( elem, value, name ) {\n\t\tvar propName;\n\t\tif ( value === false ) {\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\t// value is true since we know at this point it's type boolean and not false\n\t\t\t// Set boolean attributes to the same name and set the DOM property\n\t\t\tpropName = jQuery.propFix[ name ] || name;\n\t\t\tif ( propName in elem ) {\n\t\t\t\t// Only set the IDL specifically if it already exists on the element\n\t\t\t\telem[ propName ] = true;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, name.toLowerCase() );\n\t\t}\n\t\treturn name;\n\t}\n};\n\n// IE6/7 do not support getting/setting some attributes with get/setAttribute\nif ( !getSetAttribute ) {\n\n\tfixSpecified = {\n\t\tname: true,\n\t\tid: true,\n\t\tcoords: true\n\t};\n\n\t// Use this for any attribute in IE6/7\n\t// This fixes almost every IE6/7 issue\n\tnodeHook = jQuery.valHooks.button = {\n\t\tget: function( elem, name ) {\n\t\t\tvar ret;\n\t\t\tret = elem.getAttributeNode( name );\n\t\t\treturn ret && ( fixSpecified[ name ] ? ret.nodeValue !== \"\" : ret.specified ) ?\n\t\t\t\tret.nodeValue :\n\t\t\t\tundefined;\n\t\t},\n\t\tset: function( elem, value, name ) {\n\t\t\t// Set the existing or create a new attribute node\n\t\t\tvar ret = elem.getAttributeNode( name );\n\t\t\tif ( !ret ) {\n\t\t\t\tret = document.createAttribute( name );\n\t\t\t\telem.setAttributeNode( ret );\n\t\t\t}\n\t\t\treturn ( ret.nodeValue = value + \"\" );\n\t\t}\n\t};\n\n\t// Apply the nodeHook to tabindex\n\tjQuery.attrHooks.tabindex.set = nodeHook.set;\n\n\t// Set width and height to auto instead of 0 on empty string( Bug #8150 )\n\t// This is for removals\n\tjQuery.each([ \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\telem.setAttribute( name, \"auto\" );\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\n\t// Set contenteditable to false on removals(#10429)\n\t// Setting to empty string throws an error as an invalid value\n\tjQuery.attrHooks.contenteditable = {\n\t\tget: nodeHook.get,\n\t\tset: function( elem, value, name ) {\n\t\t\tif ( value === \"\" ) {\n\t\t\t\tvalue = \"false\";\n\t\t\t}\n\t\t\tnodeHook.set( elem, value, name );\n\t\t}\n\t};\n}\n\n\n// Some attributes require a special call on IE\nif ( !jQuery.support.hrefNormalized ) {\n\tjQuery.each([ \"href\", \"src\", \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar ret = elem.getAttribute( name, 2 );\n\t\t\t\treturn ret === null ? undefined : ret;\n\t\t\t}\n\t\t});\n\t});\n}\n\nif ( !jQuery.support.style ) {\n\tjQuery.attrHooks.style = {\n\t\tget: function( elem ) {\n\t\t\t// Return undefined in the case of empty string\n\t\t\t// Normalize to lowercase since IE uppercases css property names\n\t\t\treturn elem.style.cssText.toLowerCase() || undefined;\n\t\t},\n\t\tset: function( elem, value ) {\n\t\t\treturn ( elem.style.cssText = \"\" + value );\n\t\t}\n\t};\n}\n\n// Safari mis-reports the default selected property of an option\n// Accessing the parent's selectedIndex property fixes it\nif ( !jQuery.support.optSelected ) {\n\tjQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {\n\t\tget: function( elem ) {\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t});\n}\n\n// IE6/7 call enctype encoding\nif ( !jQuery.support.enctype ) {\n\tjQuery.propFix.enctype = \"encoding\";\n}\n\n// Radios and checkboxes getter/setter\nif ( !jQuery.support.checkOn ) {\n\tjQuery.each([ \"radio\", \"checkbox\" ], function() {\n\t\tjQuery.valHooks[ this ] = {\n\t\t\tget: function( elem ) {\n\t\t\t\t// Handle the case where in Webkit \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t\t}\n\t\t};\n\t});\n}\njQuery.each([ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {\n\t\tset: function( elem, value ) {\n\t\t\tif ( jQuery.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );\n\t\t\t}\n\t\t}\n\t});\n});\n\n\n\n\nvar rformElems = /^(?:textarea|input|select)$/i,\n\trtypenamespace = /^([^\\.]*)?(?:\\.(.+))?$/,\n\trhoverHack = /(?:^|\\s)hover(\\.\\S+)?\\b/,\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|contextmenu)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\trquickIs = /^(\\w*)(?:#([\\w\\-]+))?(?:\\.([\\w\\-]+))?$/,\n\tquickParse = function( selector ) {\n\t\tvar quick = rquickIs.exec( selector );\n\t\tif ( quick ) {\n\t\t\t//   0  1    2   3\n\t\t\t// [ _, tag, id, class ]\n\t\t\tquick[1] = ( quick[1] || \"\" ).toLowerCase();\n\t\t\tquick[3] = quick[3] && new RegExp( \"(?:^|\\\\s)\" + quick[3] + \"(?:\\\\s|$)\" );\n\t\t}\n\t\treturn quick;\n\t},\n\tquickIs = function( elem, m ) {\n\t\tvar attrs = elem.attributes || {};\n\t\treturn (\n\t\t\t(!m[1] || elem.nodeName.toLowerCase() === m[1]) &&\n\t\t\t(!m[2] || (attrs.id || {}).value === m[2]) &&\n\t\t\t(!m[3] || m[3].test( (attrs[ \"class\" ] || {}).value ))\n\t\t);\n\t},\n\thoverHack = function( events ) {\n\t\treturn jQuery.event.special.hover ? events : events.replace( rhoverHack, \"mouseenter$1 mouseleave$1\" );\n\t};\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar elemData, eventHandle, events,\n\t\t\tt, tns, type, namespaces, handleObj,\n\t\t\thandleObjIn, quick, handlers, special;\n\n\t\t// Don't attach events to noData or text/comment nodes (allow plain objects tho)\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tevents = elemData.events;\n\t\tif ( !events ) {\n\t\t\telemData.events = events = {};\n\t\t}\n\t\teventHandle = elemData.handle;\n\t\tif ( !eventHandle ) {\n\t\t\telemData.handle = eventHandle = function( e ) {\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && (!e || jQuery.event.triggered !== e.type) ?\n\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t\t// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events\n\t\t\teventHandle.elem = elem;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\ttypes = jQuery.trim( hoverHack(types) ).split( \" \" );\n\t\tfor ( t = 0; t < types.length; t++ ) {\n\n\t\t\ttns = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = tns[1];\n\t\t\tnamespaces = ( tns[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend({\n\t\t\t\ttype: type,\n\t\t\t\torigType: tns[1],\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tquick: selector && quickParse( selector ),\n\t\t\t\tnamespace: namespaces.join(\".\")\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\thandlers = events[ type ];\n\t\t\tif ( !handlers ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener/attachEvent if the special events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar elemData = jQuery.hasData( elem ) && jQuery._data( elem ),\n\t\t\tt, tns, type, origType, namespaces, origCount,\n\t\t\tj, events, special, handle, eventType, handleObj;\n\n\t\tif ( !elemData || !(events = elemData.events) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = jQuery.trim( hoverHack( types || \"\" ) ).split(\" \");\n\t\tfor ( t = 0; t < types.length; t++ ) {\n\t\t\ttns = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tns[1];\n\t\t\tnamespaces = tns[2];\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector? special.delegateType : special.bindType ) || type;\n\t\t\teventType = events[ type ] || [];\n\t\t\torigCount = eventType.length;\n\t\t\tnamespaces = namespaces ? new RegExp(\"(^|\\\\.)\" + namespaces.split(\".\").sort().join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\") : null;\n\n\t\t\t// Remove matching events\n\t\t\tfor ( j = 0; j < eventType.length; j++ ) {\n\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t ( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t ( !namespaces || namespaces.test( handleObj.namespace ) ) &&\n\t\t\t\t\t ( !selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\teventType.splice( j--, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\teventType.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( eventType.length === 0 && origCount !== eventType.length ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\thandle = elemData.handle;\n\t\t\tif ( handle ) {\n\t\t\t\thandle.elem = null;\n\t\t\t}\n\n\t\t\t// removeData also checks for emptiness and clears the expando if empty\n\t\t\t// so use it instead of delete\n\t\t\tjQuery.removeData( elem, [ \"events\", \"handle\" ], true );\n\t\t}\n\t},\n\n\t// Events that are safe to short-circuit if no handlers are attached.\n\t// Native DOM events should not be added, they may have inline handlers.\n\tcustomEvent: {\n\t\t\"getData\": true,\n\t\t\"setData\": true,\n\t\t\"changeData\": true\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Event object or event type\n\t\tvar type = event.type || event,\n\t\t\tnamespaces = [],\n\t\t\tcache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType;\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \"!\" ) >= 0 ) {\n\t\t\t// Exclusive events trigger only for the exact event (no namespaces)\n\t\t\ttype = type.slice(0, -1);\n\t\t\texclusive = true;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) >= 0 ) {\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split(\".\");\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\n\t\tif ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {\n\t\t\t// No jQuery handlers for this event type, and it can't have inline handlers\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an Event, Object, or just an event type string\n\t\tevent = typeof event === \"object\" ?\n\t\t\t// jQuery.Event object\n\t\t\tevent[ jQuery.expando ] ? event :\n\t\t\t// Object literal\n\t\t\tnew jQuery.Event( type, event ) :\n\t\t\t// Just the event type (string)\n\t\t\tnew jQuery.Event( type );\n\n\t\tevent.type = type;\n\t\tevent.isTrigger = true;\n\t\tevent.exclusive = exclusive;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.namespace_re = event.namespace? new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\") : null;\n\t\tontype = type.indexOf( \":\" ) < 0 ? \"on\" + type : \"\";\n\n\t\t// Handle a global trigger\n\t\tif ( !elem ) {\n\n\t\t\t// TODO: Stop taunting the data cache; remove global events and always attach to document\n\t\t\tcache = jQuery.cache;\n\t\t\tfor ( i in cache ) {\n\t\t\t\tif ( cache[ i ].events && cache[ i ].events[ type ] ) {\n\t\t\t\t\tjQuery.event.trigger( event, data, cache[ i ].handle.elem, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data != null ? jQuery.makeArray( data ) : [];\n\t\tdata.unshift( event );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\teventPath = [[ elem, special.bindType || type ]];\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tcur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode;\n\t\t\told = null;\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push([ cur, bubbleType ]);\n\t\t\t\told = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( old && old === elem.ownerDocument ) {\n\t\t\t\teventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]);\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\tfor ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) {\n\n\t\t\tcur = eventPath[i][0];\n\t\t\tevent.type = eventPath[i][1];\n\n\t\t\thandle = ( jQuery._data( cur, \"events\" ) || {} )[ event.type ] && jQuery._data( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\t\t\t// Note that this is a bare JS function and not a jQuery handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && jQuery.acceptData( cur ) && handle.apply( cur, data ) === false ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&\n\t\t\t\t!(type === \"click\" && jQuery.nodeName( elem, \"a\" )) && jQuery.acceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Can't use an .isFunction() check here because IE6/7 fails that test.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486)\n\t\t\t\tif ( ontype && elem[ type ] && ((type !== \"focus\" && type !== \"blur\") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\told = elem[ ontype ];\n\n\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\telem[ type ]();\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\telem[ ontype ] = old;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event || window.event );\n\n\t\tvar handlers = ( (jQuery._data( this, \"events\" ) || {} )[ event.type ] || []),\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\targs = [].slice.call( arguments, 0 ),\n\t\t\trun_all = !event.exclusive && !event.namespace,\n\t\t\tspecial = jQuery.event.special[ event.type ] || {},\n\t\t\thandlerQueue = [],\n\t\t\ti, j, cur, jqcur, ret, selMatch, matched, matches, handleObj, sel, related;\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[0] = event;\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers that should run if there are delegated events\n\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n\t\tif ( delegateCount && !(event.button && event.type === \"click\") ) {\n\n\t\t\t// Pregenerate a single jQuery object for reuse with .is()\n\t\t\tjqcur = jQuery(this);\n\t\t\tjqcur.context = this.ownerDocument || this;\n\n\t\t\tfor ( cur = event.target; cur != this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't process events on disabled elements (#6911, #8165)\n\t\t\t\tif ( cur.disabled !== true ) {\n\t\t\t\t\tselMatch = {};\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tjqcur[0] = cur;\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\t\t\t\t\t\tsel = handleObj.selector;\n\n\t\t\t\t\t\tif ( selMatch[ sel ] === undefined ) {\n\t\t\t\t\t\t\tselMatch[ sel ] = (\n\t\t\t\t\t\t\t\thandleObj.quick ? quickIs( cur, handleObj.quick ) : jqcur.is( sel )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( selMatch[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push({ elem: cur, matches: matches });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( handlers.length > delegateCount ) {\n\t\t\thandlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) });\n\t\t}\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\tfor ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) {\n\t\t\tmatched = handlerQueue[ i ];\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tfor ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) {\n\t\t\t\thandleObj = matched.matches[ j ];\n\n\t\t\t\t// Triggered event must either 1) be non-exclusive and have no namespace, or\n\t\t\t\t// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.data = handleObj.data;\n\t\t\t\t\tevent.handleObj = handleObj;\n\n\t\t\t\t\tret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )\n\t\t\t\t\t\t\t.apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tevent.result = ret;\n\t\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\t// *** attrChange attrName relatedNode srcElement  are not normalized, non-W3C, deprecated, will be removed in 1.8 ***\n\tprops: \"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: \"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\t\t\tvar eventDoc, doc, body,\n\t\t\t\tbutton = original.button,\n\t\t\t\tfromElement = original.fromElement;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );\n\t\t\t}\n\n\t\t\t// Add relatedTarget, if necessary\n\t\t\tif ( !event.relatedTarget && fromElement ) {\n\t\t\t\tevent.relatedTarget = fromElement === event.target ? original.toElement : fromElement;\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = jQuery.event.fixHooks[ event.type ] || {},\n\t\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( i = copy.length; i; ) {\n\t\t\tprop = copy[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)\n\t\tif ( !event.target ) {\n\t\t\tevent.target = originalEvent.srcElement || document;\n\t\t}\n\n\t\t// Target should not be a text node (#504, Safari)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// For mouse/key events; add metaKey if it's not there (#3368, IE6/7/8)\n\t\tif ( event.metaKey === undefined ) {\n\t\t\tevent.metaKey = event.ctrlKey;\n\t\t}\n\n\t\treturn fixHook.filter? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\tspecial: {\n\t\tready: {\n\t\t\t// Make sure the ready event is setup\n\t\t\tsetup: jQuery.bindReady\n\t\t},\n\n\t\tload: {\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\n\t\tfocus: {\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\t\t// We only want to do this special case on windows\n\t\t\t\tif ( jQuery.isWindow( this ) ) {\n\t\t\t\t\tthis.onbeforeunload = eventHandle;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tteardown: function( namespaces, eventHandle ) {\n\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n\t\t\t\t\tthis.onbeforeunload = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tsimulate: function( type, elem, event, bubble ) {\n\t\t// Piggyback on a donor event to simulate a different one.\n\t\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t\t// simulated event prevents default then we do the same on the donor.\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{ type: type,\n\t\t\t\tisSimulated: true,\n\t\t\t\toriginalEvent: {}\n\t\t\t}\n\t\t);\n\t\tif ( bubble ) {\n\t\t\tjQuery.event.trigger( e, null, elem );\n\t\t} else {\n\t\t\tjQuery.event.dispatch.call( elem, e );\n\t\t}\n\t\tif ( e.isDefaultPrevented() ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\n// Some plugins are using, but it's undocumented/deprecated and will be removed.\n// The 1.7 special event interface should provide all the hooks needed now.\njQuery.event.handle = jQuery.event.dispatch;\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.detachEvent ) {\n\t\t\telem.detachEvent( \"on\" + type, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src, props ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !(this instanceof jQuery.Event) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||\n\t\t\tsrc.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\nfunction returnFalse() {\n\treturn false;\n}\nfunction returnTrue() {\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// if preventDefault exists run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// if stopPropagation exists run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar target = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj,\n\t\t\t\tselector = handleObj.selector,\n\t\t\t\tret;\n\n\t\t\t// For mousenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || (related !== target && !jQuery.contains( target, related )) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n});\n\n// IE submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\n\t\t\tjQuery.event.add( this, \"click._submit keypress._submit\", function( e ) {\n\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\n\t\t\t\tvar elem = e.target,\n\t\t\t\t\tform = jQuery.nodeName( elem, \"input\" ) || jQuery.nodeName( elem, \"button\" ) ? elem.form : undefined;\n\t\t\t\tif ( form && !form._submit_attached ) {\n\t\t\t\t\tjQuery.event.add( form, \"submit._submit\", function( event ) {\n\t\t\t\t\t\tevent._submit_bubble = true;\n\t\t\t\t\t});\n\t\t\t\t\tform._submit_attached = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\t// return undefined since we don't need an event listener\n\t\t},\n\t\t\n\t\tpostDispatch: function( event ) {\n\t\t\t// If form was submitted by the user, bubble the event up the tree\n\t\t\tif ( event._submit_bubble ) {\n\t\t\t\tdelete event._submit_bubble;\n\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\n\t\t\t\t\tjQuery.event.simulate( \"submit\", this.parentNode, event, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\n\t\t\tjQuery.event.remove( this, \"._submit\" );\n\t\t}\n\t};\n}\n\n// IE change delegation and checkbox/radio fix\nif ( !jQuery.support.changeBubbles ) {\n\n\tjQuery.event.special.change = {\n\n\t\tsetup: function() {\n\n\t\t\tif ( rformElems.test( this.nodeName ) ) {\n\t\t\t\t// IE doesn't fire change on a check/radio until blur; trigger it on click\n\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\n\t\t\t\t// This still fires onchange a second time for check/radio after blur.\n\t\t\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t\t\tjQuery.event.add( this, \"propertychange._change\", function( event ) {\n\t\t\t\t\t\tif ( event.originalEvent.propertyName === \"checked\" ) {\n\t\t\t\t\t\t\tthis._just_changed = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery.event.add( this, \"click._change\", function( event ) {\n\t\t\t\t\t\tif ( this._just_changed && !event.isTrigger ) {\n\t\t\t\t\t\t\tthis._just_changed = false;\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this, event, true );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\n\t\t\tjQuery.event.add( this, \"beforeactivate._change\", function( e ) {\n\t\t\t\tvar elem = e.target;\n\n\t\t\t\tif ( rformElems.test( elem.nodeName ) && !elem._change_attached ) {\n\t\t\t\t\tjQuery.event.add( elem, \"change._change\", function( event ) {\n\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this.parentNode, event, true );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\telem._change_attached = true;\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\thandle: function( event ) {\n\t\t\tvar elem = event.target;\n\n\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\n\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== \"radio\" && elem.type !== \"checkbox\") ) {\n\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tjQuery.event.remove( this, \"._change\" );\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t}\n\t};\n}\n\n// Create \"bubbling\" focus and blur events\nif ( !jQuery.support.focusinBubbles ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler while someone wants focusin/focusout\n\t\tvar attaches = 0,\n\t\t\thandler = function( event ) {\n\t\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );\n\t\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tif ( attaches++ === 0 ) {\n\t\t\t\t\tdocument.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tif ( --attaches === 0 ) {\n\t\t\t\t\tdocument.removeEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\njQuery.fn.extend({\n\n\ton: function( types, selector, data, fn, /*INTERNAL*/ one ) {\n\t\tvar origFn, type;\n\n\t\t// Types can be a map of types/handlers\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-Object, selector, data )\n\t\t\tif ( typeof selector !== \"string\" ) { // && selector != null\n\t\t\t\t// ( types-Object, data )\n\t\t\t\tdata = data || selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.on( type, selector, data, types[ type ], one );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( data == null && fn == null ) {\n\t\t\t// ( types, fn )\n\t\t\tfn = selector;\n\t\t\tdata = selector = undefined;\n\t\t} else if ( fn == null ) {\n\t\t\tif ( typeof selector === \"string\" ) {\n\t\t\t\t// ( types, selector, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = undefined;\n\t\t\t} else {\n\t\t\t\t// ( types, data, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t} else if ( !fn ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( one === 1 ) {\n\t\t\torigFn = fn;\n\t\t\tfn = function( event ) {\n\t\t\t\t// Can use an empty set, since event contains the info\n\t\t\t\tjQuery().off( event );\n\t\t\t\treturn origFn.apply( this, arguments );\n\t\t\t};\n\t\t\t// Use same guid so caller can remove using origFn\n\t\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.add( this, types, fn, data, selector );\n\t\t});\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn this.on( types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\tvar handleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( var type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t});\n\t},\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tlive: function( types, data, fn ) {\n\t\tjQuery( this.context ).on( types, this.selector, data, fn );\n\t\treturn this;\n\t},\n\tdie: function( types, fn ) {\n\t\tjQuery( this.context ).off( types, this.selector || \"**\", fn );\n\t\treturn this;\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length == 1? this.off( selector, \"**\" ) : this.off( types, selector, fn );\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tif ( this[0] ) {\n\t\t\treturn jQuery.event.trigger( type, data, this[0], true );\n\t\t}\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments,\n\t\t\tguid = fn.guid || jQuery.guid++,\n\t\t\ti = 0,\n\t\t\ttoggler = function( event ) {\n\t\t\t\t// Figure out which function to execute\n\t\t\t\tvar lastToggle = ( jQuery._data( this, \"lastToggle\" + fn.guid ) || 0 ) % i;\n\t\t\t\tjQuery._data( this, \"lastToggle\" + fn.guid, lastToggle + 1 );\n\n\t\t\t\t// Make sure that clicks stop\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\t// and execute the function\n\t\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n\t\t\t};\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\ttoggler.guid = guid;\n\t\twhile ( i < args.length ) {\n\t\t\targs[ i++ ].guid = guid;\n\t\t}\n\n\t\treturn this.click( toggler );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n});\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error contextmenu\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\tif ( fn == null ) {\n\t\t\tfn = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n\n\tif ( jQuery.attrFn ) {\n\t\tjQuery.attrFn[ name ] = true;\n\t}\n\n\tif ( rkeyEvent.test( name ) ) {\n\t\tjQuery.event.fixHooks[ name ] = jQuery.event.keyHooks;\n\t}\n\n\tif ( rmouseEvent.test( name ) ) {\n\t\tjQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;\n\t}\n});\n\n\n\n/*!\n * Sizzle CSS Selector Engine\n *  Copyright 2011, The Dojo Foundation\n *  Released under the MIT, BSD, and GPL Licenses.\n *  More information: http://sizzlejs.com/\n */\n(function(){\n\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,\n\texpando = \"sizcache\" + (Math.random() + '').replace('.', ''),\n\tdone = 0,\n\ttoString = Object.prototype.toString,\n\thasDuplicate = false,\n\tbaseHasDuplicate = true,\n\trBackslash = /\\\\/g,\n\trReturn = /\\r\\n/g,\n\trNonWord = /\\W/;\n\n// Here we check if the JavaScript engine is using some sort of\n// optimization where it does not always call our comparision\n// function. If that is the case, discard the hasDuplicate value.\n//   Thus far that includes Google Chrome.\n[0, 0].sort(function() {\n\tbaseHasDuplicate = false;\n\treturn 0;\n});\n\nvar Sizzle = function( selector, context, results, seed ) {\n\tresults = results || [];\n\tcontext = context || document;\n\n\tvar origContext = context;\n\n\tif ( context.nodeType !== 1 && context.nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tvar m, set, checkSet, extra, ret, cur, pop, i,\n\t\tprune = true,\n\t\tcontextXML = Sizzle.isXML( context ),\n\t\tparts = [],\n\t\tsoFar = selector;\n\n\t// Reset the position of the chunker regexp (start from head)\n\tdo {\n\t\tchunker.exec( \"\" );\n\t\tm = chunker.exec( soFar );\n\n\t\tif ( m ) {\n\t\t\tsoFar = m[3];\n\n\t\t\tparts.push( m[1] );\n\n\t\t\tif ( m[2] ) {\n\t\t\t\textra = m[3];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} while ( m );\n\n\tif ( parts.length > 1 && origPOS.exec( selector ) ) {\n\n\t\tif ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\n\t\t\tset = posProcess( parts[0] + parts[1], context, seed );\n\n\t\t} else {\n\t\t\tset = Expr.relative[ parts[0] ] ?\n\t\t\t\t[ context ] :\n\t\t\t\tSizzle( parts.shift(), context );\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tselector = parts.shift();\n\n\t\t\t\tif ( Expr.relative[ selector ] ) {\n\t\t\t\t\tselector += parts.shift();\n\t\t\t\t}\n\n\t\t\t\tset = posProcess( selector, set, seed );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t// (but not if it'll be faster if the inner selector is an ID)\n\t\tif ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&\n\t\t\t\tExpr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {\n\n\t\t\tret = Sizzle.find( parts.shift(), context, contextXML );\n\t\t\tcontext = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set )[0] :\n\t\t\t\tret.set[0];\n\t\t}\n\n\t\tif ( context ) {\n\t\t\tret = seed ?\n\t\t\t\t{ expr: parts.pop(), set: makeArray(seed) } :\n\t\t\t\tSizzle.find( parts.pop(), parts.length === 1 && (parts[0] === \"~\" || parts[0] === \"+\") && context.parentNode ? context.parentNode : context, contextXML );\n\n\t\t\tset = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set ) :\n\t\t\t\tret.set;\n\n\t\t\tif ( parts.length > 0 ) {\n\t\t\t\tcheckSet = makeArray( set );\n\n\t\t\t} else {\n\t\t\t\tprune = false;\n\t\t\t}\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tcur = parts.pop();\n\t\t\t\tpop = cur;\n\n\t\t\t\tif ( !Expr.relative[ cur ] ) {\n\t\t\t\t\tcur = \"\";\n\t\t\t\t} else {\n\t\t\t\t\tpop = parts.pop();\n\t\t\t\t}\n\n\t\t\t\tif ( pop == null ) {\n\t\t\t\t\tpop = context;\n\t\t\t\t}\n\n\t\t\t\tExpr.relative[ cur ]( checkSet, pop, contextXML );\n\t\t\t}\n\n\t\t} else {\n\t\t\tcheckSet = parts = [];\n\t\t}\n\t}\n\n\tif ( !checkSet ) {\n\t\tcheckSet = set;\n\t}\n\n\tif ( !checkSet ) {\n\t\tSizzle.error( cur || selector );\n\t}\n\n\tif ( toString.call(checkSet) === \"[object Array]\" ) {\n\t\tif ( !prune ) {\n\t\t\tresults.push.apply( results, checkSet );\n\n\t\t} else if ( context && context.nodeType === 1 ) {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && checkSet[i].nodeType === 1 ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\tmakeArray( checkSet, results );\n\t}\n\n\tif ( extra ) {\n\t\tSizzle( extra, origContext, results, seed );\n\t\tSizzle.uniqueSort( results );\n\t}\n\n\treturn results;\n};\n\nSizzle.uniqueSort = function( results ) {\n\tif ( sortOrder ) {\n\t\thasDuplicate = baseHasDuplicate;\n\t\tresults.sort( sortOrder );\n\n\t\tif ( hasDuplicate ) {\n\t\t\tfor ( var i = 1; i < results.length; i++ ) {\n\t\t\t\tif ( results[i] === results[ i - 1 ] ) {\n\t\t\t\t\tresults.splice( i--, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.matches = function( expr, set ) {\n\treturn Sizzle( expr, null, null, set );\n};\n\nSizzle.matchesSelector = function( node, expr ) {\n\treturn Sizzle( expr, null, null, [node] ).length > 0;\n};\n\nSizzle.find = function( expr, context, isXML ) {\n\tvar set, i, len, match, type, left;\n\n\tif ( !expr ) {\n\t\treturn [];\n\t}\n\n\tfor ( i = 0, len = Expr.order.length; i < len; i++ ) {\n\t\ttype = Expr.order[i];\n\n\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) ) {\n\t\t\tleft = match[1];\n\t\t\tmatch.splice( 1, 1 );\n\n\t\t\tif ( left.substr( left.length - 1 ) !== \"\\\\\" ) {\n\t\t\t\tmatch[1] = (match[1] || \"\").replace( rBackslash, \"\" );\n\t\t\t\tset = Expr.find[ type ]( match, context, isXML );\n\n\t\t\t\tif ( set != null ) {\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !set ) {\n\t\tset = typeof context.getElementsByTagName !== \"undefined\" ?\n\t\t\tcontext.getElementsByTagName( \"*\" ) :\n\t\t\t[];\n\t}\n\n\treturn { set: set, expr: expr };\n};\n\nSizzle.filter = function( expr, set, inplace, not ) {\n\tvar match, anyFound,\n\t\ttype, found, item, filter, left,\n\t\ti, pass,\n\t\told = expr,\n\t\tresult = [],\n\t\tcurLoop = set,\n\t\tisXMLFilter = set && set[0] && Sizzle.isXML( set[0] );\n\n\twhile ( expr && set.length ) {\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {\n\t\t\t\tfilter = Expr.filter[ type ];\n\t\t\t\tleft = match[1];\n\n\t\t\t\tanyFound = false;\n\n\t\t\t\tmatch.splice(1,1);\n\n\t\t\t\tif ( left.substr( left.length - 1 ) === \"\\\\\" ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ( curLoop === result ) {\n\t\t\t\t\tresult = [];\n\t\t\t\t}\n\n\t\t\t\tif ( Expr.preFilter[ type ] ) {\n\t\t\t\t\tmatch = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );\n\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\tanyFound = found = true;\n\n\t\t\t\t\t} else if ( match === true ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\tfor ( i = 0; (item = curLoop[i]) != null; i++ ) {\n\t\t\t\t\t\tif ( item ) {\n\t\t\t\t\t\t\tfound = filter( item, match, i, curLoop );\n\t\t\t\t\t\t\tpass = not ^ found;\n\n\t\t\t\t\t\t\tif ( inplace && found != null ) {\n\t\t\t\t\t\t\t\tif ( pass ) {\n\t\t\t\t\t\t\t\t\tanyFound = true;\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else if ( pass ) {\n\t\t\t\t\t\t\t\tresult.push( item );\n\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( found !== undefined ) {\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tcurLoop = result;\n\t\t\t\t\t}\n\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\n\t\t\t\t\tif ( !anyFound ) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Improper expression\n\t\tif ( expr === old ) {\n\t\t\tif ( anyFound == null ) {\n\t\t\t\tSizzle.error( expr );\n\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\told = expr;\n\t}\n\n\treturn curLoop;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Utility function for retreiving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\nvar getText = Sizzle.getText = function( elem ) {\n    var i, node,\n\t\tnodeType = elem.nodeType,\n\t\tret = \"\";\n\n\tif ( nodeType ) {\n\t\tif ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t\t// Use textContent || innerText for elements\n\t\t\tif ( typeof elem.textContent === 'string' ) {\n\t\t\t\treturn elem.textContent;\n\t\t\t} else if ( typeof elem.innerText === 'string' ) {\n\t\t\t\t// Replace IE's carriage returns\n\t\t\t\treturn elem.innerText.replace( rReturn, '' );\n\t\t\t} else {\n\t\t\t\t// Traverse it's children\n\t\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling) {\n\t\t\t\t\tret += getText( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\t} else {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\tfor ( i = 0; (node = elem[i]); i++ ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tif ( node.nodeType !== 8 ) {\n\t\t\t\tret += getText( node );\n\t\t\t}\n\t\t}\n\t}\n\treturn ret;\n};\n\nvar Expr = Sizzle.selectors = {\n\torder: [ \"ID\", \"NAME\", \"TAG\" ],\n\n\tmatch: {\n\t\tID: /#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tCLASS: /\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tNAME: /\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,\n\t\tATTR: /\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,\n\t\tTAG: /^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,\n\t\tCHILD: /:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,\n\t\tPOS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,\n\t\tPSEUDO: /:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/\n\t},\n\n\tleftMatch: {},\n\n\tattrMap: {\n\t\t\"class\": \"className\",\n\t\t\"for\": \"htmlFor\"\n\t},\n\n\tattrHandle: {\n\t\thref: function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\" );\n\t\t},\n\t\ttype: function( elem ) {\n\t\t\treturn elem.getAttribute( \"type\" );\n\t\t}\n\t},\n\n\trelative: {\n\t\t\"+\": function(checkSet, part){\n\t\t\tvar isPartStr = typeof part === \"string\",\n\t\t\t\tisTag = isPartStr && !rNonWord.test( part ),\n\t\t\t\tisPartStrNotTag = isPartStr && !isTag;\n\n\t\t\tif ( isTag ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t}\n\n\t\t\tfor ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {\n\t\t\t\tif ( (elem = checkSet[i]) ) {\n\t\t\t\t\twhile ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}\n\n\t\t\t\t\tcheckSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?\n\t\t\t\t\t\telem || false :\n\t\t\t\t\t\telem === part;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( isPartStrNotTag ) {\n\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t}\n\t\t},\n\n\t\t\">\": function( checkSet, part ) {\n\t\t\tvar elem,\n\t\t\t\tisPartStr = typeof part === \"string\",\n\t\t\t\ti = 0,\n\t\t\t\tl = checkSet.length;\n\n\t\t\tif ( isPartStr && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\t\t\tcheckSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tcheckSet[i] = isPartStr ?\n\t\t\t\t\t\t\telem.parentNode :\n\t\t\t\t\t\t\telem.parentNode === part;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( isPartStr ) {\n\t\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t\"\": function(checkSet, part, isXML){\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"parentNode\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t},\n\n\t\t\"~\": function( checkSet, part, isXML ) {\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"previousSibling\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t}\n\t},\n\n\tfind: {\n\t\tID: function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t}\n\t\t},\n\n\t\tNAME: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByName !== \"undefined\" ) {\n\t\t\t\tvar ret = [],\n\t\t\t\t\tresults = context.getElementsByName( match[1] );\n\n\t\t\t\tfor ( var i = 0, l = results.length; i < l; i++ ) {\n\t\t\t\t\tif ( results[i].getAttribute(\"name\") === match[1] ) {\n\t\t\t\t\t\tret.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn ret.length === 0 ? null : ret;\n\t\t\t}\n\t\t},\n\n\t\tTAG: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( match[1] );\n\t\t\t}\n\t\t}\n\t},\n\tpreFilter: {\n\t\tCLASS: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tmatch = \" \" + match[1].replace( rBackslash, \"\" ) + \" \";\n\n\t\t\tif ( isXML ) {\n\t\t\t\treturn match;\n\t\t\t}\n\n\t\t\tfor ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\n\t\t\t\tif ( elem ) {\n\t\t\t\t\tif ( not ^ (elem.className && (\" \" + elem.className + \" \").replace(/[\\t\\n\\r]/g, \" \").indexOf(match) >= 0) ) {\n\t\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\t\tresult.push( elem );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( inplace ) {\n\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t\tID: function( match ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" );\n\t\t},\n\n\t\tTAG: function( match, curLoop ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" ).toLowerCase();\n\t\t},\n\n\t\tCHILD: function( match ) {\n\t\t\tif ( match[1] === \"nth\" ) {\n\t\t\t\tif ( !match[2] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\tmatch[2] = match[2].replace(/^\\+|\\s*/g, '');\n\n\t\t\t\t// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'\n\t\t\t\tvar test = /(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(\n\t\t\t\t\tmatch[2] === \"even\" && \"2n\" || match[2] === \"odd\" && \"2n+1\" ||\n\t\t\t\t\t!/\\D/.test( match[2] ) && \"0n+\" + match[2] || match[2]);\n\n\t\t\t\t// calculate the numbers (first)n+(last) including if they are negative\n\t\t\t\tmatch[2] = (test[1] + (test[2] || 1)) - 0;\n\t\t\t\tmatch[3] = test[3] - 0;\n\t\t\t}\n\t\t\telse if ( match[2] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\t// TODO: Move to normal caching system\n\t\t\tmatch[0] = done++;\n\n\t\t\treturn match;\n\t\t},\n\n\t\tATTR: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tvar name = match[1] = match[1].replace( rBackslash, \"\" );\n\n\t\t\tif ( !isXML && Expr.attrMap[name] ) {\n\t\t\t\tmatch[1] = Expr.attrMap[name];\n\t\t\t}\n\n\t\t\t// Handle if an un-quoted value was used\n\t\t\tmatch[4] = ( match[4] || match[5] || \"\" ).replace( rBackslash, \"\" );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[4] = \" \" + match[4] + \" \";\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match, curLoop, inplace, result, not ) {\n\t\t\tif ( match[1] === \"not\" ) {\n\t\t\t\t// If we're dealing with a complex expression, or a simple one\n\t\t\t\tif ( ( chunker.exec(match[3]) || \"\" ).length > 1 || /^\\w/.test(match[3]) ) {\n\t\t\t\t\tmatch[3] = Sizzle(match[3], null, null, curLoop);\n\n\t\t\t\t} else {\n\t\t\t\t\tvar ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\n\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tresult.push.apply( result, ret );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPOS: function( match ) {\n\t\t\tmatch.unshift( true );\n\n\t\t\treturn match;\n\t\t}\n\t},\n\n\tfilters: {\n\t\tenabled: function( elem ) {\n\t\t\treturn elem.disabled === false && elem.type !== \"hidden\";\n\t\t},\n\n\t\tdisabled: function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\tchecked: function( elem ) {\n\t\t\treturn elem.checked === true;\n\t\t},\n\n\t\tselected: function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !!elem.firstChild;\n\t\t},\n\n\t\tempty: function( elem ) {\n\t\t\treturn !elem.firstChild;\n\t\t},\n\n\t\thas: function( elem, i, match ) {\n\t\t\treturn !!Sizzle( match[3], elem ).length;\n\t\t},\n\n\t\theader: function( elem ) {\n\t\t\treturn (/h\\d/i).test( elem.nodeName );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\tvar attr = elem.getAttribute( \"type\" ), type = elem.type;\n\t\t\t// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)\n\t\t\t// use getAttribute instead to test this case\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"text\" === type && ( attr === type || attr === null );\n\t\t},\n\n\t\tradio: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"radio\" === elem.type;\n\t\t},\n\n\t\tcheckbox: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"checkbox\" === elem.type;\n\t\t},\n\n\t\tfile: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"file\" === elem.type;\n\t\t},\n\n\t\tpassword: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"password\" === elem.type;\n\t\t},\n\n\t\tsubmit: function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn (name === \"input\" || name === \"button\") && \"submit\" === elem.type;\n\t\t},\n\n\t\timage: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"image\" === elem.type;\n\t\t},\n\n\t\treset: function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn (name === \"input\" || name === \"button\") && \"reset\" === elem.type;\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && \"button\" === elem.type || name === \"button\";\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn (/input|select|textarea|button/i).test( elem.nodeName );\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === elem.ownerDocument.activeElement;\n\t\t}\n\t},\n\tsetFilters: {\n\t\tfirst: function( elem, i ) {\n\t\t\treturn i === 0;\n\t\t},\n\n\t\tlast: function( elem, i, match, array ) {\n\t\t\treturn i === array.length - 1;\n\t\t},\n\n\t\teven: function( elem, i ) {\n\t\t\treturn i % 2 === 0;\n\t\t},\n\n\t\todd: function( elem, i ) {\n\t\t\treturn i % 2 === 1;\n\t\t},\n\n\t\tlt: function( elem, i, match ) {\n\t\t\treturn i < match[3] - 0;\n\t\t},\n\n\t\tgt: function( elem, i, match ) {\n\t\t\treturn i > match[3] - 0;\n\t\t},\n\n\t\tnth: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t},\n\n\t\teq: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t}\n\t},\n\tfilter: {\n\t\tPSEUDO: function( elem, match, i, array ) {\n\t\t\tvar name = match[1],\n\t\t\t\tfilter = Expr.filters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\n\t\t\t} else if ( name === \"contains\" ) {\n\t\t\t\treturn (elem.textContent || elem.innerText || getText([ elem ]) || \"\").indexOf(match[3]) >= 0;\n\n\t\t\t} else if ( name === \"not\" ) {\n\t\t\t\tvar not = match[3];\n\n\t\t\t\tfor ( var j = 0, l = not.length; j < l; j++ ) {\n\t\t\t\t\tif ( not[j] === elem ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\n\t\t\t} else {\n\t\t\t\tSizzle.error( name );\n\t\t\t}\n\t\t},\n\n\t\tCHILD: function( elem, match ) {\n\t\t\tvar first, last,\n\t\t\t\tdoneName, parent, cache,\n\t\t\t\tcount, diff,\n\t\t\t\ttype = match[1],\n\t\t\t\tnode = elem;\n\n\t\t\tswitch ( type ) {\n\t\t\t\tcase \"only\":\n\t\t\t\tcase \"first\":\n\t\t\t\t\twhile ( (node = node.previousSibling) ) {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( type === \"first\" ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tnode = elem;\n\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase \"last\":\n\t\t\t\t\twhile ( (node = node.nextSibling) ) {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\n\t\t\t\tcase \"nth\":\n\t\t\t\t\tfirst = match[2];\n\t\t\t\t\tlast = match[3];\n\n\t\t\t\t\tif ( first === 1 && last === 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tdoneName = match[0];\n\t\t\t\t\tparent = elem.parentNode;\n\n\t\t\t\t\tif ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) {\n\t\t\t\t\t\tcount = 0;\n\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tnode.nodeIndex = ++count;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tparent[ expando ] = doneName;\n\t\t\t\t\t}\n\n\t\t\t\t\tdiff = elem.nodeIndex - last;\n\n\t\t\t\t\tif ( first === 0 ) {\n\t\t\t\t\t\treturn diff === 0;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tID: function( elem, match ) {\n\t\t\treturn elem.nodeType === 1 && elem.getAttribute(\"id\") === match;\n\t\t},\n\n\t\tTAG: function( elem, match ) {\n\t\t\treturn (match === \"*\" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match;\n\t\t},\n\n\t\tCLASS: function( elem, match ) {\n\t\t\treturn (\" \" + (elem.className || elem.getAttribute(\"class\")) + \" \")\n\t\t\t\t.indexOf( match ) > -1;\n\t\t},\n\n\t\tATTR: function( elem, match ) {\n\t\t\tvar name = match[1],\n\t\t\t\tresult = Sizzle.attr ?\n\t\t\t\t\tSizzle.attr( elem, name ) :\n\t\t\t\t\tExpr.attrHandle[ name ] ?\n\t\t\t\t\tExpr.attrHandle[ name ]( elem ) :\n\t\t\t\t\telem[ name ] != null ?\n\t\t\t\t\t\telem[ name ] :\n\t\t\t\t\t\telem.getAttribute( name ),\n\t\t\t\tvalue = result + \"\",\n\t\t\t\ttype = match[2],\n\t\t\t\tcheck = match[4];\n\n\t\t\treturn result == null ?\n\t\t\t\ttype === \"!=\" :\n\t\t\t\t!type && Sizzle.attr ?\n\t\t\t\tresult != null :\n\t\t\t\ttype === \"=\" ?\n\t\t\t\tvalue === check :\n\t\t\t\ttype === \"*=\" ?\n\t\t\t\tvalue.indexOf(check) >= 0 :\n\t\t\t\ttype === \"~=\" ?\n\t\t\t\t(\" \" + value + \" \").indexOf(check) >= 0 :\n\t\t\t\t!check ?\n\t\t\t\tvalue && result !== false :\n\t\t\t\ttype === \"!=\" ?\n\t\t\t\tvalue !== check :\n\t\t\t\ttype === \"^=\" ?\n\t\t\t\tvalue.indexOf(check) === 0 :\n\t\t\t\ttype === \"$=\" ?\n\t\t\t\tvalue.substr(value.length - check.length) === check :\n\t\t\t\ttype === \"|=\" ?\n\t\t\t\tvalue === check || value.substr(0, check.length + 1) === check + \"-\" :\n\t\t\t\tfalse;\n\t\t},\n\n\t\tPOS: function( elem, match, i, array ) {\n\t\t\tvar name = match[2],\n\t\t\t\tfilter = Expr.setFilters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar origPOS = Expr.match.POS,\n\tfescape = function(all, num){\n\t\treturn \"\\\\\" + (num - 0 + 1);\n\t};\n\nfor ( var type in Expr.match ) {\n\tExpr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\\[]*\\])(?![^\\(]*\\))/.source) );\n\tExpr.leftMatch[ type ] = new RegExp( /(^(?:.|\\r|\\n)*?)/.source + Expr.match[ type ].source.replace(/\\\\(\\d+)/g, fescape) );\n}\n// Expose origPOS\n// \"global\" as in regardless of relation to brackets/parens\nExpr.match.globalPOS = origPOS;\n\nvar makeArray = function( array, results ) {\n\tarray = Array.prototype.slice.call( array, 0 );\n\n\tif ( results ) {\n\t\tresults.push.apply( results, array );\n\t\treturn results;\n\t}\n\n\treturn array;\n};\n\n// Perform a simple check to determine if the browser is capable of\n// converting a NodeList to an array using builtin methods.\n// Also verifies that the returned array holds DOM nodes\n// (which is not the case in the Blackberry browser)\ntry {\n\tArray.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;\n\n// Provide a fallback method if it does not work\n} catch( e ) {\n\tmakeArray = function( array, results ) {\n\t\tvar i = 0,\n\t\t\tret = results || [];\n\n\t\tif ( toString.call(array) === \"[object Array]\" ) {\n\t\t\tArray.prototype.push.apply( ret, array );\n\n\t\t} else {\n\t\t\tif ( typeof array.length === \"number\" ) {\n\t\t\t\tfor ( var l = array.length; i < l; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; array[i]; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nvar sortOrder, siblingCheck;\n\nif ( document.documentElement.compareDocumentPosition ) {\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tif ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {\n\t\t\treturn a.compareDocumentPosition ? -1 : 1;\n\t\t}\n\n\t\treturn a.compareDocumentPosition(b) & 4 ? -1 : 1;\n\t};\n\n} else {\n\tsortOrder = function( a, b ) {\n\t\t// The nodes are identical, we can exit early\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// Fallback to using sourceIndex (in IE) if it's available on both nodes\n\t\t} else if ( a.sourceIndex && b.sourceIndex ) {\n\t\t\treturn a.sourceIndex - b.sourceIndex;\n\t\t}\n\n\t\tvar al, bl,\n\t\t\tap = [],\n\t\t\tbp = [],\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tcur = aup;\n\n\t\t// If the nodes are siblings (or identical) we can do a quick check\n\t\tif ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\n\t\t// If no parents were found then the nodes are disconnected\n\t\t} else if ( !aup ) {\n\t\t\treturn -1;\n\n\t\t} else if ( !bup ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Otherwise they're somewhere else in the tree so we need\n\t\t// to build up a full list of the parentNodes for comparison\n\t\twhile ( cur ) {\n\t\t\tap.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tcur = bup;\n\n\t\twhile ( cur ) {\n\t\t\tbp.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tal = ap.length;\n\t\tbl = bp.length;\n\n\t\t// Start walking down the tree looking for a discrepancy\n\t\tfor ( var i = 0; i < al && i < bl; i++ ) {\n\t\t\tif ( ap[i] !== bp[i] ) {\n\t\t\t\treturn siblingCheck( ap[i], bp[i] );\n\t\t\t}\n\t\t}\n\n\t\t// We ended someplace up the tree so do a sibling check\n\t\treturn i === al ?\n\t\t\tsiblingCheck( a, bp[i], -1 ) :\n\t\t\tsiblingCheck( ap[i], b, 1 );\n\t};\n\n\tsiblingCheck = function( a, b, ret ) {\n\t\tif ( a === b ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar cur = a.nextSibling;\n\n\t\twhile ( cur ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tcur = cur.nextSibling;\n\t\t}\n\n\t\treturn 1;\n\t};\n}\n\n// Check to see if the browser returns elements by name when\n// querying by getElementById (and provide a workaround)\n(function(){\n\t// We're going to inject a fake input element with a specified name\n\tvar form = document.createElement(\"div\"),\n\t\tid = \"script\" + (new Date()).getTime(),\n\t\troot = document.documentElement;\n\n\tform.innerHTML = \"<a name='\" + id + \"'/>\";\n\n\t// Inject it into the root element, check its status, and remove it quickly\n\troot.insertBefore( form, root.firstChild );\n\n\t// The workaround has to do additional checks after a getElementById\n\t// Which slows things down for other browsers (hence the branching)\n\tif ( document.getElementById( id ) ) {\n\t\tExpr.find.ID = function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\n\t\t\t\treturn m ?\n\t\t\t\t\tm.id === match[1] || typeof m.getAttributeNode !== \"undefined\" && m.getAttributeNode(\"id\").nodeValue === match[1] ?\n\t\t\t\t\t\t[m] :\n\t\t\t\t\t\tundefined :\n\t\t\t\t\t[];\n\t\t\t}\n\t\t};\n\n\t\tExpr.filter.ID = function( elem, match ) {\n\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\n\t\t\treturn elem.nodeType === 1 && node && node.nodeValue === match;\n\t\t};\n\t}\n\n\troot.removeChild( form );\n\n\t// release memory in IE\n\troot = form = null;\n})();\n\n(function(){\n\t// Check to see if the browser returns only elements\n\t// when doing getElementsByTagName(\"*\")\n\n\t// Create a fake element\n\tvar div = document.createElement(\"div\");\n\tdiv.appendChild( document.createComment(\"\") );\n\n\t// Make sure no comments are found\n\tif ( div.getElementsByTagName(\"*\").length > 0 ) {\n\t\tExpr.find.TAG = function( match, context ) {\n\t\t\tvar results = context.getElementsByTagName( match[1] );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( match[1] === \"*\" ) {\n\t\t\t\tvar tmp = [];\n\n\t\t\t\tfor ( var i = 0; results[i]; i++ ) {\n\t\t\t\t\tif ( results[i].nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresults = tmp;\n\t\t\t}\n\n\t\t\treturn results;\n\t\t};\n\t}\n\n\t// Check to see if an attribute returns normalized href attributes\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\n\tif ( div.firstChild && typeof div.firstChild.getAttribute !== \"undefined\" &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") !== \"#\" ) {\n\n\t\tExpr.attrHandle.href = function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\", 2 );\n\t\t};\n\t}\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nif ( document.querySelectorAll ) {\n\t(function(){\n\t\tvar oldSizzle = Sizzle,\n\t\t\tdiv = document.createElement(\"div\"),\n\t\t\tid = \"__sizzle__\";\n\n\t\tdiv.innerHTML = \"<p class='TEST'></p>\";\n\n\t\t// Safari can't handle uppercase or unicode characters when\n\t\t// in quirks mode.\n\t\tif ( div.querySelectorAll && div.querySelectorAll(\".TEST\").length === 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tSizzle = function( query, context, extra, seed ) {\n\t\t\tcontext = context || document;\n\n\t\t\t// Only use querySelectorAll on non-XML documents\n\t\t\t// (ID selectors don't work in non-HTML documents)\n\t\t\tif ( !seed && !Sizzle.isXML(context) ) {\n\t\t\t\t// See if we find a selector to speed up\n\t\t\t\tvar match = /^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec( query );\n\n\t\t\t\tif ( match && (context.nodeType === 1 || context.nodeType === 9) ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t\t\tif ( match[1] ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByTagName( query ), extra );\n\n\t\t\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t\t\t} else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByClassName( match[2] ), extra );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( context.nodeType === 9 ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"body\")\n\t\t\t\t\t// The body element only exists once, optimize finding it\n\t\t\t\t\tif ( query === \"body\" && context.body ) {\n\t\t\t\t\t\treturn makeArray( [ context.body ], extra );\n\n\t\t\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\t\t\t} else if ( match && match[3] ) {\n\t\t\t\t\t\tvar elem = context.getElementById( match[3] );\n\n\t\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === match[3] ) {\n\t\t\t\t\t\t\t\treturn makeArray( [ elem ], extra );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn makeArray( [], extra );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn makeArray( context.querySelectorAll(query), extra );\n\t\t\t\t\t} catch(qsaError) {}\n\n\t\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t\t// IE 8 doesn't work on object elements\n\t\t\t\t} else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\t\tvar oldContext = context,\n\t\t\t\t\t\told = context.getAttribute( \"id\" ),\n\t\t\t\t\t\tnid = old || id,\n\t\t\t\t\t\thasParent = context.parentNode,\n\t\t\t\t\t\trelativeHierarchySelector = /^\\s*[+~]/.test( query );\n\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnid = nid.replace( /'/g, \"\\\\$&\" );\n\t\t\t\t\t}\n\t\t\t\t\tif ( relativeHierarchySelector && hasParent ) {\n\t\t\t\t\t\tcontext = context.parentNode;\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif ( !relativeHierarchySelector || hasParent ) {\n\t\t\t\t\t\t\treturn makeArray( context.querySelectorAll( \"[id='\" + nid + \"'] \" + query ), extra );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} catch(pseudoError) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\t\toldContext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn oldSizzle(query, context, extra, seed);\n\t\t};\n\n\t\tfor ( var prop in oldSizzle ) {\n\t\t\tSizzle[ prop ] = oldSizzle[ prop ];\n\t\t}\n\n\t\t// release memory in IE\n\t\tdiv = null;\n\t})();\n}\n\n(function(){\n\tvar html = document.documentElement,\n\t\tmatches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector;\n\n\tif ( matches ) {\n\t\t// Check to see if it's possible to do matchesSelector\n\t\t// on a disconnected node (IE 9 fails this)\n\t\tvar disconnectedMatch = !matches.call( document.createElement( \"div\" ), \"div\" ),\n\t\t\tpseudoWorks = false;\n\n\t\ttry {\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( document.documentElement, \"[test!='']:sizzle\" );\n\n\t\t} catch( pseudoError ) {\n\t\t\tpseudoWorks = true;\n\t\t}\n\n\t\tSizzle.matchesSelector = function( node, expr ) {\n\t\t\t// Make sure that attribute selectors are quoted\n\t\t\texpr = expr.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g, \"='$1']\");\n\n\t\t\tif ( !Sizzle.isXML( node ) ) {\n\t\t\t\ttry {\n\t\t\t\t\tif ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {\n\t\t\t\t\t\tvar ret = matches.call( node, expr );\n\n\t\t\t\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\t\t\t\tif ( ret || !disconnectedMatch ||\n\t\t\t\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t\t\t\t// fragment in IE 9, so check for that\n\t\t\t\t\t\t\t\tnode.document && node.document.nodeType !== 11 ) {\n\t\t\t\t\t\t\treturn ret;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\treturn Sizzle(expr, null, null, [node]).length > 0;\n\t\t};\n\t}\n})();\n\n(function(){\n\tvar div = document.createElement(\"div\");\n\n\tdiv.innerHTML = \"<div class='test e'></div><div class='test'></div>\";\n\n\t// Opera can't find a second classname (in 9.6)\n\t// Also, make sure that getElementsByClassName actually exists\n\tif ( !div.getElementsByClassName || div.getElementsByClassName(\"e\").length === 0 ) {\n\t\treturn;\n\t}\n\n\t// Safari caches class attributes, doesn't catch changes (in 3.2)\n\tdiv.lastChild.className = \"e\";\n\n\tif ( div.getElementsByClassName(\"e\").length === 1 ) {\n\t\treturn;\n\t}\n\n\tExpr.order.splice(1, 0, \"CLASS\");\n\tExpr.find.CLASS = function( match, context, isXML ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && !isXML ) {\n\t\t\treturn context.getElementsByClassName(match[1]);\n\t\t}\n\t};\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nfunction dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem[ expando ] === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 && !isXML ){\n\t\t\t\t\telem[ expando ] = doneName;\n\t\t\t\t\telem.sizset = i;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeName.toLowerCase() === cur ) {\n\t\t\t\t\tmatch = elem;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nfunction dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem[ expando ] === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !isXML ) {\n\t\t\t\t\t\telem[ expando ] = doneName;\n\t\t\t\t\t\telem.sizset = i;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof cur !== \"string\" ) {\n\t\t\t\t\t\tif ( elem === cur ) {\n\t\t\t\t\t\t\tmatch = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {\n\t\t\t\t\t\tmatch = elem;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nif ( document.documentElement.contains ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn a !== b && (a.contains ? a.contains(b) : true);\n\t};\n\n} else if ( document.documentElement.compareDocumentPosition ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn !!(a.compareDocumentPosition(b) & 16);\n\t};\n\n} else {\n\tSizzle.contains = function() {\n\t\treturn false;\n\t};\n}\n\nSizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;\n\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\nvar posProcess = function( selector, context, seed ) {\n\tvar match,\n\t\ttmpSet = [],\n\t\tlater = \"\",\n\t\troot = context.nodeType ? [context] : context;\n\n\t// Position selectors must be done after the filter\n\t// And so must :not(positional) so we move all PSEUDOs to the end\n\twhile ( (match = Expr.match.PSEUDO.exec( selector )) ) {\n\t\tlater += match[0];\n\t\tselector = selector.replace( Expr.match.PSEUDO, \"\" );\n\t}\n\n\tselector = Expr.relative[selector] ? selector + \"*\" : selector;\n\n\tfor ( var i = 0, l = root.length; i < l; i++ ) {\n\t\tSizzle( selector, root[i], tmpSet, seed );\n\t}\n\n\treturn Sizzle.filter( later, tmpSet );\n};\n\n// EXPOSE\n// Override sizzle attribute retrieval\nSizzle.attr = jQuery.attr;\nSizzle.selectors.attrMap = {};\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.filters;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n})();\n\n\nvar runtil = /Until$/,\n\trparentsprev = /^(?:parents|prevUntil|prevAll)/,\n\t// Note: This RegExp should be improved, or likely pulled from Sizzle\n\trmultiselector = /,/,\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\tslice = Array.prototype.slice,\n\tPOS = jQuery.expr.match.globalPOS,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar self = this,\n\t\t\ti, l;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn jQuery( selector ).filter(function() {\n\t\t\t\tfor ( i = 0, l = self.length; i < l; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tvar ret = this.pushStack( \"\", \"find\", selector ),\n\t\t\tlength, n, r;\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tlength = ret.length;\n\t\t\tjQuery.find( selector, this[i], ret );\n\n\t\t\tif ( i > 0 ) {\n\t\t\t\t// Make sure that the results are unique\n\t\t\t\tfor ( n = length; n < ret.length; n++ ) {\n\t\t\t\t\tfor ( r = 0; r < length; r++ ) {\n\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n\t\t\t\t\t\t\tret.splice(n--, 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar targets = jQuery( target );\n\t\treturn this.filter(function() {\n\t\t\tfor ( var i = 0, l = targets.length; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, false), \"not\", selector);\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, true), \"filter\", selector );\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && (\n\t\t\ttypeof selector === \"string\" ?\n\t\t\t\t// If this is a positional selector, check membership in the returned set\n\t\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\t\tPOS.test( selector ) ?\n\t\t\t\t\tjQuery( selector, this.context ).index( this[0] ) >= 0 :\n\t\t\t\t\tjQuery.filter( selector, this ).length > 0 :\n\t\t\t\tthis.filter( selector ).length > 0 );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar ret = [], i, l, cur = this[0];\n\n\t\t// Array (deprecated as of jQuery 1.7)\n\t\tif ( jQuery.isArray( selectors ) ) {\n\t\t\tvar level = 1;\n\n\t\t\twhile ( cur && cur.ownerDocument && cur !== context ) {\n\t\t\t\tfor ( i = 0; i < selectors.length; i++ ) {\n\n\t\t\t\t\tif ( jQuery( cur ).is( selectors[ i ] ) ) {\n\t\t\t\t\t\tret.push({ selector: selectors[ i ], elem: cur, level: level });\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcur = cur.parentNode;\n\t\t\t\tlevel++;\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t}\n\n\t\t// String\n\t\tvar pos = POS.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tcur = this[i];\n\n\t\t\twhile ( cur ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n\t\t\t\t\tret.push( cur );\n\t\t\t\t\tbreak;\n\n\t\t\t\t} else {\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tif ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tret = ret.length > 1 ? jQuery.unique( ret ) : ret;\n\n\t\treturn this.pushStack( ret, \"closest\", selectors );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;\n\t\t}\n\n\t\t// index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0], jQuery( elem ) );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context ) :\n\t\t\t\tjQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n\t\t\tall :\n\t\t\tjQuery.unique( all ) );\n\t},\n\n\tandSelf: function() {\n\t\treturn this.add( this.prevObject );\n\t}\n});\n\n// A painfully simple check to see if an element is disconnected\n// from a document (should be improved, where feasible).\nfunction isDisconnected( node ) {\n\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.makeArray( elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until );\n\n\t\tif ( !runtil.test( name ) ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;\n\n\t\tif ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {\n\t\t\tret = ret.reverse();\n\t\t}\n\n\t\treturn this.pushStack( ret, name, slice.call( arguments ).join(\",\") );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 ?\n\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n\t\t\tjQuery.find.matches(expr, elems);\n\t},\n\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tnth: function( cur, result, dir, elem ) {\n\t\tresult = result || 1;\n\t\tvar num = 0;\n\n\t\tfor ( ; cur; cur = cur[dir] ) {\n\t\t\tif ( cur.nodeType === 1 && ++num === result ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn cur;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, keep ) {\n\n\t// Can't pass null or undefined to indexOf in Firefox 4\n\t// Set to 0 to skip string check\n\tqualifier = qualifier || 0;\n\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n\t\t\treturn retVal === keep;\n\t\t});\n\n\t} else if ( qualifier.nodeType ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn ( elem === qualifier ) === keep;\n\t\t});\n\n\t} else if ( typeof qualifier === \"string\" ) {\n\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t});\n\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n\t\t} else {\n\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n\t\t}\n\t}\n\n\treturn jQuery.grep(elements, function( elem, i ) {\n\t\treturn ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;\n\t});\n}\n\n\n\n\nfunction createSafeFragment( document ) {\n\tvar list = nodeNames.split( \"|\" ),\n\tsafeFrag = document.createDocumentFragment();\n\n\tif ( safeFrag.createElement ) {\n\t\twhile ( list.length ) {\n\t\t\tsafeFrag.createElement(\n\t\t\t\tlist.pop()\n\t\t\t);\n\t\t}\n\t}\n\treturn safeFrag;\n}\n\nvar nodeNames = \"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|\" +\n\t\t\"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",\n\trinlinejQuery = / jQuery\\d+=\"(?:\\d+|null)\"/g,\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnoInnerhtml = /<(?:script|style)/i,\n\trnocache = /<(?:script|object|embed|option|style)/i,\n\trnoshimcache = new RegExp(\"<(?:\" + nodeNames + \")[\\\\s/>]\", \"i\"),\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptType = /\\/(java|ecma)script/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|\\-\\-)/,\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\t_default: [ 0, \"\", \"\" ]\n\t},\n\tsafeFragment = createSafeFragment( document );\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// IE can't serialize <link> and <script> tags normally\nif ( !jQuery.support.htmlSerialize ) {\n\twrapMap._default = [ 1, \"div<div>\", \"</div>\" ];\n}\n\njQuery.fn.extend({\n\ttext: function( value ) {\n\t\treturn jQuery.access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );\n\t\t}, null, value, arguments.length );\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\tvar isFunction = jQuery.isFunction( html );\n\n\t\treturn this.each(function(i) {\n\t\t\tjQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = jQuery.clean( arguments );\n\t\t\tset.push.apply( set, this.toArray() );\n\t\t\treturn this.pushStack( set, \"before\", arguments );\n\t\t}\n\t},\n\n\tafter: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = this.pushStack( this, \"after\", arguments );\n\t\t\tset.push.apply( set, jQuery.clean(arguments) );\n\t\t\treturn set;\n\t\t}\n\t},\n\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t\t\tjQuery.cleanData( [ elem ] );\n\t\t\t\t}\n\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function () {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\treturn jQuery.access( this, function( value ) {\n\t\t\tvar elem = this[0] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\treturn elem.nodeType === 1 ?\n\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, \"\" ) :\n\t\t\t\t\tnull;\n\t\t\t}\n\n\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [\"\", \"\"] )[1].toLowerCase() ] ) {\n\n\t\t\t\tvalue = value.replace( rxhtmlTag, \"<$1></$2>\" );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor (; i < l; i++ ) {\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\telem = this[i] || {};\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName( \"*\" ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function( value ) {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n\t\t\t// this can help fix replacing a parent with child elements\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each(function(i) {\n\t\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( typeof value !== \"string\" ) {\n\t\t\t\tvalue = jQuery( value ).detach();\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\tvar next = this.nextSibling,\n\t\t\t\t\tparent = this.parentNode;\n\n\t\t\t\tjQuery( this ).remove();\n\n\t\t\t\tif ( next ) {\n\t\t\t\t\tjQuery(next).before( value );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(parent).append( value );\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\treturn this.length ?\n\t\t\t\tthis.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), \"replaceWith\", value ) :\n\t\t\t\tthis;\n\t\t}\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\t\tvar results, first, fragment, parent,\n\t\t\tvalue = args[0],\n\t\t\tscripts = [];\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === \"string\" && rchecked.test( value ) ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery(this).domManip( args, table, callback, true );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\targs[0] = value.call(this, i, table ? self.html() : undefined);\n\t\t\t\tself.domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\tparent = value && value.parentNode;\n\n\t\t\t// If we're in a fragment, just use that instead of building a new one\n\t\t\tif ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {\n\t\t\t\tresults = { fragment: parent };\n\n\t\t\t} else {\n\t\t\t\tresults = jQuery.buildFragment( args, this, scripts );\n\t\t\t}\n\n\t\t\tfragment = results.fragment;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfirst = fragment = fragment.firstChild;\n\t\t\t} else {\n\t\t\t\tfirst = fragment.firstChild;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\ttable = table && jQuery.nodeName( first, \"tr\" );\n\n\t\t\t\tfor ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\ttable ?\n\t\t\t\t\t\t\troot(this[i], first) :\n\t\t\t\t\t\t\tthis[i],\n\t\t\t\t\t\t// Make sure that we do not leak memory by inadvertently discarding\n\t\t\t\t\t\t// the original fragment (which might have attached data) instead of\n\t\t\t\t\t\t// using it; in addition, use the original fragment object for the last\n\t\t\t\t\t\t// item instead of first because it can end up being emptied incorrectly\n\t\t\t\t\t\t// in certain situations (Bug #8070).\n\t\t\t\t\t\t// Fragments from the fragment cache must always be cloned and never used\n\t\t\t\t\t\t// in place.\n\t\t\t\t\t\tresults.cacheable || ( l > 1 && i < lastIndex ) ?\n\t\t\t\t\t\t\tjQuery.clone( fragment, true, true ) :\n\t\t\t\t\t\t\tfragment\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( scripts.length ) {\n\t\t\t\tjQuery.each( scripts, function( i, elem ) {\n\t\t\t\t\tif ( elem.src ) {\n\t\t\t\t\t\tjQuery.ajax({\n\t\t\t\t\t\t\ttype: \"GET\",\n\t\t\t\t\t\t\tglobal: false,\n\t\t\t\t\t\t\turl: elem.src,\n\t\t\t\t\t\t\tasync: false,\n\t\t\t\t\t\t\tdataType: \"script\"\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || \"\" ).replace( rcleanScript, \"/*$0*/\" ) );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\nfunction root( elem, cur ) {\n\treturn jQuery.nodeName(elem, \"table\") ?\n\t\t(elem.getElementsByTagName(\"tbody\")[0] ||\n\t\telem.appendChild(elem.ownerDocument.createElement(\"tbody\"))) :\n\t\telem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar type, i, l,\n\t\toldData = jQuery._data( src ),\n\t\tcurData = jQuery._data( dest, oldData ),\n\t\tevents = oldData.events;\n\n\tif ( events ) {\n\t\tdelete curData.handle;\n\t\tcurData.events = {};\n\n\t\tfor ( type in events ) {\n\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t}\n\t\t}\n\t}\n\n\t// make the cloned public data object a copy from the original\n\tif ( curData.data ) {\n\t\tcurData.data = jQuery.extend( {}, curData.data );\n\t}\n}\n\nfunction cloneFixAttributes( src, dest ) {\n\tvar nodeName;\n\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// clearAttributes removes the attributes, which we don't want,\n\t// but also removes the attachEvent events, which we *do* want\n\tif ( dest.clearAttributes ) {\n\t\tdest.clearAttributes();\n\t}\n\n\t// mergeAttributes, in contrast, only merges back on the\n\t// original attributes, not the events\n\tif ( dest.mergeAttributes ) {\n\t\tdest.mergeAttributes( src );\n\t}\n\n\tnodeName = dest.nodeName.toLowerCase();\n\n\t// IE6-8 fail to clone children inside object elements that use\n\t// the proprietary classid attribute value (rather than the type\n\t// attribute) to identify the type of content to display\n\tif ( nodeName === \"object\" ) {\n\t\tdest.outerHTML = src.outerHTML;\n\n\t} else if ( nodeName === \"input\" && (src.type === \"checkbox\" || src.type === \"radio\") ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\t\tif ( src.checked ) {\n\t\t\tdest.defaultChecked = dest.checked = src.checked;\n\t\t}\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\n\t// IE blanks contents when cloning scripts\n\t} else if ( nodeName === \"script\" && dest.text !== src.text ) {\n\t\tdest.text = src.text;\n\t}\n\n\t// Event data gets referenced instead of copied if the expando\n\t// gets copied too\n\tdest.removeAttribute( jQuery.expando );\n\n\t// Clear flags for bubbling special change/submit events, they must\n\t// be reattached when the newly cloned events are first activated\n\tdest.removeAttribute( \"_submit_attached\" );\n\tdest.removeAttribute( \"_change_attached\" );\n}\n\njQuery.buildFragment = function( args, nodes, scripts ) {\n\tvar fragment, cacheable, cacheresults, doc,\n\tfirst = args[ 0 ];\n\n\t// nodes may contain either an explicit document object,\n\t// a jQuery collection or context object.\n\t// If nodes[0] contains a valid object to assign to doc\n\tif ( nodes && nodes[0] ) {\n\t\tdoc = nodes[0].ownerDocument || nodes[0];\n\t}\n\n\t// Ensure that an attr object doesn't incorrectly stand in as a document object\n\t// Chrome and Firefox seem to allow this to occur and will throw exception\n\t// Fixes #8950\n\tif ( !doc.createDocumentFragment ) {\n\t\tdoc = document;\n\t}\n\n\t// Only cache \"small\" (1/2 KB) HTML strings that are associated with the main document\n\t// Cloning options loses the selected state, so don't cache them\n\t// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment\n\t// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache\n\t// Lastly, IE6,7,8 will not correctly reuse cached fragments that were created from unknown elems #10501\n\tif ( args.length === 1 && typeof first === \"string\" && first.length < 512 && doc === document &&\n\t\tfirst.charAt(0) === \"<\" && !rnocache.test( first ) &&\n\t\t(jQuery.support.checkClone || !rchecked.test( first )) &&\n\t\t(jQuery.support.html5Clone || !rnoshimcache.test( first )) ) {\n\n\t\tcacheable = true;\n\n\t\tcacheresults = jQuery.fragments[ first ];\n\t\tif ( cacheresults && cacheresults !== 1 ) {\n\t\t\tfragment = cacheresults;\n\t\t}\n\t}\n\n\tif ( !fragment ) {\n\t\tfragment = doc.createDocumentFragment();\n\t\tjQuery.clean( args, doc, fragment, scripts );\n\t}\n\n\tif ( cacheable ) {\n\t\tjQuery.fragments[ first ] = cacheresults ? fragment : 1;\n\t}\n\n\treturn { fragment: fragment, cacheable: cacheable };\n};\n\njQuery.fragments = {};\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tparent = this.length === 1 && this[0].parentNode;\n\n\t\tif ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {\n\t\t\tinsert[ original ]( this[0] );\n\t\t\treturn this;\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = insert.length; i < l; i++ ) {\n\t\t\t\tvar elems = ( i > 0 ? this.clone(true) : this ).get();\n\t\t\t\tjQuery( insert[i] )[ original ]( elems );\n\t\t\t\tret = ret.concat( elems );\n\t\t\t}\n\n\t\t\treturn this.pushStack( ret, name, insert.selector );\n\t\t}\n\t};\n});\n\nfunction getAll( elem ) {\n\tif ( typeof elem.getElementsByTagName !== \"undefined\" ) {\n\t\treturn elem.getElementsByTagName( \"*\" );\n\n\t} else if ( typeof elem.querySelectorAll !== \"undefined\" ) {\n\t\treturn elem.querySelectorAll( \"*\" );\n\n\t} else {\n\t\treturn [];\n\t}\n}\n\n// Used in clean, fixes the defaultChecked property\nfunction fixDefaultChecked( elem ) {\n\tif ( elem.type === \"checkbox\" || elem.type === \"radio\" ) {\n\t\telem.defaultChecked = elem.checked;\n\t}\n}\n// Finds all inputs and passes them to fixDefaultChecked\nfunction findInputs( elem ) {\n\tvar nodeName = ( elem.nodeName || \"\" ).toLowerCase();\n\tif ( nodeName === \"input\" ) {\n\t\tfixDefaultChecked( elem );\n\t// Skip scripts, get other children\n\t} else if ( nodeName !== \"script\" && typeof elem.getElementsByTagName !== \"undefined\" ) {\n\t\tjQuery.grep( elem.getElementsByTagName(\"input\"), fixDefaultChecked );\n\t}\n}\n\n// Derived From: http://www.iecss.com/shimprove/javascript/shimprove.1-0-1.js\nfunction shimCloneNode( elem ) {\n\tvar div = document.createElement( \"div\" );\n\tsafeFragment.appendChild( div );\n\n\tdiv.innerHTML = elem.outerHTML;\n\treturn div.firstChild;\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar srcElements,\n\t\t\tdestElements,\n\t\t\ti,\n\t\t\t// IE<=8 does not properly clone detached, unknown element nodes\n\t\t\tclone = jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( \"<\" + elem.nodeName + \">\" ) ?\n\t\t\t\telem.cloneNode( true ) :\n\t\t\t\tshimCloneNode( elem );\n\n\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\t\t\t// IE copies events bound via attachEvent when using cloneNode.\n\t\t\t// Calling detachEvent on the clone will also remove the events\n\t\t\t// from the original. In order to get around this, we use some\n\t\t\t// proprietary methods to clear the events. Thanks to MooTools\n\t\t\t// guys for this hotness.\n\n\t\t\tcloneFixAttributes( elem, clone );\n\n\t\t\t// Using Sizzle here is crazy slow, so we use getElementsByTagName instead\n\t\t\tsrcElements = getAll( elem );\n\t\t\tdestElements = getAll( clone );\n\n\t\t\t// Weird iteration because IE will replace the length property\n\t\t\t// with an element if you are cloning the body and one of the\n\t\t\t// elements on the page has a name or id of \"length\"\n\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\n\t\t\t\tif ( destElements[i] ) {\n\t\t\t\t\tcloneFixAttributes( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tcloneCopyEvent( elem, clone );\n\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = getAll( elem );\n\t\t\t\tdestElements = getAll( clone );\n\n\t\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsrcElements = destElements = null;\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tclean: function( elems, context, fragment, scripts ) {\n\t\tvar checkScriptType, script, j,\n\t\t\t\tret = [];\n\n\t\tcontext = context || document;\n\n\t\t// !context.createElement fails in IE with an error but returns typeof 'object'\n\t\tif ( typeof context.createElement === \"undefined\" ) {\n\t\t\tcontext = context.ownerDocument || context[0] && context[0].ownerDocument || document;\n\t\t}\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( typeof elem === \"number\" ) {\n\t\t\t\telem += \"\";\n\t\t\t}\n\n\t\t\tif ( !elem ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" ) {\n\t\t\t\tif ( !rhtml.test( elem ) ) {\n\t\t\t\t\telem = context.createTextNode( elem );\n\t\t\t\t} else {\n\t\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\t\telem = elem.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\t\t\t// Trim whitespace, otherwise indexOf won't work as expected\n\t\t\t\t\tvar tag = ( rtagName.exec( elem ) || [\"\", \"\"] )[1].toLowerCase(),\n\t\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default,\n\t\t\t\t\t\tdepth = wrap[0],\n\t\t\t\t\t\tdiv = context.createElement(\"div\"),\n\t\t\t\t\t\tsafeChildNodes = safeFragment.childNodes,\n\t\t\t\t\t\tremove;\n\n\t\t\t\t\t// Append wrapper element to unknown element safe doc fragment\n\t\t\t\t\tif ( context === document ) {\n\t\t\t\t\t\t// Use the fragment we've already created for this document\n\t\t\t\t\t\tsafeFragment.appendChild( div );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Use a fragment created with the owner document\n\t\t\t\t\t\tcreateSafeFragment( context ).appendChild( div );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t\t// Move to the right depth\n\t\t\t\t\twhile ( depth-- ) {\n\t\t\t\t\t\tdiv = div.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\t\tvar hasBody = rtbody.test(elem),\n\t\t\t\t\t\t\ttbody = tag === \"table\" && !hasBody ?\n\t\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\t\twrap[1] === \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t\t\t[];\n\n\t\t\t\t\t\tfor ( j = tbody.length - 1; j >= 0 ; --j ) {\n\t\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length ) {\n\t\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n\t\t\t\t\t}\n\n\t\t\t\t\telem = div.childNodes;\n\n\t\t\t\t\t// Clear elements from DocumentFragment (safeFragment or otherwise)\n\t\t\t\t\t// to avoid hoarding elements. Fixes #11356\n\t\t\t\t\tif ( div ) {\n\t\t\t\t\t\tdiv.parentNode.removeChild( div );\n\n\t\t\t\t\t\t// Guard against -1 index exceptions in FF3.6\n\t\t\t\t\t\tif ( safeChildNodes.length > 0 ) {\n\t\t\t\t\t\t\tremove = safeChildNodes[ safeChildNodes.length - 1 ];\n\n\t\t\t\t\t\t\tif ( remove && remove.parentNode ) {\n\t\t\t\t\t\t\t\tremove.parentNode.removeChild( remove );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Resets defaultChecked for any radios and checkboxes\n\t\t\t// about to be appended to the DOM in IE 6/7 (#8060)\n\t\t\tvar len;\n\t\t\tif ( !jQuery.support.appendChecked ) {\n\t\t\t\tif ( elem[0] && typeof (len = elem.length) === \"number\" ) {\n\t\t\t\t\tfor ( j = 0; j < len; j++ ) {\n\t\t\t\t\t\tfindInputs( elem[j] );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfindInputs( elem );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( elem.nodeType ) {\n\t\t\t\tret.push( elem );\n\t\t\t} else {\n\t\t\t\tret = jQuery.merge( ret, elem );\n\t\t\t}\n\t\t}\n\n\t\tif ( fragment ) {\n\t\t\tcheckScriptType = function( elem ) {\n\t\t\t\treturn !elem.type || rscriptType.test( elem.type );\n\t\t\t};\n\t\t\tfor ( i = 0; ret[i]; i++ ) {\n\t\t\t\tscript = ret[i];\n\t\t\t\tif ( scripts && jQuery.nodeName( script, \"script\" ) && (!script.type || rscriptType.test( script.type )) ) {\n\t\t\t\t\tscripts.push( script.parentNode ? script.parentNode.removeChild( script ) : script );\n\n\t\t\t\t} else {\n\t\t\t\t\tif ( script.nodeType === 1 ) {\n\t\t\t\t\t\tvar jsTags = jQuery.grep( script.getElementsByTagName( \"script\" ), checkScriptType );\n\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );\n\t\t\t\t\t}\n\t\t\t\t\tfragment.appendChild( script );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, id,\n\t\t\tcache = jQuery.cache,\n\t\t\tspecial = jQuery.event.special,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando;\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tid = elem[ jQuery.expando ];\n\n\t\t\tif ( id ) {\n\t\t\t\tdata = cache[ id ];\n\n\t\t\t\tif ( data && data.events ) {\n\t\t\t\t\tfor ( var type in data.events ) {\n\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Null the DOM reference to avoid IE6/7/8 leak (#7054)\n\t\t\t\t\tif ( data.handle ) {\n\t\t\t\t\t\tdata.handle.elem = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\tdelete elem[ jQuery.expando ];\n\n\t\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t\t}\n\n\t\t\t\tdelete cache[ id ];\n\t\t\t}\n\t\t}\n\t}\n});\n\n\n\n\nvar ralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity=([^)]*)/,\n\t// fixed for IE9, see #8346\n\trupper = /([A-Z]|^ms)/g,\n\trnum = /^[\\-+]?(?:\\d*\\.)?\\d+$/i,\n\trnumnonpx = /^-?(?:\\d*\\.)?\\d+(?!px)[^\\d\\s]+$/i,\n\trrelNum = /^([\\-+])=([\\-+.\\de]+)/,\n\trmargin = /^margin/,\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\n\t// order is important!\n\tcssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ],\n\n\tcurCSS,\n\n\tgetComputedStyle,\n\tcurrentStyle;\n\njQuery.fn.css = function( name, value ) {\n\treturn jQuery.access( this, function( elem, name, value ) {\n\t\treturn value !== undefined ?\n\t\t\tjQuery.style( elem, name, value ) :\n\t\t\tjQuery.css( elem, name );\n\t}, name, value, arguments.length > 1 );\n};\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\n\t\t\t\t} else {\n\t\t\t\t\treturn elem.style.opacity;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Exclude the following css properties to add px\n\tcssNumber: {\n\t\t\"fillOpacity\": true,\n\t\t\"fontWeight\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t\"float\": jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, origName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style, hooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// convert relative number strings (+= or -=) to relative numbers. #7345\n\t\t\tif ( type === \"string\" && (ret = rrelNum.exec( value )) ) {\n\t\t\t\tvalue = ( +( ret[1] + 1) * +ret[2] ) + parseFloat( jQuery.css( elem, name ) );\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that NaN and null values aren't set. See: #7116\n\t\t\tif ( value == null || type === \"number\" && isNaN( value ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( type === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {\n\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #5509\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra ) {\n\t\tvar ret, hooks;\n\n\t\t// Make sure that we're working with the right name\n\t\tname = jQuery.camelCase( name );\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tname = jQuery.cssProps[ name ] || name;\n\n\t\t// cssFloat needs a special treatment\n\t\tif ( name === \"cssFloat\" ) {\n\t\t\tname = \"float\";\n\t\t}\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {\n\t\t\treturn ret;\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\t} else if ( curCSS ) {\n\t\t\treturn curCSS( elem, name );\n\t\t}\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar old = {},\n\t\t\tret, name;\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tret = callback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\n\t\treturn ret;\n\t}\n});\n\n// DEPRECATED in 1.3, Use jQuery.css() instead\njQuery.curCSS = jQuery.css;\n\nif ( document.defaultView && document.defaultView.getComputedStyle ) {\n\tgetComputedStyle = function( elem, name ) {\n\t\tvar ret, defaultView, computedStyle, width,\n\t\t\tstyle = elem.style;\n\n\t\tname = name.replace( rupper, \"-$1\" ).toLowerCase();\n\n\t\tif ( (defaultView = elem.ownerDocument.defaultView) &&\n\t\t\t\t(computedStyle = defaultView.getComputedStyle( elem, null )) ) {\n\n\t\t\tret = computedStyle.getPropertyValue( name );\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// WebKit uses \"computed value (percentage if specified)\" instead of \"used value\" for margins\n\t\t// which is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values\n\t\tif ( !jQuery.support.pixelMargin && computedStyle && rmargin.test( name ) && rnumnonpx.test( ret ) ) {\n\t\t\twidth = style.width;\n\t\t\tstyle.width = ret;\n\t\t\tret = computedStyle.width;\n\t\t\tstyle.width = width;\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nif ( document.documentElement.currentStyle ) {\n\tcurrentStyle = function( elem, name ) {\n\t\tvar left, rsLeft, uncomputed,\n\t\t\tret = elem.currentStyle && elem.currentStyle[ name ],\n\t\t\tstyle = elem.style;\n\n\t\t// Avoid setting ret to empty string here\n\t\t// so we don't default to auto\n\t\tif ( ret == null && style && (uncomputed = style[ name ]) ) {\n\t\t\tret = uncomputed;\n\t\t}\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\tif ( rnumnonpx.test( ret ) ) {\n\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\t\t\trsLeft = elem.runtimeStyle && elem.runtimeStyle.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : ret;\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret === \"\" ? \"auto\" : ret;\n\t};\n}\n\ncurCSS = getComputedStyle || currentStyle;\n\nfunction getWidthOrHeight( elem, name, extra ) {\n\n\t// Start with offset property\n\tvar val = name === \"width\" ? elem.offsetWidth : elem.offsetHeight,\n\t\ti = name === \"width\" ? 1 : 0,\n\t\tlen = 4;\n\n\tif ( val > 0 ) {\n\t\tif ( extra !== \"border\" ) {\n\t\t\tfor ( ; i < len; i += 2 ) {\n\t\t\t\tif ( !extra ) {\n\t\t\t\t\tval -= parseFloat( jQuery.css( elem, \"padding\" + cssExpand[ i ] ) ) || 0;\n\t\t\t\t}\n\t\t\t\tif ( extra === \"margin\" ) {\n\t\t\t\t\tval += parseFloat( jQuery.css( elem, extra + cssExpand[ i ] ) ) || 0;\n\t\t\t\t} else {\n\t\t\t\t\tval -= parseFloat( jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\" ) ) || 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn val + \"px\";\n\t}\n\n\t// Fall back to computed then uncomputed css if necessary\n\tval = curCSS( elem, name );\n\tif ( val < 0 || val == null ) {\n\t\tval = elem.style[ name ];\n\t}\n\n\t// Computed unit is not pixels. Stop here and return.\n\tif ( rnumnonpx.test(val) ) {\n\t\treturn val;\n\t}\n\n\t// Normalize \"\", auto, and prepare for extra\n\tval = parseFloat( val ) || 0;\n\n\t// Add padding, border, margin\n\tif ( extra ) {\n\t\tfor ( ; i < len; i += 2 ) {\n\t\t\tval += parseFloat( jQuery.css( elem, \"padding\" + cssExpand[ i ] ) ) || 0;\n\t\t\tif ( extra !== \"padding\" ) {\n\t\t\t\tval += parseFloat( jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\" ) ) || 0;\n\t\t\t}\n\t\t\tif ( extra === \"margin\" ) {\n\t\t\t\tval += parseFloat( jQuery.css( elem, extra + cssExpand[ i ]) ) || 0;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn val + \"px\";\n}\n\njQuery.each([ \"height\", \"width\" ], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\t\t\t\tif ( elem.offsetWidth !== 0 ) {\n\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t} else {\n\t\t\t\t\treturn jQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\treturn rnum.test( value ) ?\n\t\t\t\tvalue + \"px\" :\n\t\t\t\tvalue;\n\t\t}\n\t};\n});\n\nif ( !jQuery.support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\" ) ?\n\t\t\t\t( parseFloat( RegExp.$1 ) / 100 ) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style,\n\t\t\t\tcurrentStyle = elem.currentStyle,\n\t\t\t\topacity = jQuery.isNumeric( value ) ? \"alpha(opacity=\" + value * 100 + \")\" : \"\",\n\t\t\t\tfilter = currentStyle && currentStyle.filter || style.filter || \"\";\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652\n\t\t\tif ( value >= 1 && jQuery.trim( filter.replace( ralpha, \"\" ) ) === \"\" ) {\n\n\t\t\t\t// Setting style.filter to null, \"\" & \" \" still leave \"filter:\" in the cssText\n\t\t\t\t// if \"filter:\" is present at all, clearType is disabled, we want to avoid this\n\t\t\t\t// style.removeAttribute is IE Only, but so apparently is this code path...\n\t\t\t\tstyle.removeAttribute( \"filter\" );\n\n\t\t\t\t// if there there is no filter style applied in a css rule, we are done\n\t\t\t\tif ( currentStyle && !currentStyle.filter ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// otherwise, set new filter values\n\t\t\tstyle.filter = ralpha.test( filter ) ?\n\t\t\t\tfilter.replace( ralpha, opacity ) :\n\t\t\t\tfilter + \" \" + opacity;\n\t\t}\n\t};\n}\n\njQuery(function() {\n\t// This hook cannot be added until DOM ready because the support test\n\t// for it is not run until after DOM ready\n\tif ( !jQuery.support.reliableMarginRight ) {\n\t\tjQuery.cssHooks.marginRight = {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\t\t// Work around by temporarily setting element display to inline-block\n\t\t\t\treturn jQuery.swap( elem, { \"display\": \"inline-block\" }, function() {\n\t\t\t\t\tif ( computed ) {\n\t\t\t\t\t\treturn curCSS( elem, \"margin-right\" );\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.style.marginRight;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\tvar width = elem.offsetWidth,\n\t\t\theight = elem.offsetHeight;\n\n\t\treturn ( width === 0 && height === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, \"display\" )) === \"none\");\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\n\n// These hooks are used by animate to expand properties\njQuery.each({\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i,\n\n\t\t\t\t// assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split(\" \") : [ value ],\n\t\t\t\texpanded = {};\n\n\t\t\tfor ( i = 0; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n});\n\n\n\n\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trhash = /#.*$/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n\trinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app\\-storage|.+\\-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trquery = /\\?/,\n\trscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n\trselectTextarea = /^(?:select|textarea)/i,\n\trspacesAjax = /\\s+/,\n\trts = /([?&])_=[^&]*/,\n\trurl = /^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+))?)?/,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Document location\n\tajaxLocation,\n\n\t// Document location segments\n\tajaxLocParts,\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = [\"*/\"] + [\"*\"];\n\n// #8138, IE may throw an exception when accessing\n// a field from window.location if document.domain has been set\ntry {\n\tajaxLocation = location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( \"a\" );\n\tajaxLocation.href = \"\";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\tvar dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),\n\t\t\t\ti = 0,\n\t\t\t\tlength = dataTypes.length,\n\t\t\t\tdataType,\n\t\t\t\tlist,\n\t\t\t\tplaceBefore;\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tdataType = dataTypes[ i ];\n\t\t\t\t// We control if we're asked to add before\n\t\t\t\t// any existing element\n\t\t\t\tplaceBefore = /^\\+/.test( dataType );\n\t\t\t\tif ( placeBefore ) {\n\t\t\t\t\tdataType = dataType.substr( 1 ) || \"*\";\n\t\t\t\t}\n\t\t\t\tlist = structure[ dataType ] = structure[ dataType ] || [];\n\t\t\t\t// then we add to the structure accordingly\n\t\t\t\tlist[ placeBefore ? \"unshift\" : \"push\" ]( func );\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,\n\t\tdataType /* internal */, inspected /* internal */ ) {\n\n\tdataType = dataType || options.dataTypes[ 0 ];\n\tinspected = inspected || {};\n\n\tinspected[ dataType ] = true;\n\n\tvar list = structure[ dataType ],\n\t\ti = 0,\n\t\tlength = list ? list.length : 0,\n\t\texecuteOnly = ( structure === prefilters ),\n\t\tselection;\n\n\tfor ( ; i < length && ( executeOnly || !selection ); i++ ) {\n\t\tselection = list[ i ]( options, originalOptions, jqXHR );\n\t\t// If we got redirected to another dataType\n\t\t// we try there if executing only and not done already\n\t\tif ( typeof selection === \"string\" ) {\n\t\t\tif ( !executeOnly || inspected[ selection ] ) {\n\t\t\t\tselection = undefined;\n\t\t\t} else {\n\t\t\t\toptions.dataTypes.unshift( selection );\n\t\t\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\t\t\tstructure, options, originalOptions, jqXHR, selection, inspected );\n\t\t\t}\n\t\t}\n\t}\n\t// If we're only executing or nothing was selected\n\t// we try the catchall dataType if not done already\n\tif ( ( executeOnly || !selection ) && !inspected[ \"*\" ] ) {\n\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\tstructure, options, originalOptions, jqXHR, \"*\", inspected );\n\t}\n\t// unnecessary when only executing (prefilters)\n\t// but it'll be ignored by the caller in that case\n\treturn selection;\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n}\n\njQuery.fn.extend({\n\tload: function( url, params, callback ) {\n\t\tif ( typeof url !== \"string\" && _load ) {\n\t\t\treturn _load.apply( this, arguments );\n\n\t\t// Don't do a request if no elements are being requested\n\t\t} else if ( !this.length ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar off = url.indexOf( \" \" );\n\t\tif ( off >= 0 ) {\n\t\t\tvar selector = url.slice( off, url.length );\n\t\t\turl = url.slice( 0, off );\n\t\t}\n\n\t\t// Default to a GET request\n\t\tvar type = \"GET\";\n\n\t\t// If the second parameter was provided\n\t\tif ( params ) {\n\t\t\t// If it's a function\n\t\t\tif ( jQuery.isFunction( params ) ) {\n\t\t\t\t// We assume that it's the callback\n\t\t\t\tcallback = params;\n\t\t\t\tparams = undefined;\n\n\t\t\t// Otherwise, build a param string\n\t\t\t} else if ( typeof params === \"object\" ) {\n\t\t\t\tparams = jQuery.param( params, jQuery.ajaxSettings.traditional );\n\t\t\t\ttype = \"POST\";\n\t\t\t}\n\t\t}\n\n\t\tvar self = this;\n\n\t\t// Request the remote document\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params,\n\t\t\t// Complete callback (responseText is used internally)\n\t\t\tcomplete: function( jqXHR, status, responseText ) {\n\t\t\t\t// Store the response as specified by the jqXHR object\n\t\t\t\tresponseText = jqXHR.responseText;\n\t\t\t\t// If successful, inject the HTML into all the matched elements\n\t\t\t\tif ( jqXHR.isResolved() ) {\n\t\t\t\t\t// #4825: Get the actual response in case\n\t\t\t\t\t// a dataFilter is present in ajaxSettings\n\t\t\t\t\tjqXHR.done(function( r ) {\n\t\t\t\t\t\tresponseText = r;\n\t\t\t\t\t});\n\t\t\t\t\t// See if a selector was specified\n\t\t\t\t\tself.html( selector ?\n\t\t\t\t\t\t// Create a dummy div to hold the results\n\t\t\t\t\t\tjQuery(\"<div>\")\n\t\t\t\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t\t\t\t.append(responseText.replace(rscript, \"\"))\n\n\t\t\t\t\t\t\t// Locate the specified elements\n\t\t\t\t\t\t\t.find(selector) :\n\n\t\t\t\t\t\t// If not, just inject the full result\n\t\t\t\t\t\tresponseText );\n\t\t\t\t}\n\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tself.each( callback, [ responseText, status, jqXHR ] );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn this;\n\t},\n\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\treturn this.elements ? jQuery.makeArray( this.elements ) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t( this.checked || rselectTextarea.test( this.nodeName ) ||\n\t\t\t\t\trinput.test( this.type ) );\n\t\t})\n\t\t.map(function( i, elem ){\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val, i ){\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split( \" \" ), function( i, o ){\n\tjQuery.fn[ o ] = function( f ){\n\t\treturn this.on( o, f );\n\t};\n});\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: method,\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t};\n});\n\njQuery.extend({\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\tif ( settings ) {\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( target, jQuery.ajaxSettings );\n\t\t} else {\n\t\t\t// Extending ajaxSettings\n\t\t\tsettings = target;\n\t\t\ttarget = jQuery.ajaxSettings;\n\t\t}\n\t\tajaxExtend( target, settings );\n\t\treturn target;\n\t},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\ttext: \"text/plain\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\t\"*\": allTypes\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\"\n\t\t},\n\n\t\t// List of data converters\n\t\t// 1) key format is \"source_type destination_type\" (a single space in-between)\n\t\t// 2) the catchall symbol \"*\" can be used for source_type\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": window.String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\tcontext: true,\n\t\t\turl: true\n\t\t}\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar // Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events\n\t\t\t// It's the callbackContext if one was provided in the options\n\t\t\t// and if it's a DOM node or a jQuery collection\n\t\t\tglobalEventContext = callbackContext !== s &&\n\t\t\t\t( callbackContext.nodeType || callbackContext instanceof jQuery ) ?\n\t\t\t\t\t\tjQuery( callbackContext ) : jQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// ifModified key\n\t\t\tifModifiedKey,\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\t\t\t// transport\n\t\t\ttransport,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\t\t\t// Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\tvar lname = name.toLowerCase();\n\t\t\t\t\t\tname = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match === undefined ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tstatusText = statusText || \"abort\";\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( statusText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, statusText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Callback for when everything is done\n\t\t// It is defined here because jslint complains if it is declared\n\t\t// at the end of the function (which would be more logical and readable)\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\tvar isSuccess,\n\t\t\t\tsuccess,\n\t\t\t\terror,\n\t\t\t\tstatusText = nativeStatusText,\n\t\t\t\tresponse = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,\n\t\t\t\tlastModified,\n\t\t\t\tetag;\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( status >= 200 && status < 300 || status === 304 ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\n\t\t\t\t\tif ( ( lastModified = jqXHR.getResponseHeader( \"Last-Modified\" ) ) ) {\n\t\t\t\t\t\tjQuery.lastModified[ ifModifiedKey ] = lastModified;\n\t\t\t\t\t}\n\t\t\t\t\tif ( ( etag = jqXHR.getResponseHeader( \"Etag\" ) ) ) {\n\t\t\t\t\t\tjQuery.etag[ ifModifiedKey ] = etag;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If not modified\n\t\t\t\tif ( status === 304 ) {\n\n\t\t\t\t\tstatusText = \"notmodified\";\n\t\t\t\t\tisSuccess = true;\n\n\t\t\t\t// If we have data\n\t\t\t\t} else {\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tsuccess = ajaxConvert( s, response );\n\t\t\t\t\t\tstatusText = \"success\";\n\t\t\t\t\t\tisSuccess = true;\n\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t// We have a parsererror\n\t\t\t\t\t\tstatusText = \"parsererror\";\n\t\t\t\t\t\terror = e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( !statusText || status ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = \"\" + ( nativeStatusText || statusText );\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajax\" + ( isSuccess ? \"Success\" : \"Error\" ),\n\t\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\t\tjqXHR.complete = completeDeferred.add;\n\n\t\t// Status-dependent callbacks\n\t\tjqXHR.statusCode = function( map ) {\n\t\t\tif ( map ) {\n\t\t\t\tvar tmp;\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tfor ( tmp in map ) {\n\t\t\t\t\t\tstatusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttmp = map[ jqXHR.status ];\n\t\t\t\t\tjqXHR.then( tmp, tmp );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url ) + \"\" ).replace( rhash, \"\" ).replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().split( rspacesAjax );\n\n\t\t// Determine if a cross-domain request is in order\n\t\tif ( s.crossDomain == null ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? 80 : 443 ) ) !=\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? 80 : 443 ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\tfireGlobals = s.global;\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.data;\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Get ifModifiedKey before adding the anti-cache parameter\n\t\t\tifModifiedKey = s.url;\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\n\t\t\t\tvar ts = jQuery.now(),\n\t\t\t\t\t// try replacing _= if it is there\n\t\t\t\t\tret = s.url.replace( rts, \"$1_=\" + ts );\n\n\t\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\t\ts.url = ret + ( ( ret === s.url ) ? ( rquery.test( s.url ) ? \"&\" : \"?\" ) + \"_=\" + ts : \"\" );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tifModifiedKey = ifModifiedKey || s.url;\n\t\t\tif ( jQuery.lastModified[ ifModifiedKey ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ ifModifiedKey ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ ifModifiedKey ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ ifModifiedKey ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t\t// Abort if not done already\n\t\t\t\tjqXHR.abort();\n\t\t\t\treturn false;\n\n\t\t}\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout( function(){\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch (e) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\t// Serialize an array of form elements or a set of\n\t// key/values into a query string\n\tparam: function( a, traditional ) {\n\t\tvar s = [],\n\t\t\tadd = function( key, value ) {\n\t\t\t\t// If value is a function, invoke it and return its value\n\t\t\t\tvalue = jQuery.isFunction( value ) ? value() : value;\n\t\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t\t};\n\n\t\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\t\tif ( traditional === undefined ) {\n\t\t\ttraditional = jQuery.ajaxSettings.traditional;\n\t\t}\n\n\t\t// If an array was passed in, assume that it is an array of form elements.\n\t\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t\t// Serialize the form elements\n\t\t\tjQuery.each( a, function() {\n\t\t\t\tadd( this.name, this.value );\n\t\t\t});\n\n\t\t} else {\n\t\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t\t// did it), otherwise encode params recursively.\n\t\t\tfor ( var prefix in a ) {\n\t\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t\t// Return the resulting serialization\n\t\treturn s.join( \"&\" ).replace( r20, \"+\" );\n\t}\n});\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tif ( jQuery.isArray( obj ) ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// If array item is non-scalar (array or object), encode its\n\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n\t\t\t\t// Note that rack (as of 1.0.0) can't currently deserialize\n\t\t\t\t// nested arrays properly, and attempting to do so may cause\n\t\t\t\t// a server error. Possible fixes are to modify rack's\n\t\t\t\t// deserialization algorithm or to provide an option or flag\n\t\t\t\t// to force array serialization to be shallow.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && jQuery.type( obj ) === \"object\" ) {\n\t\t// Serialize object item.\n\t\tfor ( var name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// This is still on the jQuery object... for now\n// Want to move this to jQuery.ajax some day\njQuery.extend({\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {}\n\n});\n\n/* Handles responses to an ajax request:\n * - sets all responseXXX fields accordingly\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar contents = s.contents,\n\t\tdataTypes = s.dataTypes,\n\t\tresponseFields = s.responseFields,\n\t\tct,\n\t\ttype,\n\t\tfinalDataType,\n\t\tfirstDataType;\n\n\t// Fill responseXXX fields\n\tfor ( type in responseFields ) {\n\t\tif ( type in responses ) {\n\t\t\tjqXHR[ responseFields[type] ] = responses[ type ];\n\t\t}\n\t}\n\n\t// Remove auto dataType and get content-type in the process\n\twhile( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"content-type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n// Chain conversions given the request and the original response\nfunction ajaxConvert( s, response ) {\n\n\t// Apply the dataFilter if provided\n\tif ( s.dataFilter ) {\n\t\tresponse = s.dataFilter( response, s.dataType );\n\t}\n\n\tvar dataTypes = s.dataTypes,\n\t\tconverters = {},\n\t\ti,\n\t\tkey,\n\t\tlength = dataTypes.length,\n\t\ttmp,\n\t\t// Current and previous dataTypes\n\t\tcurrent = dataTypes[ 0 ],\n\t\tprev,\n\t\t// Conversion expression\n\t\tconversion,\n\t\t// Conversion function\n\t\tconv,\n\t\t// Conversion functions (transitive conversion)\n\t\tconv1,\n\t\tconv2;\n\n\t// For each dataType in the chain\n\tfor ( i = 1; i < length; i++ ) {\n\n\t\t// Create converters map\n\t\t// with lowercased keys\n\t\tif ( i === 1 ) {\n\t\t\tfor ( key in s.converters ) {\n\t\t\t\tif ( typeof key === \"string\" ) {\n\t\t\t\t\tconverters[ key.toLowerCase() ] = s.converters[ key ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Get the dataTypes\n\t\tprev = current;\n\t\tcurrent = dataTypes[ i ];\n\n\t\t// If current is auto dataType, update it to prev\n\t\tif ( current === \"*\" ) {\n\t\t\tcurrent = prev;\n\t\t// If no auto and dataTypes are actually different\n\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t// Get the converter\n\t\t\tconversion = prev + \" \" + current;\n\t\t\tconv = converters[ conversion ] || converters[ \"* \" + current ];\n\n\t\t\t// If there is no direct converter, search transitively\n\t\t\tif ( !conv ) {\n\t\t\t\tconv2 = undefined;\n\t\t\t\tfor ( conv1 in converters ) {\n\t\t\t\t\ttmp = conv1.split( \" \" );\n\t\t\t\t\tif ( tmp[ 0 ] === prev || tmp[ 0 ] === \"*\" ) {\n\t\t\t\t\t\tconv2 = converters[ tmp[1] + \" \" + current ];\n\t\t\t\t\t\tif ( conv2 ) {\n\t\t\t\t\t\t\tconv1 = converters[ conv1 ];\n\t\t\t\t\t\t\tif ( conv1 === true ) {\n\t\t\t\t\t\t\t\tconv = conv2;\n\t\t\t\t\t\t\t} else if ( conv2 === true ) {\n\t\t\t\t\t\t\t\tconv = conv1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If we found no converter, dispatch an error\n\t\t\tif ( !( conv || conv2 ) ) {\n\t\t\t\tjQuery.error( \"No conversion from \" + conversion.replace(\" \",\" to \") );\n\t\t\t}\n\t\t\t// If found converter is not an equivalence\n\t\t\tif ( conv !== true ) {\n\t\t\t\t// Convert with 1 or 2 converters accordingly\n\t\t\t\tresponse = conv ? conv( response ) : conv2( conv1(response) );\n\t\t\t}\n\t\t}\n\t}\n\treturn response;\n}\n\n\n\n\nvar jsc = jQuery.now(),\n\tjsre = /(\\=)\\?(&|$)|\\?\\?/i;\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\treturn jQuery.expando + \"_\" + ( jsc++ );\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar inspectData = ( typeof s.data === \"string\" ) && /^application\\/x\\-www\\-form\\-urlencoded/.test( s.contentType );\n\n\tif ( s.dataTypes[ 0 ] === \"jsonp\" ||\n\t\ts.jsonp !== false && ( jsre.test( s.url ) ||\n\t\t\t\tinspectData && jsre.test( s.data ) ) ) {\n\n\t\tvar responseContainer,\n\t\t\tjsonpCallback = s.jsonpCallback =\n\t\t\t\tjQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,\n\t\t\tprevious = window[ jsonpCallback ],\n\t\t\turl = s.url,\n\t\t\tdata = s.data,\n\t\t\treplace = \"$1\" + jsonpCallback + \"$2\";\n\n\t\tif ( s.jsonp !== false ) {\n\t\t\turl = url.replace( jsre, replace );\n\t\t\tif ( s.url === url ) {\n\t\t\t\tif ( inspectData ) {\n\t\t\t\t\tdata = data.replace( jsre, replace );\n\t\t\t\t}\n\t\t\t\tif ( s.data === data ) {\n\t\t\t\t\t// Add callback manually\n\t\t\t\t\turl += (/\\?/.test( url ) ? \"&\" : \"?\") + s.jsonp + \"=\" + jsonpCallback;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ts.url = url;\n\t\ts.data = data;\n\n\t\t// Install callback\n\t\twindow[ jsonpCallback ] = function( response ) {\n\t\t\tresponseContainer = [ response ];\n\t\t};\n\n\t\t// Clean-up function\n\t\tjqXHR.always(function() {\n\t\t\t// Set callback back to previous value\n\t\t\twindow[ jsonpCallback ] = previous;\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && jQuery.isFunction( previous ) ) {\n\t\t\t\twindow[ jsonpCallback ]( responseContainer[ 0 ] );\n\t\t\t}\n\t\t});\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[\"script json\"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( jsonpCallback + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n});\n\n\n\n\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /javascript|ecmascript/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache's special case and global\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t\ts.global = false;\n\t}\n});\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function(s) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\n\t\tvar script,\n\t\t\thead = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\t\tscript.async = \"async\";\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( head && script.parentNode ) {\n\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = undefined;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, \"success\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t\t// This arises when a base node is used (#2709 and #4378).\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( 0, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n});\n\n\n\n\nvar // #5280: Internet Explorer will keep connections alive if we don't abort on unload\n\txhrOnUnloadAbort = window.ActiveXObject ? function() {\n\t\t// Abort all pending requests\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( 0, 1 );\n\t\t}\n\t} : false,\n\txhrId = 0,\n\txhrCallbacks;\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject( \"Microsoft.XMLHTTP\" );\n\t} catch( e ) {}\n}\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject ?\n\t/* Microsoft failed to properly\n\t * implement the XMLHttpRequest in IE7 (can't request local files),\n\t * so we use the ActiveXObject when it is available\n\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n\t * we need a fallback.\n\t */\n\tfunction() {\n\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\n// Determine support properties\n(function( xhr ) {\n\tjQuery.extend( jQuery.support, {\n\t\tajax: !!xhr,\n\t\tcors: !!xhr && ( \"withCredentials\" in xhr )\n\t});\n})( jQuery.ajaxSettings.xhr() );\n\n// Create transport if the browser can provide an xhr\nif ( jQuery.support.ajax ) {\n\n\tjQuery.ajaxTransport(function( s ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\n\t\t\t\t\t// Get a new xhr\n\t\t\t\t\tvar xhr = s.xhr(),\n\t\t\t\t\t\thandle,\n\t\t\t\t\t\ti;\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\t\t\t\tif ( s.username ) {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n\t\t\t\t\t} else {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( s.xhrFields ) {\n\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// X-Requested-With header\n\t\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\t\tif ( !s.crossDomain && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch( _ ) {}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\n\t\t\t\t\t\tvar status,\n\t\t\t\t\t\t\tstatusText,\n\t\t\t\t\t\t\tresponseHeaders,\n\t\t\t\t\t\t\tresponses,\n\t\t\t\t\t\t\txml;\n\n\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n\t\t\t\t\t\t// of an xhr when a network error occured\n\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\n\t\t\t\t\t\t\t\t// Only called once\n\t\t\t\t\t\t\t\tcallback = undefined;\n\n\t\t\t\t\t\t\t\t// Do not keep as active anymore\n\t\t\t\t\t\t\t\tif ( handle ) {\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If it's an abort\n\t\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n\t\t\t\t\t\t\t\t\tresponses = {};\n\t\t\t\t\t\t\t\t\txml = xhr.responseXML;\n\n\t\t\t\t\t\t\t\t\t// Construct response list\n\t\t\t\t\t\t\t\t\tif ( xml && xml.documentElement /* #4958 */ ) {\n\t\t\t\t\t\t\t\t\t\tresponses.xml = xml;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// When requesting binary data, IE6-9 will throw an exception\n\t\t\t\t\t\t\t\t\t// on any attempt to access responseText (#11426)\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\t\t\t\t\t\t\t\t\t} catch( _ ) {\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\t\tstatusText = \"\";\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\t\tstatus = 204;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch( firefoxAccessException ) {\n\t\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\t// if we're in sync mode or it's in cache\n\t\t\t\t\t// and has been retrieved directly (IE6 & IE7)\n\t\t\t\t\t// we need to manually fire the callback\n\t\t\t\t\tif ( !s.async || xhr.readyState === 4 ) {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else {\n\t\t\t\t\t\thandle = ++xhrId;\n\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n\t\t\t\t\t\t\t// and attach the unload handler\n\t\t\t\t\t\t\tif ( !xhrCallbacks ) {\n\t\t\t\t\t\t\t\txhrCallbacks = {};\n\t\t\t\t\t\t\t\tjQuery( window ).unload( xhrOnUnloadAbort );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Add to list of active xhrs callbacks\n\t\t\t\t\t\t\txhrCallbacks[ handle ] = callback;\n\t\t\t\t\t\t}\n\t\t\t\t\t\txhr.onreadystatechange = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback(0,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\n\n\n\n\nvar elemdisplay = {},\n\tiframe, iframeDoc,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = /^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,\n\ttimerId,\n\tfxAttrs = [\n\t\t// height animations\n\t\t[ \"height\", \"marginTop\", \"marginBottom\", \"paddingTop\", \"paddingBottom\" ],\n\t\t// width animations\n\t\t[ \"width\", \"marginLeft\", \"marginRight\", \"paddingLeft\", \"paddingRight\" ],\n\t\t// opacity animations\n\t\t[ \"opacity\" ]\n\t],\n\tfxNow;\n\njQuery.fn.extend({\n\tshow: function( speed, easing, callback ) {\n\t\tvar elem, display;\n\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"show\", 3), speed, easing, callback );\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\telem = this[ i ];\n\n\t\t\t\tif ( elem.style ) {\n\t\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t\t\t// being hidden by cascaded rules or not\n\t\t\t\t\tif ( !jQuery._data(elem, \"olddisplay\") && display === \"none\" ) {\n\t\t\t\t\t\tdisplay = elem.style.display = \"\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Set elements which have been overridden with display: none\n\t\t\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t\t\t// for such an element\n\t\t\t\t\tif ( (display === \"\" && jQuery.css(elem, \"display\") === \"none\") ||\n\t\t\t\t\t\t!jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {\n\t\t\t\t\t\tjQuery._data( elem, \"olddisplay\", defaultDisplay(elem.nodeName) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of most of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\telem = this[ i ];\n\n\t\t\t\tif ( elem.style ) {\n\t\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\t\tif ( display === \"\" || display === \"none\" ) {\n\t\t\t\t\t\telem.style.display = jQuery._data( elem, \"olddisplay\" ) || \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\thide: function( speed, easing, callback ) {\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"hide\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tvar elem, display,\n\t\t\t\ti = 0,\n\t\t\t\tj = this.length;\n\n\t\t\tfor ( ; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tif ( elem.style ) {\n\t\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\n\t\t\t\t\tif ( display !== \"none\" && !jQuery._data( elem, \"olddisplay\" ) ) {\n\t\t\t\t\t\tjQuery._data( elem, \"olddisplay\", display );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\tif ( this[i].style ) {\n\t\t\t\t\tthis[i].style.display = \"none\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\t// Save the old toggle function\n\t_toggle: jQuery.fn.toggle,\n\n\ttoggle: function( fn, fn2, callback ) {\n\t\tvar bool = typeof fn === \"boolean\";\n\n\t\tif ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {\n\t\t\tthis._toggle.apply( this, arguments );\n\n\t\t} else if ( fn == null || bool ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar state = bool ? fn : jQuery(this).is(\":hidden\");\n\t\t\t\tjQuery(this)[ state ? \"show\" : \"hide\" ]();\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.animate(genFx(\"toggle\", 3), fn, fn2, callback);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tfadeTo: function( speed, to, easing, callback ) {\n\t\treturn this.filter(\":hidden\").css(\"opacity\", 0).show().end()\n\t\t\t\t\t.animate({opacity: to}, speed, easing, callback);\n\t},\n\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar optall = jQuery.speed( speed, easing, callback );\n\n\t\tif ( jQuery.isEmptyObject( prop ) ) {\n\t\t\treturn this.each( optall.complete, [ false ] );\n\t\t}\n\n\t\t// Do not change referenced properties as per-property easing will be lost\n\t\tprop = jQuery.extend( {}, prop );\n\n\t\tfunction doAnimation() {\n\t\t\t// XXX 'this' does not always have a nodeName when running the\n\t\t\t// test suite\n\n\t\t\tif ( optall.queue === false ) {\n\t\t\t\tjQuery._mark( this );\n\t\t\t}\n\n\t\t\tvar opt = jQuery.extend( {}, optall ),\n\t\t\t\tisElement = this.nodeType === 1,\n\t\t\t\thidden = isElement && jQuery(this).is(\":hidden\"),\n\t\t\t\tname, val, p, e, hooks, replace,\n\t\t\t\tparts, start, end, unit,\n\t\t\t\tmethod;\n\n\t\t\t// will store per property easing and be used to determine when an animation is complete\n\t\t\topt.animatedProperties = {};\n\n\t\t\t// first pass over propertys to expand / normalize\n\t\t\tfor ( p in prop ) {\n\t\t\t\tname = jQuery.camelCase( p );\n\t\t\t\tif ( p !== name ) {\n\t\t\t\t\tprop[ name ] = prop[ p ];\n\t\t\t\t\tdelete prop[ p ];\n\t\t\t\t}\n\n\t\t\t\tif ( ( hooks = jQuery.cssHooks[ name ] ) && \"expand\" in hooks ) {\n\t\t\t\t\treplace = hooks.expand( prop[ name ] );\n\t\t\t\t\tdelete prop[ name ];\n\n\t\t\t\t\t// not quite $.extend, this wont overwrite keys already present.\n\t\t\t\t\t// also - reusing 'p' from above because we have the correct \"name\"\n\t\t\t\t\tfor ( p in replace ) {\n\t\t\t\t\t\tif ( ! ( p in prop ) ) {\n\t\t\t\t\t\t\tprop[ p ] = replace[ p ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( name in prop ) {\n\t\t\t\tval = prop[ name ];\n\t\t\t\t// easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default)\n\t\t\t\tif ( jQuery.isArray( val ) ) {\n\t\t\t\t\topt.animatedProperties[ name ] = val[ 1 ];\n\t\t\t\t\tval = prop[ name ] = val[ 0 ];\n\t\t\t\t} else {\n\t\t\t\t\topt.animatedProperties[ name ] = opt.specialEasing && opt.specialEasing[ name ] || opt.easing || 'swing';\n\t\t\t\t}\n\n\t\t\t\tif ( val === \"hide\" && hidden || val === \"show\" && !hidden ) {\n\t\t\t\t\treturn opt.complete.call( this );\n\t\t\t\t}\n\n\t\t\t\tif ( isElement && ( name === \"height\" || name === \"width\" ) ) {\n\t\t\t\t\t// Make sure that nothing sneaks out\n\t\t\t\t\t// Record all 3 overflow attributes because IE does not\n\t\t\t\t\t// change the overflow attribute when overflowX and\n\t\t\t\t\t// overflowY are set to the same value\n\t\t\t\t\topt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];\n\n\t\t\t\t\t// Set display property to inline-block for height/width\n\t\t\t\t\t// animations on inline elements that are having width/height animated\n\t\t\t\t\tif ( jQuery.css( this, \"display\" ) === \"inline\" &&\n\t\t\t\t\t\t\tjQuery.css( this, \"float\" ) === \"none\" ) {\n\n\t\t\t\t\t\t// inline-level elements accept inline-block;\n\t\t\t\t\t\t// block-level elements need to be inline with layout\n\t\t\t\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout || defaultDisplay( this.nodeName ) === \"inline\" ) {\n\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.style.zoom = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( opt.overflow != null ) {\n\t\t\t\tthis.style.overflow = \"hidden\";\n\t\t\t}\n\n\t\t\tfor ( p in prop ) {\n\t\t\t\te = new jQuery.fx( this, opt, p );\n\t\t\t\tval = prop[ p ];\n\n\t\t\t\tif ( rfxtypes.test( val ) ) {\n\n\t\t\t\t\t// Tracks whether to show or hide based on private\n\t\t\t\t\t// data attached to the element\n\t\t\t\t\tmethod = jQuery._data( this, \"toggle\" + p ) || ( val === \"toggle\" ? hidden ? \"show\" : \"hide\" : 0 );\n\t\t\t\t\tif ( method ) {\n\t\t\t\t\t\tjQuery._data( this, \"toggle\" + p, method === \"show\" ? \"hide\" : \"show\" );\n\t\t\t\t\t\te[ method ]();\n\t\t\t\t\t} else {\n\t\t\t\t\t\te[ val ]();\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\tparts = rfxnum.exec( val );\n\t\t\t\t\tstart = e.cur();\n\n\t\t\t\t\tif ( parts ) {\n\t\t\t\t\t\tend = parseFloat( parts[2] );\n\t\t\t\t\t\tunit = parts[3] || ( jQuery.cssNumber[ p ] ? \"\" : \"px\" );\n\n\t\t\t\t\t\t// We need to compute starting value\n\t\t\t\t\t\tif ( unit !== \"px\" ) {\n\t\t\t\t\t\t\tjQuery.style( this, p, (end || 1) + unit);\n\t\t\t\t\t\t\tstart = ( (end || 1) / e.cur() ) * start;\n\t\t\t\t\t\t\tjQuery.style( this, p, start + unit);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\t\t\tif ( parts[1] ) {\n\t\t\t\t\t\t\tend = ( (parts[ 1 ] === \"-=\" ? -1 : 1) * end ) + start;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\te.custom( start, end, unit );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\te.custom( start, val, \"\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// For JS strict compliance\n\t\t\treturn true;\n\t\t}\n\n\t\treturn optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar index,\n\t\t\t\thadTimers = false,\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = jQuery._data( this );\n\n\t\t\t// clear marker counters if we know they won't be\n\t\t\tif ( !gotoEnd ) {\n\t\t\t\tjQuery._unmark( true, this );\n\t\t\t}\n\n\t\t\tfunction stopQueue( elem, data, index ) {\n\t\t\t\tvar hooks = data[ index ];\n\t\t\t\tjQuery.removeData( elem, index, true );\n\t\t\t\thooks.stop( gotoEnd );\n\t\t\t}\n\n\t\t\tif ( type == null ) {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && index.indexOf(\".run\") === index.length - 4 ) {\n\t\t\t\t\t\tstopQueue( this, data, index );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if ( data[ index = type + \".run\" ] && data[ index ].stop ){\n\t\t\t\tstopQueue( this, data, index );\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {\n\t\t\t\t\tif ( gotoEnd ) {\n\n\t\t\t\t\t\t// force the next step to be the last\n\t\t\t\t\t\ttimers[ index ]( true );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttimers[ index ].saveState();\n\t\t\t\t\t}\n\t\t\t\t\thadTimers = true;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// start the next in the queue if the last step wasn't forced\n\t\t\t// timers currently will call their complete callbacks, which will dequeue\n\t\t\t// but only if they were gotoEnd\n\t\t\tif ( !( gotoEnd && hadTimers ) ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t}\n\n});\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\tsetTimeout( clearFxNow, 0 );\n\treturn ( fxNow = jQuery.now() );\n}\n\nfunction clearFxNow() {\n\tfxNow = undefined;\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, num ) {\n\tvar obj = {};\n\n\tjQuery.each( fxAttrs.concat.apply([], fxAttrs.slice( 0, num )), function() {\n\t\tobj[ this ] = type;\n\t});\n\n\treturn obj;\n}\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx( \"show\", 1 ),\n\tslideUp: genFx( \"hide\", 1 ),\n\tslideToggle: genFx( \"toggle\", 1 ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.extend({\n\tspeed: function( speed, easing, fn ) {\n\t\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\t\tcomplete: fn || !fn && easing ||\n\t\t\t\tjQuery.isFunction( speed ) && speed,\n\t\t\tduration: speed,\n\t\t\teasing: fn && easing || easing && !jQuery.isFunction( easing ) && easing\n\t\t};\n\n\t\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;\n\n\t\t// normalize opt.queue - true/undefined/null -> \"fx\"\n\t\tif ( opt.queue == null || opt.queue === true ) {\n\t\t\topt.queue = \"fx\";\n\t\t}\n\n\t\t// Queueing\n\t\topt.old = opt.complete;\n\n\t\topt.complete = function( noUnmark ) {\n\t\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\t\topt.old.call( this );\n\t\t\t}\n\n\t\t\tif ( opt.queue ) {\n\t\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t\t} else if ( noUnmark !== false ) {\n\t\t\t\tjQuery._unmark( this );\n\t\t\t}\n\t\t};\n\n\t\treturn opt;\n\t},\n\n\teasing: {\n\t\tlinear: function( p ) {\n\t\t\treturn p;\n\t\t},\n\t\tswing: function( p ) {\n\t\t\treturn ( -Math.cos( p*Math.PI ) / 2 ) + 0.5;\n\t\t}\n\t},\n\n\ttimers: [],\n\n\tfx: function( elem, options, prop ) {\n\t\tthis.options = options;\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\n\t\toptions.orig = options.orig || {};\n\t}\n\n});\n\njQuery.fx.prototype = {\n\t// Simple function for setting a style value\n\tupdate: function() {\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\t( jQuery.fx.step[ this.prop ] || jQuery.fx.step._default )( this );\n\t},\n\n\t// Get the current size\n\tcur: function() {\n\t\tif ( this.elem[ this.prop ] != null && (!this.elem.style || this.elem.style[ this.prop ] == null) ) {\n\t\t\treturn this.elem[ this.prop ];\n\t\t}\n\n\t\tvar parsed,\n\t\t\tr = jQuery.css( this.elem, this.prop );\n\t\t// Empty strings, null, undefined and \"auto\" are converted to 0,\n\t\t// complex values such as \"rotate(1rad)\" are returned as is,\n\t\t// simple values such as \"10px\" are parsed to Float.\n\t\treturn isNaN( parsed = parseFloat( r ) ) ? !r || r === \"auto\" ? 0 : r : parsed;\n\t},\n\n\t// Start an animation from one number to another\n\tcustom: function( from, to, unit ) {\n\t\tvar self = this,\n\t\t\tfx = jQuery.fx;\n\n\t\tthis.startTime = fxNow || createFxNow();\n\t\tthis.end = to;\n\t\tthis.now = this.start = from;\n\t\tthis.pos = this.state = 0;\n\t\tthis.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? \"\" : \"px\" );\n\n\t\tfunction t( gotoEnd ) {\n\t\t\treturn self.step( gotoEnd );\n\t\t}\n\n\t\tt.queue = this.options.queue;\n\t\tt.elem = this.elem;\n\t\tt.saveState = function() {\n\t\t\tif ( jQuery._data( self.elem, \"fxshow\" + self.prop ) === undefined ) {\n\t\t\t\tif ( self.options.hide ) {\n\t\t\t\t\tjQuery._data( self.elem, \"fxshow\" + self.prop, self.start );\n\t\t\t\t} else if ( self.options.show ) {\n\t\t\t\t\tjQuery._data( self.elem, \"fxshow\" + self.prop, self.end );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tif ( t() && jQuery.timers.push(t) && !timerId ) {\n\t\t\ttimerId = setInterval( fx.tick, fx.interval );\n\t\t}\n\t},\n\n\t// Simple 'show' function\n\tshow: function() {\n\t\tvar dataShow = jQuery._data( this.elem, \"fxshow\" + this.prop );\n\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[ this.prop ] = dataShow || jQuery.style( this.elem, this.prop );\n\t\tthis.options.show = true;\n\n\t\t// Begin the animation\n\t\t// Make sure that we start at a small width/height to avoid any flash of content\n\t\tif ( dataShow !== undefined ) {\n\t\t\t// This show is picking up where a previous hide or show left off\n\t\t\tthis.custom( this.cur(), dataShow );\n\t\t} else {\n\t\t\tthis.custom( this.prop === \"width\" || this.prop === \"height\" ? 1 : 0, this.cur() );\n\t\t}\n\n\t\t// Start by showing the element\n\t\tjQuery( this.elem ).show();\n\t},\n\n\t// Simple 'hide' function\n\thide: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[ this.prop ] = jQuery._data( this.elem, \"fxshow\" + this.prop ) || jQuery.style( this.elem, this.prop );\n\t\tthis.options.hide = true;\n\n\t\t// Begin the animation\n\t\tthis.custom( this.cur(), 0 );\n\t},\n\n\t// Each step of an animation\n\tstep: function( gotoEnd ) {\n\t\tvar p, n, complete,\n\t\t\tt = fxNow || createFxNow(),\n\t\t\tdone = true,\n\t\t\telem = this.elem,\n\t\t\toptions = this.options;\n\n\t\tif ( gotoEnd || t >= options.duration + this.startTime ) {\n\t\t\tthis.now = this.end;\n\t\t\tthis.pos = this.state = 1;\n\t\t\tthis.update();\n\n\t\t\toptions.animatedProperties[ this.prop ] = true;\n\n\t\t\tfor ( p in options.animatedProperties ) {\n\t\t\t\tif ( options.animatedProperties[ p ] !== true ) {\n\t\t\t\t\tdone = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( done ) {\n\t\t\t\t// Reset the overflow\n\t\t\t\tif ( options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {\n\n\t\t\t\t\tjQuery.each( [ \"\", \"X\", \"Y\" ], function( index, value ) {\n\t\t\t\t\t\telem.style[ \"overflow\" + value ] = options.overflow[ index ];\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Hide the element if the \"hide\" operation was done\n\t\t\t\tif ( options.hide ) {\n\t\t\t\t\tjQuery( elem ).hide();\n\t\t\t\t}\n\n\t\t\t\t// Reset the properties, if the item has been hidden or shown\n\t\t\t\tif ( options.hide || options.show ) {\n\t\t\t\t\tfor ( p in options.animatedProperties ) {\n\t\t\t\t\t\tjQuery.style( elem, p, options.orig[ p ] );\n\t\t\t\t\t\tjQuery.removeData( elem, \"fxshow\" + p, true );\n\t\t\t\t\t\t// Toggle data is no longer needed\n\t\t\t\t\t\tjQuery.removeData( elem, \"toggle\" + p, true );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Execute the complete function\n\t\t\t\t// in the event that the complete function throws an exception\n\t\t\t\t// we must ensure it won't be called twice. #5684\n\n\t\t\t\tcomplete = options.complete;\n\t\t\t\tif ( complete ) {\n\n\t\t\t\t\toptions.complete = false;\n\t\t\t\t\tcomplete.call( elem );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t} else {\n\t\t\t// classical easing cannot be used with an Infinity duration\n\t\t\tif ( options.duration == Infinity ) {\n\t\t\t\tthis.now = t;\n\t\t\t} else {\n\t\t\t\tn = t - this.startTime;\n\t\t\t\tthis.state = n / options.duration;\n\n\t\t\t\t// Perform the easing function, defaults to swing\n\t\t\t\tthis.pos = jQuery.easing[ options.animatedProperties[this.prop] ]( this.state, n, 0, 1, options.duration );\n\t\t\t\tthis.now = this.start + ( (this.end - this.start) * this.pos );\n\t\t\t}\n\t\t\t// Perform the next step of the animation\n\t\t\tthis.update();\n\t\t}\n\n\t\treturn true;\n\t}\n};\n\njQuery.extend( jQuery.fx, {\n\ttick: function() {\n\t\tvar timer,\n\t\t\ttimers = jQuery.timers,\n\t\t\ti = 0;\n\n\t\tfor ( ; i < timers.length; i++ ) {\n\t\t\ttimer = timers[ i ];\n\t\t\t// Checks the timer has not already been removed\n\t\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\t\ttimers.splice( i--, 1 );\n\t\t\t}\n\t\t}\n\n\t\tif ( !timers.length ) {\n\t\t\tjQuery.fx.stop();\n\t\t}\n\t},\n\n\tinterval: 13,\n\n\tstop: function() {\n\t\tclearInterval( timerId );\n\t\ttimerId = null;\n\t},\n\n\tspeeds: {\n\t\tslow: 600,\n\t\tfast: 200,\n\t\t// Default speed\n\t\t_default: 400\n\t},\n\n\tstep: {\n\t\topacity: function( fx ) {\n\t\t\tjQuery.style( fx.elem, \"opacity\", fx.now );\n\t\t},\n\n\t\t_default: function( fx ) {\n\t\t\tif ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {\n\t\t\t\tfx.elem.style[ fx.prop ] = fx.now + fx.unit;\n\t\t\t} else {\n\t\t\t\tfx.elem[ fx.prop ] = fx.now;\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Ensure props that can't be negative don't go there on undershoot easing\njQuery.each( fxAttrs.concat.apply( [], fxAttrs ), function( i, prop ) {\n\t// exclude marginTop, marginLeft, marginBottom and marginRight from this list\n\tif ( prop.indexOf( \"margin\" ) ) {\n\t\tjQuery.fx.step[ prop ] = function( fx ) {\n\t\t\tjQuery.style( fx.elem, prop, Math.max(0, fx.now) + fx.unit );\n\t\t};\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\n\n// Try to restore the default display value of an element\nfunction defaultDisplay( nodeName ) {\n\n\tif ( !elemdisplay[ nodeName ] ) {\n\n\t\tvar body = document.body,\n\t\t\telem = jQuery( \"<\" + nodeName + \">\" ).appendTo( body ),\n\t\t\tdisplay = elem.css( \"display\" );\n\t\telem.remove();\n\n\t\t// If the simple way fails,\n\t\t// get element's real default display by attaching it to a temp iframe\n\t\tif ( display === \"none\" || display === \"\" ) {\n\t\t\t// No iframe to use yet, so create it\n\t\t\tif ( !iframe ) {\n\t\t\t\tiframe = document.createElement( \"iframe\" );\n\t\t\t\tiframe.frameBorder = iframe.width = iframe.height = 0;\n\t\t\t}\n\n\t\t\tbody.appendChild( iframe );\n\n\t\t\t// Create a cacheable copy of the iframe document on first call.\n\t\t\t// IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML\n\t\t\t// document to it; WebKit & Firefox won't allow reusing the iframe document.\n\t\t\tif ( !iframeDoc || !iframe.createElement ) {\n\t\t\t\tiframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;\n\t\t\t\tiframeDoc.write( ( jQuery.support.boxModel ? \"<!doctype html>\" : \"\" ) + \"<html><body>\" );\n\t\t\t\tiframeDoc.close();\n\t\t\t}\n\n\t\t\telem = iframeDoc.createElement( nodeName );\n\n\t\t\tiframeDoc.body.appendChild( elem );\n\n\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\tbody.removeChild( iframe );\n\t\t}\n\n\t\t// Store the correct default display\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn elemdisplay[ nodeName ];\n}\n\n\n\n\nvar getOffset,\n\trtable = /^t(?:able|d|h)$/i,\n\trroot = /^(?:body|html)$/i;\n\nif ( \"getBoundingClientRect\" in document.documentElement ) {\n\tgetOffset = function( elem, doc, docElem, box ) {\n\t\ttry {\n\t\t\tbox = elem.getBoundingClientRect();\n\t\t} catch(e) {}\n\n\t\t// Make sure we're not dealing with a disconnected DOM node\n\t\tif ( !box || !jQuery.contains( docElem, elem ) ) {\n\t\t\treturn box ? { top: box.top, left: box.left } : { top: 0, left: 0 };\n\t\t}\n\n\t\tvar body = doc.body,\n\t\t\twin = getWindow( doc ),\n\t\t\tclientTop  = docElem.clientTop  || body.clientTop  || 0,\n\t\t\tclientLeft = docElem.clientLeft || body.clientLeft || 0,\n\t\t\tscrollTop  = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop,\n\t\t\tscrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft,\n\t\t\ttop  = box.top  + scrollTop  - clientTop,\n\t\t\tleft = box.left + scrollLeft - clientLeft;\n\n\t\treturn { top: top, left: left };\n\t};\n\n} else {\n\tgetOffset = function( elem, doc, docElem ) {\n\t\tvar computedStyle,\n\t\t\toffsetParent = elem.offsetParent,\n\t\t\tprevOffsetParent = elem,\n\t\t\tbody = doc.body,\n\t\t\tdefaultView = doc.defaultView,\n\t\t\tprevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,\n\t\t\ttop = elem.offsetTop,\n\t\t\tleft = elem.offsetLeft;\n\n\t\twhile ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {\n\t\t\tif ( jQuery.support.fixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcomputedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;\n\t\t\ttop  -= elem.scrollTop;\n\t\t\tleft -= elem.scrollLeft;\n\n\t\t\tif ( elem === offsetParent ) {\n\t\t\t\ttop  += elem.offsetTop;\n\t\t\t\tleft += elem.offsetLeft;\n\n\t\t\t\tif ( jQuery.support.doesNotAddBorder && !(jQuery.support.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {\n\t\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t\t}\n\n\t\t\t\tprevOffsetParent = offsetParent;\n\t\t\t\toffsetParent = elem.offsetParent;\n\t\t\t}\n\n\t\t\tif ( jQuery.support.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== \"visible\" ) {\n\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t}\n\n\t\t\tprevComputedStyle = computedStyle;\n\t\t}\n\n\t\tif ( prevComputedStyle.position === \"relative\" || prevComputedStyle.position === \"static\" ) {\n\t\t\ttop  += body.offsetTop;\n\t\t\tleft += body.offsetLeft;\n\t\t}\n\n\t\tif ( jQuery.support.fixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\ttop  += Math.max( docElem.scrollTop, body.scrollTop );\n\t\t\tleft += Math.max( docElem.scrollLeft, body.scrollLeft );\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t};\n}\n\njQuery.fn.offset = function( options ) {\n\tif ( arguments.length ) {\n\t\treturn options === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t}\n\n\tvar elem = this[0],\n\t\tdoc = elem && elem.ownerDocument;\n\n\tif ( !doc ) {\n\t\treturn null;\n\t}\n\n\tif ( elem === doc.body ) {\n\t\treturn jQuery.offset.bodyOffset( elem );\n\t}\n\n\treturn getOffset( elem, doc, doc.documentElement );\n};\n\njQuery.offset = {\n\n\tbodyOffset: function( body ) {\n\t\tvar top = body.offsetTop,\n\t\t\tleft = body.offsetLeft;\n\n\t\tif ( jQuery.support.doesNotIncludeMarginInBodyOffset ) {\n\t\t\ttop  += parseFloat( jQuery.css(body, \"marginTop\") ) || 0;\n\t\t\tleft += parseFloat( jQuery.css(body, \"marginLeft\") ) || 0;\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t},\n\n\tsetOffset: function( elem, options, i ) {\n\t\tvar position = jQuery.css( elem, \"position\" );\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tvar curElem = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurCSSTop = jQuery.css( elem, \"top\" ),\n\t\t\tcurCSSLeft = jQuery.css( elem, \"left\" ),\n\t\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) && jQuery.inArray(\"auto\", [curCSSTop, curCSSLeft]) > -1,\n\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\n\tposition: function() {\n\t\tif ( !this[0] ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar elem = this[0],\n\n\t\t// Get *real* offsetParent\n\t\toffsetParent = this.offsetParent(),\n\n\t\t// Get correct offsets\n\t\toffset       = this.offset(),\n\t\tparentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t// Subtract element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\toffset.top  -= parseFloat( jQuery.css(elem, \"marginTop\") ) || 0;\n\t\toffset.left -= parseFloat( jQuery.css(elem, \"marginLeft\") ) || 0;\n\n\t\t// Add offsetParent borders\n\t\tparentOffset.top  += parseFloat( jQuery.css(offsetParent[0], \"borderTopWidth\") ) || 0;\n\t\tparentOffset.left += parseFloat( jQuery.css(offsetParent[0], \"borderLeftWidth\") ) || 0;\n\n\t\t// Subtract the two offsets\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\tleft: offset.left - parentOffset.left\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || document.body;\n\t\t\twhile ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, \"position\") === \"static\") ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( {scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\"}, function( method, prop ) {\n\tvar top = /Y/.test( prop );\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn jQuery.access( this, function( elem, method, val ) {\n\t\t\tvar win = getWindow( elem );\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? (prop in win) ? win[ prop ] :\n\t\t\t\t\tjQuery.support.boxModel && win.document.documentElement[ method ] ||\n\t\t\t\t\t\twin.document.body[ method ] :\n\t\t\t\t\telem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : jQuery( win ).scrollLeft(),\n\t\t\t\t\t top ? val : jQuery( win ).scrollTop()\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length, null );\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n\n\n\n\n// Create width, height, innerHeight, innerWidth, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tvar clientProp = \"client\" + name,\n\t\tscrollProp = \"scroll\" + name,\n\t\toffsetProp = \"offset\" + name;\n\n\t// innerHeight and innerWidth\n\tjQuery.fn[ \"inner\" + name ] = function() {\n\t\tvar elem = this[0];\n\t\treturn elem ?\n\t\t\telem.style ?\n\t\t\tparseFloat( jQuery.css( elem, type, \"padding\" ) ) :\n\t\t\tthis[ type ]() :\n\t\t\tnull;\n\t};\n\n\t// outerHeight and outerWidth\n\tjQuery.fn[ \"outer\" + name ] = function( margin ) {\n\t\tvar elem = this[0];\n\t\treturn elem ?\n\t\t\telem.style ?\n\t\t\tparseFloat( jQuery.css( elem, type, margin ? \"margin\" : \"border\" ) ) :\n\t\t\tthis[ type ]() :\n\t\t\tnull;\n\t};\n\n\tjQuery.fn[ type ] = function( value ) {\n\t\treturn jQuery.access( this, function( elem, type, value ) {\n\t\t\tvar doc, docElemProp, orig, ret;\n\n\t\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t\t// 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat\n\t\t\t\tdoc = elem.document;\n\t\t\t\tdocElemProp = doc.documentElement[ clientProp ];\n\t\t\t\treturn jQuery.support.boxModel && docElemProp ||\n\t\t\t\t\tdoc.body && doc.body[ clientProp ] || docElemProp;\n\t\t\t}\n\n\t\t\t// Get document width or height\n\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height], whichever is greater\n\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t// when a window > document, IE6 reports a offset[Width/Height] > client[Width/Height]\n\t\t\t\t// so we can't use max, as it'll choose the incorrect offset[Width/Height]\n\t\t\t\t// instead we use the correct client[Width/Height]\n\t\t\t\t// support:IE6\n\t\t\t\tif ( doc[ clientProp ] >= doc[ scrollProp ] ) {\n\t\t\t\t\treturn doc[ clientProp ];\n\t\t\t\t}\n\n\t\t\t\treturn Math.max(\n\t\t\t\t\telem.body[ scrollProp ], doc[ scrollProp ],\n\t\t\t\t\telem.body[ offsetProp ], doc[ offsetProp ]\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Get width or height on the element\n\t\t\tif ( value === undefined ) {\n\t\t\t\torig = jQuery.css( elem, type );\n\t\t\t\tret = parseFloat( orig );\n\t\t\t\treturn jQuery.isNumeric( ret ) ? ret : orig;\n\t\t\t}\n\n\t\t\t// Set the width or height on the element\n\t\t\tjQuery( elem ).css( type, value );\n\t\t}, type, value, arguments.length, null );\n\t};\n});\n\n\n\n\n// Expose jQuery to the global object\nwindow.jQuery = window.$ = jQuery;\n\n// Expose jQuery as an AMD module, but only for AMD loaders that\n// understand the issues with loading multiple versions of jQuery\n// in a page that all might call define(). The loader will indicate\n// they have special allowances for multiple jQuery versions by\n// specifying define.amd.jQuery = true. Register as a named module,\n// since jQuery can be concatenated with other files that may use define,\n// but not use a proper concatenation script that understands anonymous\n// AMD modules. A named AMD is safest and most robust way to register.\n// Lowercase jquery is used because AMD module names are derived from\n// file names, and jQuery is normally delivered in a lowercase file name.\n// Do this after creating the global so that if an AMD module wants to call\n// noConflict to hide this version of jQuery, it will work.\nif ( typeof define === \"function\" && define.amd && define.amd.jQuery ) {\n\tdefine( \"jquery\", [], function () { return jQuery; } );\n}\n\n\n\n})( window );\n"
  },
  {
    "path": "src/taoshop-portal/src/main/resources/static/js/jquery.tips.js",
    "content": "/**\n* jquery tips 提示插件 jquery.tips.js v0.1beta\n*\n* 使用方法\n* $(selector).tips({   //selector 为jquery选择器\n*  msg:'your messages!',    //你的提示消息  必填\n*  side:1,  //提示窗显示位置  1，2，3，4 分别代表 上右下左 默认为1（上） 可选\n*  color:'#FFF', //提示文字色 默认为白色 可选\n*  bg:'#F00',//提示窗背景色 默认为红色 可选\n*  time:2,//自动关闭时间 默认2秒 设置0则不自动关闭 可选\n*  x:0,//横向偏移  正数向右偏移 负数向左偏移 默认为0 可选\n*  y:0,//纵向偏移  正数向下偏移 负数向上偏移 默认为0 可选\n* })\n*\n*\n*/\n(function ($) {\n    $.fn.tips = function(options){\n        var defaults = {\n            side:1,\n            msg:'',\n            color:'#FFF',\n            bg:'#F00',\n            time:2,\n            x:0,\n            y:0\n        }\n        var options = $.extend(defaults, options);\n        if (!options.msg||isNaN(options.side)) {\n        throw new Error('params error');\n    }\n    if(!$('#jquery_tips_style').length){\n        var style='<style id=\"jquery_tips_style\" type=\"text/css\">';\n        style+='.jq_tips_box{padding:10px;position:absolute;overflow:hidden;display:inline;display:none;z-index:10176523;}';\n        style+='.jq_tips_arrow{display:block;width:0px;height:0px;position:absolute;}';\n        style+='.jq_tips_top{border-left:10px solid transparent;left:20px;bottom:0px;}';\n        style+='.jq_tips_left{border-top:10px solid transparent;right:0px;top:18px;}';\n        style+='.jq_tips_bottom{border-left:10px solid transparent;left:20px;top:0px;}';\n        style+='.jq_tips_right{border-top:10px solid transparent;left:0px;top:18px;}';\n        style+='.jq_tips_info{word-wrap: break-word;word-break:normal;border-radius:4px;padding:5px 8px;max-width:130px;overflow:hidden;box-shadow:1px 1px 1px #999;font-size:12px;cursor:pointer;}';\n        style+='</style>';\n        $(document.body).append(style);\n    }\n        this.each(function(){\n            var element=$(this);\n            var element_top=element.offset().top,element_left=element.offset().left,element_height=element.outerHeight(),element_width=element.outerWidth();\n            options.side=options.side<1?1:options.side>4?4:Math.round(options.side);\n            var sideName=options.side==1?'top':options.side==2?'right':options.side==3?'bottom':options.side==4?'left':'top';\n            var tips=$('<div class=\"jq_tips_box\"><i class=\"jq_tips_arrow jq_tips_'+sideName+'\"></i><div class=\"jq_tips_info\">'+options.msg+'</div></div>').appendTo(document.body);\n            tips.find('.jq_tips_arrow').css('border-'+sideName,'10px solid '+options.bg);\n            tips.find('.jq_tips_info').css({\n                color:options.color,\n                backgroundColor:options.bg\n            });\n            switch(options.side){\n                case 1:\n                    tips.css({\n                        top:element_top-tips.outerHeight()+options.x,\n                        left:element_left-10+options.y\n                    });\n                    break;\n                case 2:\n                    tips.css({\n                        top:element_top-20+options.x,\n                        left:element_left+element_width+options.y\n                    });\n                    break;\n                case 3:\n                    tips.css({\n                        top:element_top+element_height+options.x,\n                        left:element_left-10+options.y\n                    });\n                    break;\n                case 4:\n                    tips.css({\n                        top:element_top-20+options.x,\n                        left:element_left-tips.outerWidth()+options.y\n                    });\n                    break;\n                default:\n            }\n            var closeTime;\n            tips.fadeIn('fast').click(function(){\n                clearTimeout(closeTime);\n                tips.fadeOut('fast',function(){\n                    tips.remove();\n                })\n            })\n            if(options.time){\n                closeTime=setTimeout(function(){\n                    tips.click();\n                },options.time*1000);\n                tips.hover(function(){\n                    clearTimeout(closeTime);\n                },function(){\n                    closeTime=setTimeout(function(){\n                        tips.click();\n                    },options.time*1000);\n                })\n            }\n        });\n        return this;\n    };\n})(jQuery);"
  },
  {
    "path": "src/taoshop-portal/src/main/resources/static/js/jqzoom.js",
    "content": "/*!\n * jQzoom Evolution Library v2.3  - Javascript Image magnifier\n * http://www.mind-projects.it\n *\n * Copyright 2011, Engineer Marco Renzi\n * Licensed under the BSD license.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *     * Redistributions of source code must retain the above copyright\n *       notice, this list of conditions and the following disclaimer.\n *     * Redistributions in binary form must reproduce the above copyright\n *       notice, this list of conditions and the following disclaimer in the\n *       documentation and/or other materials provided with the distribution.\n *     * Neither the name of the organization nor the\n *       names of its contributors may be used to endorse or promote products\n *       derived from this software without specific prior written permission.\n *\n * Date: 03 May 2011 22:16:00\n */\n(function ($) {\n    //GLOBAL VARIABLES\n    var isIE6 = ($.browser.msie && $.browser.version < 7);\n    var body = $(document.body);\n    var window = $(window);\n    var jqzoompluging_disabled = false; //disabilita globalmente il plugin\n    $.fn.jqzoom = function (options) {\n        return this.each(function () {\n            var node = this.nodeName.toLowerCase();\n            if (node == 'a') {\n                new jqzoom(this, options);\n            }\n        });\n    };\n    jqzoom = function (el, options) {\n        var api = null;\n        api = $(el).data(\"jqzoom\");\n        if (api) return api;\n        var obj = this;\n        var settings = $.extend({}, $.jqzoom.defaults, options || {});\n        obj.el = el;\n        el.rel = $(el).attr('rel');\n        //ANCHOR ELEMENT\n        el.zoom_active = false;\n        el.zoom_disabled = false; //to disable single zoom instance\n        el.largeimageloading = false; //tell us if large image is loading\n        el.largeimageloaded = false; //tell us if large image is loaded\n        el.scale = {};\n        el.timer = null;\n        el.mousepos = {};\n        el.mouseDown = false;\n        $(el).css({\n            'outline-style': 'none',\n            'text-decoration': 'none'\n        });\n        //BASE IMAGE\n        var img = $(\"img:eq(0)\", el);\n        el.title = $(el).attr('title');\n        el.imagetitle = img.attr('title');\n        var zoomtitle = ($.trim(el.title).length > 0) ? el.title : el.imagetitle;\n        var smallimage = new Smallimage(img);\n        var lens = new Lens();\n        var stage = new Stage();\n        var largeimage = new Largeimage();\n        var loader = new Loader();\n        //preventing default click,allowing the onclick event [exmple: lightbox]\n        $(el).bind('click', function (e) {\n            e.preventDefault();\n            return false;\n        });\n        //setting the default zoomType if not in settings\n        var zoomtypes = ['standard', 'drag', 'innerzoom', 'reverse'];\n        if ($.inArray($.trim(settings.zoomType), zoomtypes) < 0) {\n            settings.zoomType = 'standard';\n        }\n        $.extend(obj, {\n            create: function () { //create the main objects\n                //create ZoomPad\n                if ($(\".zoomPad\", el).length == 0) {\n                    el.zoomPad = $('<div/>').addClass('zoomPad');\n                    img.wrap(el.zoomPad);\n                }\n                if(settings.zoomType == 'innerzoom'){\n                    settings.zoomWidth  = smallimage.w;\n                    settings.zoomHeight  =   smallimage.h;\n                }\n                //creating ZoomPup\n                if ($(\".zoomPup\", el).length == 0) {\n                    lens.append();\n                }\n                //creating zoomWindow\n                if ($(\".zoomWindow\", el).length == 0) {\n                    stage.append();\n                }\n                //creating Preload\n                if ($(\".zoomPreload\", el).length == 0) {\n                    loader.append();\n                }\n                //preloading images\n                if (settings.preloadImages || settings.zoomType == 'drag' || settings.alwaysOn) {\n                    obj.load();\n                }\n                obj.init();\n            },\n            init: function () {\n                //drag option\n                if (settings.zoomType == 'drag') {\n                    $(\".zoomPad\", el).mousedown(function () {\n                        el.mouseDown = true;\n                    });\n                    $(\".zoomPad\", el).mouseup(function () {\n                        el.mouseDown = false;\n                    });\n                    document.body.ondragstart = function () {\n                        return false;\n                    };\n                    $(\".zoomPad\", el).css({\n                        cursor: 'default'\n                    });\n                    $(\".zoomPup\", el).css({\n                        cursor: 'move'\n                    });\n                }\n                if (settings.zoomType == 'innerzoom') {\n                    $(\".zoomWrapper\", el).css({\n                        cursor: 'crosshair'\n                    });\n                }\n                $(\".zoomPad\", el).bind('mouseenter mouseover', function (event) {\n                    img.attr('title', '');\n                    $(el).attr('title', '');\n                    el.zoom_active = true;\n                    //if loaded then activate else load large image\n                    smallimage.fetchdata();\n                    if (el.largeimageloaded) {\n                        obj.activate(event);\n                    } else {\n                        obj.load();\n                    }\n                });\n                $(\".zoomPad\", el).bind('mouseleave', function (event) {\n                    obj.deactivate();\n                });\n                $(\".zoomPad\", el).bind('mousemove', function (e) {\n\n                    //prevent fast mouse mevements not to fire the mouseout event\n                    if (e.pageX > smallimage.pos.r || e.pageX < smallimage.pos.l || e.pageY < smallimage.pos.t || e.pageY > smallimage.pos.b) {\n                        lens.setcenter();\n                        return false;\n                    }\n                    el.zoom_active = true;\n                    if (el.largeimageloaded && !$('.zoomWindow', el).is(':visible')) {\n                        obj.activate(e);\n                    }\n                    if (el.largeimageloaded && (settings.zoomType != 'drag' || (settings.zoomType == 'drag' && el.mouseDown))) {\n                        lens.setposition(e);\n                    }\n                });\n                var thumb_preload = new Array();\n                var i = 0;\n                //binding click event on thumbnails\n                var thumblist = new Array();\n                thumblist = $('a').filter(function () {\n                    var regex = new RegExp(\"gallery[\\\\s]*:[\\\\s]*'\" + $.trim(el.rel) + \"'\", \"i\");\n                    var rel = $(this).attr('rel');\n                    if (regex.test(rel)) {\n                        return this;\n                    }\n                });\n                if (thumblist.length > 0) {\n                    //getting the first to the last\n                    var first = thumblist.splice(0, 1);\n                    thumblist.push(first);\n                }\n                thumblist.each(function () {\n                    //preloading thumbs\n                    if (settings.preloadImages) {\n                        var thumb_options = $.extend({}, eval(\"(\" + $.trim($(this).attr('rel')) + \")\"));\n                        thumb_preload[i] = new Image();\n                        thumb_preload[i].src = thumb_options.largeimage;\n                        i++;\n                    }\n                    $(this).click(function (e) {\n                        if($(this).hasClass('zoomThumbActive')){\n                          return false;\n                        }\n                        thumblist.each(function () {\n                            $(this).removeClass('zoomThumbActive');\n                        });\n                        e.preventDefault();\n                        obj.swapimage(this);\n                        return false;\n                    });\n                });\n            },\n            load: function () {\n                if (el.largeimageloaded == false && el.largeimageloading == false) {\n                    var url = $(el).attr('href');\n                    el.largeimageloading = true;\n                    largeimage.loadimage(url);\n                }\n            },\n            activate: function (e) {\n                clearTimeout(el.timer);\n                //show lens and zoomWindow\n                lens.show();\n                stage.show();\n            },\n            deactivate: function (e) {\n                switch (settings.zoomType) {\n                case 'drag':\n                    //nothing or lens.setcenter();\n                    break;\n                default:\n                    img.attr('title', el.imagetitle);\n                    $(el).attr('title', el.title);\n                    if (settings.alwaysOn) {\n                        lens.setcenter();\n                    } else {\n                        stage.hide();\n                        lens.hide();\n                    }\n                    break;\n                }\n                el.zoom_active = false;\n            },\n            swapimage: function (link) {\n                el.largeimageloading = false;\n                el.largeimageloaded = false;\n                var options = new Object();\n                options = $.extend({}, eval(\"(\" + $.trim($(link).attr('rel')) + \")\"));\n                if (options.smallimage && options.largeimage) {\n                    var smallimage = options.smallimage;\n                    var largeimage = options.largeimage;\n                    $(link).addClass('zoomThumbActive');\n                    $(el).attr('href', largeimage);\n                    img.attr('src', smallimage);\n                    lens.hide();\n                    stage.hide();\n                    obj.load();\n                } else {\n                    alert('ERROR :: Missing parameter for largeimage or smallimage.');\n                    throw 'ERROR :: Missing parameter for largeimage or smallimage.';\n                }\n                return false;\n            }\n        });\n        //sometimes image is already loaded and onload will not fire\n        if (img[0].complete) {\n            //fetching data from sallimage if was previously loaded\n            smallimage.fetchdata();\n            if ($(\".zoomPad\", el).length == 0) obj.create();\n        }\n/*========================================================,\n|   Smallimage\n|---------------------------------------------------------:\n|   Base image into the anchor element\n`========================================================*/\n\n        function Smallimage(image) {\n            var $obj = this;\n            this.node = image[0];\n            this.findborder = function () {\n                var bordertop = 0;\n                bordertop = image.css('border-top-width');\n                btop = '';\n                var borderleft = 0;\n                borderleft = image.css('border-left-width');\n                bleft = '';\n                if (bordertop) {\n                    for (i = 0; i < 3; i++) {\n                        var x = [];\n                        x = bordertop.substr(i, 1);\n                        if (isNaN(x) == false) {\n                            btop = btop + '' + bordertop.substr(i, 1);\n                        } else {\n                            break;\n                        }\n                    }\n                }\n                if (borderleft) {\n                    for (i = 0; i < 3; i++) {\n                        if (!isNaN(borderleft.substr(i, 1))) {\n                            bleft = bleft + borderleft.substr(i, 1)\n                        } else {\n                            break;\n                        }\n                    }\n                }\n                $obj.btop = (btop.length > 0) ? eval(btop) : 0;\n                $obj.bleft = (bleft.length > 0) ? eval(bleft) : 0;\n            };\n            this.fetchdata = function () {\n                $obj.findborder();\n                $obj.w = image.width();\n                $obj.h = image.height();\n                $obj.ow = image.outerWidth();\n                $obj.oh = image.outerHeight();\n                $obj.pos = image.offset();\n                $obj.pos.l = image.offset().left + $obj.bleft;\n                $obj.pos.t = image.offset().top + $obj.btop;\n                $obj.pos.r = $obj.w + $obj.pos.l;\n                $obj.pos.b = $obj.h + $obj.pos.t;\n                $obj.rightlimit = image.offset().left + $obj.ow;\n                $obj.bottomlimit = image.offset().top + $obj.oh;\n                \n            };\n            this.node.onerror = function () {\n                \n            };\n            this.node.onload = function () {\n                $obj.fetchdata();\n                if ($(\".zoomPad\", el).length == 0) obj.create();\n            };\n            return $obj;\n        };\n/*========================================================,\n|  Loader\n|---------------------------------------------------------:\n|  Show that the large image is loading\n`========================================================*/\n\n        function Loader() {\n            var $obj = this;\n            this.append = function () {\n                this.node = $('<div/>').addClass('zoomPreload').css('visibility', 'hidden').html(settings.preloadText);\n                $('.zoomPad', el).append(this.node);\n            };\n            this.show = function () {\n                this.node.top = (smallimage.oh - this.node.height()) / 2;\n                this.node.left = (smallimage.ow - this.node.width()) / 2;\n                //setting position\n                this.node.css({\n                    top: this.node.top,\n                    left: this.node.left,\n                    position: 'absolute',\n                    visibility: 'visible'\n                });\n            };\n            this.hide = function () {\n                this.node.css('visibility', 'hidden');\n            };\n            return this;\n        }\n/*========================================================,\n|   Lens\n|---------------------------------------------------------:\n|   Lens over the image\n`========================================================*/\n\n        function Lens() {\n            var $obj = this;\n            this.node = $('<div/>').addClass('zoomPup');\n            //this.nodeimgwrapper = $(\"<div/>\").addClass('zoomPupImgWrapper');\n            this.append = function () {\n                $('.zoomPad', el).append($(this.node).hide());\n                if (settings.zoomType == 'reverse') {\n                    this.image = new Image();\n                    this.image.src = smallimage.node.src; // fires off async\n                    $(this.node).empty().append(this.image);\n                }\n            };\n            this.setdimensions = function () {\n                this.node.w = (parseInt((settings.zoomWidth) / el.scale.x) > smallimage.w ) ? smallimage.w : (parseInt(settings.zoomWidth / el.scale.x)); \n                this.node.h = (parseInt((settings.zoomHeight) / el.scale.y) > smallimage.h ) ? smallimage.h : (parseInt(settings.zoomHeight / el.scale.y)); \n                this.node.top = (smallimage.oh - this.node.h - 2) / 2;\n                this.node.left = (smallimage.ow - this.node.w - 2) / 2;\n                //centering lens\n                this.node.css({\n                    top: 0,\n                    left: 0,\n                    width: this.node.w + 'px',\n                    height: this.node.h + 'px',\n                    position: 'absolute',\n                    display: 'none',\n                    borderWidth: 1 + 'px'\n                });\n\n\n\n                if (settings.zoomType == 'reverse') {\n                    this.image.src = smallimage.node.src;\n                    $(this.node).css({\n                        'opacity': 1\n                    });\n\n                    $(this.image).css({\n                        position: 'absolute',\n                        display: 'block',\n                        left: -(this.node.left + 1 - smallimage.bleft) + 'px',\n                        top: -(this.node.top + 1 - smallimage.btop) + 'px'\n                    });\n\n                }\n            };\n            this.setcenter = function () {\n                //calculating center position\n                this.node.top = (smallimage.oh - this.node.h - 2) / 2;\n                this.node.left = (smallimage.ow - this.node.w - 2) / 2;\n                //centering lens\n                this.node.css({\n                    top: this.node.top,\n                    left: this.node.left\n                });\n                if (settings.zoomType == 'reverse') {\n                    $(this.image).css({\n                        position: 'absolute',\n                        display: 'block',\n                        left: -(this.node.left + 1 - smallimage.bleft) + 'px',\n                        top: -(this.node.top + 1 - smallimage.btop) + 'px'\n                    });\n\n                }\n                //centering large image\n                largeimage.setposition();\n            };\n            this.setposition = function (e) {\n                el.mousepos.x = e.pageX;\n                el.mousepos.y = e.pageY;\n                var lensleft = 0;\n                var lenstop = 0;\n\n                function overleft(lens) {\n                    return el.mousepos.x - (lens.w) / 2 < smallimage.pos.l; \n                }\n\n                function overright(lens) {\n                    return el.mousepos.x + (lens.w) / 2 > smallimage.pos.r; \n                   \n                }\n\n                function overtop(lens) {\n                    return el.mousepos.y - (lens.h) / 2 < smallimage.pos.t; \n                }\n\n                function overbottom(lens) {\n                    return el.mousepos.y + (lens.h) / 2 > smallimage.pos.b; \n                }\n                \n                lensleft = el.mousepos.x + smallimage.bleft - smallimage.pos.l - (this.node.w + 2) / 2;\n                lenstop = el.mousepos.y + smallimage.btop - smallimage.pos.t - (this.node.h + 2) / 2;\n                if (overleft(this.node)) {\n                    lensleft = smallimage.bleft - 1;\n                } else if (overright(this.node)) {\n                    lensleft = smallimage.w + smallimage.bleft - this.node.w - 1;\n                }\n                if (overtop(this.node)) {\n                    lenstop = smallimage.btop - 1;\n                } else if (overbottom(this.node)) {\n                    lenstop = smallimage.h + smallimage.btop - this.node.h - 1;\n                }\n                \n                this.node.left = lensleft;\n                this.node.top = lenstop;\n                this.node.css({\n                    'left': lensleft + 'px',\n                    'top': lenstop + 'px'\n                });\n                if (settings.zoomType == 'reverse') {\n                    if ($.browser.msie && $.browser.version > 7) {\n                        $(this.node).empty().append(this.image);\n                    }\n\n                    $(this.image).css({\n                        position: 'absolute',\n                        display: 'block',\n                        left: -(this.node.left + 1 - smallimage.bleft) + 'px',\n                        top: -(this.node.top + 1 - smallimage.btop) + 'px'\n                    });\n                }\n               \n                largeimage.setposition();\n            };\n            this.hide = function () {\n                img.css({\n                    'opacity': 1\n                });\n                this.node.hide();\n            };\n            this.show = function () {  \n                \n                if (settings.zoomType != 'innerzoom' && (settings.lens || settings.zoomType == 'drag')) {\n                    this.node.show();\n                }       \n\n                if (settings.zoomType == 'reverse') {\n                    img.css({\n                        'opacity': settings.imageOpacity\n                    });\n                }\n            };\n            this.getoffset = function () {\n                var o = {};\n                o.left = $obj.node.left;\n                o.top = $obj.node.top;\n                return o;\n            };\n            return this;\n        };\n/*========================================================,\n|   Stage\n|---------------------------------------------------------:\n|   Window area that contains the large image\n`========================================================*/\n\n        function Stage() {\n            var $obj = this;\n            this.node = $(\"<div class='zoomWindow'><div class='zoomWrapper'><div class='zoomWrapperTitle'></div><div class='zoomWrapperImage'></div></div></div>\");\n            this.ieframe = $('<iframe class=\"zoomIframe\" src=\"javascript:\\'\\';\" marginwidth=\"0\" marginheight=\"0\" align=\"bottom\" scrolling=\"no\" frameborder=\"0\" ></iframe>');\n            this.setposition = function () {\n                this.node.leftpos = 0;\n                this.node.toppos = 0;\n                if (settings.zoomType != 'innerzoom') {\n                    //positioning\n                    switch (settings.position) {\n                    case \"left\":\n                        this.node.leftpos = (smallimage.pos.l - smallimage.bleft - Math.abs(settings.xOffset) - settings.zoomWidth > 0) ? (0 - settings.zoomWidth - Math.abs(settings.xOffset)) : (smallimage.ow + Math.abs(settings.xOffset));\n                        this.node.toppos = Math.abs(settings.yOffset);\n                        break;\n                    case \"top\":\n                        this.node.leftpos = Math.abs(settings.xOffset);\n                        this.node.toppos = (smallimage.pos.t - smallimage.btop - Math.abs(settings.yOffset) - settings.zoomHeight > 0) ? (0 - settings.zoomHeight - Math.abs(settings.yOffset)) : (smallimage.oh + Math.abs(settings.yOffset));\n                        break;\n                    case \"bottom\":\n                        this.node.leftpos = Math.abs(settings.xOffset);\n                        this.node.toppos = (smallimage.pos.t - smallimage.btop + smallimage.oh + Math.abs(settings.yOffset) + settings.zoomHeight < screen.height) ? (smallimage.oh + Math.abs(settings.yOffset)) : (0 - settings.zoomHeight - Math.abs(settings.yOffset));\n                        break;\n                    default:\n                        this.node.leftpos = (smallimage.rightlimit + Math.abs(settings.xOffset) + settings.zoomWidth < screen.width) ? (smallimage.ow + Math.abs(settings.xOffset)) : (0 - settings.zoomWidth - Math.abs(settings.xOffset));\n                        this.node.toppos = Math.abs(settings.yOffset);\n                        break;\n                    }\n                }\n                this.node.css({\n                    'left': this.node.leftpos + 'px',\n                    'top': this.node.toppos + 'px'\n                });\n                return this;\n            };\n            this.append = function () {\n                $('.zoomPad', el).append(this.node);\n                this.node.css({\n                    position: 'absolute',\n                    display: 'none',\n                    zIndex: 5001\n                });\n                if (settings.zoomType == 'innerzoom') {\n                    this.node.css({\n                        cursor: 'default'\n                    });\n                    var thickness = (smallimage.bleft == 0) ? 1 : smallimage.bleft;\n                    $('.zoomWrapper', this.node).css({\n                        borderWidth: thickness + 'px'\n                    });    \n                }\n                \n                  $('.zoomWrapper', this.node).css({\n                      width: Math.round(settings.zoomWidth) + 'px' ,\n                      borderWidth: thickness + 'px'\n                  });\n\n                  $('.zoomWrapperImage', this.node).css({\n                      width: '100%',\n                      height: Math.round(settings.zoomHeight) + 'px'\n                  });\n                  //zoom title\n                 $('.zoomWrapperTitle', this.node).css({\n                        width: '100%',\n                        position: 'absolute'\n                  });  \n              \n                $('.zoomWrapperTitle', this.node).hide();\n                if (settings.title && zoomtitle.length > 0) {\n                    $('.zoomWrapperTitle', this.node).html(zoomtitle).show();\n                }\n                $obj.setposition();\n            };\n            this.hide = function () {\n                switch (settings.hideEffect) {\n                case 'fadeout':\n                    this.node.fadeOut(settings.fadeoutSpeed, function () {});\n                    break;\n                default:\n                    this.node.hide();\n                    break;\n                }\n                this.ieframe.hide();\n            };\n            this.show = function () {\n                switch (settings.showEffect) {\n                case 'fadein':\n                    this.node.fadeIn();\n                    this.node.fadeIn(settings.fadeinSpeed, function () {});\n                    break;\n                default:\n                    this.node.show();\n                    break;\n                }\n                if (isIE6 && settings.zoomType != 'innerzoom') {\n                    this.ieframe.width = this.node.width();\n                    this.ieframe.height = this.node.height();\n                    this.ieframe.left = this.node.leftpos;\n                    this.ieframe.top = this.node.toppos;\n                    this.ieframe.css({\n                        display: 'block',\n                        position: \"absolute\",\n                        left: this.ieframe.left,\n                        top: this.ieframe.top,\n                        zIndex: 99,\n                        width: this.ieframe.width + 'px',\n                        height: this.ieframe.height + 'px'\n                    });\n                    $('.zoomPad', el).append(this.ieframe);\n                    this.ieframe.show();\n                };\n            };\n        };\n/*========================================================,\n|   LargeImage\n|---------------------------------------------------------:\n|   The large detailed image\n`========================================================*/\n\n        function Largeimage() {\n            var $obj = this;\n            this.node = new Image();\n            this.loadimage = function (url) {\n                //showing preload\n                loader.show();\n                this.url = url;\n                this.node.style.position = 'absolute';\n                this.node.style.border = '0px';\n                this.node.style.display = 'none';\n                this.node.style.left = '-5000px';\n                this.node.style.top = '0px';\n                document.body.appendChild(this.node);\n                this.node.src = url; // fires off async\n            };\n            this.fetchdata = function () {\n                var image = $(this.node);\n                var scale = {};\n                this.node.style.display = 'block';\n                $obj.w = image.width();\n                $obj.h = image.height();\n                $obj.pos = image.offset();\n                $obj.pos.l = image.offset().left;\n                $obj.pos.t = image.offset().top;\n                $obj.pos.r = $obj.w + $obj.pos.l;\n                $obj.pos.b = $obj.h + $obj.pos.t;\n                scale.x = ($obj.w / smallimage.w);\n                scale.y = ($obj.h / smallimage.h);\n                el.scale = scale;\n                document.body.removeChild(this.node);\n                $('.zoomWrapperImage', el).empty().append(this.node);\n                //setting lens dimensions;\n                lens.setdimensions();\n            };\n            this.node.onerror = function () {\n                \n            };\n            this.node.onload = function () {\n                //fetching data\n                $obj.fetchdata();\n                loader.hide();\n                el.largeimageloading = false;\n                el.largeimageloaded = true;\n                if (settings.zoomType == 'drag' || settings.alwaysOn) {\n                    lens.show();\n                    stage.show();\n                    lens.setcenter();\n                }\n            };\n            this.setposition = function () {\n                var left = -el.scale.x * (lens.getoffset().left - smallimage.bleft + 1);\n                var top = -el.scale.y * (lens.getoffset().top - smallimage.btop + 1);\n                $(this.node).css({\n                    'left': left + 'px',\n                    'top': top + 'px'\n                });\n            };\n            return this;\n        };\n        $(el).data(\"jqzoom\", obj);\n    };\n    //es. $.jqzoom.disable('#jqzoom1');\n    $.jqzoom = {\n        defaults: {\n            zoomType: 'standard',\n            //innerzoom/standard/reverse/drag\n            zoomWidth: 300,\n            //zoomWindow  default width\n            zoomHeight: 300,\n            //zoomWindow  default height\n            xOffset: 10,\n            //zoomWindow x offset, can be negative(more on the left) or positive(more on the right)\n            yOffset: 0,\n            //zoomWindow y offset, can be negative(more on the left) or positive(more on the right)\n            position: \"right\",\n            //zoomWindow default position\n            preloadImages: true,\n            //image preload\n            preloadText: 'Loading zoom',\n            title: true,\n            lens: true,\n            imageOpacity: 0.4,\n            alwaysOn: false,\n            showEffect: 'show',\n            //show/fadein\n            hideEffect: 'hide',\n            //hide/fadeout\n            fadeinSpeed: 'slow',\n            //fast/slow/number\n            fadeoutSpeed: '2000' //fast/slow/number\n        },\n        disable: function (el) {\n            var api = $(el).data('jqzoom');\n            api.disable();\n            return false;\n        },\n        enable: function (el) {\n            var api = $(el).data('jqzoom');\n            api.enable();\n            return false;\n        },\n        disableAll: function (el) {\n            jqzoompluging_disabled = true;\n        },\n        enableAll: function (el) {\n            jqzoompluging_disabled = false;\n        }\n    };\n})(jQuery);"
  },
  {
    "path": "src/taoshop-portal/src/main/resources/static/js/popbox.js",
    "content": "/*popbox*/\n  var windowHeight,popupHeight,checkpos;\n  function popPosition(dom){\n\tvar windowHeight = $(window).height();\n\t    windowWidth = $(window).width();\n\t    popupHeight = $(dom).height();\n\t    popupWidth = $(dom).width();\n\tvar posiTop = (windowHeight - popupHeight)/2-10;\n\tvar posiLeft = (windowWidth - popupWidth)/2-10;\n\t$(dom).css({'width':popupWidth,\"left\":posiLeft,\"top\":posiTop}).show();\t\n\t$('.mark').show().css({'height':$(window).height()});\n  }\n  $(function(){\n    $(window).resize(function(){\n      if($(\".popbox\").css(\"display\")==\"block\"){\n\t    popPosition('.popbox');\n\t  }\n    });\n    $('.popbox .pop-close').click(function(){\t\n\t  $('.mark').fadeOut();\n\t  $(this).parents('.popbox').hide();\n    });\n  });"
  },
  {
    "path": "src/taoshop-portal/src/main/resources/templates/footer.html",
    "content": "<footer class=\"footer\">\n    <div class=\"layout clearfix\">\n        <!--footService-->\n        <div class=\"footer-service\">\n            <dl>\n                <dt><em class=\"icon-aq\"></em>购物指南</dt>\n                <dd><a href=\"#\">咨询与投诉</a></dd>\n            </dl>\n            <dl>\n                <dt><em class=\"icon-service\"></em>售后服务</dt>\n                <dd><a href=\"#\">七天包退</a></dd>\n                <dd><a href=\"#\">十五天包换</a></dd>\n                <dd><a href=\"#\">手机维修咨询</a></dd>\n            </dl>\n            <dl>\n                <dt><em class=\"icon-pay\"></em>支付方式</dt>\n                <dd><a href=\"#\">网上支付</a></dd>\n            </dl>\n        </div>\n        <!--//footService-->\n        <!--在线咨询-->\n        <ul class=\"online\">\n            <li class=\"line1\"><a href=\"#\"></a></li>\n            <li class=\"line2\"><a href=\"#\"></a></li>\n            <li class=\"line3\"><a href=\"#\"></a></li>\n            <li class=\"line4\"><a href=\"#\"></a></li>\n            <li class=\"line5\"><a href=\"#\"></a></li>\n            <li class=\"line6\"><a href=\"#\"></a></li>\n        </ul>\n        <!--在线咨询-->\n    </div>\n    <!--copyright-->\n    <div class=\"footer-copyright\">\n        <p class=\"copyright\">版权所有 ©2017 </p>\n        <s class=\"cr-icon\"></s> </div>\n    <!--//copyright-->\n</footer>"
  },
  {
    "path": "src/taoshop-portal/src/main/resources/templates/header_main.html",
    "content": "<div class=\"headerMain layout clearfix\" xmlns:th=\"http://www.w3.org/1999/xhtml\">\n    <!--logo-->\n    <h1 class=\"siteLogo\"><a th:href=\"@{/portal/toIndex.do}\" title=\"商城\" class=\"siteLogo-homepage\"></a><a th:href=\"@{/portal/toIndex.do}\" title=\"商城\" class=\"siteLogo-mallpage\"></a></h1>\n    <!--//logo-->\n    <!--search-->\n    <div class=\"search\">\n        <div class=\"search-area\">\n            <input type=\"text\" placeholder=\"请输入搜索关键字\" class=\"search-input-text\" />\n            <input type=\"button\" title=\"搜索\" class=\"search-input-submit\" />\n            <div class=\"search-suggest\" style=\"display:none;\">\n                <ol>\n                    <li class=\"search-suggest-key\">三星<b>I9500</b></li>\n                    <li class=\"search-suggest-key\">三星<b>I9501</b></li>\n                    <li class=\"search-suggest-key\">三星<b>I9001</b></li>\n                    <li class=\"search-suggest-key\">三星<b>I9505</b></li>\n                    <li class=\"search-suggest-key\">三星<b>I9503</b></li>\n                </ol>\n            </div>\n        </div>\n        <p class=\"search-hotkey\">热门搜索：<a href=\"#\">三星手机</a><a href=\"#\">手机套</a><a href=\"#\">手机电源线</a></p>\n    </div>\n    <!--//search-->\n    <!--我的翼猫-->\n    <div class=\"myYmall\"> <em class=\"icon-user\"></em><a th:href=\"@{/portal/toIndex.do}\">我的翼猫</a> </div>\n    <!--//我的翼猫-->\n    <!--去购物车结算-->\n    <div class=\"to-cart\">\n        <dl>\n            <dt> <span class=\"shop-amount\">0</span> <em class=\"icon-cart\"></em> <a href=\"#\">去购物车结算</a> <span class=\"angle\"></span> </dt>\n            <dd style=\"display:none;\">\n                <!--购物车为空-->\n                <div class=\"nogoods\" th:if=\"${session.potalSessionUser == null}\" style=\"display:none;\"> 购物车中还没有商品，赶紧选购吧！ </div>\n                <!--//购物车为空-->\n                <!--有商品-->\n                <div class=\"cart-table\" th:if=\"${session.potalSessionUser != null}\">\n                    <div class=\"cart-table-body\">\n                        <ul class=\"cart-item clearfix\">\n                            <li class=\"item-img\"><a href=\"#\"><img th:src=\"@{/static/picture/img_small_350x350.jpg}\" /></a></li>\n                            <li class=\"item-intro\"><a href=\"#\">三星手机NNOTOS9S</a></li>\n                            <li class=\"item-extra\"><em class=\"item-price\">￥<span>799</span></em>x<span>2</span>\n                                <p><a href=\"#\" class=\"delete\">删除</a></p>\n                            </li>\n                        </ul>\n                    </div>\n                    <div class=\"cart-info\">\n                        <div class=\"cart-bottom\">\n                            <p> 共<span class=\"f-red2\">1</span>件商品，共计<em class=\"item-price\">￥<span>5399</span></em> <br />\n                                <a href=\"#\" class=\"cart-goMyCart btn btn-red\">去购物车结算</a> </p>\n                        </div>\n                    </div>\n                </div>\n                <!--//有商品-->\n            </dd>\n        </dl>\n    </div>\n    <!--//去购物车结算-->\n    <script>\n        $(function(){\n            $(\".to-cart\").hover(function(){\n                $(this).find(\".angle\").addClass(\"down\").end().find(\"dt\").addClass(\"selected\").end().find(\"dd\").show();\n            },function(){\n                $(this).find(\".angle\").removeClass(\"down\").end().find(\"dt\").removeClass(\"selected\").end().find(\"dd\").hide();\n            });\n            if($(\".cart-table .cart-item\").size()>2){\n                $(\".cart-table .cart-table-body\").css(\"overflow-y\",\"auto\");\n            }\n        });\n    </script>\n</div>"
  },
  {
    "path": "src/taoshop-portal/src/main/resources/templates/header_nav.html",
    "content": "<div class=\"headerNav\">\n    <div class=\"layout\">\n        <dl class=\"all-brands\">\n            <dt class=\"all-brands-head\">\n                <a href=\"#\">全部商品分类</a>\n            </dt>\n            <dd class=\"all-brands-list\" style=\"display:none;\">\n                <div class=\"all-brands-item\">\n                    <h3>合约购机<i>NEW</i></h3>\n                    <p>\n                        <a href=\"#\">三星</a>\n                        <a href=\"#\">Iphone</a>\n                        <a href=\"#\">小米</a>\n                    </p>\n                    <a href=\"#\" class=\"more\">更多</a>\n                </div>\n            </dd>\n        </dl>\n        <script>\n            <!--商品分类显示隐藏-->\n            $(function(){\n                $(\".all-brands\").hover(\n                    function(){\n                        $(this).find(\".all-brands-list\").show();\n                    },function(){\n                        $(this).find(\".all-brands-list\").hide();\n                    });\n            });\n        </script>\n        <div class=\"headerNav-main clearfix\">\n            <!--headerNav-nav-->\n            <nav class=\"headerNav-nav\">\n                <ul class=\"clearfix\">\n                    <li><a href=\"#\" class=\"selected\">首页</a></li>\n                    <li><a href=\"#\">手机汇</a></li>\n                    <li><a href=\"#\">聚优惠</a></li>\n                    <li><a href=\"#\">商业街</a></li>\n                </ul>\n            </nav>\n            <!--//headerNav-nav-->\n        </div>\n    </div>\n</div>"
  },
  {
    "path": "src/taoshop-portal/src/main/resources/templates/index.html",
    "content": "<!DOCTYPE HTML>\n<html xmlns=\"http://www.w3.org/1999/xhtml\"\n      xmlns:th=\"http://www.thymeleaf.org\">\n<head>\n    <meta charset=\"utf-8\" />\n    <title>电商门户网站</title>\n    <link th:href=\"@{/static/css/public.css}\" rel=\"stylesheet\" type=\"text/css\" />\n    <link th:href=\"@{/static/css/index.css}\" rel=\"stylesheet\" type=\"text/css\" />\n    <script type=\"text/javascript\" th:src=\"@{/static/js/jquery-1.3.2.min.js}\"></script>\n    <script type=\"text/javascript\" th:src=\"@{/static/js/html5.js}\"></script>\n    <script type=\"text/javascript\" th:src=\"@{/static/js/popbox.js}\"></script>\n    <style type=\"text/css\">\n        .item-list { display: none; position: absolute; width: 705px; min-height: 200px; _height: 200px; background: #FFF; left: 198px; box-shadow: 0px 0px 10px #DDDDDD; border: 1px solid #DDD; top: 3px; z-index: 1000000; }\n        /* Remove Float */\n        .clear { display: block; height: 0; overflow: hidden; clear: both; }\n        .clearfix:after { content: '\\20'; display: block; height: 0; clear: both; }\n        .clearfix { *zoom:1;\n        }\n        .hover { position: relative; z-index: 1000000000; background: #FFF; border-color: #DDD; border-width: 1px 0px; border-style: solid; }\n    </style>\n\n</head>\n<body>\n<!--header-->\n<header class=\"header\">\n    <!--topBar-->\n    <div class=\"topBar\" th:replace=\"/top_bar :: .topBar\"></div>\n    <!--//topBar-->\n    <!--headerMain-->\n    <div class=\"headerMain layout clearfix\" th:replace=\"/header_main :: .headerMain\"></div>\n    <!--//headerMain-->\n    <!--headerNav-->\n    \n    <div class=\"headerNav\" th:replace=\"/index_header_nav :: .headerNav\"></div>\n    <!--//headerNav-->\n</header>\n<!--//header-->\n<!--container-->\n<div class=\"container\">\n    <div class=\"layout clearfix\">\n        <!--banner-->\n        <div class=\"banner\">\n            <div class=\"banner-img\">\n                <ul>\n                    <li><a href=\"#\"><img width=\"727\" height=\"350\" th:src=\"@{/static/images/banner_970x355.jpg}\" /></a></li>\n                    <li><a href=\"#\"><img width=\"727\" height=\"350\" th:src=\"@{/static/images/banner_970x355.jpg}\" /></a></li>\n                    <li><a href=\"#\"><img width=\"727\" height=\"350\" th:src=\"@{/static/images/banner_970x355.jpg}\" /></a></li>\n                </ul>\n            </div>\n            <ul class=\"banner-btn\">\n                <li class=\"current\"></li>\n                <li></li>\n                <li></li>\n            </ul>\n        </div>\n        <!--//banner-->\n        <!--快捷充值-->\n        <div class=\"index-fast-recharge\">\n            <div class=\"recharge-body\">\n                <div class=\"recharge-head\">\n                    <h2><em class=\"icon-phone\"></em>话费充值</h2>\n                </div>\n                <div class=\"recharge-con\">\n                    <div class=\"recharge-form\">\n                        <p>\n                            <label class=\"name\">手机号：</label>\n                            <input placeholder=\"支持电信\" type=\"text\" class=\"text-box\" />\n                        </p>\n                        <p>\n                            <label class=\"name\">充值方式：</label>\n                            <label>\n                                <input type=\"radio\" class=\"rd\" />\n                                电信充值卡</label>\n                            <label>\n                                <input type=\"radio\" class=\"rd\" />\n                                银行卡</label>\n                        </p>\n                        <div class=\"recharge-sub-btn\"> <a href=\"#\" class=\"btn btn-red\">立即充值</a> </div>\n                    </div>\n                    <div class=\"recharge-ad\"> <img th:src=\"@{/static/images/rachange_ad.jpg}\" /> </div>\n                </div>\n            </div>\n        </div>\n        <!--//快捷充值-->\n        <div class=\"clearfix\"></div>\n        <!--最新上架-->\n        <div class=\"first-pannel clearfix\">\n            <div class=\"index-f clearfix\">\n                <h3 class=\"index-f-head\"> 最新上架 <span>每天都有上新，每天都有惊喜</span> </h3>\n                <div class=\"index-f-body\">\n                    <div class=\"top-sales newProduct\">\n                        <ul class=\"top-sales-list clearfix\">\n                            <li class=\"top-sales-item newProduct\" th:each=\"item : ${items}\">\n                                <p class=\"item-img\"> <a th:href=\"@{'/portal/item/toDetail/'+${item.spuId}+'/'+${item.skuId}}\"><img th:src=\"@{${item.imgPath}}\" /></a> </p>\n                                <p class=\"item-buss\"><a th:href=\"@{'/portal/item/toDetail/'+${item.spuId}+'/'+${item.skuId}}\"></a></p>\n                                <p class=\"item-name spec\"><a th:href=\"@{'/portal/item/toDetail/'+${item.spuId}+'/'+${item.skuId}}\" th:text=\"${item.itemName}\"></a></p>\n                                <p class=\"item-price spec\"><em th:text=\"${item.mPrice}\"></em>元</p>\n                            </li>\n                        </ul>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <!--最新上架//-->\n    </div>\n</div>\n<!--//container-->\n<!--footer-->\n<footer class=\"footer\" th:replace=\"footer :: .footer\"></footer>\n<!--//footer-->\n\n<script type=\"text/javascript\">\n    //banner\n    $(document).ready(function(){\n        var demo = $(\".banner\");\n        var btn = $(\".banner-btn li\");\n        var slide = $(\".banner-img ul\");\n        var slideItem = slide.find(\"li\");\n        var c = 0, speed = 4000 , t;\n        btn.each(function(number){\n            $(this).click(function(){\n                $(this).addClass(\"current\").siblings().removeClass(\"current\");\n                slide.animate({\"left\":-slideItem.width()*number},300);\n                c = number;\n            });\n        });\n\n        if(btn.size()>1){\n            autoSlide();\n        }\n\n        function timedCount()\n        {\n            c = c + 1;\n            if(c>=btn.size())c = 0;\n            btn.eq(c).click();\n        }\n\n        function autoSlide(){\n            t = setInterval(function(){timedCount();},speed);\n        }\n        //鼠标移入停止播放\n        demo.mouseover(function(){\n            clearInterval(t);\n        });\n        demo.mouseout(function(){\n            autoSlide();\n        });\n    });\n</script>\n</body>\n</html>\n"
  },
  {
    "path": "src/taoshop-portal/src/main/resources/templates/index_header_nav.html",
    "content": "<div class=\"headerNav\" xmlns:th=\"http://www.thymeleaf.org\">\n    <div class=\"layout\">\n        <dl class=\"all-brands\">\n            <dt class=\"all-brands-head\"> <a href=\"#\">全部商品分类</a> </dt>\n            <dd class=\"all-brands-list\">\n                <div class=\"wrap\" th:each=\"c : ${categories}\">\n                    <div class=\"all-sort-list\">\n                        <div class=\"item bo\">\n                            <h3>\n                                <a href=\"\" th:text=\"${c.categoryName}\"></a></h3>\n                            <div class=\"item-list clearfix\">\n                                <div class=\"close\">x</div>\n                                <div class=\"subitem\" th:each=\"s: ${c.subCategorys}\">\n                                    <dl class=\"fore1\">\n                                        <dt th:text=\"${s.categoryName}\"><a th:href=\"@{'/portal/category/toCategoryList/'+${s.id}}\"></a></dt>\n                                        <dd>\n                                            <em th:each=\"ss : ${s.subCategorys} \"><a th:href=\"@{'/portal/category/toCategoryList/'+${ss.id}}\" th:text=\"${ss.categoryName}\"></a></em>\n                                        </dd>\n                                    </dl>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </dd>\n            <script type=\"text/javascript\">\n                $('.all-sort-list > .item').hover(function(){\n                    $(this).addClass('hover');\n                    $(this).children('.item-list').css('display','block');\n                },function(){\n                    $(this).removeClass('hover');\n                    $(this).children('.item-list').css('display','none');\n                });\n\n                $('.item > .item-list > .close').click(function(){\n                    $(this).parent().parent().removeClass('hover');\n                    $(this).parent().hide();\n                });\n            </script>\n        </dl>\n        <div class=\"headerNav-main clearfix\">\n            <!--headerNav-nav-->\n            <nav class=\"headerNav-nav\">\n                <ul class=\"clearfix\">\n                    <li><a th:href=\"@{/portal/toIndex.do}\" class=\"selected\">首页</a></li>\n                    <li><a href=\"#\">手机汇</a></li>\n                    <li><a href=\"#\">聚优惠</a></li>\n                    <li><a href=\"#\">商业街</a></li>\n                </ul>\n            </nav>\n            <!--//headerNav-nav-->\n        </div>\n    </div>\n</div>"
  },
  {
    "path": "src/taoshop-portal/src/main/resources/templates/item/item_category.html",
    "content": "<!DOCTYPE HTML>\n<html xmlns:th=\"http://www.thymeleaf.org\">\n<head>\n<meta charset=\"utf-8\" />\n<title>无标题文档</title>\n  <link th:href=\"@{/static/css/public.css}\" rel=\"stylesheet\" type=\"text/css\" />\n  <link th:href=\"@{/static/css/category.css}\" rel=\"stylesheet\" type=\"text/css\" />\n  <script type=\"text/javascript\" th:src=\"@{/static/js/jquery-1.3.2.min.js}\"></script>\n  <script type=\"text/javascript\" th:src=\"@{/static/js/html5.js}\"></script>\n  <script type=\"text/javascript\" th:src=\"@{/static/js/jqzoom.js}\"></script>\n</head>\n<body>\n<!--header-->\n<header class=\"header\">\n  <!--topBar-->\n  <div class=\"topBar\" th:replace=\"/top_bar :: .topBar\"></div>\n  <!--//topBar-->\n  <!--headerMain-->\n  <div class=\"headerMain layout clearfix\" th:replace=\"/header_main :: .headerMain\"></div>\n  <!--//headerMain-->\n  <!--headerNav-->\n  <div class=\"headerNav\" th:replace=\"/header_nav :: .headerNav\"></div>\n  <!--//headerNav-->\n</header>\n<!--//header-->\n<!--container-->\n<div class=\"container\">\n  <div class=\"layout\">\n    <h2 class=\"phoneSearch-title\">手机汇</h2>\n    <!--搜索条件-->\n    <div class=\"phoneSearch-filter\" id=\"phoneSearch_filter\">\n      <div class=\"ft\">\n        <a href=\"javascript:;\" class=\"wrapper-tgr-click\">\n          更多<span class=\"more-expand\"></span>\n        </a>\n      </div>\n      <div class=\"phoneSearch-filter-item\">\n        <h3>品牌：</h3>\n        <p id=\"brand\">\n          <a href=\"#\" class=\"selected\">全部</a>\n          <a href=\"#\">Apple</a>\n          <a href=\"#\">三星</a>\n          <a href=\"#\">HTC</a>\n          <a href=\"#\">华为</a>\n          <a href=\"#\">中兴</a>\n          <a href=\"#\">联想</a>\n        </p>\n      </div>\n      <div class=\"phoneSearch-filter-item\">\n        <h3>价格：</h3>\n        <p>\n          <a href=\"#\">全部</a>\n          <a href=\"#\">0-400</a>\n          <a href=\"#\">400-800</a>\n          <a href=\"#\">800-1500</a>\n          <a href=\"#\">1500-3000</a>\n          <a href=\"#\">3000-4500</a>\n          <a href=\"#\">4500以上</a>\n        </p>\n      </div>\n      <div class=\"phoneSearch-filter-item\" style=\"display:none;\">\n        <h3>外观：</h3>\n        <p>\n          <a href=\"#\">全部</a>\n          <a href=\"#\">直板</a>\n          <a href=\"#\">翻盖</a>\n        </p>\n      </div>\n      <div class=\"phoneSearch-filter-item\" style=\"display:none;\">\n        <h3>特色：</h3>\n        <p>\n          <a href=\"#\">全部</a>\n          <a href=\"#\">多核手机</a>\n          <a href=\"#\">老人儿童</a>\n          <a href=\"#\">千元大屏</a>\n          <a href=\"#\">双网双待</a>\n          <a href=\"#\">尾货清仓</a>\n        </p>\n      </div>\n      <div class=\"phoneSearch-filter-item\" style=\"display:none;\">\n        <h3>尺寸：</h3>\n        <p>\n          <a href=\"#\">全部</a>\n          <a href=\"#\">2.0英寸以下</a>\n          <a href=\"#\">2.-3.5英寸</a>\n          <a href=\"#\">3.6-4.5英寸</a>\n          <a href=\"#\">4.5以上</a>\n        </p>\n      </div>\n      <div class=\"phoneSearch-filter-item\" style=\"display:none;\">\n        <h3>CPU：</h3>\n        <p>\n          <a href=\"#\">全部</a>\n          <a href=\"#\">单核</a>\n          <a href=\"#\">双核</a>\n          <a href=\"#\">四核</a>\n          <a href=\"#\">八核</a>\n          <a href=\"#\">五核</a>\n        </p>\n      </div>\n      <div class=\"phoneSearch-filter-item\" style=\"display:none;\">\n        <h3>像素：</h3>\n        <p>\n          <a href=\"#\">全部</a>\n          <a href=\"#\">300万及以下</a>\n          <a href=\"#\">301-500万</a>\n          <a href=\"#\">501-800万</a>\n          <a href=\"#\">800万以上摄像头</a>\n        </p>\n      </div>\n    </div>\n    <script>\n\t $(function(){\n\t   var o = $(\"#phoneSearch_filter\");\n\t   o.find(\".ft\").toggle(function(){\n\t\t $('#phoneSearch_filter .phoneSearch-filter-item:gt(1)').show();\n\t\t $(this).find(\".more-expand\").css(\"background-position\",\"0 -7px\");\n\t   },function(){\n\t\t $('#phoneSearch_filter .phoneSearch-filter-item:gt(1)').hide();\n\t\t $(this).find(\".more-expand\").css(\"background-position\",\"0 0\");\n\t   });\n     });\n\t</script>\n    <!--//搜索条件-->\n    <!--排序-->\n    <div class=\"reorder clearfix m10-b\">\n      <div class=\"reorder-wrapper\">\n        <a class=\"selected\">最新</a>\n        <a>价格从高到低</a>\n        <a>价格从低到高</a>\n      </div>\n      <div class=\"reorder-styles\">\n        <label><input type=\"checkbox\" /> 仅显示有库存的机型</label>\n      </div>\n    </div>\n    <!--//排序-->\n    <!--商品列表-->\n    <div class=\"phoneList clearfix m10-b\" th:each=\"i : ${items}\">\n      <div class=\"phoneList-wrap\">\n      <div class=\"phoneListItem\">\n        <p class=\"item-img\">\n          <a href=\"#\"><img th:src=\"${i.imgPath}\" /></a>\n        </p>\n        <p class=\"item-name\">\n          <a href=\"#\" th:text=\"${i.itemName}\">苹果（APPLE）iPhone 4S 8G版</a>\n        </p>\n        <p class=\"item-info\">北京电信购机</p>\n        <p class=\"item-price\" th:text=\"${'￥'+i.skuPrice}\">￥<em>2098</em></p>\n        <p class=\"item-btn\">\n          <a href=\"#\" class=\"btn btn-gray\">加入购物车</a>\n          <a href=\"#\" class=\"btn btn-red\">立即购买</a>\n        </p>\n      </div>\n      </div>\n    </div>\n    <!--//商品列表-->\n    <!--翻页-->\n    <div class=\"pages m20-b\">\n      <a class=\"page-action page-prev-unable\" href=\"javascript:;\"><span><b class=\"arrow\"></b>上一页</span></a>\n      <a class=\"page-num selected\" href=\"javascript:;\"><span>1</span></a>\n      <a class=\"page-num\" href=\"javascript:;\"><span>2</span></a>\n      <a class=\"page-num\" href=\"javascript:;\"><span>3</span></a>\n      ...\n      <a class=\"page-num\" href=\"javascript:;\"><span>66</span></a>\n      <a class=\"page-action page-next\" href=\"javascript:;\"><span><b class=\"arrow\"></b>下一页</span></a>\n    </div>\n    <!--//翻页-->\n  </div>\n</div>\n<!--//container-->\n<!--footer-->\n<footer class=\"footer\" th:replace=\"/footer :: .footer\"></footer>\n<!--//footer-->\n</body>\n</html>"
  },
  {
    "path": "src/taoshop-portal/src/main/resources/templates/item/item_detail.html",
    "content": "<!DOCTYPE HTML>\n<html xmlns=\"http://www.w3.org/1999/xhtml\"\n      xmlns:th=\"http://www.thymeleaf.org\">\n<head>\n    <meta charset=\"utf-8\" />\n    <title>商品详情</title>\n    <link th:href=\"@{/static/css/public.css}\" rel=\"stylesheet\" type=\"text/css\" />\n    <link th:href=\"@{/static/css/detail.css}\" rel=\"stylesheet\" type=\"text/css\" />\n    <link th:href=\"@{/static/css/you_like.css}\" rel=\"stylesheet\" type=\"text/css\" />\n    <link th:href=\"@{/static/css/jqzoom.css}\" rel=\"stylesheet\" type=\"text/css\" />\n    <script type=\"text/javascript\" th:src=\"@{/static/js/jquery-1.3.2.min.js}\"></script>\n    <script type=\"text/javascript\" th:src=\"@{/static/js/html5.js}\"></script>\n    <script type=\"text/javascript\" th:src=\"@{/static/js/jqzoom.js}\"></script>\n</head>\n<body>\n<!--header-->\n<header class=\"header\">\n    <!--topBar-->\n    <div class=\"topBar\" th:replace=\"/top_bar :: .topBar\"></div>\n    <!--//topBar-->\n    <!--headerMain-->\n    <div class=\"headerMain layout clearfix\" th:replace=\"/header_main :: .headerMain\"></div>\n    <!--//headerMain-->\n    <!--headerNav-->\n    <div class=\"headerNav\" th:replace=\"/header_nav :: .headerNav\"></div>\n    <!--//headerNav-->\n</header>\n<!--//header-->\n<!--container-->\n<div class=\"container\">\n    <div class=\"layout m10-b\">\n        <!--面包屑-->\n        <div class=\"breadcrumb\">\n            <a href=\"#\">首页</a> &gt; <a href=\"#\">商品一级分类名称</a> &gt; <a href=\"#\">商品二级分类名称</a> &gt; 商品名称\n        </div>\n        <!--//面包屑-->\n        <div class=\"product-intro clearfix\">\n            <!--商品展示-->\n            <div class=\"product-info-img\">\n                <!--图片展示-->\n                <div class=\"img-wrap\">\n                    <div class=\"img-big\">\n                        <a th:href=\"@{${itemDetail.imgPath}}\" ><img width=\"350\" height=\"350\" th:src=\"@{${itemDetail.imgPath}}\" /></a>\n                    </div>\n                    <div class=\"img-big\">\n                        <a th:href=\"${itemDetail.imgPath}\" ><img width=\"350\" height=\"350\" th:src=\"${itemDetail.imgPath}\" /></a>\n                    </div>\n                    <div class=\"img-big\">\n                        <a th:href=\"${itemDetail.imgPath}\" ><img width=\"350\" height=\"350\" th:src=\"${itemDetail.imgPath}\" /></a>\n                    </div>\n                    <div class=\"img-big\">\n                        <a th:href=\"${itemDetail.imgPath}\" ><img width=\"350\" height=\"350\" th:src=\"${itemDetail.imgPath}\" /></a>\n                    </div>\n                    <div class=\"img-big\">\n                        <a th:href=\"${itemDetail.imgPath}\" ><img width=\"350\" height=\"350\" th:src=\"${itemDetail.imgPath}\" /></a>\n                    </div>\n                    <div class=\"img-big\">\n                        <a th:href=\"${itemDetail.imgPath}\" ><img width=\"350\" height=\"350\" th:src=\"${itemDetail.imgPath}\" /></a>\n                    </div>\n                    <div class=\"img-big\">\n                        <a th:href=\"${itemDetail.imgPath}\" ><img width=\"350\" height=\"350\" th:src=\"${itemDetail.imgPath}\" /></a>\n                    </div>\n                    <div class=\"img-big\">\n                        <a th:href=\"${itemDetail.imgPath}\" ><img width=\"350\" height=\"350\" th:src=\"${itemDetail.imgPath}\" /></a>\n                    </div>\n                </div>\n                <!--//图片展示-->\n                <!--图片按钮-->\n                <div class=\"spec-lists\">\n                    <div class=\"spec-items\">\n                        <ul class=\"clearfix\" id=\"slider\">\n                            <li class=\"selected\"><span><img th:src=\"${itemDetail.imgPath}\" /></span></li>\n                            <li><span><img th:src=\"${itemDetail.imgPath}\" /></span></li>\n                            <li><span><img th:src=\"${itemDetail.imgPath}\" /></span></li>\n                            <li><span><img th:src=\"${itemDetail.imgPath}\" /></span></li>\n                            <li><span><img th:src=\"${itemDetail.imgPath}\" /></span></li>\n                            <li><span><img th:src=\"${itemDetail.imgPath}\" /></span></li>\n                            <li><span><img th:src=\"${itemDetail.imgPath}\" /></span></li>\n                            <li><span><img th:src=\"${itemDetail.imgPath}\" /></span></li>\n                        </ul>\n                    </div>\n                </div>\n                <!--//图片按钮-->\n                <div class=\"share-sns clearfix\">\n                    <span>分享到：</span>\n                    <a href=\"#\"><img th:src=\"@{/static/images/shareIcon-weibo.png}\" /></a>\n                    <a href=\"#\"><img th:src=\"@{/static/images/shareIcon-tencent.png}\" /></a>\n                    <a href=\"#\"><img th:src=\"@{/static/images/shareIcon-renren.png}\" /></a>\n                    <a href=\"#\"><img th:src=\"@{/static/images/shareIcon-qzone.png}\" /></a>\n                    <a href=\"#\"><img th:src=\"@{/static/images/shareIcon-sohu.png}\" /></a>\n                    <a href=\"#\"><img th:src=\"@{/static/images/shareIcon-more.png}\" /></a>\n                </div>\n            </div>\n            <script type=\"text/javascript\" th:src=\"@{/static/js/jquery.bxSlider.min.js}\"></script>\n            <script type=\"text/javascript\">\n                $(function(){\n                    $(\".img-wrap .img-big\").eq(0).show().siblings().hide();\n                    $(\".spec-items li\").hover(function(){\n                        var img_index=$(\".spec-items li\").index(this);\n                        var big_index=img_index-1;\n                        $(this).addClass(\"selected\").siblings().removeClass(\"selected\");\n                        $(\".img-wrap .img-big\").eq(big_index).show().siblings().hide();\n                    });\n                });\n\n                //jqzoom\n                $('.img-wrap a').jqzoom({\n                    zoomType: 'standard',\n                    alwaysOn : false,\n                    zoomWidth: 300,\n                    zoomHeight:300,\n                    position:'left',\n                    xOffset: 10,\n                    yOffset: 0,\n                    showEffect : 'fadein',\n                    hideEffect: 'fadeout'\n                });\n\n                $(document).ready(function(){\n                    $('#slider').bxSlider({\n                        auto:false , //false true\n                        displaySlideQty: 5, //显示数 量\n                        moveSlideQty:1, //切换数量\n                        infiniteLoop:false,\n                        showNum:5\n                        //hideControlOnEnd:true\n                        //startingSlide:5\n                        //prevSelector: 'left',\n                        //nextSelector: 'right',\n                    })\n                });\n            </script>\n            <!--商品展示-->\n            <!--商品说明右侧 开始-->\n            <div class=\"fl-l product_property\">\n                <!--属性-->\n                <div class=\"pro_meta\" >\n                    <ul class=\"clearfix\">\n                        <li class=\"name border-b\">\n                            <span th:text=\"${itemDetail.itemName}\">苹果（APPLE）iPhone 5s 16G版 3G手机（金色）WCDMA/GSM</span> <span class=\"span01\">商品卖点显示在商品名称之后字体字\n号粗细同商品名称，字体颜色为红色。卖点最多为50个字符。每行最多显示50字符，超出换行。</span>\n                        </li>\n                        <li>\n                            <span class=\"sp_l\">商&nbsp;城&nbsp;价：</span>\n                            <div class=\"fl-l\">\n                                <del th:text=\"'￥'+${itemDetail.price}\">¥</del>\n                            </div>\n                        </li>\n                        <li>\n                            <span class=\"sp_l\">活&nbsp;动&nbsp;价：</span>\n                            <div class=\"fl-l\">\n                                <strong><em class=\"tb-rmb-num\" th:text=\"'￥'+${itemDetail.promotionPrice}\">¥3558</em></strong>\n                            </div>\n                        </li>\n                        <li>\n                            <span class=\"sp_l\">品牌信息：</span>\n                            <div class=\"fl-l\">\n                                <span class=\"span02\" th:text=\"${itemDetail.brandName}\"></span>  <a class=\"to-detail\" href=\"#\">详情说明</a>\n                            </div>\n                        </li>\n                        <li>\n                            <span class=\"sp_l\">可选颜色：</span>\n                            <div class=\"fl-l action-bate\">\n                                <a class=\"selected\">黑色<em></em></a><a>白色<em></em></a>\n                            </div>\n                        </li>\n                        <li>\n                            <span class=\"sp_l\">选择容量：</span>\n                            <div class=\"fl-l action-bate\">\n                                <a class=\"selected\">16G<em></em></a><a>32G<em></em></a>\n                            </div>\n                        </li>\n                        <li>\n                            <span class=\"sp_l\">购买方式：</span>\n                            <div class=\"fl-l action-bate\">\n                                <a>裸机<em></em></a><a class=\"selected\">合约<em></em></a>\n                            </div>\n                        </li>\n                        <li>\n                            <span class=\"sp_l\">库　　存：</span>\n                            <div class=\"fl-l\">\n                                <span th:text=\"${itemDetail.stock}\">现货</span>\n                            </div>\n                        </li>\n                    </ul>\n                </div>\n                <!--属性-->\n                <!--phone_key-->\n                <dl class=\"phone_num clearfix\">\n                    <dt class=\"fl-l\">购买数量：</dt>\n                    <dd class=\"fl-l\">\n            <span class=\"tb_stock\">\n              <a href=\"#\" class=\"tb_reduce\">-</a>\n\t\t      <input type=\"text\" value=\"1\" id=\"buynum\" />\n\t\t\t  <a href=\"#\" class=\"tb_increase\">+</a>\n            </span>\n                    </dd>\n                </dl>\n                <!--phone_key-->\n                <!--已选择-->\n                <div class=\"phone_choosed\">\n                    <span>此商品由　<a href=\"#\" class=\"f-big f-orange1\" th:text=\"${itemDetail.shopName}\"></a>　负责销售及发货</span>\n                    <div class=\"add_btn\"><a href=\"#\" class=\"btn btn-red\">立即购买</a><a th:href=\"@{/portal/shopcart/toAddSuccess}\" class=\"btn btn-coffee\">加入购物车</a>请移步购物车选择合约套餐</div>\n                </div>\n                <!--已选择-->\n            </div>\n            <!--商品说明右侧 结束-->\n        </div>\n        <!--猜你喜欢-->\n        <div class=\"you-like\">\n            <h3>猜你喜欢</h3>\n            <ul class=\"you-like-list\">\n                <li class=\"you-like-item\">\n                    <p class=\"item-img\"><a href=\"#\"><img th:src=\"@{/static/picture/small_110x110.jpg}\" /></a></p>\n                    <p class=\"item-info\">\n                        <a href=\"#\">苹果（APPLE）iPhone 4S 8G版 3G手机（白色）WCDMA/GSM</a>\n                    </p>\n                    <p class=\"item-price\">￥<em>2398</em></p>\n                </li>\n                <li class=\"you-like-item\">\n                    <p class=\"item-img\"><a href=\"#\"><img th:src=\"@{/static/picture/small_110x110.jpg}\" /></a></p>\n                    <p class=\"item-info\">\n                        <a href=\"#\">苹果（APPLE）iPhone 4S 8G版 3G手机（白色）WCDMA/GSM</a>\n                    </p>\n                    <p class=\"item-price\">￥<em>2398</em></p>\n                </li>\n            </ul>\n        </div>\n        <!--//猜你喜欢-->\n        <!--右侧详情-->\n        <div class=\"product-detail fl-r\">\n            <!--随心配-->\n            <div class=\"bundle clearfix m10-b\">\n                <h3 class=\"bundle-head\">\n                    <span>随心配</span>\n                    <a href=\"#\" class=\"more\">进入配件选购中心&gt;&gt;</a>\n                </h3>\n                <div class=\"bundle-data\">\n                    <div class=\"bundle-list\">\n                        <ul id=\"bundleSlider\">\n                            <li class=\"bundle-item\">\n                                <p class=\"item-img\"><a href=\"#\"><img th:src=\"@{/static/picture/small_110x110.jpg}\" /></a></p>\n                                <p class=\"item-info\"><a href=\"#\">苹果（APPLE）iPhone 5s 16G版 3G</a></p>\n                                <p class=\"item-price\"><input type=\"checkbox\" />￥<em>4898</em></p>\n                            </li>\n                        </ul>\n                    </div>\n                    <div class=\"bundle-extra\">\n                        <p>已选择<em>0</em>个配件</p>\n                        <p>商城价格合计：<span class=\"extra-price\">￥<em>4898</em></span></p>\n                        <p class=\"btn-sku\"><a href=\"#\" class=\"btn btn-coffee\">搭配购买</a></p>\n                    </div>\n                </div>\n            </div>\n            <script type=\"text/javascript\" th:src=\"@{/static/js/jquery.bxSlider.min.js}\"></script>\n            <script type=\"text/javascript\">\n                $(document).ready(function(){\n                    $('#bundleSlider').bxSlider({\n                        auto:false , //false true\n                        displaySlideQty: 3, //显示数 量\n                        moveSlideQty:1, //切换数量\n                        infiniteLoop:false,\n                        showNum:3\n                        //hideControlOnEnd:true\n                        //startingSlide:5\n                        //prevSelector: 'left',\n                        //nextSelector: 'right',\n                    })\n                });\n            </script>\n            <!--随心配-->\n            <!--tabs-->\n            <div class=\"tabs detail m10-b\">\n                <ul class=\"cut fixed\">\n                    <li class=\"current\">商品详情</li>\n                    <li>规格参数</li>\n                    <li>包装清单</li>\n                    <li>常见问题</li>\n                </ul>\n                <div class=\"tab detail-main\">\n                    <img th:src=\"@{/static/picture/detail.jpg}\" />\n                </div><!--//商品详情-->\n                <div class=\"tab detail-main\">\n                    <h4>规格参数</h4>\n                    <table>\n                        <tr th:each=\"s : ${itemSpec}\">\n                            <th ><span th:text=\"${s.specName}+':'\"></span></th>\n                            <td><span>测试数据</span></td>\n                        </tr>\n                        <!--<tr>\n                            <th>上架时间：</th>\n                            <td>2014-01-26 09:06:16</td>\n                            <th>商品编号：</th>\n                            <td>1057746</td>\n                        </tr>\n                        <tr>\n                            <th>系统：</th>\n                            <td>苹果（IOS）</td>\n                            <th>外观设计：</th>\n                            <td>直板</td>\n                        </tr>\n                        <tr>\n                            <th>网络：</th>\n                            <td>联通3G（WCDMA），移动2G/联通2G（GSM），移动3G（TD-SCD）</td>\n                            <th>商品产地：</th>\n                            <td>中国大陆</td>\n                        </tr>-->\n                    </table>\n                </div><!--//规格参数-->\n                <div class=\"tab detail-main\">\n                    <h4>包装清单</h4>\n                    <table>\n                        <tr>\n                            <th>电池型号：</th>\n                            <td>内置充电式锂离子电池</td>\n                            <th>电池类型：</th>\n                            <td>锂电池</td>\n                        </tr>\n                        <tr>\n                            <th>数据线：</th>\n                            <td>苹果8pin</td>\n                            <th>耳机：</th>\n                            <td>1057746</td>\n                        </tr>\n                        <tr>\n                            <th>系统：</th>\n                            <td>苹果（IOS）</td>\n                            <th>商品毛重：</th>\n                            <td>3.5mm</td>\n                        </tr>\n                        <tr>\n                            <th>机身尺寸：</th>\n                            <td>高：123.8 毫米 (4.87 英寸) 宽：58.6 毫米 (2.31 英寸) ...</td>\n                            <th>机身重量：</th>\n                            <td>重量：112 克 (3.95 盎司)</td>\n                        </tr>\n                    </table>\n                </div><!--//包装清单-->\n                <div class=\"tab detail-main\">\n                    <div class=\"aq\">\n                        <div class=\"aq-head\">常见问题？</div>\n                        <div class=\"aq-con\">\n                            <dl>\n                                <dt>如何条哦选商品？</dt>\n                                <dd>点击页面上方“加入购物车”按钮或页面下拉时顶部导航上的“加入购物车”按钮将商品加入购物车，再点击页面右上角的“购物车”前往购物车页面进行结算。</dd>\n                                <dt>收藏商品功能</dt>\n                                <dd>点击“收藏按钮”后，按钮中的白心亮起,背景由黑色变为黄色代表收藏成功，再次点击取消收藏。您可在“个人中心”中的我的收藏查看所有收藏商品。</dd>\n                                <dt>维修网点销售配件吗？</dt>\n                                <dd>所有授权维修网点具备维修手机标配里配件的功能，部分指定授权维修网点可销售标配及部分官网配件，具体销售的产品及价格请以修网点信息为准。</dd>\n                                <dt>退换货办理流程</dt>\n                                <dd style=\"border:0;\">您可拨打小米客服中心400-100-5678与客服人员沟通，或登录小米网“我的订单” ->“订单详情”下方点击“申请售后服务”并填写相应信息，小米看到您的申请，会安排工作人员与您进行退换货质量确认并办理相关事宜.</dd>\n                            </dl>\n                        </div>\n                    </div>\n                </div><!--//常见问题-->\n            </div>\n            <script>\n                //商品详情\n                $(function(){\n                    var siteTop = $(\".detail .cut\").offset().top;\n                    $(window).scroll(function(){\n                        var scrolltop = $(document).scrollTop();\n                        if(scrolltop >= siteTop){\n                            $(\".detail .cut\").removeClass(\"fixed\");\n                        }else{\n                            $(\".detail .cut\").addClass(\"fixed\");\n                        }\n                    });\n\n                    $(\".detail .cut li\").click(function(){\n                        var index = $(\".detail .cut li\").index(this);\n                        $(this).addClass(\"current\").siblings().removeClass(\"current\");\n                        $(\"body,html\").stop().animate({scrollTop:$(\".detail .detail-main\").eq(index).offset().top},600);\n                    });\n                });\n                /* 跳转到添加购物车 */\n                function toAddCart() {\n                    \n                }\n            </script>\n            <!--//tabs-->\n        </div>\n        <!--右侧详情-->\n        <div class=\"c\"></div>\n    </div>\n</div>\n<!--//container-->\n<!--footer-->\n<footer class=\"footer\" th:replace=\"/footer :: .footer\"></footer>\n<!--//footer-->\n\n</body>\n</html>\n"
  },
  {
    "path": "src/taoshop-portal/src/main/resources/templates/login.html",
    "content": "﻿<!DOCTYPE HTML>\n<html xmlns=\"http://www.w3.org/1999/xhtml\"\n      xmlns:th=\"http://www.thymeleaf.org\">\n<head>\n<meta charset=\"utf-8\"/>\n<title>登录注册页</title>\n<link th:href=\"@{/static/css/public.css}\" rel=\"stylesheet\" type=\"text/css\" />\n<link th:href=\"@{/static/css/reg-login.css}\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n\n<body class=\"login-reg-page\">\n<!--header-->\n<header class=\"header\">\n  <!--headerMain-->\n  <div class=\"headerMain layout clearfix\">\n    <!--logo-->\n    <h1 class=\"siteLogo\"><a href=\"#\" title=\"中国电信\" class=\"siteLogo-homepage\"></a><a href=\"#\" title=\"翼猫商城\" class=\"siteLogo-mallpage\"></a></h1>\n    <!--//logo-->\n  </div>\n  <!--//headerMain-->\n</header>\n<!--//header-->\n\n\n<!--container-->\n<div class=\"container\">\n\t<div class=\"login-reg-section\">\n    \t<div class=\"login-reg-main\">\n            <div class=\"login-pic\">\n                <a href=\"#\"><img th:src=\"@{/static/images/login-reg-pic.jpg}\"/></a>\n            </div>\n            <div class=\"login\">\n                <div class=\"login-hd\">\n                    <ul class=\"clearfix\">\n                        <li class=\"current\">电信手机用户登录</li>\n                        <li>注册用户登录</li>\n                    </ul>\n                </div>\n                <div class=\"login-bd\">\n                \t<p class=\"login-tips\">请输入正确的密码！</p>\n                    <div class=\"forms-box login-box login-box-phone\" style=\"display:-none;\">\n                        <p><label class=\"label\"><b class=\"required\">*</b>手机号码：</label><input type=\"text\" class=\"user-text user-name\" /></p>\n                        <p><label class=\"label\"><b class=\"required\">*</b>密码类型：</label><input type=\"radio\" name=\"pwd-type\" class=\"pwd-input\" /><span class=\"pwd-type\">动态密码</span><input type=\"radio\" name=\"pwd-type\" class=\"pwd-input\" /><span class=\"pwd-type\">服务密码</span></p>\n                        <p class=\"pwd-p\"><label class=\"label\"><b class=\"required\">*</b>动态密码：</label><input type=\"text\" class=\"user-text user-pwd\"/><a class=\"brown-btn get-pwd\" href=\"#\" ><span>获取</span></a></p>\n                        <p class=\"pwd-p\" style=\"display:none;\"><label class=\"label\"><b class=\"required\">*</b>服务密码：</label><input type=\"text\" class=\"user-text user-pwd\"/></p>\n                        <p><label class=\"label\">&nbsp;</label><input type=\"button\" class=\"orange-btn enter-btn\" value=\"登 录\"/><a href=\"#\" class=\"entry\">忘记登录密码？</a></p>\n                    </div>\n                    <div class=\"forms-box login-box login-box-reg\" style=\"display:none;\">\n                        <p><label class=\"label\"><b class=\"required\">*</b>用 户 名：</label><input type=\"text\" id=\"username\" th:value=\"user\" class=\"user-text user-name\"/></p>\n                        <p><label class=\"label\"><b class=\"required\">*</b>登录密码：</label><input type=\"text\" id=\"password\" th:value=\"11\" class=\"user-text user-pwd\"/><a class=\"brown-btn get-pwd\" href=\"#\" ><span>获取</span></a></p>\n                        <p><label class=\"label\"><b class=\"required\">*</b>验 证 码：</label><input type=\"text\" id=\"code\" th:value=\"123\" class=\"user-text user-code\"/><img src=\"\" id=\"codeImg\" class=\"code-img\"/><span class=\"smsCapt\">看不清？</span><a href=\"#\" onclick=\"javascript:changeCode();\" class=\"input-tips\"><span>换一张</span></a></p>\n                         <p><label class=\"label\">&nbsp;</label><input type=\"button\" id=\"login\" class=\"orange-btn  enter-btn\" onclick=\"javascript:loginCheck();\" value=\"登 录\"/><a href=\"#\" class=\"entry\">忘记登录密码？</a></p>\n                         <p class=\"reg-tips\">\n                            您还不是翼猫商城会员？<a class=\"reg-now\" href=\"register.html\">立即注册</a>\n                         </p>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n<!--//container-->\n\n<!--footer-->\n<footer class=\"footer\">\n<!--copyright-->\n  <div class=\"footer-copyright\">\n    <p class=\"footer-nav\"><a href=\"#\">关于我们</a> | <a href=\"#\">网厅公告</a> | <a href=\"#\">网站使用帮助</a> | <a href=\"#\">网站导航</a> | <a href=\"#\">业务合作</a> | <a href=\"#\">友情链接</a></p>\n    <p class=\"copyright\">版权所有 ©2009 中国电信集团公司 [ 增值电信业务经营许可证 A2.B1.B2-20090001 ] ICP证号京ICP备 09031924号</p>\n    <s class=\"cr-icon\"></s>\n  </div>\n  <!--//copyright-->\n</footer>\n<!--//footer-->\n<script type=\"text/javascript\" th:src=\"@{/static/js/jquery.js}\"></script>\n<script type=\"text/javascript\" th:src=\"@{/static/js/html5.js}\"></script>\n<!-- 引入JQuery提示库 start-->\n<script type=\"text/javascript\" th:src=\"@{/static/js/jquery.tips.js}\"></script>\n<!-- 引入JQuery提示库 end-->\n<!-- 引入Cookie库 start-->\n<script type=\"text/javascript\" th:src=\"@{/static/js/jquery.cookie.js}\"></script>\n<!-- 引入Cookie库 end -->\n<script type=\"text/javascript\">\n    $(function(){\n        var loginRegLi=$(\".login-hd li\"),\n            loginRegDiv=$(\".login-bd .login-box\");\n        loginRegLi.bind(\"click\",function(){\n            var i=loginRegLi.index(this);\n            loginRegLi.removeClass(\"current\").eq(i).addClass(\"current\");\n            loginRegDiv.hide().eq(i).show();\n        })\n\n        var pwdInput=$(\".pwd-input\"),\n            pwdP=$(\".pwd-p\");\n\n        pwdInput.bind(\"click\",function(){\n            var i=pwdInput.index(this);\n            pwdP.hide().eq(i).show();\n        })\n\n        changeCode();\n        $(\"#codeImg\").bind(\"click\", changeCode);\n    });\n\n\n    /**按回车键触发登录按钮事件**/\n    $(document).keyup(function(event) {\n        if (event.keyCode == 13) {\n            $(\"#login\").trigger(\"click\");\n        }\n    });\n    /**获取时间戳**/\n    function genTimestamp() {\n        var time = new Date();\n        return time.getTime();\n    }\n    /**刷新验证码的脚本处理**/\n    function changeCode() {\n        $(\"#codeImg\").attr(\"src\", \"/code/generate.do?t=\" + genTimestamp());\n    }\n    /**客户端校验**/\n    function checkValidity() {\n        if ($(\"#username\").val() == \"\") {\n            $(\"#username\").tips({\n                side : 2,\n                msg : '用户名不得为空',\n                bg : '#AE81FF',\n                time : 3\n            });\n            $(\"#username\").focus();\n            return false;\n        }\n        if ($(\"#password\").val() == \"\") {\n            $(\"#password\").tips({\n                side : 2,\n                msg : '密码不得为空',\n                bg : '#AE81FF',\n                time : 3\n            });\n            $(\"#password\").focus();\n            return false;\n        }\n        if ($(\"#code\").val() == \"\") {\n            $(\"#code\").tips({\n                side : 1,\n                msg : '验证码不得为空',\n                bg : '#AE81FF',\n                time : 3\n            });\n            $(\"#code\").focus();\n            return false;\n        }\n        return true;\n    }\n    /**服务器校验**/\n    function loginCheck(){\n        if(checkValidity()){\n            var username = $(\"#username\").val();\n            var password = $(\"#password\").val();\n            var code = username+\",\"+password+\",\"+$(\"#code\").val();\n            $.ajax({\n                type: \"POST\",//请求方式为POST\n                url: 'loginCheck.do',//检验url\n                data: {LOGINDATA:code,tm:new Date().getTime()},//请求数据\n                dataType:'json',//数据类型为JSON类型\n                cache: false,//关闭缓存\n                success: function(data){//响应成功\n                    if(\"success\" == data.flag){\n                        $(\"#login\").tips({\n                            side : 1,\n                            msg : '正在登录 , 请稍后 ...',\n                            bg : '#68B500',\n                            time : 10\n                        });\n                        window.location.href=\"toIndex.do\";\n                    }else if(\"faild\" == data.flag){\n                        $(\"#username\").tips({\n                            side : 1,\n                            msg : \"用户名或密码有误\",\n                            bg : '#FF5080',\n                            time : 15\n                        });\n                        $(\"#username\").focus();\n                    }else if(\"codeError\"== data.flag){\n                        $(\"#code\").tips({\n                            side : 1,\n                            msg : \"验证码输入有误\",\n                            bg : '#FF5080',\n                            time : 15\n                        });\n                        $(\"#code\").focus();\n                    }\n                }\n            });\n        }\n    }\n</script>\n\n\n</body>\n</html>\n"
  },
  {
    "path": "src/taoshop-portal/src/main/resources/templates/shopcart/add_shopcart_success.html",
    "content": "<!DOCTYPE HTML>\n<html xmlns=\"http://www.w3.org/1999/xhtml\"\n      xmlns:th=\"http://www.thymeleaf.org\">\n<head>\n<meta charset=\"utf-8\" />\n<title>成功加入购物车</title>\n    <link th:href=\"@{/static/css/public.css}\" rel=\"stylesheet\" type=\"text/css\" />\n    <link th:href=\"@{/static/css/cart.css}\" rel=\"stylesheet\" type=\"text/css\" />\n    <script type=\"text/javascript\" th:src=\"@{/static/js/jquery-1.3.2.min.js}\"></script>\n    <script type=\"text/javascript\" th:src=\"@{/static/js/html5.js}\"></script>\n</head>\n<body>\n<!--header-->\n<header class=\"header\">\n  <!--topBar-->\n  <div class=\"topBar\" th:replace=\"top_bar :: .topBar\"></div>\n  <!--//topBar-->\n  <!--headerMain-->\n  <div class=\"headerMain layout clearfix\" th:replace=\"/header_main :: .headerMain\"></div>\n  <!--//headerMain-->\n  <!--headerNav-->\n  <div class=\"headerNav\" th:replace=\"/header_nav :: .headerNav\"></div>\n  <!--//headerNav-->\n</header>\n<!--//header-->\n\n<!--加入购物车提示-->\n<div class=\"success-toCart\">\n\t<div class=\"tip\">商品已成功加入购物车！</div><div class=\"mb-3em\"><a class=\"btn btn-gray\" href=\"#\">继续购物</a><a class=\"btn btn-red\" href=\"#\">去购物车结算</a></div>\n</div>\n<!--//加入购物车提示-->\n\n<div class=\"clearfix\"></div>\n\n<!--hot-goods 热门产品-->\n<div class=\"hot-goods\">\n    <div class=\"hot-goods-hd\">\n        <h2 class=\"hot-goods-tit\">热门商品</h2>\n    </div>\n    <div class=\"hot-goods-bd\">\n        <div class=\"clearfix hot-goods-list\">\n            <div class=\"goods\">\n                <p class=\"goods-img\"><img th:src=\"@{/static/picture/hot-goods_180x180.jpg}\" /></p>\n                <p class=\"goods-name\">学院风帆布双肩包 卡其色</p>\n                <p class=\"goods-des\">使用500g纯棉帆布，材质上乘</p>\n                <p class=\"goods-price\"><span class=\"val\">79元</span></p>\n                <p class=\"goods-buy\"><a class=\"add-cart\" href=\"#\"><span>加入购物车</span></a></p>\n            </div>\n            <div class=\"goods\">\n                <p class=\"goods-img\"><img th:src=\"@{/static/picture/hot-goods_180x180.jpg}\" /></p>\n                <p class=\"goods-name\">学院风帆布双肩包 卡其色</p>\n                <p class=\"goods-des\">使用500g纯棉帆布，材质上乘</p>\n                <p class=\"goods-price\"><span class=\"val\">79元</span></p>\n                <p class=\"goods-buy\"><a class=\"add-cart\" href=\"#\"><span>加入购物车</span></a></p>\n            </div>\n            <div class=\"goods\">\n                <p class=\"goods-img\"><img th:src=\"@{/static/picture/hot-goods_180x180.jpg}\" /></p>\n                <p class=\"goods-name\">学院风帆布双肩包 卡其色</p>\n                <p class=\"goods-des\">使用500g纯棉帆布，材质上乘</p>\n                <p class=\"goods-price\"><span class=\"val\">79元</span></p>\n                <p class=\"goods-buy\"><a class=\"add-cart\" href=\"#\"><span>加入购物车</span></a></p>\n            </div>\n            <div class=\"goods\">\n                <p class=\"goods-img\"><img th:src=\"@{/static/picture/hot-goods_180x180.jpg}\" /></p>\n                <p class=\"goods-name\">学院风帆布双肩包 卡其色</p>\n                <p class=\"goods-des\">使用500g纯棉帆布，材质上乘</p>\n                <p class=\"goods-price\"><span class=\"val\">79元</span></p>\n                <p class=\"goods-buy\"><a class=\"add-cart\" href=\"#\"><span>加入购物车</span></a></p>\n            </div>\n            <div class=\"goods\">\n                <p class=\"goods-img\"><img th:src=\"@{/static/picture/hot-goods_180x180.jpg}\" /></p>\n                <p class=\"goods-name\">学院风帆布双肩包 卡其色</p>\n                <p class=\"goods-des\">使用500g纯棉帆布，材质上乘</p>\n                <p class=\"goods-price\"><span class=\"val\">79元</span></p>\n                <p class=\"goods-buy\"><a class=\"add-cart\" href=\"#\"><span>加入购物车</span></a></p>\n            </div>\n        </div>\n    </div>\n</div>\n<!--//hot-goods-->\n\n<!--footer-->\n<footer class=\"footer\" th:replace=\"/footer :: .footer\"></footer>\n\n</body>\n</html>"
  },
  {
    "path": "src/taoshop-portal/src/main/resources/templates/test.html",
    "content": "<!DOCTYPE HTML>\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:th=\"http://www.thymeleaf.org\" >\n<head>\n    <title>Getting Started: Serving Web Content</title>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n    <link th:href=\"@{/css/1.css}\" rel=\"stylesheet\"/>\n</head>\n<body>\n<p th:text=\"'Hello, ' + ${title}\" /><br/>\n\n<script th:src=\"@{/js/jquery/1.11.0/jquery.js}\"></script>\n<script>\n    $(function(){\n        alert(\"page load finish.\");\n    });\n</script>\n</body>\n</html>"
  },
  {
    "path": "src/taoshop-portal/src/main/resources/templates/top_bar.html",
    "content": "<!--topBar-->\n<div class=\"topBar\" xmlns:th=\"http://www.w3.org/1999/xhtml\">\n    <div class=\"layout\"> <span class=\"hello-notice f-orange1 f-b\" style=\"position:absolute;left:50%;margin-left:-600px;top:1px;display:block;font-size:14px;text-align:left;\">本商城在试运行阶段，暂不接收任何订单。</span>\n        <!--welcome-->\n        <span class=\"topBar-userWelcome\" th:if=\"${session.potalSessionUser == null}\">您好，欢迎来商城！<a th:href=\"@{/portal/toLogin.do}\" id=\"loginHref\" rel=\"popbox\">[登录]</a> <a id=\"registerHref\" th:href=\"@{/portal/toLogin.do}\">[注册]</a></span>\n        <!--登录后   -->\n        <span class=\"topBar-userWelcome logined\" th:if=\"${session.potalSessionUser != null}\" th:onshow=\"true\">\n                欢迎您\n                <span class=\"user\">\n                  <a href=\"#\" class=\"user-link\" th:text=\"${session.potalSessionUser}\"><em class=\"icon-arr\"></em></a>\n                  <span class=\"user-cs\" style=\"display:none;\">\n                    <span class=\"user-cs-con\">\n                      <s class=\"icon-arr\"></s>\n                      <p><a th:href=\"@{/portal/user/toUserCenter.do}\">个人中心</a></p>\n                      <p><a href=\"#\">退出登录</a></p>\n                    </span>\n                  </span>\n                </span>\n              </span>\n\n\n        <script>\n            $(function(){\n                $(\".user\").hover(function(){\n                    $(this).find(\".user-cs\").show();\n                },function(){\n                    $(this).find(\".user-cs\").hide();\n                });\n            });\n        </script>\n\n        <!--//welcome-->\n        <!--topBar-menu-->\n        <span class=\"topBar-menu\"> <a href=\"#\">商户入驻申请</a>| <a href=\"#\">我的订单</a>| <a href=\"#\">网上营业厅</a> </span>\n        <!--//topBar-menu-->\n    </div>\n</div>\n<!--//topBar-->"
  },
  {
    "path": "src/taoshop-portal/src/main/resources/templates/user/portal_user_center.html",
    "content": "﻿<!DOCTYPE HTML>\n<html xmlns=\"http://www.w3.org/1999/xhtml\"\n      xmlns:th=\"http://www.thymeleaf.org\">\n<head>\n<meta charset=\"utf-8\" />\n<title>个人中心首页</title>\n    <link th:href=\"@{/static/css/public.css}\" rel=\"stylesheet\" type=\"text/css\" />\n    <link th:href=\"@{/static/css/user.css}\" rel=\"stylesheet\" type=\"text/css\" />\n    <script type=\"text/javascript\" th:src=\"@{/static/js/jquery-1.3.2.min.js}\"></script>\n    <script type=\"text/javascript\" th:src=\"@{/static/js/html5.js}\"></script>\n</head>\n<body>\n<!--header-->\n<header class=\"header\">\n    <!--topBar-->\n    <div class=\"topBar\" th:replace=\"/top_bar :: .topBar\"></div>\n    <!--//topBar-->\n  <!--headerMain-->\n    <div class=\"headerMain layout clearfix\" th:replace=\"/header_main :: .headerMain\"></div>\n  <!--//headerMain-->\n  <!--headerNav-->\n  <div class=\"headerNav\" th:replace=\"/header_nav :: .headerNav\"></div>\n  <!--//headerNav-->\n</header>\n<!--//header-->\n<!--container-->\n<div class=\"container\">\n\t<!--user  用户中心-->\n\t<div class=\"layout clearfix user\">\n    \t<!--user-aside  用户侧边栏-->\n    \t<div class=\"user-aside\">\n        \t<div class=\"user-list-items\">\n            \t<h2 class=\"user-list-tit\">个人中心</h2>\n                <ul class=\"user-list\">\n                \t<li class=\"cur\"><a href=\"#\">我的个人中心</a></li>\n                    <li><a href=\"#\">我的订单</a></li>\n                </ul>\n            </div>\n            <div class=\"user-list-items\">\n            \t<h2 class=\"user-list-tit\">账户管理</h2>\n                <ul class=\"user-list\">\n                \t<li><a href=\"#\">收货地址管理</a></li>\n                    <li><a href=\"#\">修改密码</a></li>\n                </ul>\n            </div>\n        </div>\n        <!--//user-aside-->\n        <!--user-main  用户主体-->\n        <div class=\"user-main\">\n        \t<div class=\"user-info\">\n            \t<div class=\"clearfix\">\n                \t<span><img th:src=\"@{/static/images/user-avatar_80x80.jpg}\" class=\"user-avatar\"/></span>\n                \t<strong class=\"user-name\" th:text=\"${session.potalSessionUser}\">逛店专业户</strong>\n                    <strong class=\"user-welcome\">欢迎来到用户中心~</strong>\n                </div>\n            </div>\n            <script>\n\t\t\t\t$(document).ready(function(){\n\t\t\t\t\t$('.user-avatar').mouseover(function(){\n\t\t\t\t\t\t$(this).attr('src','/static/images/user-avatar_hover_80x80.jpg');\n\t\t\t\t\t});\n\t\t\t\t\t$('.user-avatar').mouseleave(function(){\n\t\t\t\t\t\t$(this).attr('src','/static/images/user-avatar_80x80.jpg');\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t</script>\n\n            <!--user-about-orders  用户未支付订单-->\n            <div class=\"user-about-items user-about-orders\">\n            \t<div class=\"user-about-hd\">\n                \t<h3 class=\"user-about-tit\">未支付订单</h3>\n                </div>\n                <div class=\"user-about-bd\">\n                \t<div class=\"user-about-box user-about-none\" style=\"display:none;\">  <!--无信息时显示-->\n                    \t<p>您暂时没有未支付订单，<a href=\"#\">赶快去购物吧~</a></p>\n                    </div>\n                    <div class=\"user-about-box user-about-con\">   <!--有信息时显示-->\n                    \t<div class=\"my-orders\">\n                        \t<table class=\"orders-table\">\n                            \t<tr>\n                                \t<td class=\"orders-pic-td\" width=\"15%\"><img th:src=\"@{/static/picture/img_big.jpg}\" class=\"orders-pic\"/></td>\n                                    <td width=\"38%\">订单号：<span class=\"orders-number\">1140424450009291</span></td>\n                                    <td width=\"15%\"><strong class=\"orders-price\">￥1969</strong></td>\n                                    <td width=\"15%\"><a class=\"orders-detail\" href=\"#\">订单详情</a></td>\n                                    <td class=\"tc\" width=\"17%\"><a class=\"orange-btn buynow\" href=\"#\">立即支付</a></td>\n                                </tr>\n                                <tr>\n                                    <td class=\"orders-pic-td\" width=\"15%\"><img th:src=\"@{/static/picture/img_big.jpg}\" class=\"orders-pic\"/></td>\n                                    <td width=\"38%\">订单号：<span class=\"orders-number\">1140424450009291</span></td>\n                                    <td width=\"15%\"><strong class=\"orders-price\">￥1969</strong></td>\n                                    <td width=\"15%\"><a class=\"orders-detail\" href=\"#\">订单详情</a></td>\n                                    <td class=\"tc\" width=\"17%\"><a class=\"orange-btn buynow\" href=\"#\">立即支付</a></td>\n                                </tr>\n                            </table>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <!--//user-about-orders-->\n            \n            <!--user-about-orders  用户已支付订单-->\n            <div class=\"user-about-items user-about-orders\">\n            \t<div class=\"user-about-hd\">\n                \t<h3 class=\"user-about-tit\">已支付订单</h3>\n                </div>\n                <div class=\"user-about-bd\">\n                \t<div class=\"user-about-box user-about-none\">  <!--无信息时显示-->\n                    \t<p>您暂时没有已支付订单，<a href=\"#\">挑挑喜欢的商品去>></a></p>\n                    </div>\n                    <div class=\"user-about-box user-about-con\" style=\"display:none;\">   <!--有信息时显示-->\n                    \t<div class=\"my-orders\">\n                        \t<table class=\"orders-table paid-orders-table\">\n                            \t<tr>\n                                \t<td class=\"orders-pic-td\" width=\"15%\"><img th:src=\"@{/static/picture/img_big.jpg}\" class=\"orders-pic\"/></td>\n                                    <td width=\"38%\">订单号：<span class=\"orders-number\">1140424450009291</span></td>\n                                    <td width=\"15%\"><strong class=\"orders-price\">￥1969</strong></td>\n                                    <td width=\"15%\"><a class=\"orders-detail\" href=\"#\">订单详情</a></td>\n                                    <td class=\"tc\" width=\"17%\">&nbsp;</td>\n                                </tr>\n                            </table>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <!--//user-about-orders-->\n            \n            <!--user-about-cart  购物车-->\n            <div class=\"user-about-items user-about-cart\">\n            \t<div class=\"user-about-hd\">\n                \t<h3 class=\"user-about-tit\">购物车</h3>\n                    <a class=\"view-cart\" href=\"#\">查看购物车>></a>\n                </div>\n                <div class=\"user-about-bd\">\n                \t<div class=\"user-about-box user-about-none\" style=\"display:none;\">  <!--无信息时显示-->\n                    \t<p>您的购物车还是空的，<a href=\"#\">赶快去购物吧~</a></p>\n                    </div>\n                    <div class=\"user-about-box user-about-con\">   <!--有信息时显示-->\n                    \t<div class=\"my-cart\">\n                        \t<ul class=\"clearfix my-cart-list\">\n                            \t<li>\n                                \t<a href=\"#\">\n                                    \t<img th:src=\"@{/static/picture/img_big.jpg}\"/>\n                                        <p>苹果（APPLE）iPho..</p>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <img th:src=\"@{/static/picture/img_big.jpg}\"/>\n                                        <p>苹果（APPLE）iPho..</p>\n                                    </a>\n                                </li>\n                            </ul>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <!--//user-about-cart-->\n            \n        </div>\n        <!--//user-main-->\n    </div>\n    <!--//user-->\n</div>\n<!--//container-->\n<!--footer-->\n<footer class=\"footer\" th:replace=\"/footer :: .footer\"></footer>\n<!--//footer-->\n</body>\n</html>"
  },
  {
    "path": "src/taoshop-portal/src/main/webapp/WEB-INF/web.xml",
    "content": "<!DOCTYPE web-app PUBLIC\n \"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN\"\n \"http://java.sun.com/dtd/web-app_2_3.dtd\" >\n\n<web-app>\n  <display-name>Archetype Created Web Application</display-name>\n\n  <!-- ***************** 单点登录start *******************-->\n  <!-- 单点登出监听器-->\n  <listener>\n    <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>\n  </listener>\n\n  <filter>\n    <filter-name>CAS Single Sign Out Filter</filter-name>\n    <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>\n    <init-param>\n      <param-name>casServerUrlPrefix</param-name>\n      <param-value>http://127.0.0.1:8080/cas-server/</param-value>\n    </init-param>\n  </filter>\n  <filter-mapping>\n    <filter-name>CAS Single Sign Out Filter</filter-name>\n    <url-pattern>/*</url-pattern>\n  </filter-mapping>\n\n</web-app>\n"
  },
  {
    "path": "src/taoshop-portal/src/main/webapp/index.jsp",
    "content": "<html>\n<body>\n<h2>Hello World!</h2>\n</body>\n</html>\n"
  },
  {
    "path": "src/taoshop-portal/src/test/java/com/muses/taoshop/Attachment.java",
    "content": "package com.muses.taoshop;\nimport java.io.*;\n\npublic class Attachment implements Serializable\n{\n    public void download()\n    {\n        System.out.println(\"下载附件\");\n    }\n}"
  },
  {
    "path": "src/taoshop-portal/src/test/java/com/muses/taoshop/Client.java",
    "content": "package com.muses.taoshop;\npublic class Client\n{\n\tpublic static void main(String a[])\n\t{\n\t\tEmail email,copyEmail=null;\n\n\t\temail=new Email();\n\n\t\ttry{\n\t\t\tcopyEmail=(Email)email.deepClone();\n\t\t}\n\t\tcatch(Exception e)\n\t\t{\n\t\t\te.printStackTrace();\n\t\t}\n\n\n\t\tSystem.out.println(\"email==copyEmail?\");\n\t\tSystem.out.println(email==copyEmail);\n\n\t\tSystem.out.println(\"email.getAttachment==copyEmail.getAttachment?\");\n\t\tSystem.out.println(email.getAttachment()==copyEmail.getAttachment());\n\t}\n}"
  },
  {
    "path": "src/taoshop-portal/src/test/java/com/muses/taoshop/Email.java",
    "content": "package com.muses.taoshop;\nimport java.io.*;\n\npublic class Email implements Serializable\n{\n\tprivate Attachment attachment=null;\n\n\tpublic Email()\n\t{\n\t\tthis.attachment=new Attachment();\n\t}\n\n\tpublic Object deepClone() throws IOException, ClassNotFoundException, OptionalDataException\n\t{\n\t\t//将对象写入流中\n\t\tByteArrayOutputStream bao=new ByteArrayOutputStream();\n\t\tObjectOutputStream oos=new ObjectOutputStream(bao);\n\t\toos.writeObject(this);\n\n\t\t//将对象从流中取出\n\t\tByteArrayInputStream bis=new ByteArrayInputStream(bao.toByteArray());\n\t\tObjectInputStream ois=new ObjectInputStream(bis);\n\t\treturn(ois.readObject());\n\t}\n\n\tpublic Attachment getAttachment()\n\t{\n\t\treturn this.attachment;\n\t}\n\n\tpublic void display()\n\t{\n\t\tSystem.out.println(\"查看邮件\");\n\t}\n\n}"
  },
  {
    "path": "src/taoshop-portal/src/test/java/com/muses/taoshop/JDBCFacade.java",
    "content": "package com.muses.taoshop;\n\nimport java.sql.*;\n\npublic class JDBCFacade {\n    \n    private Connection conn=null;\n    private Statement statement=null;\n\n    public void open(String driver,String jdbcUrl,String userName,String userPwd) {\n        try {\n            Class.forName(driver).newInstance();\n            conn = DriverManager.getConnection(jdbcUrl,userName,userPwd);\n            statement = conn.createStatement();\n        } \n        catch (Exception e) {\n            e.printStackTrace();\n        }\n    }\n\n    public int executeUpdate(String sql) {\n        try {\n            return statement.executeUpdate(sql);\n        } \n        catch (SQLException e) {\n            e.printStackTrace();\n            return -1;\n        }\n    }\n\n    public ResultSet executeQuery(String sql) {\n        try {\n            return statement.executeQuery(sql);\n        } catch (SQLException e) {\n            e.printStackTrace();\n            return null;\n        }\n    }\n\n    public void close() {\n        try {\n            conn.close();\n            statement.close();\n        } catch (SQLException e) {\n            e.printStackTrace();\n        }\n    }\n}"
  },
  {
    "path": "src/taoshop-portal/src/test/java/com/muses/taoshop/ParseDateTest.java",
    "content": "package com.muses.taoshop;\n\nimport java.text.ParseException;\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\nimport java.util.concurrent.ExecutorService;\nimport java.util.concurrent.Executors;\n\n/**\n * <pre>\n *  ParseDateTest\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.12.23 11:59    修改内容:\n * </pre>\n */\npublic class ParseDateTest implements Runnable{\n\n    private int i ;\n\n    private static final SimpleDateFormat sdf = new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\");\n\n    public ParseDateTest(int i){\n        this.i = i;\n    }\n\n    /**\n     * When an object implementing interface <code>Runnable</code> is used\n     * to create a thread, starting the thread causes the object's\n     * <code>run</code> method to be called in that separately executing\n     * thread.\n     * <p>\n     * The general contract of the method <code>run</code> is that it may\n     * take any action whatsoever.\n     *\n     * @see Thread#run()\n     */\n    @Override\n    public void run() {\n        try {\n            Date t = sdf.parse(\"2018-12-22 19:30:\"+i%60);\n            System.out.println(i+\":\"+t.toString());\n        } catch (ParseException e) {\n            e.printStackTrace();\n        }\n    }\n\n    public static void main(String[] args){\n        ExecutorService es = Executors.newFixedThreadPool(10);\n        for(int i =0;i<=1000;i++){\n            es.execute(new ThreadLocalTest(i));\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/taoshop-portal/src/test/java/com/muses/taoshop/ThreadLocalTest.java",
    "content": "package com.muses.taoshop;\n\nimport java.lang.ref.SoftReference;\nimport java.text.ParseException;\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\nimport java.util.concurrent.ExecutorService;\nimport java.util.concurrent.Executors;\n\n/**\n * <pre>\n *  ThreadLocal测试类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.12.22 22:51    修改内容:\n * </pre>\n */\npublic class ThreadLocalTest implements Runnable {\n\n    private int i ;\n\n    private static final ThreadLocal<SimpleDateFormat> threadLocal = new ThreadLocal<SimpleDateFormat>();\n\n    public ThreadLocalTest(int i){\n        this.i = i;\n    }\n\n    /**\n     * When an object implementing interface <code>Runnable</code> is used\n     * to create a thread, starting the thread causes the object's\n     * <code>run</code> method to be called in that separately executing\n     * thread.\n     * <p>\n     * The general contract of the method <code>run</code> is that it may\n     * take any action whatsoever.\n     *\n     * @see Thread#run()\n     */\n    @Override\n    public void run() {\n        threadLocal.set(new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\"));\n        try {\n            Date t = threadLocal.get().parse(\"2018-12-22 19:30:\"+i%60);\n            System.out.println(i+\":\"+t.toString());\n        } catch (ParseException e) {\n            e.printStackTrace();\n        }\n    }\n\n    public static void main(String[] args){\n        ExecutorService es = Executors.newFixedThreadPool(10);\n        for(int i =0;i<=1000;i++){\n            es.execute(new ThreadLocalTest(i));\n        }\n        threadLocal.remove();\n    }\n}\n"
  },
  {
    "path": "src/taoshop-provider/ReadMe.md",
    "content": "### 电商平台服务中心"
  },
  {
    "path": "src/taoshop-provider/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <parent>\n        <artifactId>taoshop</artifactId>\n        <groupId>com.muses.taoshop</groupId>\n        <version>1.0-SNAPSHOT</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>com.muses.taoshop.provider</groupId>\n    <artifactId>taoshop-provider</artifactId>\n    <version>1.0-SNAPSHOT</version>\n    <modules>\n        <module>taoshop-provider-usc</module>\n        <module>taoshop-provider-item</module>\n        <module>taoshop-provider-order</module>\n        <module>taoshop-provider-shop</module>\n    </modules>\n    <packaging>pom</packaging>\n\n    <url>http://www.example.com</url>\n\n    <distributionManagement>\n        <site>\n            <id>website</id>\n            <url>scp://webhost.company.com/www/website</url>\n        </site>\n    </distributionManagement>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    </properties>\n\n\n</project>\n"
  },
  {
    "path": "src/taoshop-provider/taoshop-provider-item/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <parent>\n        <artifactId>taoshop-provider</artifactId>\n        <groupId>com.muses.taoshop.provider</groupId>\n        <version>1.0-SNAPSHOT</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>com.muses.taoshop.provider</groupId>\n    <artifactId>taoshop-provider-item</artifactId>\n    <version>1.0-SNAPSHOT</version>\n\n    <dependencies>\n        <dependency>\n            <groupId>com.muses.taoshop.provider-api</groupId>\n            <artifactId>taoshop-provider-api-item</artifactId>\n            <version>1.0-SNAPSHOT</version>\n        </dependency>\n    </dependencies>\n\n\n</project>"
  },
  {
    "path": "src/taoshop-provider/taoshop-provider-item/src/main/java/com/muses/taoshop/item/mapper/ItemBrandMapper.java",
    "content": "package com.muses.taoshop.item.mapper;\n\n\nimport com.muses.taoshop.item.entity.ItemBrand;\nimport org.apache.ibatis.annotations.Mapper;\n\nimport java.util.List;\n\n@Mapper\npublic interface ItemBrandMapper {\n    List<ItemBrand> listItemBrand();\n\n}"
  },
  {
    "path": "src/taoshop-provider/taoshop-provider-item/src/main/java/com/muses/taoshop/item/mapper/ItemCategoryMapper.java",
    "content": "package com.muses.taoshop.item.mapper;\n\nimport com.muses.taoshop.item.entity.ItemCategory;\nimport com.muses.taoshop.item.entity.ItemList;\nimport org.apache.ibatis.annotations.Mapper;\nimport org.apache.ibatis.annotations.Param;\n\nimport java.util.List;\n@Mapper\npublic interface ItemCategoryMapper {\n\n    List<ItemCategory> listRootCategory();\n\n    List<ItemCategory> listCategory();\n\n    List<ItemList> listItemByCategoryId(@Param(\"categoryId\") int categoryId);\n}"
  },
  {
    "path": "src/taoshop-provider/taoshop-provider-item/src/main/java/com/muses/taoshop/item/mapper/ItemMapper.java",
    "content": "package com.muses.taoshop.item.mapper;\n\n\nimport com.muses.taoshop.item.entity.ItemDetail;\nimport com.muses.taoshop.item.entity.ItemPortal;\nimport com.muses.taoshop.item.entity.ItemSpec;\nimport org.apache.ibatis.annotations.Mapper;\nimport org.apache.ibatis.annotations.Param;\n\nimport java.util.List;\n\n@Mapper\npublic interface ItemMapper {\n\n    List<ItemPortal> listItemPortal();\n\n    ItemDetail getItemDetail(@Param(\"spuId\")int spuId);\n\n}\n"
  },
  {
    "path": "src/taoshop-provider/taoshop-provider-item/src/main/java/com/muses/taoshop/item/mapper/ItemSpecMapper.java",
    "content": "package com.muses.taoshop.item.mapper;\n\nimport com.muses.taoshop.item.entity.ItemSpec;\nimport com.muses.taoshop.item.entity.ItemSpecValue;\nimport org.apache.ibatis.annotations.Mapper;\nimport org.apache.ibatis.annotations.Param;\n\nimport java.util.List;\n\n\n@Mapper\npublic interface ItemSpecMapper {\n    List<ItemSpec> getSpecBySpuId(@Param(\"spuId\")int spuId);\n\n    List<ItemSpecValue> getSpecValueBySkuId(@Param(\"skuId\")int skuId);\n}\n"
  },
  {
    "path": "src/taoshop-provider/taoshop-provider-item/src/main/java/com/muses/taoshop/item/service/ItemBrankServiceImpl.java",
    "content": "package com.muses.taoshop.item.service;\n\nimport com.muses.taoshop.item.entity.ItemBrand;\nimport com.muses.taoshop.item.mapper.ItemBrandMapper;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport java.util.List;\n\n/**\n * <pre>\n *  商品品牌信息服务实现类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.06.15 22:54    修改内容:\n * </pre>\n */\n@Service\npublic class ItemBrankServiceImpl implements IItemBrankService{\n\n    @Autowired\n    ItemBrandMapper itemBrandMapper;\n\n    @Override\n    public List<ItemBrand> listItemBrand() {\n        return itemBrandMapper.listItemBrand();\n    }\n\n\n\n}\n"
  },
  {
    "path": "src/taoshop-provider/taoshop-provider-item/src/main/java/com/muses/taoshop/item/service/ItemCategoryServiceImpl.java",
    "content": "package com.muses.taoshop.item.service;\n\nimport com.muses.taoshop.item.entity.ItemCategory;\nimport com.muses.taoshop.item.entity.ItemList;\nimport com.muses.taoshop.item.mapper.ItemCategoryMapper;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport java.util.List;\n\n/**\n * <pre>\n *  商品品类信息服务实现类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.06.17 11:01    修改内容:\n * </pre>\n */\n@Service\npublic class ItemCategoryServiceImpl implements IItemCategoryService{\n\n    @Autowired\n    ItemCategoryMapper itemCategoryMapper;\n\n    /**\n     * 查询根级商品品类信息\n     *\n     * @return\n     */\n    @Override\n    public List<ItemCategory> listRootCategory() {\n        return itemCategoryMapper.listRootCategory();\n    }\n\n    /**\n     * 查询所有的商品品类信息\n     * @return\n     */\n    @Override\n    public List<ItemCategory> listCategory() {\n        return itemCategoryMapper.listCategory();\n    }\n\n    /**\n     * 根据品目id获取商品信息\n     *\n     * @return\n     */\n    @Override\n    public List<ItemList> listItemByCategoryId(int categoryId) {\n        return itemCategoryMapper.listItemByCategoryId(categoryId);\n    }\n\n\n}\n"
  },
  {
    "path": "src/taoshop-provider/taoshop-provider-item/src/main/java/com/muses/taoshop/item/service/ItemServiceImpl.java",
    "content": "package com.muses.taoshop.item.service;\n\nimport com.muses.taoshop.item.entity.ItemDetail;\nimport com.muses.taoshop.item.entity.ItemPortal;\nimport com.muses.taoshop.item.entity.ItemSpec;\nimport com.muses.taoshop.item.mapper.ItemMapper;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport java.util.List;\n\n/**\n * <pre>\n *  商品信息服务实现类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.06.24 22:37    修改内容:\n * </pre>\n */\n@Service\npublic class ItemServiceImpl implements IItemService {\n\n    @Autowired\n    ItemMapper itemMapper;\n\n    /**\n     * 在门户网站列出商品粗略信息\n     *\n     * @return\n     */\n    @Override\n    public List<ItemPortal> listItemPortal() {\n        return itemMapper.listItemPortal();\n    }\n\n    /**\n     * 获取商品详情信息\n     * @return ItemDetail\n     */\n    @Override\n    public ItemDetail getItemDetailInfo(int spuId){\n        ItemDetail itemDetail = itemMapper.getItemDetail(spuId);\n        return  itemDetail;\n    }\n\n\n}\n"
  },
  {
    "path": "src/taoshop-provider/taoshop-provider-item/src/main/java/com/muses/taoshop/item/service/ItemSpecServiceImpl.java",
    "content": "package com.muses.taoshop.item.service;\n\nimport com.muses.taoshop.item.entity.ItemSpec;\nimport com.muses.taoshop.item.entity.ItemSpecValue;\nimport com.muses.taoshop.item.mapper.ItemSpecMapper;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport java.util.List;\n\n\n@Service\npublic class ItemSpecServiceImpl implements IItemSpecService {\n\n    @Autowired\n    ItemSpecMapper itemSpecMapper;\n\n    /**\n     * 获取spuId获取规格参数列表\n     * @param spuId\n     * @return\n     */\n    @Override\n    public List<ItemSpec> getSpecBySpuId(int spuId) {\n        return itemSpecMapper.getSpecBySpuId(spuId);\n    }\n\n    /**\n     * 通过SkuId获取规格参数Value列表\n     *\n     * @param skuId\n     * @return\n     */\n    @Override\n    public List<ItemSpecValue> getSpecValueBySkuId(int skuId) {\n        return itemSpecMapper.getSpecValueBySkuId(skuId);\n    }\n}\n"
  },
  {
    "path": "src/taoshop-provider/taoshop-provider-item/src/main/resources/mybatis/ItemBrandMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\" >\n<mapper namespace=\"com.muses.taoshop.item.mapper.ItemBrandMapper\" >\n  <resultMap id=\"baseResultMap\" type=\"com.muses.taoshop.item.entity.ItemBrand\" >\n    <id column=\"id\" property=\"id\" jdbcType=\"BIGINT\" />\n    <result column=\"brand_name\" property=\"brandName\" jdbcType=\"VARCHAR\" />\n    <result column=\"last_modify_time\" property=\"lastModifyTime\" jdbcType=\"TIMESTAMP\" />\n    <result column=\"create_time\" property=\"createTime\" jdbcType=\"TIMESTAMP\" />\n  </resultMap>\n\n  <select id=\"listItemBrand\" resultMap=\"baseResultMap\">\n    <![CDATA[\n    SELECT  * from item_brand\n    ]]>\n  </select>\n\n</mapper>"
  },
  {
    "path": "src/taoshop-provider/taoshop-provider-item/src/main/resources/mybatis/ItemCategoryMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\" >\n<mapper namespace=\"com.muses.taoshop.item.mapper.ItemCategoryMapper\" >\n  <resultMap id=\"BaseResultMap\" type=\"com.muses.taoshop.item.entity.ItemCategory\" >\n    <id column=\"id\" property=\"id\" jdbcType=\"BIGINT\" />\n    <result column=\"category_name\" property=\"categoryName\" jdbcType=\"VARCHAR\" />\n    <result column=\"sjid\" property=\"sjid\" jdbcType=\"BIGINT\" />\n    <result column=\"last_modify_time\" property=\"lastModifyTime\" jdbcType=\"TIMESTAMP\" />\n    <result column=\"create_time\" property=\"createTime\" jdbcType=\"TIMESTAMP\" />\n  </resultMap>\n\n  <sql id=\"BaseColumnList\" >\n    id,\n        category_name as categoryName,\n        sjid,\n        last_modify_time as lastModifyTime,\n        create_time as createTime\n  </sql>\n  <!-- 获取所有的根级品类信息-->\n  <select id=\"listRootCategory\" resultType=\"ItemCategory\" >\n     SELECT\n        <include refid=\"BaseColumnList\" />\n        FROM item_category t\n        <where>\n          t.sjid = 0\n        </where>\n  </select>\n    <!-- 获取所有的商品品类信息-->\n    <select id=\"listCategory\" resultType=\"ItemCategory\">\n        SELECT \n        <include refid=\"BaseColumnList\" />\n        FROM item_category t\n    </select>\n    <!-- 根据品目id获取商品信息-->\n    <select id=\"listItemByCategoryId\" resultType=\"ItemList\">\n        SELECT\n          spu.id AS spuId,\n          spu.item_name AS itemName,\n          sku.id AS skuId,\n          sku.price AS skuPrice,\n          sku.img_path AS imgPath\n        FROM\n          item_spu spu\n          LEFT JOIN item_sku sku\n            ON sku.spu_id = spu.id\n          LEFT JOIN item_category ic\n            ON ic.id = spu.category_id\n        WHERE spu.category_id = #{categoryId}\n    </select>\n</mapper>"
  },
  {
    "path": "src/taoshop-provider/taoshop-provider-item/src/main/resources/mybatis/ItemMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\" >\n<mapper namespace=\"com.muses.taoshop.item.mapper.ItemMapper\" >\n\n    <sql id=\"BaseColumnList\" >\n        id ,\n        sku_code ,\n        sku_name ,\n        price ,\n        stock ,\n        last_modify_time as lastModifyTime,\n        create_time as createTime\n    </sql>\n    <sql id=\"OrderBy\">\n        ORDER BY price\n    </sql>\n\n    <!-- 在门户网站列出商品粗略信息-->\n    <select id=\"listItemPortal\" resultType=\"ItemPortal\">\n        SELECT\n          spu.id AS spuId,\n          spu.item_name AS itemName,\n          sku.id AS skuId,\n          sku.price AS mPrice,\n          sku.img_path AS imgPath\n        FROM\n          item_spu spu\n          LEFT JOIN\n            (SELECT\n              s.id,\n              s.price,\n              s.spu_id,\n              s.img_path\n            FROM\n              item_sku s\n            GROUP BY s.spu_id) sku\n            ON sku.spu_id = spu.id\n    </select>\n    <!-- 商品详情-->\n    <select id=\"getItemDetail\" resultType=\"ItemDetail\">\n       \tSELECT\n          itb.brand_name AS brandName,\n          s.shop_name AS shopName,\n          spu.item_name AS itemName,\n          sku.price,\n          sku.promotion_price AS promotionPrice,\n          sku.img_path AS imgPath,\n          sku.stock\n\t    FROM\n\t      item_spu spu\n\t    RIGHT JOIN item_brand itb\n\t      ON itb.id = spu.brand_id\n\t   RIGHT JOIN shop_info s\n\t      ON s.id = spu.shop_id\n\t    LEFT JOIN\n\t    (SELECT\n              s.price,\n              s.promotion_price,\n              s.spu_id,\n              s.img_path,\n              s.stock\n\t     FROM\n\t          item_sku s\n\t      GROUP BY s.spu_id) sku\n\t    ON sku.spu_id = spu.id\n        <where>\n            spu.id = #{spuId}\n        </where>\n    </select>\n\n</mapper>"
  },
  {
    "path": "src/taoshop-provider/taoshop-provider-item/src/main/resources/mybatis/ItemSpecMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\" >\n<mapper namespace=\"com.muses.taoshop.item.mapper.ItemSpecMapper\" >\n\n    <!-- 通过SpuID查询规格参数 -->\n    <select id=\"getSpecBySpuId\" resultType=\"ItemSpec\">\n        SELECT  spec.spec_name AS specName\n          FROM item_spu_spec sspec\n        LEFT JOIN item_spec spec\n        ON spec.id = sspec.spec_id\n        <where>\n            sspec.spu_id = #{spuId}\n        </where>\n    </select>\n    <!-- 通过SkuID查询规格参数Value -->\n    <select id=\"getSpecValueBySkuId\" resultType=\"ItemSpecValue\">\n        SELECT\n          sv.spec_value AS specValue\n        FROM\n          item_sku_spec_value ssv\n          LEFT JOIN item_spec_value sv\n            ON sv.id = ssv.spec_value_id\n        <where>\n            ssv.sku_id = #{skuId}\n        </where>\n    </select>\n</mapper>"
  },
  {
    "path": "src/taoshop-provider/taoshop-provider-order/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <parent>\n        <artifactId>taoshop-provider</artifactId>\n        <groupId>com.muses.taoshop.provider</groupId>\n        <version>1.0-SNAPSHOT</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>com.muses.taoshop.provider</groupId>\n    <artifactId>taoshop-provider-order</artifactId>\n    <version>1.0-SNAPSHOT</version>\n\n\n</project>"
  },
  {
    "path": "src/taoshop-provider/taoshop-provider-shop/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <parent>\n        <artifactId>taoshop-provider</artifactId>\n        <groupId>com.muses.taoshop.provider</groupId>\n        <version>1.0-SNAPSHOT</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>com.muses.taoshop.provider</groupId>\n    <artifactId>taoshop-provider-shop</artifactId>\n    <version>1.0-SNAPSHOT</version>\n\n\n</project>"
  },
  {
    "path": "src/taoshop-provider/taoshop-provider-usc/ReadMe.md",
    "content": "### 电商平台用户信息服务中心\n"
  },
  {
    "path": "src/taoshop-provider/taoshop-provider-usc/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <parent>\n        <artifactId>taoshop-provider</artifactId>\n        <groupId>com.muses.taoshop.provider</groupId>\n        <version>1.0-SNAPSHOT</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>com.muses.taoshop.provider</groupId>\n    <artifactId>taoshop-provider-usc</artifactId>\n    <version>1.0-SNAPSHOT</version>\n    <packaging>jar</packaging>\n\n    <url>http://www.example.com</url>\n\n    <dependencies>\n        <dependency>\n            <groupId>com.muses.taoshop.provider-api</groupId>\n            <artifactId>taoshop-provider-api-usc</artifactId>\n            <version>1.0-SNAPSHOT</version>\n        </dependency>\n    </dependencies>\n\n\n\n</project>\n"
  },
  {
    "path": "src/taoshop-provider/taoshop-provider-usc/src/main/java/com/muses/taoshop/user/mapper/UserMapper.java",
    "content": "package com.muses.taoshop.user.mapper;\n\n\nimport com.muses.taoshop.user.entity.User;\nimport org.apache.ibatis.annotations.Mapper;\nimport org.apache.ibatis.annotations.Param;\n\n@Mapper\npublic interface UserMapper {\n    User loginCheck(@Param(\"username\") String username, @Param(\"password\") String password);\n}\n"
  },
  {
    "path": "src/taoshop-provider/taoshop-provider-usc/src/main/java/com/muses/taoshop/user/service/UserServiceImpl.java",
    "content": "package com.muses.taoshop.user.service;\n\nimport com.muses.taoshop.user.entity.User;\nimport com.muses.taoshop.user.mapper.UserMapper;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\n\n@Service\npublic class UserServiceImpl implements IUserService{\n\n    @Autowired\n    UserMapper userMapper;\n\n    /**\n     * 登录验证\n     *\n     * @param username\n     * @param password\n     */\n    @Override\n    public User loginCheck(String username, String password) {\n        return userMapper.loginCheck(username, password);\n    }\n}\n"
  },
  {
    "path": "src/taoshop-provider/taoshop-provider-usc/src/main/resources/mybatis/UserMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\" >\n<mapper namespace=\"com.muses.taoshop.user.mapper.UserMapper\" >\n\n    <select id=\"loginCheck\" resultType=\"User\" parameterType=\"string\">\n        SELECT\n          tu.username,\n          tu.password\n        FROM\n          tb_user tu\n        WHERE tu.username = #{username}\n          AND tu.password = #{password}\n    </select>\n\n</mapper>"
  },
  {
    "path": "src/taoshop-provider-api/ReadMe.md",
    "content": "### 电商平台API"
  },
  {
    "path": "src/taoshop-provider-api/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <parent>\n        <artifactId>taoshop</artifactId>\n        <groupId>com.muses.taoshop</groupId>\n        <version>1.0-SNAPSHOT</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>com.muses.taoshop.provider-api</groupId>\n    <artifactId>taoshop-provider-api</artifactId>\n    <version>1.0-SNAPSHOT</version>\n    <modules>\n        <module>taoshop-provider-api-order</module>\n        <module>taoshop-provider-api-item</module>\n        <module>taoshop-provider-api-usc</module>\n        <module>taoshop-provider-api-shop</module>\n    </modules>\n    <packaging>pom</packaging>\n\n    <name>taoshop-provider-api</name>\n    <url>http://www.example.com</url>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n        <maven.compiler.source>1.7</maven.compiler.source>\n        <maven.compiler.target>1.7</maven.compiler.target>\n    </properties>\n\n    <dependencies>\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <version>4.11</version>\n            <scope>test</scope>\n        </dependency>\n    </dependencies>\n\n\n</project>\n"
  },
  {
    "path": "src/taoshop-provider-api/taoshop-provider-api-item/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <parent>\n        <artifactId>taoshop-provider-api</artifactId>\n        <groupId>com.muses.taoshop.provider-api</groupId>\n        <version>1.0-SNAPSHOT</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>com.muses.taoshop.provider-api</groupId>\n    <artifactId>taoshop-provider-api-item</artifactId>\n    <version>1.0-SNAPSHOT</version>\n\n\n</project>"
  },
  {
    "path": "src/taoshop-provider-api/taoshop-provider-api-item/src/main/java/com/muses/taoshop/item/entity/ItemBrand.java",
    "content": "package com.muses.taoshop.item.entity;\n\nimport lombok.Data;\nimport lombok.Getter;\nimport lombok.Setter;\nimport lombok.ToString;\n\nimport java.util.Date;\n\n/**\n * <pre>\n *  商品品牌VO类\n * </pre>\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.06.09 21:49    修改内容:\n * </pre>\n */\n@Data\npublic class ItemBrand {\n    /**\n     * 品牌id\n     */\n    private Long id;\n\n    /**\n     * 品牌名称\n     */\n    private String brandName;\n\n    /**\n     * 上次修改时间\n     */\n    private Date lastModifyTime;\n\n    /**\n     * 创建时间\n     */\n    private Date createTime;\n\n}"
  },
  {
    "path": "src/taoshop-provider-api/taoshop-provider-api-item/src/main/java/com/muses/taoshop/item/entity/ItemCategory.java",
    "content": "package com.muses.taoshop.item.entity;\n\n\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.fasterxml.jackson.annotation.JsonFormat;\nimport com.fasterxml.jackson.databind.annotation.JsonSerialize;\nimport lombok.Data;\nimport lombok.Getter;\nimport lombok.Setter;\nimport lombok.ToString;\nimport org.springframework.format.annotation.DateTimeFormat;\n\nimport javax.validation.constraints.NotNull;\nimport java.util.Date;\nimport java.util.List;\n\n/**\n * <pre>\n *  商品品类\n * </pre>\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.06.09 21:49    修改内容:\n * </pre>\n */\n@Data\npublic class ItemCategory {\n    /**\n     * 商品品类id\n     */\n    private Long id;\n\n    /**\n     * 商品品类名称\n     */\n    private String categoryName;\n\n    /**\n     * 上级id\n     */\n    private Long sjid;\n\n    /**\n     * 上次修改时间\n     */\n    @JSONField(format =\"yyyy-MM-dd HH:mm:ss\")\n    private Date lastModifyTime;\n\n    /**\n     * 创建时间\n     */\n    @JSONField(format =\"yyyy-MM-dd HH:mm:ss\")\n    private Date createTime;\n\n    /**\n     * 子菜单\n     */\n    private List<ItemCategory> subCategorys;\n\n\n}"
  },
  {
    "path": "src/taoshop-provider-api/taoshop-provider-api-item/src/main/java/com/muses/taoshop/item/entity/ItemDetail.java",
    "content": "package com.muses.taoshop.item.entity;\n\nimport lombok.Data;\n\nimport java.util.List;\n\n/**\n * <pre>\n *  商品详情VO类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.07.15 16:16    修改内容:\n * </pre>\n */\n@Data\npublic class ItemDetail {\n    /**\n     * 品牌名称\n     */\n    private String brandName;\n\n    /**\n     * 商铺名称\n     */\n    private String shopName;\n\n    /**\n     * 商品名称\n     */\n    private String itemName;\n\n    /**\n     * 商城售价\n     */\n    private long price;\n\n    /**\n     * 促销售价\n     */\n    private long promotionPrice;\n\n    /**\n     * 图片路径\n     */\n    private String imgPath;\n\n    /**\n     * 商品库存(SKU)\n     */\n    private int stock;\n\n    /**\n     * 规格名称\n     */\n    private String specName;\n\n    /**\n     * 规格参数\n     */\n    private List<ItemSpec> itemSpecs;\n\n}\n"
  },
  {
    "path": "src/taoshop-provider-api/taoshop-provider-api-item/src/main/java/com/muses/taoshop/item/entity/ItemDto.java",
    "content": "package com.muses.taoshop.item.entity;\n\nimport lombok.Data;\n\n/**\n * <pre>\n *  商品信息DTO类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.10.28 11:51    修改内容:\n * </pre>\n */\n@Data\npublic class ItemDto {\n    /**\n     * spu编号\n     */\n    private String spuCode;\n    /**\n     * 商品名称\n     */\n    private String itemName;\n    /**\n     * 品类id\n     */\n    private Long categoryId;\n    /**\n     * 品牌id\n     */\n    private Long brandId;\n    /**\n     * 商家id\n     */\n    private Long shopId;\n    /**\n     * 品目名称\n     */\n    private String categoryName;\n}\n"
  },
  {
    "path": "src/taoshop-provider-api/taoshop-provider-api-item/src/main/java/com/muses/taoshop/item/entity/ItemList.java",
    "content": "package com.muses.taoshop.item.entity;\n\nimport lombok.Data;\n\n/**\n * <pre>\n *  商品信息Vo类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.10.27 23:46    修改内容:\n * </pre>\n */\n@Data\npublic class ItemList {\n    /**\n     * spu id\n     */\n    private Long spuId;\n    /**\n     * 商品名称\n     */\n    private String itemName;\n\n    /**\n     * sku id\n     */\n    private Long skuId;\n    /**\n     * 商品价钱\n     */\n    private Long skuPrice;\n    /**\n     * 图片路径\n     */\n    private String imgPath;\n}\n"
  },
  {
    "path": "src/taoshop-provider-api/taoshop-provider-api-item/src/main/java/com/muses/taoshop/item/entity/ItemPortal.java",
    "content": "package com.muses.taoshop.item.entity;\n\nimport lombok.Data;\nimport lombok.Getter;\nimport lombok.Setter;\nimport lombok.ToString;\n\n/**\n * <pre>\n *  定义一个在门户网站显示商品信息的VO类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.06.30 17:17    修改内容:\n * </pre>\n */\n@Data\npublic class ItemPortal {\n\n    /**\n     * skuId\n     */\n    private int skuId;\n\n    /**\n     * spuId\n     */\n    private int spuId;\n\n    /**\n     * sku的最低售价\n     */\n    private long mPrice;\n\n    /**\n     * 产品名称\n     */\n    private String itemName ;\n\n    /**\n     * 图片路径\n     */\n    private String imgPath;\n\n}\n"
  },
  {
    "path": "src/taoshop-provider-api/taoshop-provider-api-item/src/main/java/com/muses/taoshop/item/entity/ItemSku.java",
    "content": "package com.muses.taoshop.item.entity;\n\nimport lombok.Data;\nimport lombok.Getter;\nimport lombok.Setter;\nimport lombok.ToString;\n\nimport java.math.BigDecimal;\nimport java.util.Date;\nimport java.util.List;\n\n/**\n * <pre>\n *  商品SKU类\n * </pre>\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.06.09 21:49    修改内容:\n * </pre>\n */\n@Data\npublic class ItemSku {\n    /**\n     *  id\n     */\n    private Long id;\n    /**\n     *  sku编码\n     */\n    private String skuCode;\n    /**\n     * sku名称\n     */\n    private String skuName;\n    /**\n     * 价钱\n     */\n    private BigDecimal price;\n    /**\n     * 库存\n     */\n    private Integer stock;\n    /**\n     * 店铺id\n     */\n    private Long shopId;\n    /**\n     * spu id\n     */\n    private Long spuId;\n    /**\n     * 上一次修改时间\n     */\n    private Date lastModifyTime;\n    /**\n     * 创建时间\n     */\n    private Date createTime;\n\n\n\n\n}"
  },
  {
    "path": "src/taoshop-provider-api/taoshop-provider-api-item/src/main/java/com/muses/taoshop/item/entity/ItemSkuSpecValue.java",
    "content": "package com.muses.taoshop.item.entity;\n\nimport lombok.Data;\nimport lombok.Getter;\nimport lombok.Setter;\nimport lombok.ToString;\n\nimport java.util.Date;\n\n/**\n * <pre>\n *  商品SKU规格值VO类\n * </pre>\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.06.09 21:49    修改内容:\n * </pre>\n */\n@Data\npublic class ItemSkuSpecValue {\n    /**\n     * id\n     */\n    private Long id;\n    /**\n     * spu id\n     */\n    private Long spuId;\n    /**\n     * 规格值id\n     */\n    private Long specValueId;\n    /**\n     * 上一次修改时间\n     */\n    private Date lastModifyTime;\n    /**\n     * 创建时间\n     */\n    private Date createTime;\n\n\n}"
  },
  {
    "path": "src/taoshop-provider-api/taoshop-provider-api-item/src/main/java/com/muses/taoshop/item/entity/ItemSpec.java",
    "content": "package com.muses.taoshop.item.entity;\n\nimport lombok.Data;\nimport lombok.Getter;\nimport lombok.Setter;\nimport lombok.ToString;\n\nimport java.util.Date;\n\n/**\n * <pre>\n *  商品规格VO类\n * </pre>\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.06.09 21:49    修改内容:\n * </pre>\n */\n@Data\npublic class ItemSpec {\n    /**\n     * id\n     */\n    private Long id;\n    /**\n     * 规格编号\n     */\n    private String specNo;\n    /**\n     * 规格名称\n     */\n    private String specName;\n\n    private Date lastModifyTime;\n\n    private Date createTime;\n\n\n}"
  },
  {
    "path": "src/taoshop-provider-api/taoshop-provider-api-item/src/main/java/com/muses/taoshop/item/entity/ItemSpecValue.java",
    "content": "package com.muses.taoshop.item.entity;\n\nimport lombok.Data;\nimport lombok.Getter;\nimport lombok.Setter;\nimport lombok.ToString;\n\nimport java.util.Date;\n/**\n * <pre>\n *  商品规格值VO类\n * </pre>\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.06.09 21:49    修改内容:\n * </pre>\n */\n@Data\npublic class ItemSpecValue {\n    /**\n     * id\n     */\n    private Long id;\n    /**\n     * 规格id\n     */\n    private Long specId;\n    /**\n     * 规格值\n     */\n    private String specValue;\n\n    private Date lastModifyTime;\n\n    private Date createTime;\n\n\n}"
  },
  {
    "path": "src/taoshop-provider-api/taoshop-provider-api-item/src/main/java/com/muses/taoshop/item/entity/ItemSpu.java",
    "content": "package com.muses.taoshop.item.entity;\n\nimport lombok.Data;\nimport lombok.Getter;\nimport lombok.Setter;\nimport lombok.ToString;\n\nimport java.util.Date;\nimport java.util.List;\n\n/**\n * <pre>\n *  商品SPU类\n * </pre>\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.06.09 21:49    修改内容:\n * </pre>\n */\n@Data\npublic class ItemSpu {\n    /**\n     * id\n     */\n    private Long id;\n    /**\n     * spu编号\n     */\n    private String spuCode;\n    /**\n     * 商品名称\n     */\n    private String itemName;\n    /**\n     * 品类id\n     */\n    private Long categoryId;\n    /**\n     * 品牌id\n     */\n    private Long brandId;\n\n    private Date lastModifyTime;\n\n    private Date createTime;\n\n\n}"
  },
  {
    "path": "src/taoshop-provider-api/taoshop-provider-api-item/src/main/java/com/muses/taoshop/item/entity/ItemSpuSpec.java",
    "content": "package com.muses.taoshop.item.entity;\n\nimport lombok.Data;\nimport lombok.Getter;\nimport lombok.Setter;\nimport lombok.ToString;\n\nimport java.util.Date;\n\n/**\n * <pre>\n *  商品SPU规格类\n * </pre>\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.06.09 21:49    修改内容:\n * </pre>\n */\n@Data\npublic class ItemSpuSpec {\n    /**\n     * id\n     */\n    private Long id;\n    /**\n     * spu id\n     */\n    private Long spuId;\n    /**\n     * 规格值id\n     */\n    private Long specId;\n\n    private Date lastModifyTime;\n\n    private Date createTime;\n\n\n}"
  },
  {
    "path": "src/taoshop-provider-api/taoshop-provider-api-item/src/main/java/com/muses/taoshop/item/service/IItemBrankService.java",
    "content": "package com.muses.taoshop.item.service;\n\nimport com.muses.taoshop.item.entity.ItemBrand;\n\nimport java.util.List;\n\n/**\n * <pre>\n *  商品品牌服务类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.06.15 22:56    修改内容:\n * </pre>\n */\npublic interface IItemBrankService {\n    /**\n     * 查询所有的商品品牌信息\n     * @return\n     */\n    List<ItemBrand> listItemBrand();\n}\n"
  },
  {
    "path": "src/taoshop-provider-api/taoshop-provider-api-item/src/main/java/com/muses/taoshop/item/service/IItemCategoryService.java",
    "content": "package com.muses.taoshop.item.service;\n\nimport com.muses.taoshop.item.entity.ItemCategory;\nimport com.muses.taoshop.item.entity.ItemList;\n\nimport java.util.List;\n\n/**\n * <pre>\n *  商品品类信息接口\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.06.17 10:59    修改内容:\n * </pre>\n */\npublic interface IItemCategoryService {\n    /**\n     * 查询根级商品品类信息\n     * @return\n     */\n    List<ItemCategory> listRootCategory();\n\n    /**\n     * 查询所有商品品类信息\n     * @return\n     */\n    List<ItemCategory> listCategory();\n\n    /**\n     * 根据品目id获取商品信息\n     * @return\n     */\n    List<ItemList> listItemByCategoryId(int categoryId);\n}\n"
  },
  {
    "path": "src/taoshop-provider-api/taoshop-provider-api-item/src/main/java/com/muses/taoshop/item/service/IItemService.java",
    "content": "package com.muses.taoshop.item.service;\n\nimport com.muses.taoshop.item.entity.ItemDetail;\nimport com.muses.taoshop.item.entity.ItemPortal;\nimport com.muses.taoshop.item.entity.ItemSpec;\n\nimport java.util.List;\n\n/**\n * <pre>\n *  商品信息服务接口\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.06.24 22:34    修改内容:\n * </pre>\n */\npublic interface IItemService {\n    /**\n     * 在门户网站列出商品粗略信息\n     * @return\n     */\n    List<ItemPortal> listItemPortal();\n\n    /**\n     * 获取商品详情信息\n     * @return ItemDetail\n     */\n    ItemDetail getItemDetailInfo(int spuId);\n\n}\n"
  },
  {
    "path": "src/taoshop-provider-api/taoshop-provider-api-item/src/main/java/com/muses/taoshop/item/service/IItemSpecService.java",
    "content": "package com.muses.taoshop.item.service;\n\nimport com.muses.taoshop.item.entity.ItemSpec;\nimport com.muses.taoshop.item.entity.ItemSpecValue;\nimport org.apache.ibatis.annotations.Param;\n\nimport java.util.List;\n\n\npublic interface IItemSpecService {\n    /**\n     * 获取spuId获取规格参数列表\n     * @return\n     */\n    List<ItemSpec> getSpecBySpuId(int spuId);\n\n    /**\n     * 通过SkuId获取规格参数Value列表\n     * @param skuId\n     * @return\n     */\n    List<ItemSpecValue> getSpecValueBySkuId(int skuId);\n}\n"
  },
  {
    "path": "src/taoshop-provider-api/taoshop-provider-api-order/ReadMe.md",
    "content": "### 电商平台订单服务中心API"
  },
  {
    "path": "src/taoshop-provider-api/taoshop-provider-api-order/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>org.muses.provider.api</groupId>\n    <artifactId>taoshop-provider-api-order</artifactId>\n    <version>1.0-SNAPSHOT</version>\n\n    <name>taoshop-provider-api-order</name>\n    <url>http://www.example.com</url>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n        <maven.compiler.source>1.7</maven.compiler.source>\n        <maven.compiler.target>1.7</maven.compiler.target>\n    </properties>\n\n    <dependencies>\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <version>4.11</version>\n            <scope>test</scope>\n        </dependency>\n    </dependencies>\n\n\n</project>\n"
  },
  {
    "path": "src/taoshop-provider-api/taoshop-provider-api-order/src/main/java/org/muses/provider/api/App.java",
    "content": "package org.muses.provider.api;\n\n/**\n * Hello world!\n *\n */\npublic class App \n{\n    public static void main( String[] args )\n    {\n        System.out.println( \"Hello World!\" );\n    }\n}\n"
  },
  {
    "path": "src/taoshop-provider-api/taoshop-provider-api-order/src/test/java/org/muses/provider/api/AppTest.java",
    "content": "package org.muses.provider.api;\n\nimport static org.junit.Assert.assertTrue;\n\nimport org.junit.Test;\n\n/**\n * Unit test for simple App.\n */\npublic class AppTest \n{\n    /**\n     * Rigorous Test :-)\n     */\n    @Test\n    public void shouldAnswerWithTrue()\n    {\n        assertTrue( true );\n    }\n}\n"
  },
  {
    "path": "src/taoshop-provider-api/taoshop-provider-api-shop/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <parent>\n        <artifactId>taoshop-provider-api</artifactId>\n        <groupId>com.muses.taoshop.provider-api</groupId>\n        <version>1.0-SNAPSHOT</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>com.muses.taoshop.provider-api</groupId>\n    <artifactId>taoshop-provider-api-shop</artifactId>\n    <version>1.0-SNAPSHOT</version>\n\n\n</project>"
  },
  {
    "path": "src/taoshop-provider-api/taoshop-provider-api-shop/src/main/java/com/muses/taoshop/item/entity/ShopInfo.java",
    "content": "package com.muses.taoshop.item.entity;\n\nimport java.util.Date;\n\npublic class ShopInfo {\n    private Long id;\n\n    private String shopName;\n\n    private Date lastModifyTime;\n\n    private Date createTime;\n\n    public Long getId() {\n        return id;\n    }\n\n    public void setId(Long id) {\n        this.id = id;\n    }\n\n    public String getShopName() {\n        return shopName;\n    }\n\n    public void setShopName(String shopName) {\n        this.shopName = shopName == null ? null : shopName.trim();\n    }\n\n    public Date getLastModifyTime() {\n        return lastModifyTime;\n    }\n\n    public void setLastModifyTime(Date lastModifyTime) {\n        this.lastModifyTime = lastModifyTime;\n    }\n\n    public Date getCreateTime() {\n        return createTime;\n    }\n\n    public void setCreateTime(Date createTime) {\n        this.createTime = createTime;\n    }\n}"
  },
  {
    "path": "src/taoshop-provider-api/taoshop-provider-api-shop/src/main/java/com/muses/taoshop/item/entity/ShopInfoExample.java",
    "content": "package com.muses.taoshop.item.entity;\n\nimport java.util.ArrayList;\nimport java.util.Date;\nimport java.util.List;\n\npublic class ShopInfoExample {\n    protected String orderByClause;\n\n    protected boolean distinct;\n\n    protected List<Criteria> oredCriteria;\n\n    public ShopInfoExample() {\n        oredCriteria = new ArrayList<Criteria>();\n    }\n\n    public void setOrderByClause(String orderByClause) {\n        this.orderByClause = orderByClause;\n    }\n\n    public String getOrderByClause() {\n        return orderByClause;\n    }\n\n    public void setDistinct(boolean distinct) {\n        this.distinct = distinct;\n    }\n\n    public boolean isDistinct() {\n        return distinct;\n    }\n\n    public List<Criteria> getOredCriteria() {\n        return oredCriteria;\n    }\n\n    public void or(Criteria criteria) {\n        oredCriteria.add(criteria);\n    }\n\n    public Criteria or() {\n        Criteria criteria = createCriteriaInternal();\n        oredCriteria.add(criteria);\n        return criteria;\n    }\n\n    public Criteria createCriteria() {\n        Criteria criteria = createCriteriaInternal();\n        if (oredCriteria.size() == 0) {\n            oredCriteria.add(criteria);\n        }\n        return criteria;\n    }\n\n    protected Criteria createCriteriaInternal() {\n        Criteria criteria = new Criteria();\n        return criteria;\n    }\n\n    public void clear() {\n        oredCriteria.clear();\n        orderByClause = null;\n        distinct = false;\n    }\n\n    protected abstract static class GeneratedCriteria {\n        protected List<Criterion> criteria;\n\n        protected GeneratedCriteria() {\n            super();\n            criteria = new ArrayList<Criterion>();\n        }\n\n        public boolean isValid() {\n            return criteria.size() > 0;\n        }\n\n        public List<Criterion> getAllCriteria() {\n            return criteria;\n        }\n\n        public List<Criterion> getCriteria() {\n            return criteria;\n        }\n\n        protected void addCriterion(String condition) {\n            if (condition == null) {\n                throw new RuntimeException(\"Value for condition cannot be null\");\n            }\n            criteria.add(new Criterion(condition));\n        }\n\n        protected void addCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value));\n        }\n\n        protected void addCriterion(String condition, Object value1, Object value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value1, value2));\n        }\n\n        public Criteria andIdIsNull() {\n            addCriterion(\"id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIsNotNull() {\n            addCriterion(\"id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdEqualTo(Long value) {\n            addCriterion(\"id =\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotEqualTo(Long value) {\n            addCriterion(\"id <>\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThan(Long value) {\n            addCriterion(\"id >\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThanOrEqualTo(Long value) {\n            addCriterion(\"id >=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThan(Long value) {\n            addCriterion(\"id <\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThanOrEqualTo(Long value) {\n            addCriterion(\"id <=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIn(List<Long> values) {\n            addCriterion(\"id in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotIn(List<Long> values) {\n            addCriterion(\"id not in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdBetween(Long value1, Long value2) {\n            addCriterion(\"id between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotBetween(Long value1, Long value2) {\n            addCriterion(\"id not between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShopNameIsNull() {\n            addCriterion(\"shop_name is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShopNameIsNotNull() {\n            addCriterion(\"shop_name is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShopNameEqualTo(String value) {\n            addCriterion(\"shop_name =\", value, \"shopName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShopNameNotEqualTo(String value) {\n            addCriterion(\"shop_name <>\", value, \"shopName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShopNameGreaterThan(String value) {\n            addCriterion(\"shop_name >\", value, \"shopName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShopNameGreaterThanOrEqualTo(String value) {\n            addCriterion(\"shop_name >=\", value, \"shopName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShopNameLessThan(String value) {\n            addCriterion(\"shop_name <\", value, \"shopName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShopNameLessThanOrEqualTo(String value) {\n            addCriterion(\"shop_name <=\", value, \"shopName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShopNameLike(String value) {\n            addCriterion(\"shop_name like\", value, \"shopName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShopNameNotLike(String value) {\n            addCriterion(\"shop_name not like\", value, \"shopName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShopNameIn(List<String> values) {\n            addCriterion(\"shop_name in\", values, \"shopName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShopNameNotIn(List<String> values) {\n            addCriterion(\"shop_name not in\", values, \"shopName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShopNameBetween(String value1, String value2) {\n            addCriterion(\"shop_name between\", value1, value2, \"shopName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShopNameNotBetween(String value1, String value2) {\n            addCriterion(\"shop_name not between\", value1, value2, \"shopName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastModifyTimeIsNull() {\n            addCriterion(\"last_modify_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastModifyTimeIsNotNull() {\n            addCriterion(\"last_modify_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastModifyTimeEqualTo(Date value) {\n            addCriterion(\"last_modify_time =\", value, \"lastModifyTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastModifyTimeNotEqualTo(Date value) {\n            addCriterion(\"last_modify_time <>\", value, \"lastModifyTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastModifyTimeGreaterThan(Date value) {\n            addCriterion(\"last_modify_time >\", value, \"lastModifyTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastModifyTimeGreaterThanOrEqualTo(Date value) {\n            addCriterion(\"last_modify_time >=\", value, \"lastModifyTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastModifyTimeLessThan(Date value) {\n            addCriterion(\"last_modify_time <\", value, \"lastModifyTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastModifyTimeLessThanOrEqualTo(Date value) {\n            addCriterion(\"last_modify_time <=\", value, \"lastModifyTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastModifyTimeIn(List<Date> values) {\n            addCriterion(\"last_modify_time in\", values, \"lastModifyTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastModifyTimeNotIn(List<Date> values) {\n            addCriterion(\"last_modify_time not in\", values, \"lastModifyTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastModifyTimeBetween(Date value1, Date value2) {\n            addCriterion(\"last_modify_time between\", value1, value2, \"lastModifyTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastModifyTimeNotBetween(Date value1, Date value2) {\n            addCriterion(\"last_modify_time not between\", value1, value2, \"lastModifyTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCreateTimeIsNull() {\n            addCriterion(\"create_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCreateTimeIsNotNull() {\n            addCriterion(\"create_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCreateTimeEqualTo(Date value) {\n            addCriterion(\"create_time =\", value, \"createTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCreateTimeNotEqualTo(Date value) {\n            addCriterion(\"create_time <>\", value, \"createTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCreateTimeGreaterThan(Date value) {\n            addCriterion(\"create_time >\", value, \"createTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) {\n            addCriterion(\"create_time >=\", value, \"createTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCreateTimeLessThan(Date value) {\n            addCriterion(\"create_time <\", value, \"createTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCreateTimeLessThanOrEqualTo(Date value) {\n            addCriterion(\"create_time <=\", value, \"createTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCreateTimeIn(List<Date> values) {\n            addCriterion(\"create_time in\", values, \"createTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCreateTimeNotIn(List<Date> values) {\n            addCriterion(\"create_time not in\", values, \"createTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCreateTimeBetween(Date value1, Date value2) {\n            addCriterion(\"create_time between\", value1, value2, \"createTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCreateTimeNotBetween(Date value1, Date value2) {\n            addCriterion(\"create_time not between\", value1, value2, \"createTime\");\n            return (Criteria) this;\n        }\n    }\n\n    public static class Criteria extends GeneratedCriteria {\n\n        protected Criteria() {\n            super();\n        }\n    }\n\n    public static class Criterion {\n        private String condition;\n\n        private Object value;\n\n        private Object secondValue;\n\n        private boolean noValue;\n\n        private boolean singleValue;\n\n        private boolean betweenValue;\n\n        private boolean listValue;\n\n        private String typeHandler;\n\n        public String getCondition() {\n            return condition;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public Object getSecondValue() {\n            return secondValue;\n        }\n\n        public boolean isNoValue() {\n            return noValue;\n        }\n\n        public boolean isSingleValue() {\n            return singleValue;\n        }\n\n        public boolean isBetweenValue() {\n            return betweenValue;\n        }\n\n        public boolean isListValue() {\n            return listValue;\n        }\n\n        public String getTypeHandler() {\n            return typeHandler;\n        }\n\n        protected Criterion(String condition) {\n            super();\n            this.condition = condition;\n            this.typeHandler = null;\n            this.noValue = true;\n        }\n\n        protected Criterion(String condition, Object value, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.typeHandler = typeHandler;\n            if (value instanceof List<?>) {\n                this.listValue = true;\n            } else {\n                this.singleValue = true;\n            }\n        }\n\n        protected Criterion(String condition, Object value) {\n            this(condition, value, null);\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.secondValue = secondValue;\n            this.typeHandler = typeHandler;\n            this.betweenValue = true;\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue) {\n            this(condition, value, secondValue, null);\n        }\n    }\n}"
  },
  {
    "path": "src/taoshop-provider-api/taoshop-provider-api-usc/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <parent>\n        <artifactId>taoshop-provider-api</artifactId>\n        <groupId>com.muses.taoshop.provider-api</groupId>\n        <version>1.0-SNAPSHOT</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n    <packaging>jar</packaging>\n\n    <groupId>com.muses.taoshop.provider-api</groupId>\n    <artifactId>taoshop-provider-api-usc</artifactId>\n    <version>1.0-SNAPSHOT</version>\n\n\n</project>"
  },
  {
    "path": "src/taoshop-provider-api/taoshop-provider-api-usc/src/main/java/com/muses/taoshop/user/entity/User.java",
    "content": "package com.muses.taoshop.user.entity;\n\nimport lombok.Data;\n\n/**\n * <pre>\n *  商城用户信息VO类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.08.05 15:24    修改内容:\n * </pre>\n */\n@Data\npublic class User {\n\n    /**\n     * 用户名\n     */\n    private String username;\n\n    /**\n     * 密码\n     */\n    private String password;\n\n}\n"
  },
  {
    "path": "src/taoshop-provider-api/taoshop-provider-api-usc/src/main/java/com/muses/taoshop/user/service/IUserService.java",
    "content": "package com.muses.taoshop.user.service;\n\n\nimport com.muses.taoshop.user.entity.User;\n\npublic interface IUserService {\n    /**\n     * 登录验证\n     * @param username\n     * @param password\n     */\n    User loginCheck(String username, String password);\n}\n"
  },
  {
    "path": "src/taoshop-quartz/ReadMe.md",
    "content": "### 任务调度框架\n//TODO 要求支持高并发"
  },
  {
    "path": "src/taoshop-quartz/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <parent>\n        <artifactId>taoshop</artifactId>\n        <groupId>com.muses.taoshop</groupId>\n        <version>1.0-SNAPSHOT</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n\n    <artifactId>taoshop-quartz</artifactId>\n\n    <packaging>jar</packaging>\n</project>"
  },
  {
    "path": "src/taoshop-search/ReadMe.md",
    "content": "全局搜索引擎\n\n\n### 数据库索引和Lucene检索对比\n\n|比较项   |Lucene检索| 数据库检索|\n|:--------|:--------|:--------|\n|数据检索 |\t从Lucene的索引文件中检出 |\t由数据库索引检索记录|\n|索引结构 |\tDocument（文档）|\tRecord（记录）|\n|全文检索 |\t支持 |\t不支持|\n|模糊查询 |\t支持 |\t不支持|\n|结果排序 |\t支持排序 |\t不能排序|\n\nLucene搜索的API类主要有4个 IndexSearch，Query，QueryParser，Hits\n\n### Lucene搜索过程\nLucene的索引结构是文档(Document)形式的，下面简单介绍一下Lucene搜索的过程\n1. 将文档传给分词组件(Tokenizer)，分词组件根据标点符号和停词将文档分成词元(Token)，并将标点符号和停词去掉。\n\n停词是指没有特别意思的词。英语的是指比如a、the等等单词\n\n文章1内容：Tom favorite fruit is apple.\n\n经过分词处理后，变成[Tom][facorite][fruit][apple]\n\n\n2. 再将词元传给语言处理组件(Linguistic Processor)\n\n英语的单词经过语言处理组件处理后，字母变为小写，词元会变成最基本的词根形式，比如likes变成like\n\n经过分词处理后，变成[tom][favorite][fruit][apple]\n\n3. 然后得到的词元传给索引组件(Indexer)，索引组件处理得到索引结构，得到关键字、出现频率、出现位置分别作为词典文件（Term Dictionary）、频率文件（frequencies）和位置文件（positions）保存起来，然后通过二元搜索算法快速查找关键字\n\n|关键字   |文章号[出现频率]| 出现位置|\n|:--------|:--------|:--------|\n|tom | 1[1] | 1 |\n|favorite| 1[2] | 2 |\n|fruit| 1[3] | 3 |\n[apple| 1[4] | 4 |\n\n"
  },
  {
    "path": "src/taoshop-search/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <parent>\n        <artifactId>taoshop</artifactId>\n        <groupId>com.muses.taoshop</groupId>\n        <version>1.0-SNAPSHOT</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n\n    <artifactId>taoshop-search</artifactId>\n    <packaging>jar</packaging>\n\n    <name>taoshop-search Maven Webapp</name>\n    <url>http://www.example.com</url>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n        <maven.compiler.source>1.7</maven.compiler.source>\n        <maven.compiler.target>1.7</maven.compiler.target>\n        <lucene.version>7.1.0</lucene.version>\n    </properties>\n\n    <dependencies>\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <version>4.11</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.lucene</groupId>\n            <artifactId>lucene-core</artifactId>\n            <version>${lucene.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.lucene</groupId>\n            <artifactId>lucene-analyzers-common</artifactId>\n            <version>${lucene.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.lucene</groupId>\n            <artifactId>lucene-queryparser</artifactId>\n            <version>${lucene.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.lucene</groupId>\n            <artifactId>lucene-analyzers-smartcn</artifactId>\n            <version>${lucene.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.lucene</groupId>\n            <artifactId>lucene-highlighter</artifactId>\n            <version>${lucene.version}</version>\n        </dependency>\n    </dependencies>\n\n   <!-- <build>\n        <finalName>project-search</finalName>\n        <pluginManagement>&lt;!&ndash; lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) &ndash;&gt;\n            <plugins>\n                <plugin>\n                    <artifactId>maven-clean-plugin</artifactId>\n                    <version>3.0.0</version>\n                </plugin>\n                &lt;!&ndash; see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging &ndash;&gt;\n                <plugin>\n                    <artifactId>maven-resources-plugin</artifactId>\n                    <version>3.0.2</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-compiler-plugin</artifactId>\n                    <version>3.7.0</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-surefire-plugin</artifactId>\n                    <version>2.20.1</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-war-plugin</artifactId>\n                    <version>3.2.0</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-install-plugin</artifactId>\n                    <version>2.5.2</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-deploy-plugin</artifactId>\n                    <version>2.8.2</version>\n                </plugin>\n            </plugins>\n        </pluginManagement>\n    </build>-->\n</project>\n"
  },
  {
    "path": "src/taoshop-search/src/main/java/com/muses/base/search/LuceneConstants.java",
    "content": "package com.muses.base.search;\n\npublic class LuceneConstants {\n}\n"
  },
  {
    "path": "src/taoshop-search/src/main/java/com/muses/base/search/TestLucene.java",
    "content": "package com.muses.base.search;\n\npublic class TestLucene {\n\n}\n"
  },
  {
    "path": "src/taoshop-search/src/main/java/com/muses/base/search/biz/LuceneIndexer.java",
    "content": "package com.muses.base.search.biz;\n\n\nimport java.io.File;\nimport java.io.FileReader;\nimport java.io.IOException;\nimport java.nio.file.Paths;\n\nimport org.apache.lucene.analysis.Analyzer;\nimport org.apache.lucene.analysis.cn.smart.SmartChineseAnalyzer;\nimport org.apache.lucene.document.Document;\nimport org.apache.lucene.document.Field;\nimport org.apache.lucene.document.TextField;\nimport org.apache.lucene.index.IndexWriter;\nimport org.apache.lucene.index.IndexWriterConfig;\nimport org.apache.lucene.index.IndexableField;\nimport org.apache.lucene.store.Directory;\nimport org.apache.lucene.store.FSDirectory;\nimport org.springframework.stereotype.Component;\n\n\n/**\n * <pre>\n * \tLucene创建索引服务类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n *\n *          <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期:2018年04月18日     修改内容:\n *          </pre>\n */\n@Component\npublic class LuceneIndexer {\n\n    private volatile static LuceneIndexer instance;\n//\n//\tprivate LuceneIndexer(){}\n\n    /**\n     * 双检锁/双重校验锁（DCL，即 double-checked locking）\n     * @return instance\n     */\n//\tpublic static LuceneIndexer getInstance(){\n//\t\tif(instance == null){\n//\t\t\tsynchronized (LuceneIndexer.class) {\n//\t\t\t\tif(instance == null){\n//\t\t\t\t\tinstance = new LuceneIndexer();\n//\t\t\t\t}\n//\t\t\t}\n//\t\t}\n//\t\treturn instance;\n//\t}\n\n//\tprivate static Analyzer analyzer;\n//\tprivate static Directory directory;\n    private IndexWriter indexWriter;\n//\tprivate static IndexWriterConfig config;\n\n    private final static String INDEX_DIR = \"D:\\\\lucene\";\n\n    private static class SingletonHolder{\n        private final static LuceneIndexer instance=new LuceneIndexer();\n    }\n\n    public static LuceneIndexer getInstance(){\n        return SingletonHolder.instance;\n    }\n\n    public boolean createIndex(String indexDir) throws IOException{\n        //加点测试的静态数据\n        Integer ids[] = {1 , 2 , 3};\n        String titles[] = {\"标题1\" , \"标题2\" , \"标题3\"};\n        String tcontents[] = {\n                \"内容1内容啊哈哈哈\",\n                \"内容2内容啊哈哈哈\",\n                \"内容3内容啊哈哈哈\"\n        };\n\n        long startTime = System.currentTimeMillis();//记录索引开始时间\n\n        Analyzer analyzer = new SmartChineseAnalyzer();\n        Directory directory = FSDirectory.open(Paths.get(indexDir));\n        IndexWriterConfig config = new IndexWriterConfig(analyzer);\n\n        IndexWriter indexWriter = new IndexWriter(directory, config);\n\n        for(int i = 0; i < ids.length;i++){\n            Document doc = new Document();\n            //添加字段\n            doc.add(new TextField(\"id\", ids[i].toString(),Field.Store.YES)); //添加内容\n            doc.add(new TextField(\"title\", titles[i], Field.Store.YES)); //添加文件名，并把这个字段存到索引文件里\n            doc.add(new TextField(\"tcontent\", tcontents[i], Field.Store.YES)); //添加文件路径\n            indexWriter.addDocument(doc);\n        }\n\n        indexWriter.commit();\n        System.out.println(\"共索引了\"+indexWriter.numDocs()+\"个文件\");\n        indexWriter.close();\n        System.out.println(\"创建索引所用时间：\"+(System.currentTimeMillis()-startTime)+\"毫秒\");\n\n        return true;\n    }\n\n//\tprivate void addDocument(File file) throws IOException{\n//\t\tDocument doc = new Document();\n//\t\t//添加字段\n//        doc.add(new TextField(\"contents\", new FileReader(file))); //添加内容\n//        doc.add(new TextField(\"fileName\", file.getName(), Field.Store.YES)); //添加文件名，并把这个字段存到索引文件里\n//        doc.add(new TextField(\"fullPath\", file.getCanonicalPath(), Field.Store.YES)); //添加文件路径\n//\n//        indexWriter.addDocument(doc);\n//\t}\n//\n//\tprivate void closeWriter() throws IOException{\n//\t\t if (indexWriter != null) {\n//\t            indexWriter.close();\n//\t        }\n//\t}\n\n    public static void main(String[] args) {\n        try {\n            boolean r = LuceneIndexer.getInstance().createIndex(INDEX_DIR);\n            if(r){\n                System.out.println(\"索引创建成功!\");\n            }else{\n                System.out.println(\"索引创建失败!\");\n            }\n        } catch (IOException e) {\n            e.printStackTrace();\n        }\n\n    }\n\n\n\n}\n"
  },
  {
    "path": "src/taoshop-search/src/main/java/com/muses/base/search/biz/SearchBuilder.java",
    "content": "package com.muses.base.search.biz;\n\nimport org.apache.lucene.analysis.Analyzer;\nimport org.apache.lucene.analysis.TokenStream;\nimport org.apache.lucene.analysis.cn.smart.SmartChineseAnalyzer;\nimport org.apache.lucene.document.Document;\nimport org.apache.lucene.index.DirectoryReader;\nimport org.apache.lucene.queryparser.classic.ParseException;\nimport org.apache.lucene.queryparser.classic.QueryParser;\nimport org.apache.lucene.search.IndexSearcher;\nimport org.apache.lucene.search.Query;\nimport org.apache.lucene.search.ScoreDoc;\nimport org.apache.lucene.search.TopDocs;\nimport org.apache.lucene.search.highlight.*;\nimport org.apache.lucene.store.Directory;\nimport org.apache.lucene.store.FSDirectory;\n\nimport java.io.IOException;\nimport java.io.StringReader;\nimport java.nio.file.Paths;\n\n\n/**\n * <pre>\n * \tLucene全局搜索服务类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n *\n *          <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期:2018年04月18日     修改内容:\n *          </pre>\n */\npublic class SearchBuilder {\n\n    public static void doSearch(String indexDir , String queryStr) throws IOException, ParseException, InvalidTokenOffsetsException {\n        Directory directory = FSDirectory.open(Paths.get(indexDir));\n        DirectoryReader reader = DirectoryReader.open(directory);\n        IndexSearcher searcher = new IndexSearcher(reader);\n        Analyzer analyzer = new SmartChineseAnalyzer();\n        QueryParser parser = new QueryParser(\"tcontent\",analyzer);\n        Query query = parser.parse(queryStr);\n\n        long startTime = System.currentTimeMillis();\n        TopDocs docs = searcher.search(query,10);\n\n        System.out.println(\"查找\"+queryStr+\"所用时间：\"+(System.currentTimeMillis()-startTime));\n        System.out.println(\"查询到\"+docs.totalHits+\"条记录\");\n\n        //加入高亮显示的\n        SimpleHTMLFormatter simpleHTMLFormatter = new SimpleHTMLFormatter(\"<b><font color=red>\",\"</font></b>\");\n        QueryScorer scorer = new QueryScorer(query);//计算查询结果最高的得分\n        Fragmenter fragmenter = new SimpleSpanFragmenter(scorer);//根据得分算出一个片段\n        Highlighter highlighter = new Highlighter(simpleHTMLFormatter,scorer);\n        highlighter.setTextFragmenter(fragmenter);//设置显示高亮的片段\n\n        //遍历查询结果\n        for(ScoreDoc scoreDoc : docs.scoreDocs){\n            Document doc = searcher.doc(scoreDoc.doc);\n            System.out.println(doc.get(\"title\"));\n            System.out.println(doc.get(\"tcontent\"));\n            String tcontent = doc.get(\"tcontent\");\n            if(tcontent != null){\n                TokenStream tokenStream =  analyzer.tokenStream(\"tcontent\", new StringReader(tcontent));\n                String summary = highlighter.getBestFragment(tokenStream, tcontent);\n                System.out.println(summary);\n            }\n        }\n        reader.close();\n    }\n\n    public static void main(String[] args){\n        String indexDir = \"D:\\\\lucene\";\n        String q = \"内容1\"; //查询这个字符串\n        try {\n            doSearch(indexDir, q);\n        } catch (Exception e) {\n            e.printStackTrace();\n        }\n    }\n}\n"
  },
  {
    "path": "src/taoshop-search/src/test/java/com/test/lucene/LuceneIndexer.java",
    "content": "package com.test.lucene;\n\n\nimport java.io.File;\nimport java.io.FileReader;\nimport java.io.IOException;\nimport java.nio.file.Paths;\n\nimport org.apache.lucene.analysis.Analyzer;\nimport org.apache.lucene.analysis.cn.smart.SmartChineseAnalyzer;\nimport org.apache.lucene.document.Document;\nimport org.apache.lucene.document.Field;\nimport org.apache.lucene.document.TextField;\nimport org.apache.lucene.index.IndexWriter;\nimport org.apache.lucene.index.IndexWriterConfig;\nimport org.apache.lucene.store.Directory;\nimport org.apache.lucene.store.FSDirectory;\nimport org.springframework.stereotype.Component;\n\n\n/**\n * <pre>\n * \tLucene创建索引、全局搜索服务类\n * </pre>\n * \n * @author nicky\n * @version 1.00.00\n * \n *          <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期:2018年04月18日     修改内容:\n *          </pre>\n */\n@Component\npublic class LuceneIndexer {\n\t\n\tprivate volatile static LuceneIndexer instance;\n//\t\n//\tprivate LuceneIndexer(){}\n\t\n\t/**\n\t * 双检锁/双重校验锁（DCL，即 double-checked locking）\n\t * @return instance\n\t */\n//\tpublic static LuceneIndexer getInstance(){\n//\t\tif(instance == null){\n//\t\t\tsynchronized (LuceneIndexer.class) {\n//\t\t\t\tif(instance == null){\n//\t\t\t\t\tinstance = new LuceneIndexer();\n//\t\t\t\t}\n//\t\t\t}\n//\t\t}\n//\t\treturn instance;\n//\t}\n\t\n//\tprivate static Analyzer analyzer;\n//\tprivate static Directory directory;\n\tprivate IndexWriter indexWriter;\n//\tprivate static IndexWriterConfig config;\n\t\n\tprivate final static String INDEX_DIR = \"D:\\\\lucene\";\n\n\tprivate static class SingletonHolder{  \n\t      private final static LuceneIndexer instance=new LuceneIndexer();  \n\t}  \n\t\n\tpublic static LuceneIndexer getInstance(){  \n\t      return SingletonHolder.instance;  \n\t}  \n\t\n\tpublic boolean createIndex(String indexDir) throws IOException{\n\t\t//加点测试的静态数据\n\t\tInteger ids[] = {1 , 2 , 3};\n\t\tString titles[] = {\"标题1\" , \"标题2\" , \"标题3\"};\n\t\tString tcontents[] = {\n\t\t\t\t\"内容1内容啊哈哈哈\",\n\t\t\t\t\"内容2内容啊哈哈哈\",\n\t\t\t\t\"内容3内容啊哈哈哈\"\n\t\t};\n\n\t\tlong startTime = System.currentTimeMillis();//记录索引开始时间\n\t\t\n\t\tAnalyzer analyzer = new SmartChineseAnalyzer();\n\t\tDirectory directory = FSDirectory.open(Paths.get(indexDir));\n\t\tIndexWriterConfig config = new IndexWriterConfig(analyzer);\n\t\t\n\t\tIndexWriter indexWriter = new IndexWriter(directory, config);\n\n\t\tfor(int i = 0; i < ids.length;i++){\n\t\t\tDocument doc = new Document();\n\t\t\t//添加字段\n\t        doc.add(new TextField(\"id\", ids[i].toString(),Field.Store.YES)); //添加内容\n\t        doc.add(new TextField(\"title\", titles[i], Field.Store.YES)); //添加文件名，并把这个字段存到索引文件里\n\t        doc.add(new TextField(\"tcontent\", tcontents[i], Field.Store.YES)); //添加文件路径\n\t        indexWriter.addDocument(doc);\n\t\t}\n\n\t\tindexWriter.commit();\n\t\tSystem.out.println(\"共索引了\"+indexWriter.numDocs()+\"个文件\");\n\t\tindexWriter.close();\n\t\tSystem.out.println(\"创建索引所用时间：\"+(System.currentTimeMillis()-startTime)+\"毫秒\");\n\t\t\n\t\treturn true;\n\t}\n\n//\tprivate void addDocument(File file) throws IOException{\n//\t\tDocument doc = new Document();\n//\t\t//添加字段\n//        doc.add(new TextField(\"contents\", new FileReader(file))); //添加内容\n//        doc.add(new TextField(\"fileName\", file.getName(), Field.Store.YES)); //添加文件名，并把这个字段存到索引文件里\n//        doc.add(new TextField(\"fullPath\", file.getCanonicalPath(), Field.Store.YES)); //添加文件路径\n//\n//        indexWriter.addDocument(doc);\n//\t}\n//\n//\tprivate void closeWriter() throws IOException{\n//\t\t if (indexWriter != null) {\n//\t            indexWriter.close();\n//\t        }\n//\t}\n\t\n\tpublic static void main(String[] args) {\n\t\ttry {\n\t\t\tboolean r = LuceneIndexer.getInstance().createIndex(INDEX_DIR);\n\t\t\tif(r){\n\t\t\t\tSystem.out.println(\"索引创建成功!\");\n\t\t\t}else{\n\t\t\t\tSystem.out.println(\"索引创建失败!\");\n\t\t\t}\n\t\t} catch (IOException e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t\t\n\t}\n\n\n\t\n}\n"
  },
  {
    "path": "src/taoshop-search/src/test/java/com/test/lucene/SearchBuilder.java",
    "content": "package com.test.lucene;\n\nimport org.apache.lucene.analysis.Analyzer;\nimport org.apache.lucene.analysis.TokenStream;\nimport org.apache.lucene.analysis.cn.smart.SmartChineseAnalyzer;\nimport org.apache.lucene.document.Document;\nimport org.apache.lucene.index.DirectoryReader;\nimport org.apache.lucene.queryparser.classic.ParseException;\nimport org.apache.lucene.queryparser.classic.QueryParser;\nimport org.apache.lucene.search.IndexSearcher;\nimport org.apache.lucene.search.Query;\nimport org.apache.lucene.search.ScoreDoc;\nimport org.apache.lucene.search.TopDocs;\nimport org.apache.lucene.search.highlight.*;\nimport org.apache.lucene.store.Directory;\nimport org.apache.lucene.store.FSDirectory;\n\nimport java.io.IOException;\nimport java.io.StringReader;\nimport java.nio.file.Paths;\n\npublic class SearchBuilder {\n\n    public static void doSearch(String indexDir , String queryStr) throws IOException, ParseException, InvalidTokenOffsetsException {\n        Directory directory = FSDirectory.open(Paths.get(indexDir));\n        DirectoryReader reader = DirectoryReader.open(directory);\n        IndexSearcher searcher = new IndexSearcher(reader);\n        Analyzer analyzer = new SmartChineseAnalyzer();\n        QueryParser parser = new QueryParser(\"tcontent\",analyzer);\n        Query query = parser.parse(queryStr);\n\n        long startTime = System.currentTimeMillis();\n        TopDocs docs = searcher.search(query,10);\n\n        System.out.println(\"查找\"+queryStr+\"所用时间：\"+(System.currentTimeMillis()-startTime));\n        System.out.println(\"查询到\"+docs.totalHits+\"条记录\");\n\n        //加入高亮显示的\n        SimpleHTMLFormatter simpleHTMLFormatter = new SimpleHTMLFormatter(\"<b><font color=red>\",\"</font></b>\");\n        QueryScorer scorer = new QueryScorer(query);//计算查询结果最高的得分\n        Fragmenter fragmenter = new SimpleSpanFragmenter(scorer);//根据得分算出一个片段\n        Highlighter highlighter = new Highlighter(simpleHTMLFormatter,scorer);\n        highlighter.setTextFragmenter(fragmenter);//设置显示高亮的片段\n\n        //遍历查询结果\n        for(ScoreDoc scoreDoc : docs.scoreDocs){\n            Document doc = searcher.doc(scoreDoc.doc);\n            System.out.println(doc.get(\"title\"));\n\n            String tcontent = doc.get(\"tcontent\");\n            if(tcontent != null){\n                TokenStream tokenStream =  analyzer.tokenStream(\"tcontent\", new StringReader(tcontent));\n                String summary = highlighter.getBestFragment(tokenStream, tcontent);\n                System.out.println(summary);\n            }\n        }\n        reader.close();\n    }\n\n    public static void main(String[] args){\n        String indexDir = \"D:\\\\lucene\";\n        String q = \"内容1\"; //查询这个字符串\n        try {\n            doSearch(indexDir, q);\n        } catch (Exception e) {\n            e.printStackTrace();\n        }\n    }\n}\n"
  },
  {
    "path": "src/taoshop-search/src/test/java/com/test/pattern/CurrentConditionsDisplay.java",
    "content": "package com.test.pattern;\n\nimport java.util.Observable;\nimport java.util.Observer;\n\npublic class CurrentConditionsDisplay implements Observer, DisplayElement {\n\tprivate float temperature;\n\tprivate float humidity;\n\n\tObservable observable;\n\n\tpublic CurrentConditionsDisplay(Observable observable) {\n//\t\tweatherData.registerObserver(this);\n\t\tthis.observable = observable;\n\t\tobservable.addObserver(this);\n\t}\n\n//\tpublic void update(float temperature, float humidity, float pressure) {\n//\t\tthis.temperature = temperature;\n//\t\tthis.humidity = humidity;\n//\t\tdisplay();\n//\t}\n\n\t/**\n\t * This method is called whenever the observed object is changed. An\n\t * application calls an <tt>Observable</tt> object's\n\t * <code>notifyObservers</code> method to have all the object's\n\t * observers notified of the change.\n\t *\n\t * @param o   the observable object.\n\t * @param arg an argument passed to the <code>notifyObservers</code>\n\t */\n\t@Override\n\tpublic void update(Observable o, Object arg) {\n\t\tif(o instanceof WeatherData){\n\t\t\tWeatherData wd = (WeatherData)o;\n\t\t\ttemperature = wd.getTemperature();\n\t\t\thumidity = wd.getHumidity();\n\t\t\tdisplay();\n\t\t}\n\t}\n\n\tpublic void display() {\n\t\tSystem.out.println(\"Current conditions: \" + temperature\n\t\t\t\t+ \"F degrees and \" + humidity + \"% humidity\");\n\t}\n}\n"
  },
  {
    "path": "src/taoshop-search/src/test/java/com/test/pattern/DisplayElement.java",
    "content": "package com.test.pattern;\n\npublic interface DisplayElement {\n\tpublic void display();\n}\n"
  },
  {
    "path": "src/taoshop-search/src/test/java/com/test/pattern/ForecastDisplay.java",
    "content": "package com.test.pattern;\n\npublic class ForecastDisplay implements Observer, DisplayElement {\n\tprivate float currentPressure = 29.92f;\n\tprivate float lastPressure;\n\tpublic ForecastDisplay(WeatherData weatherData) {\n\t\tweatherData.registerObserver(this);\n\t}\n\n\tpublic void update(float temp, float humidity, float pressure) {\n                lastPressure = currentPressure;\n\t\tcurrentPressure = pressure;\n\n\t\tdisplay();\n\t}\n\n\tpublic void display() {\n\t\tSystem.out.print(\"Forecast: \");\n\t\tif (currentPressure > lastPressure) {\n\t\t\tSystem.out.println(\"Improving weather on the way!\");\n\t\t} else if (currentPressure == lastPressure) {\n\t\t\tSystem.out.println(\"More of the same\");\n\t\t} else if (currentPressure < lastPressure) {\n\t\t\tSystem.out.println(\"Watch out for cooler, rainy weather\");\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/taoshop-search/src/test/java/com/test/pattern/Observer.java",
    "content": "package com.test.pattern;\n\npublic interface Observer {\n\tpublic void update(float temp, float humidity, float pressure);\n}\n"
  },
  {
    "path": "src/taoshop-search/src/test/java/com/test/pattern/Singleton.java",
    "content": "package com.test.pattern;\n/**\n * <pre>\n * \t设计模式之单例模式\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n *\n *          <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期:2018年04月18日     修改内容:\n *          </pre>\n */\npublic class Singleton {\n    private static Singleton instance;\n    //定义private构造函数，使类不可以被实例\n    private Singleton (){}\n\n//    /**\n//     * 懒汉模式，线程不安全，懒加载\n//     * @return\n//     */\n//    public static Singleton getInstance() {\n//        if (instance == null) {\n//            instance = new Singleton();\n//        }\n//        return instance;\n//    }\n\n//    /**\n//     * 懒汉模式，线程安全，懒加载\n//     * @return\n//     */\n//    public static synchronized Singleton getInstance() {\n//        if (instance == null) {\n//            instance = new Singleton();\n//        }\n//        return instance;\n//    }\n\n    //加载类的时候，利用JVM的类加载机制创建对象，保证了线程安全，但是效率不好\n//    private static Singleton instance = new Singleton();\n\n//    /**\n//     * 饿汉模式，线程安全，非懒加载\n//     * @return\n//     */\n//    public static Singleton getInstance() {\n//        return instance;\n//    }\n\n//    private volatile static Singleton instance;\n\n//    /**\n//     * 双检锁/双重校验锁（DCL，即 double-checked locking）线程安全，懒加载\n//     * @return\n//     */\n//    public static Singleton getInstance(){\n//        if(instance == null){\n//            synchronized (Singleton.class){\n//                if(instance == null){\n//                    instance = new Singleton();\n//                }\n//            }\n//        }\n//        return instance;\n//    }\n\n    public static class SingletonHolder{\n        private final static Singleton INSTANCE = new Singleton();\n    }\n\n    /**\n     * 登记式/静态内部类，线程安全，懒加载\n     * @return\n     */\n    public static Singleton getInstance(){\n        return SingletonHolder.INSTANCE;\n    }\n\n//    /**\n//     * 枚举方式\n//     */\n//    public enum Singleton {\n//        INSTANCE;\n//        public void whateverMethod() {\n//        }\n//    }\n}  "
  },
  {
    "path": "src/taoshop-search/src/test/java/com/test/pattern/StatisticsDisplay.java",
    "content": "package com.test.pattern;\n\npublic class StatisticsDisplay implements Observer, DisplayElement {\n\tprivate float maxTemp = 0.0f;\n\tprivate float minTemp = 200;\n\tprivate float tempSum= 0.0f;\n\tprivate int numReadings;\n\tpublic StatisticsDisplay(WeatherData weatherData) {\n\t\tweatherData.registerObserver(this);\n\t}\n\n\tpublic void update(float temp, float humidity, float pressure) {\n\t\ttempSum += temp;\n\t\tnumReadings++;\n\n\t\tif (temp > maxTemp) {\n\t\t\tmaxTemp = temp;\n\t\t}\n\n\t\tif (temp < minTemp) {\n\t\t\tminTemp = temp;\n\t\t}\n\n\t\tdisplay();\n\t}\n\n\tpublic void display() {\n\t\tSystem.out.println(\"Avg/Max/Min temperature = \" + (tempSum / numReadings)\n\t\t\t+ \"/\" + maxTemp + \"/\" + minTemp);\n\t}\n}\n"
  },
  {
    "path": "src/taoshop-search/src/test/java/com/test/pattern/Subject.java",
    "content": "package com.test.pattern;\n\npublic interface Subject {\n\tpublic void registerObserver(Observer o);\n\tpublic void removeObserver(Observer o);\n\tpublic void notifyObservers();\n}\n"
  },
  {
    "path": "src/taoshop-search/src/test/java/com/test/pattern/WeatherData.java",
    "content": "package com.test.pattern;\n\nimport java.util.ArrayList;\nimport java.util.Observable;\n\n/**\n * 用JDK内置类来实现\n */\npublic class WeatherData extends Observable {\n\tprivate ArrayList observers;\n\tprivate float temperature;\n\tprivate float humidity;\n\tprivate float pressure;\n\n\tpublic WeatherData() {\n\t\tobservers = new ArrayList();\n\t}\n\n\tpublic void registerObserver(Observer o) {\n\t\tobservers.add(o);\n\t}\n\n\tpublic void removeObserver(Observer o) {\n\t\tint i = observers.indexOf(o);\n\t\tif (i >= 0) {\n\t\t\tobservers.remove(i);\n\t\t}\n\t}\n\n\tpublic void notifyObservers() {\n\t\tfor (int i = 0; i < observers.size(); i++) {\n\t\t\tObserver observer = (Observer)observers.get(i);\n\t\t\tobserver.update(temperature, humidity, pressure);\n\t\t}\n\t}\n\n\tpublic void measurementsChanged() {\n\t\tsetChanged();//调用setChanged方法，标记状态改变\n\t\tnotifyObservers();\n\t}\n\n\tpublic void setMeasurements(float temperature, float humidity, float pressure) {\n\t\tthis.temperature = temperature;\n\t\tthis.humidity = humidity;\n\t\tthis.pressure = pressure;\n\t\tmeasurementsChanged();\n\t}\n\n\t// other WeatherData methods here\n\n\tpublic float getTemperature() {\n\t\treturn temperature;\n\t}\n\n\tpublic float getHumidity() {\n\t\treturn humidity;\n\t}\n\n\tpublic float getPressure() {\n\t\treturn pressure;\n\t}\n}\n"
  },
  {
    "path": "src/taoshop-search/src/test/java/com/test/pattern/WeatherStation.java",
    "content": "package com.test.pattern;\n\npublic class WeatherStation {\n\n\tpublic static void main(String[] args) {\n\t\tWeatherData weatherData = new WeatherData();\n\n\t\tCurrentConditionsDisplay currentDisplay =\n\t\t\tnew CurrentConditionsDisplay(weatherData);\n\t\tStatisticsDisplay statisticsDisplay = new StatisticsDisplay(weatherData);\n\t\tForecastDisplay forecastDisplay = new ForecastDisplay(weatherData);\n\n\t\tweatherData.setMeasurements(80, 65, 30.4f);\n\t\tweatherData.setMeasurements(82, 70, 29.2f);\n\t\tweatherData.setMeasurements(78, 90, 29.2f);\n\t}\n}\n"
  },
  {
    "path": "src/taoshop-search/src/test/java/com/test/thread/ThreadTest.java",
    "content": "package com.test.thread;\n\nimport javax.servlet.ServletException;\nimport javax.servlet.annotation.WebServlet;\nimport javax.servlet.http.HttpServlet;\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\nimport java.io.IOException;\n\n/**\n * <pre>\n *  测试类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.06.18 14:51    修改内容:\n * </pre>\n */\n@WebServlet(name = \"/testThread\")\npublic class ThreadTest extends HttpServlet{\n\n    @Override\n    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\n        super.doPost(req, resp);\n        System.out.println(Thread.currentThread().getName());\n    }\n\n    @Override\n    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\n        super.doGet(req, resp);\n    }\n\n    public static void main(String[] args){\n        System.out.println(Thread.currentThread().getName());\n\n//        System.out.println(Thread.currentThread().getName());\n        Thread t = new Thread();\n        System.out.println(t.getName());\n\n        Thread t1 = new Thread();\n        System.out.println(t1.getName());\n    }\n}\n"
  },
  {
    "path": "src/taoshop-sso/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <parent>\n        <artifactId>taoshop</artifactId>\n        <groupId>com.muses.taoshop</groupId>\n        <version>1.0-SNAPSHOT</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>com.muses.taoshop.taoshop-sso</groupId>\n    <artifactId>taoshop-sso</artifactId>\n    <version>1.0-SNAPSHOT</version>\n    <packaging>war</packaging>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n        <java.version>1.8</java.version>\n        <cas.version>4.2.7</cas.version>\n        <maven.compiler.source>1.8</maven.compiler.source>\n        <maven.compiler.target>1.8</maven.compiler.target>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n        <kaptcha.version>2.3.2</kaptcha.version>\n        <junit.version>4.12</junit.version>\n        <pac4j-cas.version>2.0.0-RC1</pac4j-cas.version>\n        <disruptor.version>3.3.6</disruptor.version>\n        <cas.integration.redis.version>1.1.1-RELEASE</cas.integration.redis.version>\n        <sqljdbc4.version>3.0</sqljdbc4.version>\n    </properties>\n\n    <dependencies>\n        <!--<dependency>-->\n            <!--<groupId>org.jasig.cas</groupId>-->\n            <!--<artifactId>cas-server-webapp</artifactId>-->\n            <!--<version>${cas.version}</version>-->\n            <!--<type>war</type>-->\n            <!--<scope>runtime</scope>-->\n        <!--</dependency>-->\n        <dependency>\n            <groupId>org.jasig.cas</groupId>\n            <artifactId>cas-server-core</artifactId>\n            <version>${cas.version}</version>\n        </dependency>\n\n        <dependency>\n            <groupId>org.jasig.cas</groupId>\n            <artifactId>cas-server-webapp-actions</artifactId>\n            <version>${cas.version}</version>\n        </dependency>\n\n        <dependency>\n            <groupId>org.jasig.cas</groupId>\n            <artifactId>cas-server-support-rest-services</artifactId>\n            <version>${cas.version}</version>\n        </dependency>\n\n        <dependency>\n            <groupId>org.jasig.cas</groupId>\n            <artifactId>cas-server-core-logout</artifactId>\n            <version>${cas.version}</version>\n        </dependency>\n\n        <!--<dependency>\n            <groupId>com.lmax</groupId>\n            <artifactId>disruptor</artifactId>\n            <version>${disruptor.version}</version>\n        </dependency>-->\n\n        <!--<dependency>\n            <groupId>ren.boot</groupId>\n            <artifactId>cas-server-integration-redis</artifactId>\n            <version>${cas.integration.redis.version}</version>\n        </dependency>-->\n\n        <!--<dependency>\n            <groupId>com.github.penggle</groupId>\n            <artifactId>kaptcha</artifactId>\n            <version>${kaptcha.version}</version>\n        </dependency>-->\n\n        <!--pac4j test start-->\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <version>${junit.version}</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.pac4j</groupId>\n            <artifactId>pac4j-cas</artifactId>\n            <version>${pac4j-cas.version}</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.pac4j</groupId>\n            <artifactId>pac4j-core</artifactId>\n            <version>${pac4j-cas.version}</version>\n            <scope>test</scope>\n        </dependency>\n        <!--pac4j test end-->\n\n    </dependencies>\n\n    <build>\n        <finalName>taoshop-sso</finalName>\n        <plugins>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-war-plugin</artifactId>\n                <version>2.6</version>\n                <configuration>\n                    <warName>cas</warName>\n                    <overlays>\n                        <overlay>\n                            <groupId>org.jasig.cas</groupId>\n                            <artifactId>cas-server-webapp</artifactId>\n                            <excludes>\n                                <exclude>WEB-INF/cas_dev.properties</exclude>\n                                <exclude>WEB-INF/classes/log4j2.xml</exclude>\n                                <exclude>WEB-INF/classes/message*.properties</exclude>\n                                <exclude>WEB-INF/classes/services</exclude>\n                            </excludes>\n                        </overlay>\n                    </overlays>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-compiler-plugin</artifactId>\n                <version>3.5.1</version>\n                <configuration>\n                    <source>1.8</source>\n                    <target>1.8</target>\n                </configuration>\n            </plugin>\n        </plugins>\n    </build>\n</project>"
  },
  {
    "path": "src/taoshop-sso/src/main/java/ReadMe.txt",
    "content": "\ncas-server-core-authentication\\src\\main\\java\\org\\jasig\\cas\\authentication\\UsernamePasswordCredential.java\n\ncas-server-support-rest\\src\\main\\java\\org\\jasig\\cas\\support\\rest\\TicketsResource.java\n\ncas-server-core-authentication\\src\\main\\java\\org\\jasig\\cas\\web\\flow\\AuthenticationExceptionHandler.java\ncas-server-webapp-actions\\src\\main\\java\\org\\jasig\\cas\\web\\flow\\AuthenticationViaFormAction.java\n\ncas-server-core\\src\\main\\java\\org\\jasig\\cas\\CentralAuthenticationServiceImpl.java"
  },
  {
    "path": "src/taoshop-sso/src/main/java/com/muses/taoshop/sso/authentication/UsernamePasswordAuthenticationHandler.java",
    "content": "package com.muses.taoshop.sso.authentication;\n\nimport org.jasig.cas.authentication.HandlerResult;\nimport org.jasig.cas.authentication.PreventedException;\nimport org.jasig.cas.authentication.UsernamePasswordCredential;\nimport org.jasig.cas.authentication.handler.support.AbstractUsernamePasswordAuthenticationHandler;\n\nimport java.security.GeneralSecurityException;\n\n/**\n * <pre>\n *  Cas单点登录用户名密码校验\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改记录\n *    修改后版本:     修改人：  修改日期: 2018.08.19 22:16    修改内容:\n * </pre>\n */\npublic class UsernamePasswordAuthenticationHandler extends AbstractUsernamePasswordAuthenticationHandler{\n\n    @Override\n    protected HandlerResult authenticateUsernamePasswordInternal(UsernamePasswordCredential usernamePasswordCredential) throws GeneralSecurityException, PreventedException {\n        return null;\n    }\n\n    protected void doTest(){\n        try{\n            System.out.println();\n        }catch (Exception e){\n            e.printStackTrace();\n        }\n    }\n}\n"
  },
  {
    "path": "src/taoshop-sso/src/main/java/org/jasig/cas/CentralAuthenticationServiceImpl.java",
    "content": "package org.jasig.cas;\n\nimport com.codahale.metrics.annotation.Counted;\nimport com.codahale.metrics.annotation.Metered;\nimport com.codahale.metrics.annotation.Timed;\nimport org.jasig.cas.authentication.Authentication;\nimport org.jasig.cas.authentication.AuthenticationBuilder;\nimport org.jasig.cas.authentication.AuthenticationContext;\nimport org.jasig.cas.authentication.AuthenticationException;\nimport org.jasig.cas.authentication.DefaultAuthenticationBuilder;\nimport org.jasig.cas.authentication.MixedPrincipalException;\nimport org.jasig.cas.authentication.principal.Principal;\nimport org.jasig.cas.authentication.principal.Service;\nimport org.jasig.cas.logout.LogoutManager;\nimport org.jasig.cas.logout.LogoutRequest;\nimport org.jasig.cas.services.RegisteredService;\nimport org.jasig.cas.services.RegisteredServiceAttributeReleasePolicy;\nimport org.jasig.cas.services.ServiceContext;\nimport org.jasig.cas.services.ServicesManager;\nimport org.jasig.cas.services.UnauthorizedProxyingException;\nimport org.jasig.cas.services.UnauthorizedServiceForPrincipalException;\nimport org.jasig.cas.services.UnauthorizedSsoServiceException;\nimport org.jasig.cas.support.events.CasProxyGrantingTicketCreatedEvent;\nimport org.jasig.cas.support.events.CasProxyTicketGrantedEvent;\nimport org.jasig.cas.support.events.CasServiceTicketGrantedEvent;\nimport org.jasig.cas.support.events.CasServiceTicketValidatedEvent;\nimport org.jasig.cas.support.events.CasTicketGrantingTicketCreatedEvent;\nimport org.jasig.cas.support.events.CasTicketGrantingTicketDestroyedEvent;\nimport org.jasig.cas.ticket.AbstractTicketException;\nimport org.jasig.cas.ticket.InvalidTicketException;\nimport org.jasig.cas.ticket.ServiceTicket;\nimport org.jasig.cas.ticket.ServiceTicketFactory;\nimport org.jasig.cas.ticket.TicketFactory;\nimport org.jasig.cas.ticket.TicketGrantingTicket;\nimport org.jasig.cas.ticket.TicketGrantingTicketFactory;\nimport org.jasig.cas.ticket.UnrecognizableServiceForServiceTicketValidationException;\nimport org.jasig.cas.ticket.proxy.ProxyGrantingTicket;\nimport org.jasig.cas.ticket.proxy.ProxyGrantingTicketFactory;\nimport org.jasig.cas.ticket.proxy.ProxyTicket;\nimport org.jasig.cas.ticket.proxy.ProxyTicketFactory;\nimport org.jasig.cas.ticket.registry.TicketRegistry;\nimport org.jasig.cas.validation.Assertion;\nimport org.jasig.cas.validation.ImmutableAssertion;\nimport org.jasig.inspektr.audit.annotation.Audit;\nimport org.springframework.stereotype.Component;\nimport org.springframework.transaction.annotation.Transactional;\n\nimport javax.validation.constraints.NotNull;\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\n\n/**\n * Concrete implementation of a {@link CentralAuthenticationService}, and also the\n * central, organizing component of CAS's internal implementation.\n * This class is threadsafe.\n *\n * @author William G. Thompson, Jr.\n * @author Scott Battaglia\n * @author Dmitry Kopylenko\n * @author Misagh Moayyed\n * @since 3.0.0\n */\n@Component(\"centralAuthenticationService\")\n@Transactional(readOnly = false, transactionManager = \"ticketTransactionManager\")\npublic class CentralAuthenticationServiceImpl extends AbstractCentralAuthenticationService {\n\n    private static final long serialVersionUID = -8943828074939533986L;\n\n    /**\n     * Instantiates a new Central authentication service impl.\n     */\n    public CentralAuthenticationServiceImpl() {\n        super();\n    }\n\n    /**\n     * Build the central authentication service implementation.\n     *\n     * @param ticketRegistry  the tickets registry.\n     * @param ticketFactory   the ticket factory\n     * @param servicesManager the services manager.\n     * @param logoutManager   the logout manager.\n     */\n    public CentralAuthenticationServiceImpl(\n            final TicketRegistry ticketRegistry,\n            final TicketFactory ticketFactory,\n            final ServicesManager servicesManager,\n            final LogoutManager logoutManager) {\n\n        super(ticketRegistry, ticketFactory, servicesManager, logoutManager);\n    }\n\n    /**\n     * {@inheritDoc}\n     * Destroy a TicketGrantingTicket and perform back channel logout. This has the effect of invalidating any\n     * Ticket that was derived from the TicketGrantingTicket being destroyed. May throw an\n     * {@link IllegalArgumentException} if the TicketGrantingTicket ID is null.\n     *\n     * @param ticketGrantingTicketId the id of the ticket we want to destroy\n     * @return the logout requests.\n     */\n    @Audit(\n            action = \"TICKET_GRANTING_TICKET_DESTROYED\",\n            actionResolverName = \"DESTROY_TICKET_GRANTING_TICKET_RESOLVER\",\n            resourceResolverName = \"DESTROY_TICKET_GRANTING_TICKET_RESOURCE_RESOLVER\")\n    @Timed(name = \"DESTROY_TICKET_GRANTING_TICKET_TIMER\")\n    @Metered(name = \"DESTROY_TICKET_GRANTING_TICKET_METER\")\n    @Counted(name = \"DESTROY_TICKET_GRANTING_TICKET_COUNTER\", monotonic = true)\n    @Override\n    public List<LogoutRequest> destroyTicketGrantingTicket(@NotNull final String ticketGrantingTicketId) {\n        try {\n            logger.debug(\"Removing ticket [{}] from registry...\", ticketGrantingTicketId);\n            final TicketGrantingTicket ticket = getTicket(ticketGrantingTicketId, TicketGrantingTicket.class);\n            logger.debug(\"Ticket found. Processing logout requests and then deleting the ticket...\");\n            final List<LogoutRequest> logoutRequests = logoutManager.performLogout(ticket);\n            this.ticketRegistry.deleteTicket(ticketGrantingTicketId);\n\n            doPublishEvent(new CasTicketGrantingTicketDestroyedEvent(this, ticket));\n\n            return logoutRequests;\n        } catch (final InvalidTicketException e) {\n            logger.debug(\"TicketGrantingTicket [{}] cannot be found in the ticket registry.\", ticketGrantingTicketId);\n        }\n        return Collections.emptyList();\n    }\n\n    @Audit(\n            action = \"SERVICE_TICKET\",\n            actionResolverName = \"GRANT_SERVICE_TICKET_RESOLVER\",\n            resourceResolverName = \"GRANT_SERVICE_TICKET_RESOURCE_RESOLVER\")\n    @Timed(name = \"GRANT_SERVICE_TICKET_TIMER\")\n    @Metered(name = \"GRANT_SERVICE_TICKET_METER\")\n    @Counted(name = \"GRANT_SERVICE_TICKET_COUNTER\", monotonic = true)\n    @Override\n    public ServiceTicket grantServiceTicket(\n            final String ticketGrantingTicketId,\n            final Service service, final AuthenticationContext context)\n            throws AuthenticationException, AbstractTicketException {\n\n        logger.debug(\"Attempting to get ticket id {} to create service ticket\", ticketGrantingTicketId);\n        final TicketGrantingTicket ticketGrantingTicket = getTicket(ticketGrantingTicketId, TicketGrantingTicket.class);\n        final RegisteredService registeredService = this.servicesManager.findServiceBy(service);\n\n        verifyRegisteredServiceProperties(registeredService, service);\n        evaluatePossibilityOfMixedPrincipals(context, ticketGrantingTicket);\n\n        if (ticketGrantingTicket.getCountOfUses() > 0 && !registeredService.getAccessStrategy().isServiceAccessAllowedForSso()) {\n            logger.warn(\"Service [{}] is not allowed to use SSO.\", service.getId());\n            throw new UnauthorizedSsoServiceException();\n        }\n\n        evaluateProxiedServiceIfNeeded(service, ticketGrantingTicket, registeredService);\n\n        // Perform security policy check by getting the authentication that satisfies the configured policy\n        // This throws if no suitable policy is found\n        logger.debug(\"Checking for authentication policy satisfaction...\");\n        getAuthenticationSatisfiedByPolicy(ticketGrantingTicket.getRoot(), new ServiceContext(service, registeredService));\n\n        final List<Authentication> authentications = ticketGrantingTicket.getChainedAuthentications();\n        final Principal principal = authentications.get(authentications.size() - 1).getPrincipal();\n\n        logger.debug(\"Located principal {} for service ticket creation\", principal);\n\n        final RegisteredServiceAttributeReleasePolicy releasePolicy = registeredService.getAttributeReleasePolicy();\n        final Map<String, Object> principalAttrs;\n        if (releasePolicy != null) {\n            principalAttrs = releasePolicy.getAttributes(principal);\n        } else {\n            principalAttrs = new HashMap<>();\n        }\n\n        if (!registeredService.getAccessStrategy().doPrincipalAttributesAllowServiceAccess(principal.getId(), principalAttrs)) {\n            logger.warn(\"Cannot grant service ticket because Service [{}] is not authorized for use by [{}].\",\n                    service.getId(), principal);\n            throw new UnauthorizedServiceForPrincipalException();\n        }\n\n        final ServiceTicketFactory factory = this.ticketFactory.get(ServiceTicket.class);\n        final ServiceTicket serviceTicket = factory.create(ticketGrantingTicket, service,\n                context != null && context.isCredentialProvided());\n        logger.info(\"Granted ticket [{}] for service [{}] and principal [{}]\",\n                serviceTicket.getId(), service.getId(), principal.getId());\n\n        this.ticketRegistry.addTicket(serviceTicket);\n        logger.debug(\"Added service ticket {} to ticket registry\", serviceTicket.getId());\n\n\n        doPublishEvent(new CasServiceTicketGrantedEvent(this, ticketGrantingTicket, serviceTicket));\n\n        return serviceTicket;\n    }\n\n    /**\n     * Always keep track of a single authentication object,\n     * as opposed to keeping a history of all. This helps with\n     * memory consumption. Note that supplemental authentications\n     * are to be removed.\n     *\n     * @param context              authentication context\n     * @param ticketGrantingTicket the tgt\n     * @return the processed authentication in the current context\n     * @throws MixedPrincipalException in case there is a principal mismatch between TGT and the current authN.\n     */\n    private Authentication evaluatePossibilityOfMixedPrincipals(final AuthenticationContext context,\n                                                                       final TicketGrantingTicket ticketGrantingTicket)\n            throws MixedPrincipalException {\n        Authentication currentAuthentication = null;\n        if (context != null) {\n            currentAuthentication = context.getAuthentication();\n            if (currentAuthentication != null) {\n                final Authentication original = ticketGrantingTicket.getAuthentication();\n                if (!currentAuthentication.getPrincipal().equals(original.getPrincipal())) {\n                    logger.debug(\"Principal associated with current authentication {} does not match \"\n                            + \" the principal {} associated with the original authentication\",\n                            currentAuthentication.getPrincipal(), original.getPrincipal());\n                    throw new MixedPrincipalException(\n                            currentAuthentication, currentAuthentication.getPrincipal(), original.getPrincipal());\n                }\n                ticketGrantingTicket.getSupplementalAuthentications().clear();\n                ticketGrantingTicket.getSupplementalAuthentications().add(currentAuthentication);\n                logger.debug(\"Added authentication to the collection of supplemental authentications\");\n            }\n        }\n        return currentAuthentication;\n    }\n\n    @Audit(\n            action = \"PROXY_TICKET\",\n            actionResolverName = \"GRANT_PROXY_TICKET_RESOLVER\",\n            resourceResolverName = \"GRANT_PROXY_TICKET_RESOURCE_RESOLVER\")\n    @Timed(name = \"GRANT_PROXY_TICKET_TIMER\")\n    @Metered(name = \"GRANT_PROXY_TICKET_METER\")\n    @Counted(name = \"GRANT_PROXY_TICKET_COUNTER\", monotonic = true)\n    @Override\n    public ProxyTicket grantProxyTicket(final String proxyGrantingTicket, final Service service)\n            throws AbstractTicketException {\n\n        final ProxyGrantingTicket proxyGrantingTicketObject = getTicket(proxyGrantingTicket, ProxyGrantingTicket.class);\n        final RegisteredService registeredService = this.servicesManager.findServiceBy(service);\n\n        verifyRegisteredServiceProperties(registeredService, service);\n\n        if (!registeredService.getAccessStrategy().isServiceAccessAllowedForSso()) {\n            logger.warn(\"Service [{}] is not allowed to use SSO.\", service.getId());\n            throw new UnauthorizedSsoServiceException();\n        }\n\n        evaluateProxiedServiceIfNeeded(service, proxyGrantingTicketObject, registeredService);\n\n        // Perform security policy check by getting the authentication that satisfies the configured policy\n        // This throws if no suitable policy is found\n        getAuthenticationSatisfiedByPolicy(proxyGrantingTicketObject.getRoot(), new ServiceContext(service, registeredService));\n\n        final List<Authentication> authentications = proxyGrantingTicketObject.getChainedAuthentications();\n        final Principal principal = authentications.get(authentications.size() - 1).getPrincipal();\n\n        final RegisteredServiceAttributeReleasePolicy releasePolicy = registeredService.getAttributeReleasePolicy();\n        final Map<String, Object> principalAttrs;\n        if (releasePolicy != null) {\n            principalAttrs = releasePolicy.getAttributes(principal);\n        } else {\n            principalAttrs = new HashMap<>();\n        }\n\n        if (!registeredService.getAccessStrategy().doPrincipalAttributesAllowServiceAccess(principal.getId(), principalAttrs)) {\n            logger.warn(\"Cannot grant proxy ticket because Service [{}] is not authorized for use by [{}].\",\n                    service.getId(), principal);\n            throw new UnauthorizedServiceForPrincipalException();\n        }\n\n        final ProxyTicketFactory factory = this.ticketFactory.get(ProxyTicket.class);\n        final ProxyTicket proxyTicket = factory.create(proxyGrantingTicketObject, service);\n        this.ticketRegistry.addTicket(proxyTicket);\n\n        logger.info(\"Granted ticket [{}] for service [{}] for user [{}]\",\n                proxyTicket.getId(), service.getId(), principal.getId());\n\n        doPublishEvent(new CasProxyTicketGrantedEvent(this, proxyGrantingTicketObject, proxyTicket));\n        return proxyTicket;\n    }\n\n    @Audit(\n            action = \"PROXY_GRANTING_TICKET\",\n            actionResolverName = \"CREATE_PROXY_GRANTING_TICKET_RESOLVER\",\n            resourceResolverName = \"CREATE_PROXY_GRANTING_TICKET_RESOURCE_RESOLVER\")\n    @Timed(name = \"CREATE_PROXY_GRANTING_TICKET_TIMER\")\n    @Metered(name = \"CREATE_PROXY_GRANTING_TICKET_METER\")\n    @Counted(name = \"CREATE_PROXY_GRANTING_TICKET_COUNTER\", monotonic = true)\n    @Override\n    public ProxyGrantingTicket createProxyGrantingTicket(final String serviceTicketId, final AuthenticationContext context)\n            throws AuthenticationException, AbstractTicketException {\n\n        final ServiceTicket serviceTicket = this.ticketRegistry.getTicket(serviceTicketId, ServiceTicket.class);\n\n        if (serviceTicket == null || serviceTicket.isExpired()) {\n            logger.debug(\"ServiceTicket [{}] has expired or cannot be found in the ticket registry\", serviceTicketId);\n            throw new InvalidTicketException(serviceTicketId);\n        }\n\n        final RegisteredService registeredService = this.servicesManager\n                .findServiceBy(serviceTicket.getService());\n\n        verifyRegisteredServiceProperties(registeredService, serviceTicket.getService());\n\n        if (!registeredService.getProxyPolicy().isAllowedToProxy()) {\n            logger.warn(\"ServiceManagement: Service [{}] attempted to proxy, but is not allowed.\", serviceTicket.getService().getId());\n            throw new UnauthorizedProxyingException();\n        }\n\n        final Authentication authentication = context.getAuthentication();\n        final ProxyGrantingTicketFactory factory = this.ticketFactory.get(ProxyGrantingTicket.class);\n        final ProxyGrantingTicket proxyGrantingTicket = factory.create(serviceTicket, authentication);\n\n        logger.debug(\"Generated proxy granting ticket [{}] based off of [{}]\", proxyGrantingTicket, serviceTicketId);\n        this.ticketRegistry.addTicket(proxyGrantingTicket);\n\n        doPublishEvent(new CasProxyGrantingTicketCreatedEvent(this, proxyGrantingTicket));\n\n        return proxyGrantingTicket;\n\n    }\n\n    @Audit(\n            action = \"SERVICE_TICKET_VALIDATE\",\n            actionResolverName = \"VALIDATE_SERVICE_TICKET_RESOLVER\",\n            resourceResolverName = \"VALIDATE_SERVICE_TICKET_RESOURCE_RESOLVER\")\n    @Timed(name = \"VALIDATE_SERVICE_TICKET_TIMER\")\n    @Metered(name = \"VALIDATE_SERVICE_TICKET_METER\")\n    @Counted(name = \"VALIDATE_SERVICE_TICKET_COUNTER\", monotonic = true)\n    @Override\n    public Assertion validateServiceTicket(final String serviceTicketId, final Service service) throws AbstractTicketException {\n        final RegisteredService registeredService = this.servicesManager.findServiceBy(service);\n        verifyRegisteredServiceProperties(registeredService, service);\n\n        final ServiceTicket serviceTicket = this.ticketRegistry.getTicket(serviceTicketId, ServiceTicket.class);\n\n        if (serviceTicket == null) {\n            logger.info(\"Service ticket [{}] does not exist.\", serviceTicketId);\n            throw new InvalidTicketException(serviceTicketId);\n        }\n\n        try {\n            synchronized (serviceTicket) {\n                if (serviceTicket.isExpired()) {\n                    logger.info(\"ServiceTicket [{}] has expired.\", serviceTicketId);\n                    throw new InvalidTicketException(serviceTicketId);\n                }\n\n                if (!serviceTicket.isValidFor(service)) {\n                    logger.error(\"Service ticket [{}] with service [{}] does not match supplied service [{}]\",\n                            serviceTicketId, serviceTicket.getService().getId(), service);\n                    throw new UnrecognizableServiceForServiceTicketValidationException(serviceTicket.getService());\n                }\n            }\n\n            final TicketGrantingTicket root = serviceTicket.getGrantingTicket().getRoot();\n            final Authentication authentication = getAuthenticationSatisfiedByPolicy(\n                    root, new ServiceContext(serviceTicket.getService(), registeredService));\n            final Principal principal = authentication.getPrincipal();\n\n            final RegisteredServiceAttributeReleasePolicy attributePolicy = registeredService.getAttributeReleasePolicy();\n            logger.debug(\"Attribute policy [{}] is associated with service [{}]\", attributePolicy, registeredService);\n\n            @SuppressWarnings(\"unchecked\")\n            final Map<String, Object> attributesToRelease = attributePolicy != null\n                    ? attributePolicy.getAttributes(principal) : Collections.EMPTY_MAP;\n\n            final String principalId = registeredService.getUsernameAttributeProvider().resolveUsername(principal, service);\n            final Principal modifiedPrincipal = this.principalFactory.createPrincipal(principalId, attributesToRelease);\n            final AuthenticationBuilder builder = DefaultAuthenticationBuilder.newInstance(authentication);\n            builder.setPrincipal(modifiedPrincipal);\n\n            final Assertion assertion = new ImmutableAssertion(\n                    builder.build(),\n                    serviceTicket.getGrantingTicket().getChainedAuthentications(),\n                    serviceTicket.getService(),\n                    serviceTicket.isFromNewLogin());\n\n            doPublishEvent(new CasServiceTicketValidatedEvent(this, serviceTicket, assertion));\n\n            return assertion;\n\n        } finally {\n            if (serviceTicket.isExpired()) {\n                this.ticketRegistry.deleteTicket(serviceTicketId);\n            }\n        }\n    }\n\n    @Audit(\n            action = \"TICKET_GRANTING_TICKET\",\n            actionResolverName = \"CREATE_TICKET_GRANTING_TICKET_RESOLVER\",\n            resourceResolverName = \"CREATE_TICKET_GRANTING_TICKET_RESOURCE_RESOLVER\")\n    @Timed(name = \"CREATE_TICKET_GRANTING_TICKET_TIMER\")\n    @Metered(name = \"CREATE_TICKET_GRANTING_TICKET_METER\")\n    @Counted(name = \"CREATE_TICKET_GRANTING_TICKET_COUNTER\", monotonic = true)\n    @Override\n    public TicketGrantingTicket createTicketGrantingTicket(final AuthenticationContext context)\n            throws AuthenticationException, AbstractTicketException {\n\n        final Authentication authentication = context.getAuthentication();\n        final TicketGrantingTicketFactory factory = this.ticketFactory.get(TicketGrantingTicket.class);\n        final TicketGrantingTicket ticketGrantingTicket = factory.create(authentication);\n\n        this.ticketRegistry.addTicket(ticketGrantingTicket);\n\n        doPublishEvent(new CasTicketGrantingTicketCreatedEvent(this, ticketGrantingTicket));\n\n        return ticketGrantingTicket;\n    }\n}\n"
  },
  {
    "path": "src/taoshop-sso/src/main/java/org/jasig/cas/adaptors/jdbc/AbstractJdbcUsernamePasswordAuthenticationHandler.java",
    "content": "package org.jasig.cas.adaptors.jdbc;\n\nimport org.jasig.cas.authentication.handler.support.AbstractUsernamePasswordAuthenticationHandler;\nimport org.springframework.jdbc.core.JdbcTemplate;\n\nimport javax.sql.DataSource;\nimport javax.validation.constraints.NotNull;\n\n/**\n * Abstract class for database authentication handlers.\n *\n * @author Scott Battaglia\n * @since 3.0.0.3\n */\npublic abstract class AbstractJdbcUsernamePasswordAuthenticationHandler extends\n            AbstractUsernamePasswordAuthenticationHandler {\n\n    private JdbcTemplate jdbcTemplate;\n\n    private DataSource dataSource;\n\n    /**\n     * Method to set the datasource and generate a JdbcTemplate.\n     *\n     * @param dataSource the datasource to use.\n     */\n    public void setDataSource(@NotNull final DataSource dataSource) {\n        this.jdbcTemplate = new JdbcTemplate(dataSource);\n        this.dataSource = dataSource;\n    }\n\n    /**\n     * Method to return the jdbcTemplate.\n     *\n     * @return a fully created JdbcTemplate.\n     */\n    protected final JdbcTemplate getJdbcTemplate() {\n        return this.jdbcTemplate;\n    }\n\n    protected final DataSource getDataSource() {\n        return this.dataSource;\n    }\n}\n"
  },
  {
    "path": "src/taoshop-sso/src/main/java/org/jasig/cas/adaptors/jdbc/QueryDatabaseAuthenticationHandler.java",
    "content": "package org.jasig.cas.adaptors.jdbc;\n\nimport org.apache.commons.lang3.StringUtils;\nimport org.jasig.cas.authentication.HandlerResult;\nimport org.jasig.cas.authentication.PreventedException;\nimport org.jasig.cas.authentication.UsernamePasswordCredential;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.beans.factory.annotation.Qualifier;\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.dao.DataAccessException;\nimport org.springframework.dao.IncorrectResultSizeDataAccessException;\nimport org.springframework.stereotype.Component;\n\nimport javax.security.auth.login.AccountNotFoundException;\nimport javax.security.auth.login.FailedLoginException;\nimport javax.sql.DataSource;\nimport javax.validation.constraints.NotNull;\nimport java.security.GeneralSecurityException;\n\n/**\n * Class that if provided a query that returns a password (parameter of query\n * must be username) will compare that password to a translated version of the\n * password provided by the user. If they match, then authentication succeeds.\n * Default password translator is plaintext translator.\n *\n * @author Scott Battaglia\n * @author Dmitriy Kopylenko\n * @author Marvin S. Addison\n *\n * @since 3.0.0\n */\n@Component(\"queryDatabaseAuthenticationHandler\")\npublic class QueryDatabaseAuthenticationHandler extends AbstractJdbcUsernamePasswordAuthenticationHandler {\n\n    @NotNull\n    private String sql;\n\n    @Override\n    protected final HandlerResult authenticateUsernamePasswordInternal(final UsernamePasswordCredential credential)\n            throws GeneralSecurityException, PreventedException {\n\n        if (StringUtils.isBlank(this.sql) || getJdbcTemplate() == null) {\n            throw new GeneralSecurityException(\"Authentication handler is not configured correctly\");\n        }\n\n        final String username = credential.getUsername();\n        final String encryptedPassword = this.getPasswordEncoder().encode(credential.getPassword());\n        try {\n            final String dbPassword = getJdbcTemplate().queryForObject(this.sql, String.class, username);\n            if (!dbPassword.equals(encryptedPassword)) {\n                throw new FailedLoginException(\"Password does not match value on record.\");\n            }\n        } catch (final IncorrectResultSizeDataAccessException e) {\n            if (e.getActualSize() == 0) {\n                throw new AccountNotFoundException(username + \" not found with SQL query\");\n            } else {\n                throw new FailedLoginException(\"Multiple records found for \" + username);\n            }\n        } catch (final DataAccessException e) {\n            throw new PreventedException(\"SQL exception while executing query for \" + username, e);\n        }\n        return createHandlerResult(credential, this.principalFactory.createPrincipal(username), null);\n    }\n\n    /**\n     * @param sql The sql to set.\n     */\n    @Autowired\n    public void setSql(@Value(\"${cas.jdbc.authn.query.sql:}\") final String sql) {\n        this.sql = sql;\n    }\n\n    @Override\n    @Autowired(required = false)\n    public void setDataSource(@Qualifier(\"queryDatabaseDataSource\") final DataSource dataSource) {\n        super.setDataSource(dataSource);\n    }\n}\n"
  },
  {
    "path": "src/taoshop-sso/src/main/java/org/jasig/cas/authentication/UsernamePasswordCredential.java",
    "content": "package org.jasig.cas.authentication;\n\nimport org.apache.commons.lang3.builder.HashCodeBuilder;\n\nimport javax.validation.constraints.NotNull;\nimport javax.validation.constraints.Size;\nimport java.io.Serializable;\n\n/**\n * Credential for authenticating with a username and password.\n *\n * @author Scott Battaglia\n * @author Marvin S. Addison\n * @since 3.0.0\n */\npublic class UsernamePasswordCredential implements Credential, Serializable {\n\n    /** Authentication attribute name for password. **/\n    public static final String AUTHENTICATION_ATTRIBUTE_PASSWORD = \"credential\";\n\n    private static final long serialVersionUID = -700605081472810939L;\n\n\n    @NotNull\n    @Size(min=1, message = \"required.username\")\n    private String username;\n\n    @NotNull\n    @Size(min=1, message = \"required.password\")\n    private String password;\n\n    /** Default constructor. */\n    public UsernamePasswordCredential() {}\n\n    /**\n     * Creates a new instance with the given username and password.\n     *\n     * @param userName Non-null user name.\n     * @param password Non-null password.\n     */\n    public UsernamePasswordCredential(final String userName, final String password) {\n        this.username = userName;\n        this.password = password;\n    }\n\n    public final String getPassword() {\n        return this.password;\n    }\n\n\n    public final void setPassword(final String password) {\n        this.password = password;\n    }\n\n\n    public final String getUsername() {\n        return this.username;\n    }\n\n    public final void setUsername(final String userName) {\n        this.username = userName;\n    }\n\n\n    @Override\n    public String getId() {\n        return this.username;\n    }\n\n    @Override\n    public String toString() {\n        return this.username;\n    }\n\n    @Override\n    public boolean equals(final Object o) {\n        if (this == o) {\n            return true;\n        }\n        if (o == null || getClass() != o.getClass()) {\n            return false;\n        }\n\n        final UsernamePasswordCredential that = (UsernamePasswordCredential) o;\n\n        if (password != null ? !password.equals(that.password) : that.password != null) {\n            return false;\n        }\n\n        if (username != null ? !username.equals(that.username) : that.username != null) {\n            return false;\n        }\n\n        return true;\n    }\n\n    @Override\n    public int hashCode() {\n        return new HashCodeBuilder()\n                .append(username)\n                .append(password)\n                .toHashCode();\n    }\n\n}\n"
  },
  {
    "path": "src/taoshop-sso/src/main/java/org/jasig/cas/support/rest/TicketsResource.java",
    "content": "package org.jasig.cas.support.rest;\n\nimport com.fasterxml.jackson.core.JsonProcessingException;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport org.jasig.cas.CasProtocolConstants;\nimport org.jasig.cas.CentralAuthenticationService;\nimport org.jasig.cas.authentication.AuthenticationContext;\nimport org.jasig.cas.authentication.AuthenticationContextBuilder;\nimport org.jasig.cas.authentication.AuthenticationSystemSupport;\nimport org.jasig.cas.authentication.AuthenticationException;\nimport org.jasig.cas.authentication.AuthenticationTransaction;\nimport org.jasig.cas.authentication.Credential;\nimport org.jasig.cas.authentication.DefaultAuthenticationContextBuilder;\nimport org.jasig.cas.authentication.DefaultAuthenticationSystemSupport;\nimport org.jasig.cas.authentication.UsernamePasswordCredential;\nimport org.jasig.cas.authentication.principal.Service;\nimport org.jasig.cas.authentication.principal.ServiceFactory;\nimport org.jasig.cas.ticket.InvalidTicketException;\nimport org.jasig.cas.ticket.ServiceTicket;\nimport org.jasig.cas.ticket.TicketGrantingTicket;\nimport org.jasig.cas.ticket.registry.DefaultTicketRegistrySupport;\nimport org.jasig.cas.ticket.registry.TicketRegistrySupport;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.beans.factory.annotation.Qualifier;\nimport org.springframework.http.HttpHeaders;\nimport org.springframework.http.HttpStatus;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.ResponseEntity;\nimport org.springframework.util.MultiValueMap;\nimport org.springframework.web.bind.annotation.PathVariable;\nimport org.springframework.web.bind.annotation.RequestBody;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestMethod;\nimport org.springframework.web.bind.annotation.RestController;\n\nimport javax.servlet.http.HttpServletRequest;\nimport javax.validation.constraints.NotNull;\nimport java.net.URI;\nimport java.util.Formatter;\nimport java.util.HashMap;\nimport java.util.LinkedList;\nimport java.util.List;\nimport java.util.Map;\n\n/**\n * {@link RestController} implementation of CAS' REST API.\n *\n * This class implements main CAS RESTful resource for vending/deleting TGTs and vending STs:\n *\n * <ul>\n *     <li>{@code POST /v1/tickets}</li>\n *     <li>{@code POST /v1/tickets/{TGT-id}}</li>\n *     <li>{@code DELETE /v1/tickets/{TGT-id}}</li>\n * </ul>\n *\n * @author Dmitriy Kopylenko\n * @since 4.1.0\n */\n@RestController(\"ticketResourceRestController\")\npublic class TicketsResource {\n\n    private static final Logger LOGGER = LoggerFactory.getLogger(TicketsResource.class);\n\n    @Autowired\n    @Qualifier(\"centralAuthenticationService\")\n    private CentralAuthenticationService centralAuthenticationService;\n\n    @NotNull\n    @Autowired(required=false)\n    @Qualifier(\"defaultAuthenticationSystemSupport\")\n    private AuthenticationSystemSupport authenticationSystemSupport = new DefaultAuthenticationSystemSupport();\n\n    @Autowired(required = false)\n    private final CredentialFactory credentialFactory = new DefaultCredentialFactory();\n\n    @Autowired\n    @Qualifier(\"webApplicationServiceFactory\")\n    private ServiceFactory webApplicationServiceFactory;\n\n    @Autowired\n    @Qualifier(\"defaultTicketRegistrySupport\")\n    private TicketRegistrySupport ticketRegistrySupport = new DefaultTicketRegistrySupport();\n\n    private final ObjectMapper jacksonObjectMapper = new ObjectMapper();\n\n\n    /**\n     * Create new ticket granting ticket.\n     *\n     * @param requestBody username and password application/x-www-form-urlencoded values\n     * @param request raw HttpServletRequest used to call this method\n     * @return ResponseEntity representing RESTful response\n     * @throws JsonProcessingException in case of JSON parsing failure\n     */\n    @RequestMapping(value = \"/v1/tickets\", method = RequestMethod.POST, consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)\n    public final ResponseEntity<String> createTicketGrantingTicket(@RequestBody final MultiValueMap<String, String> requestBody,\n                                                                   final HttpServletRequest request) throws JsonProcessingException {\n        try (Formatter fmt = new Formatter()) {\n\n            final Credential credential = this.credentialFactory.fromRequestBody(requestBody);\n\n            final AuthenticationContextBuilder builder = new DefaultAuthenticationContextBuilder(\n                    this.authenticationSystemSupport.getPrincipalElectionStrategy());\n            final AuthenticationTransaction transaction =\n                    AuthenticationTransaction.wrap(credential);\n            this.authenticationSystemSupport.getAuthenticationTransactionManager().handle(transaction,  builder);\n            final AuthenticationContext authenticationContext = builder.build();\n\n            final TicketGrantingTicket tgtId = this.centralAuthenticationService.createTicketGrantingTicket(authenticationContext);\n            final URI ticketReference = new URI(request.getRequestURL().toString() + '/' + tgtId.getId());\n            final HttpHeaders headers = new HttpHeaders();\n            headers.setLocation(ticketReference);\n            headers.setContentType(MediaType.TEXT_HTML);\n            fmt.format(\"<!DOCTYPE HTML PUBLIC \\\\\\\"-//IETF//DTD HTML 2.0//EN\\\\\\\"><html><head><title>\");\n            fmt.format(\"%s %s\", HttpStatus.CREATED, HttpStatus.CREATED.getReasonPhrase())\n                    .format(\"</title></head><body><h1>TGT Created</h1><form action=\\\"%s\", ticketReference.toString())\n                    .format(\"\\\" method=\\\"POST\\\">Service:<input type=\\\"text\\\" name=\\\"service\\\" value=\\\"\\\">\")\n                    .format(\"<br><input type=\\\"submit\\\" value=\\\"Submit\\\"></form></body></html>\");\n            return new ResponseEntity<>(fmt.toString(), headers, HttpStatus.CREATED);\n\n        }\n        catch(final AuthenticationException e) {\n            final List<String> authnExceptions = new LinkedList<>();\n            for (final Map.Entry<String, Class<? extends Exception>> handlerErrorEntry: e.getHandlerErrors().entrySet()) {\n                authnExceptions.add(handlerErrorEntry.getValue().getSimpleName());\n            }\n            final Map<String, List<String>> errorsMap = new HashMap<>();\n            errorsMap.put(\"authentication_exceptions\", authnExceptions);\n            LOGGER.error(e.getMessage(), e);\n            LOGGER.error(String.format(\"Caused by: %s\", authnExceptions));\n            return new ResponseEntity<>(this.jacksonObjectMapper\n                    .writer()\n                    .withDefaultPrettyPrinter()\n                    .writeValueAsString(errorsMap), HttpStatus.UNAUTHORIZED);\n        } catch (final BadRequestException e) {\n            LOGGER.error(e.getMessage(), e);\n            return new ResponseEntity<>(e.getMessage(), HttpStatus.BAD_REQUEST);\n        } catch (final Throwable e) {\n            LOGGER.error(e.getMessage(), e);\n            return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);\n        }\n    }\n\n    /**\n     * Create new service ticket.\n     *\n     * @param requestBody service application/x-www-form-urlencoded value\n     * @param tgtId ticket granting ticket id URI path param\n     * @return {@link ResponseEntity} representing RESTful response\n     */\n    @RequestMapping(value = \"/v1/tickets/{tgtId:.+}\", method = RequestMethod.POST, consumes = MediaType\n            .APPLICATION_FORM_URLENCODED_VALUE)\n    public final ResponseEntity<String> createServiceTicket(@RequestBody final MultiValueMap<String, String> requestBody,\n                                                            @PathVariable(\"tgtId\") final String tgtId) {\n        try {\n            final String serviceId = requestBody.getFirst(CasProtocolConstants.PARAMETER_SERVICE);\n            final AuthenticationContextBuilder builder = new DefaultAuthenticationContextBuilder(\n                    this.authenticationSystemSupport.getPrincipalElectionStrategy());\n\n            final Service service = this.webApplicationServiceFactory.createService(serviceId);\n            final AuthenticationContext authenticationContext =\n                    builder.collect(this.ticketRegistrySupport.getAuthenticationFrom(tgtId)).build(service);\n\n            final ServiceTicket serviceTicketId = this.centralAuthenticationService.grantServiceTicket(tgtId,\n                    service, authenticationContext);\n            return new ResponseEntity<>(serviceTicketId.getId(), HttpStatus.OK);\n\n        } catch (final InvalidTicketException e) {\n            return new ResponseEntity<>(\"TicketGrantingTicket could not be found\", HttpStatus.NOT_FOUND);\n        } catch (final Exception e) {\n            LOGGER.error(e.getMessage(), e);\n            return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);\n        }\n    }\n\n    /**\n     * Destroy ticket granting ticket.\n     *\n     * @param tgtId ticket granting ticket id URI path param\n     * @return {@link ResponseEntity} representing RESTful response. Signals\n     * {@link HttpStatus#OK} when successful.\n     */\n    @RequestMapping(value = \"/v1/tickets/{tgtId:.+}\", method = RequestMethod.DELETE)\n    public final ResponseEntity<String> deleteTicketGrantingTicket(@PathVariable(\"tgtId\") final String tgtId) {\n        this.centralAuthenticationService.destroyTicketGrantingTicket(tgtId);\n        return new ResponseEntity<>(tgtId, HttpStatus.OK);\n    }\n\n    public void setAuthenticationSystemSupport(final AuthenticationSystemSupport authenticationSystemSupport) {\n        this.authenticationSystemSupport = authenticationSystemSupport;\n    }\n\n    public void setWebApplicationServiceFactory(final ServiceFactory webApplicationServiceFactory) {\n        this.webApplicationServiceFactory = webApplicationServiceFactory;\n    }\n\n    public void setTicketRegistrySupport(final TicketRegistrySupport ticketRegistrySupport) {\n        this.ticketRegistrySupport = ticketRegistrySupport;\n    }\n\n    public void setCentralAuthenticationService(final CentralAuthenticationService centralAuthenticationService) {\n        this.centralAuthenticationService = centralAuthenticationService;\n    }\n\n    public CentralAuthenticationService getCentralAuthenticationService() {\n        return centralAuthenticationService;\n    }\n\n    public AuthenticationSystemSupport getAuthenticationSystemSupport() {\n        return authenticationSystemSupport;\n    }\n\n    public CredentialFactory getCredentialFactory() {\n        return credentialFactory;\n    }\n\n    public ServiceFactory getWebApplicationServiceFactory() {\n        return webApplicationServiceFactory;\n    }\n\n    public TicketRegistrySupport getTicketRegistrySupport() {\n        return ticketRegistrySupport;\n    }\n\n    /**\n     * Default implementation of CredentialFactory.\n     */\n    private static class DefaultCredentialFactory implements CredentialFactory {\n        @Override\n        public Credential fromRequestBody(@NotNull final MultiValueMap<String, String> requestBody) {\n            final String username = requestBody.getFirst(\"username\");\n            final String password = requestBody.getFirst(\"password\");\n            if(username == null || password == null) {\n                throw new BadRequestException(\"Invalid payload. 'username' and 'password' form fields are required.\");\n            }\n            return new UsernamePasswordCredential(requestBody.getFirst(\"username\"), requestBody.getFirst(\"password\"));\n        }\n    }\n\n    /**\n     * Exception to indicate bad payload.\n     */\n    private static class BadRequestException extends IllegalArgumentException {\n        private static final long serialVersionUID = 6852720596988243487L;\n\n        /**\n         * Ctor.\n         * @param msg error message\n         */\n        BadRequestException(final String msg) {\n            super(msg);\n        }\n    }\n}\n"
  },
  {
    "path": "src/taoshop-sso/src/main/java/org/jasig/cas/web/flow/AuthenticationExceptionHandler.java",
    "content": "package org.jasig.cas.web.flow;\n\nimport org.jasig.cas.authentication.AuthenticationException;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.binding.message.MessageBuilder;\nimport org.springframework.binding.message.MessageContext;\nimport org.springframework.stereotype.Component;\n\nimport javax.validation.constraints.NotNull;\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.List;\n\n/**\n * Performs two important error handling functions on an {@link AuthenticationException} raised from the authentication\n * layer:\n *\n * <ol>\n *     <li>Maps handler errors onto message bundle strings for display to user.</li>\n *     <li>Determines the next webflow state by comparing handler errors against {@link #errors}\n *     in list order. The first entry that matches determines the outcome state, which\n *     is the simple class name of the exception.</li>\n * </ol>\n *\n * @author Marvin S. Addison\n * @since 4.0.0\n */\n@Component(\"authenticationExceptionHandler\")\npublic class AuthenticationExceptionHandler {\n\n    /** State name when no matching exception is found. */\n    public static final String UNKNOWN = \"UNKNOWN\";\n\n    /** Default message bundle prefix. */\n    private static final String DEFAULT_MESSAGE_BUNDLE_PREFIX = \"authenticationFailure.\";\n\n    /** Default list of errors this class knows how to handle. */\n    private static final List<Class<? extends Exception>> DEFAULT_ERROR_LIST =\n            new ArrayList<>();\n\n    private final transient Logger logger = LoggerFactory.getLogger(this.getClass());\n\n    /**\n     * Order is important here; We want the account policy exceptions to be handled\n     * first before moving onto more generic errors. In the event that multiple handlers\n     * are defined, where one failed due to account policy restriction and one fails\n     * due to a bad password, we want the error associated with the account policy\n     * to be processed first, rather than presenting a more generic error associated\n     * with latter handlers.\n     */\n    static {\n        DEFAULT_ERROR_LIST.add(javax.security.auth.login.AccountLockedException.class);\n        DEFAULT_ERROR_LIST.add(javax.security.auth.login.CredentialExpiredException.class);\n        DEFAULT_ERROR_LIST.add(org.jasig.cas.authentication.AccountDisabledException.class);\n        DEFAULT_ERROR_LIST.add(org.jasig.cas.authentication.InvalidLoginLocationException.class);\n        DEFAULT_ERROR_LIST.add(org.jasig.cas.authentication.AccountPasswordMustChangeException.class);\n        DEFAULT_ERROR_LIST.add(org.jasig.cas.authentication.InvalidLoginTimeException.class);\n\n        DEFAULT_ERROR_LIST.add(javax.security.auth.login.AccountNotFoundException.class);\n        DEFAULT_ERROR_LIST.add(javax.security.auth.login.FailedLoginException.class);\n    }\n\n    /** Ordered list of error classes that this class knows how to handle. */\n    @NotNull\n    private List<Class<? extends Exception>> errors = DEFAULT_ERROR_LIST;\n\n    /** String appended to exception class name to create a message bundle key for that particular error. */\n    private String messageBundlePrefix = DEFAULT_MESSAGE_BUNDLE_PREFIX;\n\n    /**\n     * Sets the list of errors that this class knows how to handle.\n     *\n     * @param errors List of errors in order of descending precedence.\n     */\n    public void setErrors(final List<Class<? extends Exception>> errors) {\n        this.errors = errors;\n    }\n\n    public final List<Class<? extends Exception>> getErrors() {\n        return Collections.unmodifiableList(this.errors);\n    }\n\n    /**\n     * Sets the message bundle prefix appended to exception class names to create a message bundle key for that\n     * particular error.\n     *\n     * @param prefix Prefix appended to exception names.\n     */\n    public void setMessageBundlePrefix(final String prefix) {\n        this.messageBundlePrefix = prefix;\n    }\n\n    /**\n     * Maps an authentication exception onto a state name equal to the simple class name of the.\n     *\n     * @param e Authentication error to handle.\n     * @param messageContext the spring message context\n     * @return Name of next flow state to transition to or {@value #UNKNOWN}\n     * {@link AuthenticationException#getHandlerErrors()} with highest precedence.\n     * Also sets an ERROR severity message in the message context of the form\n     * {@code [messageBundlePrefix][exceptionClassSimpleName]} for each handler error that is\n     * configured. If not match is found, {@value #UNKNOWN} is returned.\n     */\n    public String handle(final AuthenticationException e, final MessageContext messageContext) {\n        if (e != null) {\n            final MessageBuilder builder = new MessageBuilder();\n            for (final Class<? extends Exception> kind : this.errors) {\n                for (final Class<? extends Exception> handlerError : e.getHandlerErrors().values()) {\n                    if (handlerError != null && handlerError.equals(kind)) {\n                        final String handlerErrorName = handlerError.getSimpleName();\n                        final String messageCode = this.messageBundlePrefix + handlerErrorName;\n                        messageContext.addMessage(builder.error().code(messageCode).build());\n                        return handlerErrorName;\n                    }\n                }\n\n            }\n        }\n        final String messageCode = this.messageBundlePrefix + UNKNOWN;\n        logger.trace(\"Unable to translate handler errors of the authentication exception {}. Returning {} by default...\", e, messageCode);\n        messageContext.addMessage(new MessageBuilder().error().code(messageCode).build());\n        return UNKNOWN;\n    }\n}\n"
  },
  {
    "path": "src/taoshop-sso/src/main/java/org/jasig/cas/web/flow/AuthenticationViaFormAction.java",
    "content": "package org.jasig.cas.web.flow;\n\nimport org.apache.commons.lang3.StringUtils;\nimport org.jasig.cas.CasProtocolConstants;\nimport org.jasig.cas.CentralAuthenticationService;\nimport org.jasig.cas.authentication.AuthenticationContext;\nimport org.jasig.cas.authentication.AuthenticationContextBuilder;\nimport org.jasig.cas.authentication.AuthenticationException;\nimport org.jasig.cas.authentication.AuthenticationSystemSupport;\nimport org.jasig.cas.authentication.AuthenticationTransaction;\nimport org.jasig.cas.authentication.Credential;\nimport org.jasig.cas.authentication.DefaultAuthenticationContextBuilder;\nimport org.jasig.cas.authentication.DefaultAuthenticationSystemSupport;\nimport org.jasig.cas.authentication.HandlerResult;\nimport org.jasig.cas.authentication.MessageDescriptor;\nimport org.jasig.cas.authentication.principal.Service;\nimport org.jasig.cas.ticket.AbstractTicketException;\nimport org.jasig.cas.ticket.ServiceTicket;\nimport org.jasig.cas.ticket.TicketCreationException;\nimport org.jasig.cas.ticket.TicketGrantingTicket;\nimport org.jasig.cas.web.support.WebUtils;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.beans.factory.annotation.Qualifier;\nimport org.springframework.binding.message.MessageBuilder;\nimport org.springframework.binding.message.MessageContext;\nimport org.springframework.stereotype.Component;\nimport org.springframework.web.util.CookieGenerator;\nimport org.springframework.webflow.core.collection.LocalAttributeMap;\nimport org.springframework.webflow.execution.Event;\nimport org.springframework.webflow.execution.RequestContext;\n\nimport javax.validation.constraints.NotNull;\nimport java.util.Map;\n\n/**\n * Action to authenticate credential and retrieve a TicketGrantingTicket for\n * those credential. If there is a request for renew, then it also generates\n * the Service Ticket required.\n *\n * @author Scott Battaglia\n * @since 3.0.0\n */\n@Component(\"authenticationViaFormAction\")\npublic class AuthenticationViaFormAction {\n\n    /** Authentication succeeded with warnings from authn subsystem that should be displayed to user. */\n    public static final String SUCCESS_WITH_WARNINGS = \"successWithWarnings\";\n\n    /** Authentication failure result. */\n    public static final String AUTHENTICATION_FAILURE = \"authenticationFailure\";\n\n\n    /** Flow scope attribute that determines if authn is happening at a public workstation. */\n    public static final String PUBLIC_WORKSTATION_ATTRIBUTE = \"publicWorkstation\";\n\n    /** Logger instance. **/\n    protected final transient Logger logger = LoggerFactory.getLogger(getClass());\n\n    /** Core we delegate to for handling all ticket related tasks. */\n    @NotNull\n    @Autowired\n    @Qualifier(\"centralAuthenticationService\")\n    private CentralAuthenticationService centralAuthenticationService;\n\n    @NotNull\n    @Autowired\n    @Qualifier(\"warnCookieGenerator\")\n    private CookieGenerator warnCookieGenerator;\n\n    @NotNull\n    @Autowired(required=false)\n    @Qualifier(\"defaultAuthenticationSystemSupport\")\n    private AuthenticationSystemSupport authenticationSystemSupport = new DefaultAuthenticationSystemSupport();\n\n    /**\n     * Handle the submission of credentials from the post.\n     *\n     * @param context the context\n     * @param credential the credential\n     * @param messageContext the message context\n     * @return the event\n     * @since 4.1.0\n     */\n    public final Event submit(final RequestContext context, final Credential credential,\n                              final MessageContext messageContext)  {\n        if (isRequestAskingForServiceTicket(context)) {\n            return grantServiceTicket(context, credential);\n        }\n\n        return createTicketGrantingTicket(context, credential, messageContext);\n    }\n\n    /**\n     * Is request asking for service ticket?\n     *\n     * @param context the context\n     * @return true, if both service and tgt are found, and the request is not asking to renew.\n     * @since 4.1.0\n     */\n    protected boolean isRequestAskingForServiceTicket(final RequestContext context) {\n        final String ticketGrantingTicketId = WebUtils.getTicketGrantingTicketId(context);\n        final Service service = WebUtils.getService(context);\n        return (StringUtils.isNotBlank(context.getRequestParameters().get(CasProtocolConstants.PARAMETER_RENEW))\n                && ticketGrantingTicketId != null\n                && service != null);\n    }\n\n    /**\n     * Grant service ticket for the given credential based on the service and tgt\n     * that are found in the request context.\n     *\n     * @param context the context\n     * @param credential the credential\n     * @return the resulting event. Warning, authentication failure or error.\n     * @since 4.1.0\n     */\n    protected Event grantServiceTicket(final RequestContext context, final Credential credential) {\n        final String ticketGrantingTicketId = WebUtils.getTicketGrantingTicketId(context);\n        try {\n            final Service service = WebUtils.getService(context);\n            final AuthenticationContextBuilder builder = new DefaultAuthenticationContextBuilder(\n                    this.authenticationSystemSupport.getPrincipalElectionStrategy());\n            final AuthenticationTransaction transaction =\n                    AuthenticationTransaction.wrap(credential);\n            this.authenticationSystemSupport.getAuthenticationTransactionManager().handle(transaction,  builder);\n            final AuthenticationContext authenticationContext = builder.build(service);\n\n            final ServiceTicket serviceTicketId = this.centralAuthenticationService.grantServiceTicket(\n                    ticketGrantingTicketId, service, authenticationContext);\n            WebUtils.putServiceTicketInRequestScope(context, serviceTicketId);\n            WebUtils.putWarnCookieIfRequestParameterPresent(this.warnCookieGenerator, context);\n            return newEvent(AbstractCasWebflowConfigurer.TRANSITION_ID_WARN);\n\n        } catch (final AuthenticationException e) {\n            return newEvent(AUTHENTICATION_FAILURE, e);\n        } catch (final TicketCreationException e) {\n            logger.warn(\"Invalid attempt to access service using renew=true with different credential. Ending SSO session.\");\n            this.centralAuthenticationService.destroyTicketGrantingTicket(ticketGrantingTicketId);\n        } catch (final AbstractTicketException e) {\n            return newEvent(AbstractCasWebflowConfigurer.TRANSITION_ID_ERROR, e);\n        }\n        return newEvent(AbstractCasWebflowConfigurer.TRANSITION_ID_ERROR);\n\n    }\n    /**\n     * Create ticket granting ticket for the given credentials.\n     * Adds all warnings into the message context.\n     *\n     * @param context the context\n     * @param credential the credential\n     * @param messageContext the message context\n     * @return the resulting event.\n     * @since 4.1.0\n     */\n    protected Event createTicketGrantingTicket(final RequestContext context, final Credential credential,\n                                               final MessageContext messageContext) {\n        try {\n            final Service service = WebUtils.getService(context);\n            final AuthenticationContextBuilder builder = new DefaultAuthenticationContextBuilder(\n                    this.authenticationSystemSupport.getPrincipalElectionStrategy());\n            final AuthenticationTransaction transaction =\n                    AuthenticationTransaction.wrap(credential);\n            this.authenticationSystemSupport.getAuthenticationTransactionManager().handle(transaction,  builder);\n            final AuthenticationContext authenticationContext = builder.build(service);\n\n            final TicketGrantingTicket tgt = this.centralAuthenticationService.createTicketGrantingTicket(authenticationContext);\n            WebUtils.putTicketGrantingTicketInScopes(context, tgt);\n            WebUtils.putWarnCookieIfRequestParameterPresent(this.warnCookieGenerator, context);\n            putPublicWorkstationToFlowIfRequestParameterPresent(context);\n            if (addWarningMessagesToMessageContextIfNeeded(tgt, messageContext)) {\n                return newEvent(SUCCESS_WITH_WARNINGS);\n            }\n            return newEvent(AbstractCasWebflowConfigurer.TRANSITION_ID_SUCCESS);\n\n        } catch (final AuthenticationException e) {\n            logger.debug(e.getMessage(), e);\n            return newEvent(AUTHENTICATION_FAILURE, e);\n        } catch (final Exception e) {\n            logger.debug(e.getMessage(), e);\n            return newEvent(AbstractCasWebflowConfigurer.TRANSITION_ID_ERROR, e);\n        }\n    }\n\n    /**\n     * Add warning messages to message context if needed.\n     *\n     * @param tgtId the tgt id\n     * @param messageContext the message context\n     * @return true if warnings were found and added, false otherwise.\n     * @since 4.1.0\n     */\n    protected boolean addWarningMessagesToMessageContextIfNeeded(final TicketGrantingTicket tgtId, final MessageContext messageContext) {\n        boolean foundAndAddedWarnings = false;\n        for (final Map.Entry<String, HandlerResult> entry : tgtId.getAuthentication().getSuccesses().entrySet()) {\n            for (final MessageDescriptor message : entry.getValue().getWarnings()) {\n                addWarningToContext(messageContext, message);\n                foundAndAddedWarnings = true;\n            }\n        }\n        return foundAndAddedWarnings;\n\n    }\n\n\n    /**\n     * Put public workstation into the flow if request parameter present.\n     *\n     * @param context the context\n     */\n    private static void putPublicWorkstationToFlowIfRequestParameterPresent(final RequestContext context) {\n        if (StringUtils.isNotBlank(context.getExternalContext()\n                .getRequestParameterMap().get(PUBLIC_WORKSTATION_ATTRIBUTE))) {\n            context.getFlowScope().put(PUBLIC_WORKSTATION_ATTRIBUTE, Boolean.TRUE);\n        }\n    }\n\n    /**\n     * New event based on the given id.\n     *\n     * @param id the id\n     * @return the event\n     */\n    private Event newEvent(final String id) {\n        return new Event(this, id);\n    }\n\n    /**\n     * New event based on the id, which contains an error attribute referring to the exception occurred.\n     *\n     * @param id the id\n     * @param error the error\n     * @return the event\n     */\n    private Event newEvent(final String id, final Exception error) {\n        return new Event(this, id, new LocalAttributeMap(\"error\", error));\n    }\n\n    /**\n     * Adds a warning message to the message context.\n     *\n     * @param context Message context.\n     * @param warning Warning message.\n     */\n    private static void addWarningToContext(final MessageContext context, final MessageDescriptor warning) {\n        final MessageBuilder builder = new MessageBuilder()\n                .warning()\n                .code(warning.getCode())\n                .defaultText(warning.getDefaultMessage())\n                .args(warning.getParams());\n        context.addMessage(builder.build());\n    }\n\n    public void setCentralAuthenticationService(final CentralAuthenticationService centralAuthenticationService) {\n        this.centralAuthenticationService = centralAuthenticationService;\n    }\n\n    public void setWarnCookieGenerator(final CookieGenerator warnCookieGenerator) {\n        this.warnCookieGenerator = warnCookieGenerator;\n    }\n\n    public void setAuthenticationSystemSupport(final AuthenticationSystemSupport authenticationSystemSupport) {\n        this.authenticationSystemSupport = authenticationSystemSupport;\n    }\n}\n"
  },
  {
    "path": "src/taoshop-sso/src/main/resources/application.properties",
    "content": "#CASַ\ncas.server.host.url=http://localhost:8082/\n#CAS¼ַ\ncas.server.host.login_url=${cas.server.host.url}/login\n#CASǳַ\ncas.server.host.logout_url=${cas.server.host.url}/logout?service=${app.server.host.url}\n#Ӧ÷ʵַ\napp.server.host.url=http://localhost:8080\n#Ӧõ¼ַ\napp.login.url=/login\n#Ӧõǳַ\napp.logout.url=/logout"
  },
  {
    "path": "src/taoshop-sso/src/main/resources/application.yml",
    "content": "server:\n  port: 8082\n\nspring:\n  datasource:\n\n    # 主数据源\n    shop:\n      url: jdbc:mysql://127.0.0.1:3306/taoshop?autoReconnect=true&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false\n      username: root\n      password: root\n\n    driver-class-name: com.mysql.jdbc.Driver\n    type: com.alibaba.druid.pool.DruidDataSource\n\n    # 连接池设置\n    druid:\n      initial-size: 5\n      min-idle: 5\n      max-active: 20\n      # 配置获取连接等待超时的时间\n      max-wait: 60000\n      # 配置间隔多久才进行一次检测，检测需要关闭的空闲连接，单位是毫秒\n      time-between-eviction-runs-millis: 60000\n      # 配置一个连接在池中最小生存的时间，单位是毫秒\n      min-evictable-idle-time-millis: 300000\n      # Oracle请使用select 1 from dual\n      validation-query: SELECT 'x'\n      test-while-idle: true\n      test-on-borrow: false\n      test-on-return: false\n      # 打开PSCache，并且指定每个连接上PSCache的大小\n      pool-prepared-statements: true\n      max-pool-prepared-statement-per-connection-size: 20\n      # 配置监控统计拦截的filters，去掉后监控界面sql无法统计，'wall'用于防火墙\n      filters: stat,wall,slf4j\n      # 通过connectProperties属性来打开mergeSql功能；慢SQL记录\n      connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000\n      # 合并多个DruidDataSource的监控数据\n      use-global-data-source-stat: true\n\n#  jpa:\n#    database: mysql\n#    hibernate:\n#      show_sql: true\n#      format_sql: true\n#      ddl-auto: none\n#      naming:\n#        physical-strategy: org.hibernate.boot.entity.naming.PhysicalNamingStrategyStandardImpl\n\n#  mvc:\n#    view:\n#      prefix: /WEB-INF/jsp/\n#      suffix: .jsp\n\n  #添加Thymeleaf配置\n  thymeleaf:\n    cache: false\n    prefix: classpath:/templates/\n    suffix: .html\n    mode: HTML5\n    encoding: UTF-8\n    content-type: text/html\n\n  #Jedis配置\n#  jedis :\n#    pool :\n#      host : 127.0.0.1\n#      port : 6379\n#      password : redispassword\n#      timeout : 0\n#      config :\n#        maxTotal : 100\n#        maxIdle : 10\n#        maxWaitMillis : 100000\n\n\n\n"
  },
  {
    "path": "src/taoshop-sso/src/main/resources/services/Apereo-10000002.json",
    "content": "{\n  \"@class\" : \"org.jasig.cas.services.RegexRegisteredService\",\n  \"serviceId\" : \"^https://www.apereo.org\",\n  \"name\" : \"Apereo\",\n  \"theme\" : \"apereo\",\n  \"id\" : 10000002,\n  \"description\" : \"Apereo foundation sample service\",\n  \"proxyPolicy\" : {\n    \"@class\" : \"org.jasig.cas.services.RefuseRegisteredServiceProxyPolicy\"\n  },\n  \"evaluationOrder\" : 1,\n  \"usernameAttributeProvider\" : {\n    \"@class\" : \"org.jasig.cas.services.DefaultRegisteredServiceUsernameProvider\"\n  },\n  \"logoutType\" : \"BACK_CHANNEL\",\n  \"attributeReleasePolicy\" : {\n    \"@class\" : \"org.jasig.cas.services.ReturnAllowedAttributeReleasePolicy\",\n    \"principalAttributesRepository\" : {\n      \"@class\" : \"org.jasig.cas.authentication.principal.DefaultPrincipalAttributesRepository\"\n    },\n    \"authorizedToReleaseCredentialPassword\" : false,\n    \"authorizedToReleaseProxyGrantingTicket\" : false\n  },\n  \"accessStrategy\" : {\n    \"@class\" : \"org.jasig.cas.services.DefaultRegisteredServiceAccessStrategy\",\n    \"enabled\" : true,\n    \"ssoEnabled\" : true\n  }\n}"
  },
  {
    "path": "src/taoshop-sso/src/main/resources/services/HTTPSandIMAPS-10000001.json",
    "content": "{\n  \"@class\" : \"org.jasig.cas.services.RegexRegisteredService\",\n  \"serviceId\" : \"^(https|imaps|http)://.*\",\n  \"name\" : \"HTTPS and IMAPS\",\n  \"id\" : 10000001,\n  \"description\" : \"This service definition authorized all application urls that support HTTPS and IMAPS protocols.\",\n  \"proxyPolicy\" : {\n    \"@class\" : \"org.jasig.cas.services.RefuseRegisteredServiceProxyPolicy\"\n  },\n  \"evaluationOrder\" : 10000,\n  \"usernameAttributeProvider\" : {\n    \"@class\" : \"org.jasig.cas.services.DefaultRegisteredServiceUsernameProvider\"\n  },\n  \"logoutType\" : \"BACK_CHANNEL\",\n  \"attributeReleasePolicy\" : {\n    \"@class\" : \"org.jasig.cas.services.ReturnAllowedAttributeReleasePolicy\",\n    \"principalAttributesRepository\" : {\n      \"@class\" : \"org.jasig.cas.authentication.principal.DefaultPrincipalAttributesRepository\"\n    },\n    \"authorizedToReleaseCredentialPassword\" : false,\n    \"authorizedToReleaseProxyGrantingTicket\" : false\n  },\n  \"accessStrategy\" : {\n    \"@class\" : \"org.jasig.cas.services.DefaultRegisteredServiceAccessStrategy\",\n    \"enabled\" : true,\n    \"ssoEnabled\" : true\n  }\n}\n"
  },
  {
    "path": "src/taoshop-sso/src/main/webapp/WEB-INF/cas_dev.properties",
    "content": "#\n# Licensed to Apereo under one or more contributor license\n# agreements. See the NOTICE file distributed with this work\n# for additional information regarding copyright ownership.\n# Apereo licenses this file to you under the Apache License,\n# Version 2.0 (the \"License\"); you may not use this file\n# except in compliance with the License.  You may obtain a\n# copy of the License at the following location:\n#\n#   http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing,\n# software distributed under the License is distributed on an\n# \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n# KIND, either express or implied.  See the License for the\n# specific language governing permissions and limitations\n# under the License.\n#\n\nserver.name=http://localhost:8080\nserver.prefix=${server.name}/cas\n#是否校验验证码\nneed_authcode=0\n\n# security configuration based on IP address to access the /status and /statistics pages\ncas.securityContext.adminpages.ip=127\\.0\\.0\\.1\n\n##### mtds db config\nmtds.jdbc.jdbcUrl=jdbc:mysql://10.10.2.101:3306/mtds_platform\nmtds.jdbc.user=root\nmtds.jdbc.password=e0B+x/R0xkhr4YUcbvELRLyiQUOycZZyd1Fqw946h3tLFJq0wmpOnGz7Td4sz8q1zaWD6K+9gdGfIBFVwgoR5Q==\nmtds.jdbc.publickey=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKgOsU2fDix9GJQaVZ1kBQQqjlh4LBAGTg3m5H3sjQWvXROwe+6ONYA/UWta+mw/RIkfWFIf8QynAVHACvMas6MCAwEAAQ==\nmtds.jdbc.initialSize=10\nmtds.jdbc.minIdle=10\nmtds.jdbc.maxActive=50\n\n##### oa db config\noa.jdbc.jdbcUrl=jdbc:sqlserver://10.10.48.200:1433; DatabaseName=ocmap_hr\noa.jdbc.user=sa\noa.jdbc.password=do6xDeYncPx6wyr0I+ZAG1guTvZc03vpFXqrxXmXnr14e/wnqH47Q2tMmSdY23/vfEMd2ymb7lWPfyXmdo1bTQ==\noa.jdbc.publickey=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKZijIzzXp1dyksL1ZSejBmuVz1Y0vgiQVbcQ/13p4pwHRo8gU3pd6YaWutOlBTEWvHBbnGxIdnrhxnQZGwU1O0CAwEAAQ==\noa.jdbc.initialSize=10\noa.jdbc.minIdle=10\noa.jdbc.maxActive=50\n\n##\n# Unique CAS node name\n# host.name is used to generate unique Service Ticket IDs and SAMLArtifacts.  This is usually set to the specific\n# hostname of the machine running the CAS node, but it could be any label so long as it is unique in the cluster.\nhost.name=ssodev.oppein.com\n\n##redis registry config\nredis.hostName=127.0.0.1\nredis.database=0\nredis.password=2ImXkZHYsZkORpSbjAqcv\nredis.port=6379\n\n##\n# JPA Ticket Registry Database Configuration\n#\n# ticketreg.database.ddl.auto=create-drop\n# ticketreg.database.dialect=org.hibernate.dialect.OracleDialect|MySQLInnoDBDialect|HSQLDialect\n# ticketreg.database.batchSize=10\n# ticketreg.database.driverClass=org.hsqldb.jdbcDriver\n# ticketreg.database.url=jdbc:hsqldb:mem:cas-ticket-registry\n# ticketreg.database.user=sa\n# ticketreg.database.password=\n# ticketreg.database.pool.minSize=6\n# ticketreg.database.pool.maxSize=18\n# ticketreg.database.pool.maxWait=10000\n# ticketreg.database.pool.maxIdleTime=120\n# ticketreg.database.pool.acquireIncrement=6\n# ticketreg.database.pool.idleConnectionTestPeriod=30\n# ticketreg.database.pool.connectionHealthQuery=select 1\n# ticketreg.database.pool.acquireRetryAttempts=5\n# ticketreg.database.pool.acquireRetryDelay=2000\n# ticketreg.database.pool.connectionHealthQuery=select 1\n\n##\n# JPA Service Registry Database Configuration\n#\n# svcreg.database.ddl.auto=create-drop\n# svcreg.database.dialect=org.hibernate.dialect.OracleDialect|MySQLInnoDBDialect|HSQLDialect\n# svcreg.database.hibernate.batchSize=10\n# svcreg.database.driverClass=org.hsqldb.jdbcDriver\n# svcreg.database.url=jdbc:hsqldb:mem:cas-ticket-registry\n# svcreg.database.user=sa\n# svcreg.database.password=\n# svcreg.database.pool.minSize=6\n# svcreg.database.pool.maxSize=18\n# svcreg.database.pool.maxWait=10000\n# svcreg.database.pool.maxIdleTime=120\n# svcreg.database.pool.acquireIncrement=6\n# svcreg.database.pool.idleConnectionTestPeriod=30\n# svcreg.database.pool.connectionHealthQuery=select 1\n# svcreg.database.pool.acquireRetryAttempts=5\n# svcreg.database.pool.acquireRetryDelay=2000\n# svcreg.database.pool.connectionHealthQuery=select 1\n\n##\n# CAS SSO Cookie Generation & Security\n# See https://github.com/mitreid-connect/json-web-key-generator\n#\n# Do note that the following settings MUST be generated per deployment.\n#\n# The encryption secret key. By default, must be a octet string of size 256.\ntgc.encryption.key=DSi19FXiMznOlZvZRHsThtl-3FZzNKjQzbHt8QASI7Q\n\n# The signing secret key. By default, must be a octet string of size 512.\ntgc.signing.key=fOs-_ZjGNfcLsg8LWqkuHM6KccWlTsozxZZrwptqFMQAIvzqCD5lL9s4hvqDp5f-w1bpQM8IUAKEotw7jzhlvw\n\n# Decides whether SSO cookie should be created only under secure connections.\n# 标记是否只在https环境下生成tgc\ntgc.secure=false\n\n# The expiration value of the SSO cookie\ntgc.maxAge=-1\n\n# The name of the SSO cookie\ntgc.name=TGC\n\n# The path to which the SSO cookie will be scoped\ntgc.path=/cas\n\n# The expiration value of the SSO cookie for long-term authentications\ntgc.remember.me.maxAge=1209600\n\n# Decides whether SSO Warning cookie should be created only under secure connections.\nwarn.cookie.secure=true\n\n# The expiration value of the SSO Warning cookie\nwarn.cookie.maxAge=-1\n\n# The name of the SSO Warning cookie\nwarn.cookie.name=CASPRIVACY\n\n# The path to which the SSO Warning cookie will be scoped\nwarn.cookie.path=/cas\n\n# Whether we should track the most recent session by keeping the latest service ticket\ntgt.onlyTrackMostRecentSession = true\n\n##\n# CAS UI Theme Resolution\n#\n# cas.themeResolver.defaultThemeName=cas-theme-default\n# cas.themeResolver.pathprefix=/WEB-INF/view/jsp/\n# cas.themeResolver.param.name=theme\n# Location of the Spring xml config file where views may be collected\n# cas.viewResolver.xmlFile=/META-INF/spring/views.xml\n\n##\n# CAS Logout Behavior\n# WEB-INF/cas-servlet.xml\n#\n# Specify whether CAS should redirect to the specified service parameter on /logout requests\n# 目前配置的service的格式是必须是https\ncas.logout.followServiceRedirects=true\n\n##\n# CAS Cached Attributes Timeouts\n# Controls the cached attribute expiration policy\n#\n# Notes the duration in which attributes will be kept alive\n# cas.attrs.timeToExpireInHours=2\n\n##\n# Single Sign-On Session\n#\n# Indicates whether an SSO session should be created for renewed authentication requests.\ncreate.sso.renewed.authn=true\n#\n# Indicates whether an SSO session can be created if no service is present.\n# create.sso.missing.service=true\n\n##\n# CAS Authentication Policy\n#\n# cas.authn.policy.any.tryall=false\n# cas.authn.policy.req.tryall=false\n# cas.authn.policy.req.handlername=handlerName\n\n##\n# CAS PersonDirectory Principal Resolution\n#\n# cas.principal.resolver.persondir.principal.attribute=cn\n# cas.principal.resolver.persondir.return.null=false\n\n##\n# CAS Internationalization\n#\nlocale.default=zh_CN\nlocale.param.name=locale\nmessage.bundle.encoding=UTF-8\nmessage.bundle.cacheseconds=180\nmessage.bundle.fallback.systemlocale=false\nmessage.bundle.usecode.message=true\nmessage.bundle.basenames=WEB-INF/locale/messages\n\n##\n# CAS Authentication Throttling\n#\n#cas.throttle.failure.threshold=\n#cas.throttle.failure.range.seconds=\n#cas.throttle.username.parameter=\n#cas.throttle.appcode=\n#cas.throttle.authn.failurecode=\n#cas.throttle.audit.query=\n\n##\n# CAS Health Monitoring\n#\n# cas.monitor.st.warn.threshold=5000\n# cas.monitor.tgt.warn.threshold=10000\n# cas.monitor.free.mem.threshold=10\n\n##\n# CAS MongoDB Service Registry\n#\n# mongodb.host=mongodb database url\n# mongodb.port=mongodb database port\n# mongodb.userId=mongodb userid to bind\n# mongodb.userPassword=mongodb password to bind\n# cas.service.registry.mongo.db=Collection name to store service definitions\n# mongodb.timeout=5000\n\n##\n# Spring Webflow Web Application Session\n# Define the settings that are required to encrypt and persist the CAS web application session.\n# See the cas-servlet.xml file to understand how these properties are used.\n#\n# The encryption secret key. By default, must be a octet string of size 256.\nwebflow.encryption.key=DsCqdpcudQPzsdHz\n\n# The signing secret key. By default, must be a octet string of size 512.\nwebflow.signing.key=U2ImXkZHYsZkORpSbjAqcvW3_gzz9oOUg6q2SWMz3Sr4Sf6NIVoNfQ97rqdhmtSZH6elMl8YgaoZrdiRWiybGw\n\n##\n# Remote User Authentication\n#\n# ip.address.range=\n\n##\n# Apache Shiro Authentication\n#\n# shiro.authn.requiredRoles=\n# shiro.authn.requiredPermissions=\n# shiro.authn.config.file=classpath:shiro.ini\n\n##\n# YubiKey Authentication\n#\n# yubikey.client.id=\n# yubikey.secret.key=\n\n##\n# JDBC Authentication\n#\n# cas.jdbc.authn.query.encode.sql=\n# cas.jdbc.authn.query.encode.alg=\n# cas.jdbc.authn.query.encode.salt.static=\n# cas.jdbc.authn.query.encode.password=\n# cas.jdbc.authn.query.encode.salt=\n# cas.jdbc.authn.query.encode.iterations.field=\n# cas.jdbc.authn.query.encode.iterations=\n\n# cas.jdbc.authn.query.sql=\n\n# cas.jdbc.authn.search.password=\n# cas.jdbc.authn.search.user=\n# cas.jdbc.authn.search.table=\n\n##\n# Duo security 2fa authentication provider\n# https://www.duosecurity.com/docs/duoweb#1.-generate-an-akey\n#\n# cas.duo.api.host=\n# cas.duo.integration.key=\n# cas.duo.secret.key=\n# cas.duo.application.key=\n\n##\n# File Authentication\n#\n# file.authn.filename=classpath:people.txt\n# file.authn.separator=::\n\n##\n# General Authentication\n#\n# cas.principal.transform.upperCase=false\n# cas.authn.password.encoding.char=UTF-8\n# cas.authn.password.encoding.alg=SHA-256\n# cas.principal.transform.prefix=\n# cas.principal.transform.suffix=\n\n##\n# X509 Authentication\n#\n# cas.x509.authn.crl.checkAll=false\n# cas.x509.authn.crl.throw.failure=true\n# cas.x509.authn.crl.refresh.interval=\n# cas.x509.authn.revocation.policy.threshold=\n# cas.x509.authn.trusted.issuer.dnpattern=\n# cas.x509.authn.max.path.length=\n# cas.x509.authn.max.path.length.unspecified=\n# cas.x509.authn.check.key.usage=\n# cas.x509.authn.require.key.usage=\n# cas.x509.authn.subject.dnpattern=\n# cas.x509.authn.principal.descriptor=\n# cas.x509.authn.principal.serial.no.prefix=\n# cas.x509.authn.principal.value.delim=\n\n##\n# Accepted Users Authentication\n#\n#accept.authn.users=casuser::Mellon\n\n##\n# Rejected Users Authentication\n#\n# reject.authn.users=\n\n##\n# JAAS Authentication\n#\n# cas.authn.jaas.realm=CAS\n# cas.authn.jaas.kerb.realm=\n# cas.authn.jaas.kerb.kdc=\n\n##\n# Single Sign-On Session TGT Timeouts\n#\n# Inactivity Timeout Policy\ntgt.timeout.maxTimeToLiveInSeconds=28800\n\n# Hard Timeout Policy\n# tgt.timeout.hard.maxTimeToLiveInSeconds\n#\n# Throttled Timeout Policy\n# tgt.throttled.maxTimeToLiveInSeconds=28800\n# tgt.throttled.timeInBetweenUsesInSeconds=5\n\n# Default Expiration Policy\ntgt.maxTimeToLiveInSeconds=28800\ntgt.timeToKillInSeconds=7200\n\n##\n# Service Ticket Timeout\n#\nst.timeToKillInSeconds=50\n# st.numberOfUses=1\n\n##\n# Http Client Settings\n#\n# The http client read timeout in milliseconds\n# http.client.read.timeout=50000\n\n# The http client connection timeout in milliseconds\n# http.client.connection.timeout=50000\n#\n# The http client truststore file, in addition to the default's\nhttp.client.truststore.file=_.oppein.com.jks\n#\n# The http client truststore's password\nhttp.client.truststore.psw=OP20170103op2017\n\n##\n# Single Logout Out Callbacks\n#\n# To turn off all back channel SLO requests set this to true\n# slo.callbacks.disabled=false\n#\n# To send callbacks to endpoints synchronously, set this to false\n# slo.callbacks.asynchronous=true\n\n##\n# CAS Protocol Security Filter\n#\n# Are multi-valued parameters accepted?\n# cas.http.allow.multivalue.params=false\n\n# Define the list of request parameters to examine for sanity\n# cas.http.check.params=ticket,service,renew,gateway,warn,target,SAMLart,pgtUrl,pgt,pgtId,pgtIou,targetService\n\n# Define the list of request parameters only allowed via POST\n# cas.http.allow.post.params=username,password\n\n##\n# JSON Service Registry\n#\n# Directory location where JSON service files may be found.\nservice.registry.config.location=WEB-INF/services\n\n##\n# Service Registry Periodic Reloading Scheduler\n# Default sourced from WEB-INF/spring-configuration/applicationContext.xml\n#\n# Force a startup delay of 2 minutes.\n# service.registry.quartz.reloader.startDelay=120000\n#\n# Reload services every 2 minutes\n# service.registry.quartz.reloader.repeatInterval=120000\n\n##\n# Background Scheduler\n#\n# Wait for scheduler to finish running before shutting down CAS.\n# scheduler.shutdown.wait=true\n#\n# Attempt to interrupt background jobs when shutting down CAS\n# scheduler.shutdown.interruptJobs=true\n\n##\n# Audits\n#\n# Use single line format for audit blocks\n#cas.audit.singleline=true\n# Separator to use between each fields in a single audit event\n#cas.audit.singleline.separator=|\n# Application code for audits\n#cas.audit.appcode=oppein_sso\n#\n## JDBC Audits\n#\n#cas.audit.max.agedays=\n#cas.audit.database.dialect=\n#cas.audit.database.batchSize=\n#cas.audit.database.ddl.auto=\n#cas.audit.database.gen.ddl=\n#cas.audit.database.show.sql=\n#cas.audit.database.driverClass=\n#cas.audit.database.url=\n#cas.audit.database.user=\n#cas.audit.database.password=\n#cas.audit.database.pool.minSize=\n#cas.audit.database.pool.minSize=\n#cas.audit.database.pool.maxSize=\n#cas.audit.database.pool.maxIdleTime=\n#cas.audit.database.pool.maxWait=\n#cas.audit.database.pool.acquireIncrement=\n#cas.audit.database.pool.acquireRetryAttempts=\n#cas.audit.database.pool.acquireRetryDelay=\n#cas.audit.database.pool.idleConnectionTestPeriod=\n#cas.audit.database.pool.connectionHealthQuery=\n\n##\n# Metrics\n# Default sourced from WEB-INF/spring-configuration/metricsConfiguration.xml:\n#\n# Define how often should metric data be reported. Default is 30 seconds.\n# metrics.refresh.internal=30s\n\n##\n# Encoding\n#\n# Set the encoding to use for requests. Default is UTF-8\n# httprequest.web.encoding=UTF-8\n\n# Default is true. Switch this to \"false\" to not enforce the specified encoding in any case,\n# applying it as default response encoding as well.\n# httprequest.web.encoding.force=true\n\n##\n# Response Headers\n#\n# httpresponse.header.cache=false\n# httpresponse.header.hsts=false\n# httpresponse.header.xframe=false\n# httpresponse.header.xcontent=false\n# httpresponse.header.xss=false\n\n##\n# SAML\n#\n# Indicates the SAML response issuer\n# cas.saml.response.issuer=localhost\n#\n# Indicates the skew allowance which controls the issue instant of the SAML response\n# cas.saml.response.skewAllowance=0\n#\n# Indicates whether SAML ticket id generation should be saml2-compliant.\n# cas.saml.ticketid.saml2=false\n\n##\n# Default Ticket Registry\n#\n# default.ticket.registry.initialcapacity=1000\n# default.ticket.registry.loadfactor=1\n# default.ticket.registry.concurrency=20\n\n##\n# Ticket Registry Cleaner\n#\n# Indicates how frequently the Ticket Registry cleaner should run. Configured in seconds.\n# startdelay设置为0就不会启动cleaner，因为需要使用redis默认的超时管理，所以不需要使用cas的cleaner\nticket.registry.cleaner.startdelay=0\nticket.registry.cleaner.repeatinterval=0\n\n##\n# Ticket ID Generation\n#\n# lt.ticket.maxlength=20\n# st.ticket.maxlength=20\n# tgt.ticket.maxlength=50\n# pgt.ticket.maxlength=50\n\n##\n# Google Apps public/private key\n#\n# cas.saml.googleapps.publickey.file=file:/etc/cas/public.key\n# cas.saml.googleapps.privatekey.file=file:/etc/cas/private.p8\n# cas.saml.googleapps.key.alg=RSA\n\n##\n# WS-FED\n#\n# The claim from ADFS that should be used as the user's identifier.\n# cas.wsfed.idp.idattribute=upn\n#\n# Federation Service identifier\n# cas.wsfed.idp.id=https://adfs.example.org/adfs/services/trust\n#\n# The ADFS login url.\n# cas.wsfed.idp.url=https://adfs.example.org/adfs/ls/\n#\n# Identifies resource(s) that point to ADFS's signing certificates.\n# These are used verify the WS Federation token that is returned by ADFS.\n# Multiple certificates may be separated by comma.\n# cas.wsfed.idp.signingcerts=classpath:adfs-signing.crt\n#\n# Unique identifier that will be set in the ADFS configuration.\n# cas.wsfed.rp.id=urn:cas:localhost\n#\n# Slack dealing with time-drift between the ADFS Server and the CAS Server.\n# cas.wsfed.idp.tolerance=10000\n#\n# Decides which bundle of attributes should be resolved during WS-FED authentication.\n# cas.wsfed.idp.attribute.resolver.enabled=true\n# cas.wsfed.idp.attribute.resolver.type=WSFED\n\n##\n# LDAP User Details\n#\n# ldap.userdetails.service.user.attr=\n# ldap.userdetails.service.role.attr=\n\n##\n# Password Policy\n#\n# Warn all users of expiration date regardless of warningDays value.\n# password.policy.warnAll=false\n\n# Threshold number of days to begin displaying password expiration warnings.\n# password.policy.warningDays=30\n\n# URL to which the user will be redirected to change the password.\n# password.policy.url=https://password.example.edu/change\n\n# password.policy.warn.attribute.name=attributeName\n# password.policy.warn.attribute.value=attributeValue\n# password.policy.warn.display.matched=true\n\n##\n# CAS REST API Services\n#\n# cas.rest.services.attributename=\n# cas.rest.services.attributevalue=\n\n##\n# Ticket Registry\n#\n# Secret key to use when encrypting tickets in a distributed ticket registry.\n# ticket.encryption.secretkey=C@$W3bSecretKey!\n\n# Seed to use when encrypting tickets in a distributed ticket registry.\n# ticket.encryption.seed=S!ngl3$ign0n4W3b\n\n# Secret key to use when signing tickets in a distributed ticket registry.\n# By default, must be a octet string of size 512.\n# ticket.signing.secretkey=szxK-5_eJjs-aUj-64MpUZ-GPPzGLhYPLGl0wrYjYNVAGva2P0lLe6UGKGM7k8dWxsOVGutZWgvmY3l5oVPO3w\n# Secret key algorithm used\n# ticket.secretkey.alg=AES\n\n##\n# Hazelcast Ticket Registry\n#\n# hz.config.location=file:/etc/cas/hazelcast.xml\n# hz.mapname=tickets\n# hz.cluster.logging.type=slf4j\n# hz.cluster.portAutoIncrement=true\n# hz.cluster.port=5701\n# hz.cluster.multicast.enabled=false\n# hz.cluster.members=cas1.example.com,cas2.example.com\n# hz.cluster.tcpip.enabled=true\n# hz.cluster.multicast.enabled=false\n# hz.cluster.max.heapsize.percentage=85\n# hz.cluster.max.heartbeat.seconds=5\n# hz.cluster.eviction.percentage=10\n# hz.cluster.eviction.policy=LRU\n# hz.cluster.instance.name=${host.name}\n\n##\n# Ehcache Ticket Registry\n#\n# ehcache.config.file=classpath:ehcache-replicated.xml\n# ehcache.cachemanager.shared=false\n# ehcache.cachemanager.name=ticketRegistryCacheManager\n# ehcache.disk.expiry.interval.seconds=0\n# ehcache.disk.persistent=false\n# ehcache.eternal=false\n# ehcache.max.elements.memory=10000\n# ehcache.max.elements.disk=0\n# ehcache.eviction.policy=LRU\n# ehcache.overflow.disk=false\n# ehcache.cache.st.name=org.jasig.cas.ticket.ServiceTicket\n# ehcache.cache.st.timeIdle=0\n# ehcache.cache.st.timeAlive=300\n# ehcache.cache.tgt.name=org.jasig.cas.ticket.TicketGrantingTicket\n# ehcache.cache.tgt.timeIdle=7201\n# ehcache.cache.tgt.timeAlive=0\n# ehcache.cache.loader.async=true\n# ehcache.cache.loader.chunksize=5000000\n# ehcache.repl.async.interval=10000\n# ehcache.repl.async.batch.size=100\n# ehcache.repl.sync.puts=true\n# ehcache.repl.sync.putscopy=true\n# ehcache.repl.sync.updates=true\n# ehcache.repl.sync.updatesCopy=true\n# ehcache.repl.sync.removals=true\n\n##\n# Ehcache Monitoring\n#\n# cache.monitor.warn.free.threshold=10\n# cache.monitor.eviction.threshold=0\n\n##\n# Memcached Ticket Registry\n#\n# memcached.servers=localhost:11211\n# memcached.hashAlgorithm=FNV1_64_HASH\n# memcached.protocol=BINARY\n# memcached.locatorType=ARRAY_MOD\n# memcached.failureMode=Redistribute\n\n##\n# Memcached Monitoring\n#\n# cache.monitor.warn.free.threshold=10\n# cache.monitor.eviction.threshold=0\n\n##\n# RADIUS Authentication Server\n#\n# cas.radius.client.inetaddr=localhost\n# cas.radius.client.port.acct=\n# cas.radius.client.socket.timeout=60\n# cas.radius.client.port.authn=\n# cas.radius.client.sharedsecret=N0Sh@ar3d$ecReT\n# cas.radius.server.protocol=EAP_MSCHAPv2\n# cas.radius.server.retries=3\n# cas.radius.server.nasIdentifier=-1\n# cas.radius.server.nasPort=-1\n# cas.radius.server.nasPortId=-1\n# cas.radius.server.nasRealPort=-1\n# cas.radius.server.nasPortType=-1\n# cas.radius.server.nasIpAddress=\n# cas.radius.server.nasIpv6Address=\n# cas.radius.failover.authn=false\n# cas.radius.failover.exception=false\n\n##\n# SPNEGO Authentication\n#\n# cas.spnego.ldap.attribute=spnegoattribute\n# cas.spnego.ldap.filter=host={0}\n# cas.spnego.ldap.basedn=\n# cas.spnego.hostname.pattern=.+\n# cas.spnego.ip.pattern=\n# cas.spnego.alt.remote.host.attribute\n# cas.spengo.use.principal.domain=false\n# cas.spnego.ntlm.allowed=true\n# cas.spnego.kerb.debug=false\n# cas.spnego.kerb.realm=EXAMPLE.COM\n# cas.spnego.kerb.kdc=172.10.1.10\n# cas.spnego.login.conf.file=/path/to/login\n# cas.spnego.jcifs.domain=\n# cas.spnego.jcifs.domaincontroller=\n# cas.spnego.jcifs.netbios.cache.policy:600\n# cas.spnego.jcifs.netbios.wins=\n# cas.spnego.jcifs.password=\n# cas.spnego.jcifs.service.password=\n# cas.spnego.jcifs.socket.timeout:300000\n# cas.spnego.jcifs.username=\n# cas.spnego.kerb.conf=\n# cas.spnego.ntlm=false\n# cas.spnego.supportedBrowsers=MSIE,Trident,Firefox,AppleWebKit\n# cas.spnego.mixed.mode.authn=false\n# cas.spnego.send.401.authn.failure=false\n# cas.spnego.principal.resolver.transform=NONE\n# cas.spnego.service.principal=HTTP/cas.example.com@EXAMPLE.COM\n\n##\n# NTLM Authentication\n#\n# ntlm.authn.domain.controller=\n# ntlm.authn.include.pattern=\n# ntlm.authn.load.balance=true\n\n##\n# Authentication delegation using pac4j\n#\n# cas.pac4j.client.authn.typedidused=true\n# cas.pac4j.facebook.id=\n# cas.pac4j.facebook.secret=\n# cas.pac4j.facebook.scope=\n# cas.pac4j.facebook.fields=\n# cas.pac4j.twitter.id=\n# cas.pac4j.twitter.secret=\n# cas.pac4j.saml.keystorePassword=\n# cas.pac4j.saml.privateKeyPassword=\n# cas.pac4j.saml.keystorePath=\n# cas.pac4j.saml.identityProviderMetadataPath=\n# cas.pac4j.saml.maximumAuthenticationLifetime=\n# cas.pac4j.saml.serviceProviderEntityId=\n# cas.pac4j.saml.serviceProviderMetadataPath=\n# cas.pac4j.cas.loginUrl=\n# cas.pac4j.cas.protocol=\n# cas.pac4j.oidc.id=\n# cas.pac4j.oidc.secret=\n# cas.pac4j.oidc.discoveryUri=\n# cas.pac4j.oidc.useNonce=\n# cas.pac4j.oidc.preferredJwsAlgorithm=\n# cas.pac4j.oidc.maxClockSkew=\n# cas.pac4j.oidc.customParamKey1=\n# cas.pac4j.oidc.customParamValue1=\n# cas.pac4j.oidc.customParamKey2=\n# cas.pac4j.oidc.customParamValue2="
  },
  {
    "path": "src/taoshop-sso/src/main/webapp/WEB-INF/index.jsp",
    "content": "<html>\n<body>\n<h2>Hello World!</h2>\n</body>\n</html>\n"
  },
  {
    "path": "src/taoshop-sso/src/main/webapp/WEB-INF/spring-configuration/propertyFileConfigurer.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xmlns:context=\"http://www.springframework.org/schema/context\"\n       xmlns:util=\"http://www.springframework.org/schema/util\"\n       xmlns=\"http://www.springframework.org/schema/beans\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd\n       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd\n       http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd\">\n    <description>\n        This file lets CAS know where you've stored the cas.properties file which details some of the configuration\n        options\n        that are specific to your environment. You can specify the location of the file here. You may wish to place the\n        file outside\n        of the Servlet context if you have options that are specific to a tier (i.e. test vs. production) so that the\n        WAR file\n        can be moved between tiers without modification.\n    </description>\n\n    <util:properties id=\"casProperties\" location=\"cas_${config_env}.properties\"/>\n\n    <context:property-placeholder properties-ref=\"casProperties\"/>\n\n</beans>\n"
  },
  {
    "path": "src/taoshop-sso/src/main/webapp/WEB-INF/view/jsp/authorizationFailure.jsp",
    "content": "<jsp:directive.include file=\"/WEB-INF/view/jsp/default/ui/includes/top.jsp\" />\n\n<%@ page isErrorPage=\"true\" %>\n<%@ page import=\"org.jasig.cas.web.support.WebUtils\"%>\n\n<div id=\"msg\" class=\"errors\">\n    <h2>${pageContext.errorData.statusCode} - <spring:message code=\"screen.blocked.header\" /></h2>\n\n    <%\n        Object casAcessDeniedKey = request.getAttribute(WebUtils.CAS_ACCESS_DENIED_REASON);\n        request.setAttribute(\"casAcessDeniedKey\", casAcessDeniedKey);\n\n    %>\n\n    <c:choose>\n        <c:when test=\"${not empty casAcessDeniedKey}\">\n            <p><spring:message code=\"${casAcessDeniedKey}\" /></p>\n        </c:when>\n    </c:choose>\n    <p><%=request.getAttribute(\"javax.servlet.error.message\")%></p>\n    <p><spring:message code=\"AbstractAccessDecisionManager.accessDenied\"/></p>\n</div>\n<jsp:directive.include file=\"/WEB-INF/view/jsp/default/ui/includes/bottom.jsp\" />\n"
  },
  {
    "path": "src/taoshop-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casAcceptableUsagePolicyView.jsp",
    "content": "<jsp:directive.include file=\"includes/top.jsp\" />\n<div id=\"login\" style=\"width: 100%;\">\n    <form:form method=\"post\" id=\"fm1\" htmlEscape=\"true\">\n\n        <h2>Acceptable Usage Policy</h2>\n        <div>\n            The purpose of this policy is to establish acceptable and unacceptable use of electronic devices and network resources in conjunction with the established culture of ethical and lawful behavior, openness, trust, and integrity.\n\n            <p>\n                By using these resources, you agree to abide by the Acceptable Usage Policy.\n            </p>\n\n            <p>Click '<spring:message code=\"screen.aup.button.accept\" />' to continue. Otherwise, click '<spring:message code=\"screen.aup.button.cancel\" />'.</p>\n        </div>\n\n        <section class=\"row btn-row\">\n            <input type=\"hidden\" name=\"execution\" value=\"${flowExecutionKey}\" />\n            <input type=\"hidden\" name=\"_eventId\" value=\"submit\" />\n            <input class=\"btn-submit\" name=\"submit\" accesskey=\"s\" value=\"<spring:message code=\"screen.aup.button.accept\" />\"  type=\"submit\" />\n            <input class=\"btn-reset\" name=\"cancel\" accesskey=\"c\"\n                   value=\"<spring:message code=\"screen.aup.button.cancel\" />\" type=\"button\"\n                   onclick=\"location.href = location.href;\" />\n        </section>\n    </form:form>\n</div>\n<jsp:directive.include file=\"includes/bottom.jsp\" />\n"
  },
  {
    "path": "src/taoshop-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casAccountDisabledView.jsp",
    "content": "<jsp:directive.include file=\"includes/top.jsp\" />\n  <div id=\"msg\" class=\"errors\">\n    <h2><spring:message code=\"screen.accountdisabled.heading\" /></h2>\n    <p><spring:message code=\"screen.accountdisabled.message\" /></p>\n  </div>\n<jsp:directive.include file=\"includes/bottom.jsp\" />\n"
  },
  {
    "path": "src/taoshop-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casAccountLockedView.jsp",
    "content": "<jsp:directive.include file=\"includes/top.jsp\" />\n  <div id=\"msg\" class=\"errors\">\n    <h2><spring:message code=\"screen.accountlocked.heading\" /></h2>\n    <p><spring:message code=\"screen.accountlocked.message\" /></p>\n  </div>\n<jsp:directive.include file=\"includes/bottom.jsp\" />\n"
  },
  {
    "path": "src/taoshop-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casBadHoursView.jsp",
    "content": "<jsp:directive.include file=\"includes/top.jsp\" />\n  <div id=\"msg\" class=\"errors\">\n    <h2><spring:message code=\"screen.badhours.heading\" /></h2>\n    <p><spring:message code=\"screen.badhours.message\" /></p>\n  </div>\n<jsp:directive.include file=\"includes/bottom.jsp\" />\n"
  },
  {
    "path": "src/taoshop-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casBadWorkstationView.jsp",
    "content": "<jsp:directive.include file=\"includes/top.jsp\" />\n  <div id=\"msg\" class=\"errors\">\n    <h2><spring:message code=\"screen.badworkstation.heading\" /></h2>\n    <p><spring:message code=\"screen.badworkstation.message\" /></p>\n  </div>\n<jsp:directive.include file=\"includes/bottom.jsp\" />\n"
  },
  {
    "path": "src/taoshop-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casConfirmView.jsp",
    "content": "<jsp:directive.include file=\"includes/top.jsp\" />\n  <div id=\"msg\" class=\"info\">\n    <p><spring:message code=\"screen.confirmation.message\" arguments=\"${fn:escapeXml(param.service)}${fn:indexOf(param.service, '?') eq -1 ? '?' : '&'}ticket=${serviceTicketId}\" /></p>\n  </div>\n<jsp:directive.include file=\"includes/bottom.jsp\" />"
  },
  {
    "path": "src/taoshop-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casExpiredPassView.jsp",
    "content": "<jsp:directive.include file=\"includes/top.jsp\" />\n  <div id=\"msg\" class=\"errors\">\n    <h2><spring:message code=\"screen.expiredpass.heading\" /></h2>\n    <p><spring:message code=\"screen.expiredpass.message\" arguments=\"${passwordPolicyUrl}\" /></p>\n  </div>\n<jsp:directive.include file=\"includes/bottom.jsp\" />\n"
  },
  {
    "path": "src/taoshop-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casGenericSuccessView.jsp",
    "content": "<jsp:directive.include file=\"includes/top.jsp\" />\n  <div id=\"msg\" class=\"success\">\n    <h2><spring:message code=\"screen.success.header\" /></h2>\n    <p><spring:message code=\"screen.success.success\" arguments=\"${principal.id}\"/></p>\n    <p><spring:message code=\"screen.success.security\" /></p>\n  </div>\n<jsp:directive.include file=\"includes/bottom.jsp\" />\n\n"
  },
  {
    "path": "src/taoshop-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casLoginMessageView.jsp",
    "content": "<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<jsp:directive.include file=\"includes/top.jsp\" />\n\n<div id=\"msg\" class=\"warn\">\n  <h2>Authentication Succeeded with Warnings</h2>\n\n<c:forEach items=\"${messages}\" var=\"message\">\n  <p class=\"message\">${message.text}</p>\n</c:forEach>\n\n</div>\n\n<c:url value=\"login\" var=\"url\">\n  <c:param name=\"execution\" value=\"${flowExecutionKey}\" />\n  <c:param name=\"_eventId\" value=\"proceed\" />\n</c:url>\n\n<div id=\"big-buttons\">\n <a class=\"button\" href=\"${url}\">Continue</a>\n</div>\n\n<jsp:directive.include file=\"includes/bottom.jsp\" />\n"
  },
  {
    "path": "src/taoshop-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casLoginView.jsp",
    "content": "<jsp:directive.include file=\"includes/top.jsp\" />\n\n\n<%--    登录页面屏蔽CAS安全提示\n<c:if test=\"${not pageContext.request.secure}\">\n    <div id=\"msg\" class=\"errors\">\n        <h2><spring:message code=\"screen.nonsecure.title\" /></h2>\n        <p><spring:message code=\"screen.nonsecure.message\" /></p>\n    </div>\n</c:if>--%>\n\n<div id=\"cookiesDisabled\" class=\"errors\" style=\"display:none;\">\n    <h2><spring:message code=\"screen.cookies.disabled.title\" /></h2>\n    <p><spring:message code=\"screen.cookies.disabled.message\" /></p>\n</div>\n\n\n<c:if test=\"${not empty registeredService}\">\n    <c:set var=\"registeredServiceLogo\" value=\"images/webapp.png\"/>\n    <c:set var=\"registeredServiceName\" value=\"${registeredService.name}\"/>\n    <c:set var=\"registeredServiceDescription\" value=\"${registeredService.description}\"/>\n\n    <c:choose>\n        <c:when test=\"${not empty mduiContext}\">\n            <c:if test=\"${not empty mduiContext.logoUrl}\">\n                <c:set var=\"registeredServiceLogo\" value=\"${mduiContext.logoUrl}\"/>\n            </c:if>\n            <c:set var=\"registeredServiceName\" value=\"${mduiContext.displayName}\"/>\n            <c:set var=\"registeredServiceDescription\" value=\"${mduiContext.description}\"/>\n        </c:when>\n        <c:when test=\"${not empty registeredService.logo}\">\n            <c:set var=\"registeredServiceLogo\" value=\"${registeredService.logo}\"/>\n        </c:when>\n    </c:choose>\n\n    <div id=\"serviceui\" class=\"serviceinfo\">\n        <table>\n            <tr>\n                <td><img src=\"${registeredServiceLogo}\"></td>\n                <td id=\"servicedesc\">\n                    <h1>${fn:escapeXml(registeredServiceName)}</h1>\n                    <p>${fn:escapeXml(registeredServiceDescription)}</p>\n                </td>\n            </tr>\n        </table>\n    </div>\n    <p/>\n</c:if>\n\n<div class=\"box\" id=\"login\">\n    <form:form method=\"post\" id=\"fm1\" commandName=\"${commandName}\" htmlEscape=\"true\">\n\n        <form:errors path=\"*\" id=\"msg\" cssClass=\"errors\" element=\"div\" htmlEscape=\"false\" />\n\n        <h2><spring:message code=\"screen.welcome.instructions\" /></h2>\n\n        <section class=\"row\">\n            <label for=\"username\"><spring:message code=\"screen.welcome.label.netid\" /></label>\n            <c:choose>\n                <c:when test=\"${not empty sessionScope.openIdLocalId}\">\n                    <strong><c:out value=\"${sessionScope.openIdLocalId}\" /></strong>\n                    <input type=\"hidden\" id=\"username\" name=\"username\" value=\"<c:out value=\"${sessionScope.openIdLocalId}\" />\" />\n                </c:when>\n                <c:otherwise>\n                    <spring:message code=\"screen.welcome.label.netid.accesskey\" var=\"userNameAccessKey\" />\n                    <form:input cssClass=\"required\" cssErrorClass=\"error\" id=\"username\" size=\"25\" tabindex=\"1\" accesskey=\"${userNameAccessKey}\" path=\"username\" autocomplete=\"off\" htmlEscape=\"true\" />\n                </c:otherwise>\n            </c:choose>\n        </section>\n\n        <section class=\"row\">\n            <label for=\"password\"><spring:message code=\"screen.welcome.label.password\" /></label>\n                <%--\n                NOTE: Certain browsers will offer the option of caching passwords for a user.  There is a non-standard attribute,\n                \"autocomplete\" that when set to \"off\" will tell certain browsers not to prompt to cache credentials.  For more\n                information, see the following web page:\n                http://www.technofundo.com/tech/web/ie_autocomplete.html\n                --%>\n            <spring:message code=\"screen.welcome.label.password.accesskey\" var=\"passwordAccessKey\" />\n            <form:password cssClass=\"required\" cssErrorClass=\"error\" id=\"password\" size=\"25\" tabindex=\"2\" path=\"password\"  accesskey=\"${passwordAccessKey}\" htmlEscape=\"true\" autocomplete=\"off\" />\n            <span id=\"capslock-on\" style=\"display:none;\"><p><img src=\"images/warning.png\" valign=\"top\"> <spring:message code=\"screen.capslock.on\" /></p></span>\n        </section>\n\n        <!--\n        <section class=\"row check\">\n            <p>\n                <input id=\"warn\" name=\"warn\" value=\"true\" tabindex=\"3\" accesskey=\"<spring:message code=\"screen.welcome.label.warn.accesskey\" />\" type=\"checkbox\" />\n                <label for=\"warn\"><spring:message code=\"screen.welcome.label.warn\" /></label>\n                <br/>\n                <input id=\"publicWorkstation\" name=\"publicWorkstation\" value=\"false\" tabindex=\"4\" type=\"checkbox\" />\n                <label for=\"publicWorkstation\"><spring:message code=\"screen.welcome.label.publicstation\" /></label>\n                <br/>\n                <input type=\"checkbox\" name=\"rememberMe\" id=\"rememberMe\" value=\"true\" tabindex=\"5\"  />\n                <label for=\"rememberMe\"><spring:message code=\"screen.rememberme.checkbox.title\" /></label>\n            </p>\n        </section>\n        -->\n\n        <section class=\"row btn-row\">\n           \n            <input type=\"hidden\" name=\"execution\" value=\"${flowExecutionKey}\" />\n            <input type=\"hidden\" name=\"_eventId\" value=\"submit\" />\n\n            <input class=\"btn-submit\" name=\"submit\" accesskey=\"l\" value=\"<spring:message code=\"screen.welcome.button.login\" />\" tabindex=\"6\" type=\"submit\" />\n            <input class=\"btn-reset\" name=\"reset\" accesskey=\"c\" value=\"<spring:message code=\"screen.welcome.button.clear\" />\" tabindex=\"7\" type=\"reset\" />\n        </section>\n    </form:form>\n</div>\n\n<div id=\"sidebar\">\n    <div class=\"sidebar-content\">\n        <p><spring:message code=\"screen.welcome.security\" /></p>\n\n        <c:if test=\"${!empty pac4jUrls}\">\n            <div id=\"list-providers\">\n                <h3><spring:message code=\"screen.welcome.label.loginwith\" /></h3>\n                <form>\n                    <ul>\n                        <c:forEach var=\"entry\" items=\"${pac4jUrls}\">\n                            <li><a href=\"${entry.value}\">${entry.key}</a></li>\n                        </c:forEach>\n                    </ul>\n                </form>\n            </div>\n        </c:if>\n\n        <div id=\"list-languages\">\n            <%final String queryString = request.getQueryString() == null ? \"\" : request.getQueryString().replaceAll(\"&locale=([A-Za-z][A-Za-z]_)?[A-Za-z][A-Za-z]|^locale=([A-Za-z][A-Za-z]_)?[A-Za-z][A-Za-z]\", \"\");%>\n            <c:set var='query' value='<%=queryString%>' />\n            <c:set var=\"xquery\" value=\"${fn:escapeXml(query)}\" />\n\n            <h3>Languages:</h3>\n\n            <c:choose>\n                <c:when test=\"${not empty requestScope['isMobile'] and not empty mobileCss}\">\n                    <form method=\"get\" action=\"login?${xquery}\">\n                        <select name=\"locale\">\n                            <option value=\"en\">English</option>\n                            <option value=\"es\">Spanish</option>\n                            <option value=\"fr\">French</option>\n                            <option value=\"ru\">Russian</option>\n                            <option value=\"nl\">Nederlands</option>\n                            <option value=\"sv\">Svenska</option>\n                            <option value=\"it\">Italiano</option>\n                            <option value=\"ur\">Urdu</option>\n                            <option value=\"zh_CN\">Chinese (Simplified)</option>\n                            <option value=\"zh_TW\">Chinese (Traditional)</option>\n                            <option value=\"de\">Deutsch</option>\n                            <option value=\"ja\">Japanese</option>\n                            <option value=\"hr\">Croatian</option>\n                            <option value=\"uk\">Ukranian</option>\n                            <option value=\"cs\">Czech</option>\n                            <option value=\"sk\">Slovak</option>\n                            <option value=\"sl\">Slovenian</option>\n                            <option value=\"pl\">Polish</option>\n                            <option value=\"ca\">Catalan</option>\n                            <option value=\"mk\">Macedonian</option>\n                            <option value=\"fa\">Farsi</option>\n                            <option value=\"ar\">Arabic</option>\n                            <option value=\"pt_PT\">Portuguese</option>\n                            <option value=\"pt_BR\">Portuguese (Brazil)</option>\n                        </select>\n                        <input type=\"submit\" value=\"Switch\">\n                    </form>\n                </c:when>\n                <c:otherwise>\n                    <c:set var=\"loginUrl\" value=\"login?${xquery}${not empty xquery ? '&' : ''}locale=\" />\n                    <ul>\n                        <li class=\"first\"><a href=\"${loginUrl}en\">English</a></li>\n                        <li><a href=\"${loginUrl}es\">Spanish</a></li>\n                        <li><a href=\"${loginUrl}fr\">French</a></li>\n                        <li><a href=\"${loginUrl}ru\">Russian</a></li>\n                        <li><a href=\"${loginUrl}nl\">Nederlands</a></li>\n                        <li><a href=\"${loginUrl}sv\">Svenska</a></li>\n                        <li><a href=\"${loginUrl}it\">Italiano</a></li>\n                        <li><a href=\"${loginUrl}ur\">Urdu</a></li>\n                        <li><a href=\"${loginUrl}zh_CN\">Chinese (Simplified)</a></li>\n                        <li><a href=\"${loginUrl}zh_TW\">Chinese (Traditional)</a></li>\n                        <li><a href=\"${loginUrl}de\">Deutsch</a></li>\n                        <li><a href=\"${loginUrl}ja\">Japanese</a></li>\n                        <li><a href=\"${loginUrl}hr\">Croatian</a></li>\n                        <li><a href=\"${loginUrl}uk\">Ukranian</a></li>\n                        <li><a href=\"${loginUrl}cs\">Czech</a></li>\n                        <li><a href=\"${loginUrl}sk\">Slovak</a></li>\n                        <li><a href=\"${loginUrl}sl\">Slovenian</a></li>\n                        <li><a href=\"${loginUrl}ca\">Catalan</a></li>\n                        <li><a href=\"${loginUrl}mk\">Macedonian</a></li>\n                        <li><a href=\"${loginUrl}fa\">Farsi</a></li>\n                        <li><a href=\"${loginUrl}ar\">Arabic</a></li>\n                        <li><a href=\"${loginUrl}pt_PT\">Portuguese</a></li>\n                        <li><a href=\"${loginUrl}pt_BR\">Portuguese (Brazil)</a></li>\n                        <li class=\"last\"><a href=\"${loginUrl}pl\">Polish</a></li>\n                    </ul>\n                </c:otherwise>\n            </c:choose>\n        </div>\n    </div>\n</div>\n\n<jsp:directive.include file=\"includes/bottom.jsp\" />\n"
  },
  {
    "path": "src/taoshop-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casLogoutView.jsp",
    "content": "<jsp:directive.include file=\"includes/top.jsp\" />\n  <div id=\"msg\" class=\"success\">\n    <h2><spring:message code=\"screen.logout.header\" /></h2>\n    <p><spring:message code=\"screen.logout.success\" /></p>\n    <p><spring:message code=\"screen.logout.security\" /></p>\n  </div>\n<jsp:directive.include file=\"includes/bottom.jsp\" />"
  },
  {
    "path": "src/taoshop-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casMustChangePassView.jsp",
    "content": "<jsp:directive.include file=\"includes/top.jsp\" />\n  <div id=\"msg\" class=\"errors\">\n    <h2><spring:message code=\"screen.mustchangepass.heading\" /></h2>\n    <p><spring:message code=\"screen.mustchangepass.message\" arguments=\"${passwordPolicyUrl}\"  /></p>\n  </div>\n<jsp:directive.include file=\"includes/bottom.jsp\" />\n"
  },
  {
    "path": "src/taoshop-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/serviceErrorSsoView.jsp",
    "content": "<jsp:directive.include file=\"includes/top.jsp\" />\n  <c:url var=\"url\" value=\"/login\">\n    <c:param name=\"service\" value=\"${param.service}\" />\n    <c:param name=\"renew\" value=\"true\" />\n  </c:url>\n  \n  <div id=\"msg\" class=\"errors\">\n    <h2><spring:message code=\"screen.service.sso.error.header\" /></h2>\n    <p><spring:message code=\"screen.service.sso.error.message\"  arguments=\"${fn:escapeXml(url)}\" /></p>\n  </div>\n<jsp:directive.include file=\"includes/bottom.jsp\" />\n"
  },
  {
    "path": "src/taoshop-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/serviceErrorView.jsp",
    "content": "<jsp:directive.include file=\"includes/top.jsp\" />\n  <div id=\"msg\" class=\"errors\">\n    <h2><spring:message code=\"screen.service.error.header\" /></h2>\n    <p><spring:message code=\"${rootCauseException.code}\" /></p>\n  </div>\n<jsp:directive.include file=\"includes/bottom.jsp\" />\n"
  },
  {
    "path": "src/taoshop-sso/src/main/webapp/WEB-INF/view/jsp/errors.jsp",
    "content": "<jsp:directive.include file=\"default/ui/includes/top.jsp\" />\n  <div id=\"msg\" class=\"errors\">\n    <h2><spring:message code=\"screen.unavailable.heading\" /></h2>\n    <p><spring:message code=\"screen.unavailable.message\" /></p>\n  </div>\n<jsp:directive.include file=\"default/ui/includes/bottom.jsp\" />\n"
  }
]