找回密码
 立即注册
首页 业界区 业界 别做抢活的导演:代码中的抽象层次原则 ...

别做抢活的导演:代码中的抽象层次原则

臧莞然 2025-7-16 12:05:59
Dict[str, Any]:\n    \"\"\"用户注册主流程 - 业务协调,最高抽象层次\"\"\"\n    \n    # 创建用户(内部会验证)\n    user_result = User.create(username, email, password, user_type)\n    if not user_result.success:\n        return {'success': False, 'error': user_result.error}\n    \n    user = user_result.user\n    \n    # 保存用户\n    save_result = user.save()\n    if not save_result.success:\n        return {'success': False, 'error': save_result.error}\n    \n    # 发送欢迎邮件\n    _send_welcome_email(user)\n    \n    # 返回成功结果\n    return _create_success_response(user)\n\n\ndef _send_welcome_email(user: 'User') -> None:\n    \"\"\"发送欢迎邮件 - 协调层职责\"\"\"\n    try:\n        email_content = _get_welcome_email_content(user)\n        email_sender = EmailSender()\n        email_sender.send(user.email, email_content)\n    except Exception:\n        # 邮件发送失败不影响注册\n        pass\n\n\ndef _get_welcome_email_content(user: 'User') -> Dict[str, str]:\n    \"\"\"获取欢迎邮件内容\"\"\"\n    return user.get_welcome_email_content()\n\n\ndef _create_success_response(user: 'User') -> Dict[str, Any]:\n    \"\"\"创建成功响应\"\"\"\n    user_type_display = \"remium\" if user.user_type == \"premium\" else \"普通\"\n    return {\n        'success': True,\n        'user_id': user.user_id,\n        'message': f'{user_type_display}用户注册成功'\n    }\n"},["span",{"data-type":"text"},["span",{"data-type":"leaf"},"# ============================================================================\n# 第1层:业务协调层 - 最高抽象层次\n# ============================================================================\n\ndef register_user(username: str, email: str, password: str, user_type: str) -> Dict[str, Any]:\n    \"\"\"用户注册主流程 - 业务协调,最高抽象层次\"\"\"\n    \n    # 创建用户(内部会验证)\n    user_result = User.create(username, email, password, user_type)\n    if not user_result.success:\n        return {'success': False, 'error': user_result.error}\n    \n    user = user_result.user\n    \n    # 保存用户\n    save_result = user.save()\n    if not save_result.success:\n        return {'success': False, 'error': save_result.error}\n    \n    # 发送欢迎邮件\n    _send_welcome_email(user)\n    \n    # 返回成功结果\n    return _create_success_response(user)\n\n\ndef _send_welcome_email(user: 'User') -> None:\n    \"\"\"发送欢迎邮件 - 协调层职责\"\"\"\n    try:\n        email_content = _get_welcome_email_content(user)\n        email_sender = EmailSender()\n        email_sender.send(user.email, email_content)\n    except Exception:\n        # 邮件发送失败不影响注册\n        pass\n\n\ndef _get_welcome_email_content(user: 'User') -> Dict[str, str]:\n    \"\"\"获取欢迎邮件内容\"\"\"\n    return user.get_welcome_email_content()\n\n\ndef _create_success_response(user: 'User') -> Dict[str, Any]:\n    \"\"\"创建成功响应\"\"\"\n    user_type_display = \"remium\" if user.user_type == \"premium\" else \"普通\"\n    return {\n        'success': True,\n        'user_id': user.user_id,\n        'message': f'{user_type_display}用户注册成功'\n    }\n"]]],["p",{"uuid":"md4bphm0996pi9035"},["span",{"data-type":"text"},["span",{"data-type":"leaf"},""]]],["h2",{"uuid":"md5ei3a0n5rb7gwbvr","spacing":{"before":21.333333333333332,"after":9,"line":0.8529411764705882}},["span",{"data-type":"text"},["span",{"bold":true,"sz":16,"szUnit":"pt","data-type":"leaf"},"业务对象层 - 中抽象层次,健壮的业务对象"]]],["p",{"uuid":"md5elqi1cji82w3u4xg","ind":{"firstLine":32}},["span",{"data-type":"text"},["span",{"data-type":"leaf"},"这一层是业务逻辑的“核心承载者”,如同电影拍摄中的“摄影指导”,负责将导演的抽象意图转化为具体可执行的“拍摄方案”。在这里,核心是User这个业务对象。"]]],["p",{"uuid":"md5el3hfs661v970tkn","ind":{"firstLine":32}},["span",{"data-type":"text"},["span",{"data-type":"leaf"},"它不再是一个简单的贫血数据类,而是一个健壮的、自洽的实体。它封装了与“用户”相关的所有业务规则和数据操作:"]]],["code",{"syntax":"python","theme":"default","wrap":true,"id":"9ueiqw","title":"","fold":false,"hideHeader":false,"codeFolding":false,"showLineNumber":true,"font":{"fontFamily":"defaultFont","ligatures":false},"enableMacHeader":false,"uuid":"md4bqq5xrszvaebgxun","code":"# ============================================================================\n# 第2层:业务对象层 - 中抽象层次,健壮的业务对象\n# ============================================================================\n\n@dataclass\nclass UserCreationResult:\n    \"\"\"用户创建结果\"\"\"\n    success: bool\n    user: Optional['User'] = None\n    error: Optional[str] = None\n\n\n@dataclass\nclass SaveResult:\n    \"\"\"保存结果\"\"\"\n    success: bool\n    user_id: Optional[int] = None\n    error: Optional[str] = None\n\n\nclass User:\n    \"\"\"用户 - 核心业务对象,内部验证保证健壮性\"\"\"\n    \n    def __init__(self, username: str, email: str, password_hash: str, user_type: str):\n        self.username = username\n        self.email = email\n        self.password_hash = password_hash\n        self.user_type = user_type\n        self.user_id = None\n        self.created_at = datetime.now()\n    \n    @classmethod\n    def create(cls, username: str, email: str, password: str, user_type: str) -> UserCreationResult:\n        \"\"\"创建用户 - 内部验证保证健壮性\"\"\"\n        \n        # 验证用户类型\n        if user_type not in ['regular', 'premium']:\n            return UserCreationResult(success=False, error='无效的用户类型')\n        \n        # 验证用户名\n        username_error = cls._validate_username(username, user_type)\n        if username_error:\n            return UserCreationResult(success=False, error=username_error)\n        \n        # 验证邮箱\n        email_error = cls._validate_email(email)\n        if email_error:\n            return UserCreationResult(success=False, error=email_error)\n        \n        # 验证密码\n        password_error = cls._validate_password(password)\n        if password_error:\n            return UserCreationResult(success=False, error=password_error)\n        \n        # 检查用户是否已存在\n        if UserRepository().exists(username, email):\n            return UserCreationResult(success=False, error='用户名或邮箱已存在')\n        \n        # 创建用户对象\n        password_hash = cls._hash_password(password)\n        user = cls(username, email, password_hash, user_type)\n        \n        return UserCreationResult(success=True, user=user)\n    \n    def save(self) -> SaveResult:\n        \"\"\"保存用户到数据库\"\"\"\n        try:\n            repository = UserRepository()\n            self.user_id = repository.add(self)\n            return SaveResult(success=True, user_id=self.user_id)\n        except Exception as e:\n            return SaveResult(success=False, error=f'保存用户失败: {str(e)}')\n    \n    @staticmethod\n    def _validate_username(username: str, user_type: str) -> Optional[str]:\n        \"\"\"验证用户名\"\"\"\n        if not username or not username.strip():\n            return '用户名不能为空'\n        \n        if user_type == 'premium' and len(username) < 6:\n            return 'Premium用户名至少6位'\n        \n        return None\n    \n    @staticmethod\n    def _validate_email(email: str) -> Optional[str]:\n        \"\"\"验证邮箱\"\"\"\n        if not email or not email.strip():\n            return '邮箱不能为空'\n        \n        pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$'\n        if not re.match(pattern, email):\n            return '邮箱格式不正确'\n        \n        return None\n    \n    @staticmethod\n    def _validate_password(password: str) -> Optional[str]:\n        \"\"\"验证密码\"\"\"\n        if not password:\n            return '密码不能为空'\n        \n        if len(password) < 8:\n            return '密码必须至少8位'\n        \n        if not re.search(r'[A-Z]', password):\n            return '密码必须包含大写字母'\n        \n        if not re.search(r'[0-9]', password):\n            return '密码必须包含数字'\n        \n        return None\n    \n    def get_welcome_email_content(self) -> Dict[str, str]:\n        \"\"\"获取欢迎邮件内容\"\"\"\n        if self.user_type == 'premium':\n            return {\n                'subject': '欢迎成为Premium用户!',\n                'body': f'亲爱的 {self.username},感谢您成为我们的Premium用户...'\n            }\n        else:\n            return {\n                'subject': '欢迎注册!',\n                'body': f'亲爱的 {self.username},感谢您的注册...'\n            }\n    \n    @staticmethod\n    def _hash_password(password: str) -> str:\n        \"\"\"生成密码哈希\"\"\"\n        return hashlib.sha256(password.encode()).hexdigest()"},["span",{"data-type":"text"},["span",{"data-type":"leaf"},"# ============================================================================\n# 第2层:业务对象层 - 中抽象层次,健壮的业务对象\n# ============================================================================\n\n@dataclass\nclass UserCreationResult:\n    \"\"\"用户创建结果\"\"\"\n    success: bool\n    user: Optional['User'] = None\n    error: Optional[str] = None\n\n\n@dataclass\nclass SaveResult:\n    \"\"\"保存结果\"\"\"\n    success: bool\n    user_id: Optional[int] = None\n    error: Optional[str] = None\n\n\nclass User:\n    \"\"\"用户 - 核心业务对象,内部验证保证健壮性\"\"\"\n    \n    def __init__(self, username: str, email: str, password_hash: str, user_type: str):\n        self.username = username\n        self.email = email\n        self.password_hash = password_hash\n        self.user_type = user_type\n        self.user_id = None\n        self.created_at = datetime.now()\n    \n    @classmethod\n    def create(cls, username: str, email: str, password: str, user_type: str) -> UserCreationResult:\n        \"\"\"创建用户 - 内部验证保证健壮性\"\"\"\n        \n        # 验证用户类型\n        if user_type not in ['regular', 'premium']:\n            return UserCreationResult(success=False, error='无效的用户类型')\n        \n        # 验证用户名\n        username_error = cls._validate_username(username, user_type)\n        if username_error:\n            return UserCreationResult(success=False, error=username_error)\n        \n        # 验证邮箱\n        email_error = cls._validate_email(email)\n        if email_error:\n            return UserCreationResult(success=False, error=email_error)\n        \n        # 验证密码\n        password_error = cls._validate_password(password)\n        if password_error:\n            return UserCreationResult(success=False, error=password_error)\n        \n        # 检查用户是否已存在\n        if UserRepository().exists(username, email):\n            return UserCreationResult(success=False, error='用户名或邮箱已存在')\n        \n        # 创建用户对象\n        password_hash = cls._hash_password(password)\n        user = cls(username, email, password_hash, user_type)\n        \n        return UserCreationResult(success=True, user=user)\n    \n    def save(self) -> SaveResult:\n        \"\"\"保存用户到数据库\"\"\"\n        try:\n            repository = UserRepository()\n            self.user_id = repository.add(self)\n            return SaveResult(success=True, user_id=self.user_id)\n        except Exception as e:\n            return SaveResult(success=False, error=f'保存用户失败: {str(e)}')\n    \n    @staticmethod\n    def _validate_username(username: str, user_type: str) -> Optional[str]:\n        \"\"\"验证用户名\"\"\"\n        if not username or not username.strip():\n            return '用户名不能为空'\n        \n        if user_type == 'premium' and len(username) < 6:\n            return 'Premium用户名至少6位'\n        \n        return None\n    \n    @staticmethod\n    def _validate_email(email: str) -> Optional[str]:\n        \"\"\"验证邮箱\"\"\"\n        if not email or not email.strip():\n            return '邮箱不能为空'\n        \n        pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$'\n        if not re.match(pattern, email):\n            return '邮箱格式不正确'\n        \n        return None\n    \n    @staticmethod\n    def _validate_password(password: str) -> Optional[str]:\n        \"\"\"验证密码\"\"\"\n        if not password:\n            return '密码不能为空'\n        \n        if len(password) < 8:\n            return '密码必须至少8位'\n        \n        if not re.search(r'[A-Z]', password):\n            return '密码必须包含大写字母'\n        \n        if not re.search(r'[0-9]', password):\n            return '密码必须包含数字'\n        \n        return None\n    \n    def get_welcome_email_content(self) -> Dict[str, str]:\n        \"\"\"获取欢迎邮件内容\"\"\"\n        if self.user_type == 'premium':\n            return {\n                'subject': '欢迎成为Premium用户!',\n                'body': f'亲爱的 {self.username},感谢您成为我们的Premium用户...'\n            }\n        else:\n            return {\n                'subject': '欢迎注册!',\n                'body': f'亲爱的 {self.username},感谢您的注册...'\n            }\n    \n    @staticmethod\n    def _hash_password(password: str) -> str:\n        \"\"\"生成密码哈希\"\"\"\n        return hashlib.sha256(password.encode()).hexdigest()"]]],["p",{"uuid":"md5ei9dm121cpj1qtbyd"},["span",{"data-type":"text"},["span",{"data-type":"leaf"},""]]],["h2",{"uuid":"md5ei9jn8g42mi3azi","spacing":{"before":21.333333333333332,"after":9,"line":0.8529411764705882}},["span",{"data-type":"text"},["span",{"bold":true,"sz":16,"szUnit":"pt","data-type":"leaf"},"基础设施层 - 最低抽象层次,纯技术实现"]]],["p",{"uuid":"md5em00qopjezg1675","ind":{"firstLine":32}},["span",{"data-type":"text"},["span",{"data-type":"leaf"},"这一层是整个体系的“灯光师”和“场务”,负责所有具体的“脏活累活”。它包含了与外部世界(如数据库、文件系统、邮件服务器等)打交道的所有技术实现。"]]],["code",{"syntax":"python","theme":"default","wrap":true,"id":"1urqtv","title":"","fold":false,"hideHeader":false,"codeFolding":false,"showLineNumber":true,"font":{"fontFamily":"defaultFont","ligatures":false},"enableMacHeader":false,"uuid":"md4br6czl054dogib0f","code":" ============================================================================\n# 第3层:基础设施层 - 最低抽象层次,纯技术实现\n# ============================================================================\n\nclass UserRepository:\n    \"\"\"用户仓储 - 业务场景的数据访问\"\"\"\n    \n    def __init__(self):\n        self.db_path = 'users.db'\n    \n    def exists(self, username: str, email: str) -> bool:\n        \"\"\"检查用户是否存在\"\"\"\n        try:\n            with self._connect() as conn:\n                cursor = conn.cursor()\n                cursor.execute(\n                    \"SELECT id FROM users WHERE username = ? OR email = ?\",\n                    (username, email)\n                )\n                return cursor.fetchone() is not None\n        except Exception:\n            return False  # 数据库错误时保守处理\n    \n    def add(self, user: User) -> int:\n        \"\"\"添加用户记录\"\"\"\n        with self._connect() as conn:\n            cursor = conn.cursor()\n            cursor.execute(\"\"\"\n                INSERT INTO users (username, email, password_hash, user_type, created_at) \n                VALUES (?, ?, ?, ?, ?)\n            \"\"\", (user.username, user.email, user.password_hash, \n                  user.user_type, user.created_at))\n            return cursor.lastrowid\n    \n    def _connect(self):\n        \"\"\"创建数据库连接\"\"\"\n        return sqlite3.connect(self.db_path)\n\n\nclass EmailSender:\n    \"\"\"邮件发送器 - 纯技术实现,不包含业务逻辑\"\"\"\n    \n    def __init__(self):\n        self.smtp_host = 'smtp.gmail.com'\n        self.smtp_port = 587\n        self.username = 'your_email@gmail.com'\n        self.password = 'your_password'\n        self.from_email = 'your_email@gmail.com'\n    \n    def send(self, to_email: str, content: Dict[str, str]) -> None:\n        \"\"\"发送邮件\"\"\"\n        if not to_email or not content:\n            raise ValueError(\"邮件地址和内容不能为空\")\n        \n        message = self._create_message(to_email, content)\n        with self._connect() as smtp:\n            smtp.send_message(message)\n    \n    def _create_message(self, to_email: str, content: Dict[str, str]) -> MIMEText:\n        \"\"\"创建邮件消息\"\"\"\n        msg = MIMEText(content.get('body', ''))\n        msg['Subject'] = content.get('subject', '')\n        msg['From'] = self.from_email\n        msg['To'] = to_email\n        return msg\n    \n    def _connect(self):\n        \"\"\"创建SMTP连接\"\"\"\n        smtp = smtplib.SMTP(self.smtp_host, self.smtp_port)\n        smtp.starttls()\n        smtp.login(self.username, self.password)\n        return smtp"},["span",{"data-type":"text"},["span",{"data-type":"leaf"}," ============================================================================\n# 第3层:基础设施层 - 最低抽象层次,纯技术实现\n# ============================================================================\n\nclass UserRepository:\n    \"\"\"用户仓储 - 业务场景的数据访问\"\"\"\n    \n    def __init__(self):\n        self.db_path = 'users.db'\n    \n    def exists(self, username: str, email: str) -> bool:\n        \"\"\"检查用户是否存在\"\"\"\n        try:\n            with self._connect() as conn:\n                cursor = conn.cursor()\n                cursor.execute(\n                    \"SELECT id FROM users WHERE username = ? OR email = ?\",\n                    (username, email)\n                )\n                return cursor.fetchone() is not None\n        except Exception:\n            return False  # 数据库错误时保守处理\n    \n    def add(self, user: User) -> int:\n        \"\"\"添加用户记录\"\"\"\n        with self._connect() as conn:\n            cursor = conn.cursor()\n            cursor.execute(\"\"\"\n                INSERT INTO users (username, email, password_hash, user_type, created_at) \n                VALUES (?, ?, ?, ?, ?)\n            \"\"\", (user.username, user.email, user.password_hash, \n                  user.user_type, user.created_at))\n            return cursor.lastrowid\n    \n    def _connect(self):\n        \"\"\"创建数据库连接\"\"\"\n        return sqlite3.connect(self.db_path)\n\n\nclass EmailSender:\n    \"\"\"邮件发送器 - 纯技术实现,不包含业务逻辑\"\"\"\n    \n    def __init__(self):\n        self.smtp_host = 'smtp.gmail.com'\n        self.smtp_port = 587\n        self.username = 'your_email@gmail.com'\n        self.password = 'your_password'\n        self.from_email = 'your_email@gmail.com'\n    \n    def send(self, to_email: str, content: Dict[str, str]) -> None:\n        \"\"\"发送邮件\"\"\"\n        if not to_email or not content:\n            raise ValueError(\"邮件地址和内容不能为空\")\n        \n        message = self._create_message(to_email, content)\n        with self._connect() as smtp:\n            smtp.send_message(message)\n    \n    def _create_message(self, to_email: str, content: Dict[str, str]) -> MIMEText:\n        \"\"\"创建邮件消息\"\"\"\n        msg = MIMEText(content.get('body', ''))\n        msg['Subject'] = content.get('subject', '')\n        msg['From'] = self.from_email\n        msg['To'] = to_email\n        return msg\n    \n    def _connect(self):\n        \"\"\"创建SMTP连接\"\"\"\n        smtp = smtplib.SMTP(self.smtp_host, self.smtp_port)\n        smtp.starttls()\n        smtp.login(self.username, self.password)\n        return smtp"]]],["p",{"uuid":"md4ea0rcrqf3cpedjz"},["span",{"data-type":"text"},["span",{"data-type":"leaf"},""]]],["p",{"uuid":"md5eqfih9w1gd1r264d"},["span",{"data-type":"text"},["span",{"data-type":"leaf"},"整个实现的架构如图:"]]],["p",{"uuid":"md5exzya6mhdsh4izx8"},["span",{"data-type":"text"},["span",{"data-type":"leaf"},""]],["img",{"uuid":"nk8tmo","name":"image.png","size":474263,"width":868,"height":443.8538993089832,"src":"https://oss-ata.alibaba.com/article/2025/07/c2dc525f-6955-4b85-b6b3-8f18778785b4.png"},["span",{"data-type":"text"},["span",{"data-type":"leaf"},""]]],["span",{"data-type":"text"},["span",{"data-type":"leaf"},""]]],["p",{},["span",{"data-type":"text"},["span",{"data-type":"leaf"},""]]],["h1",{"uuid":"md4gjvhy30lnlnl2zui","spacing":{"before":26.666666666666664,"after":9,"line":0.8529411764705882}},["span",{"data-type":"text"},["span",{"bold":true,"sz":20,"szUnit":"pt","data-type":"leaf"},"小结"]]],["p",{"uuid":"md482k4oq47a0f0ucdk","ind":{"firstLine":32}},["span",{"data-type":"text"},["span",{"data-type":"leaf"},"就像一个好导演绝不会亲自去调灯光色纸一样,好的代码也应该各司其职、层次分明。当你的函数既要考虑\"用户注册的业务逻辑\",又要纠结\"SMTP服务器配置\"时,你就成了那个\"爱抢活的导演\"——看似很忙很全能,实际上把整个剧组都搞得一团糟。"]]],["p",{"uuid":"md5ev89q4z35lore1u6"},["span",{"data-type":"text"},["span",{"data-type":"leaf"},"这    个问题在AI时代变得更加微妙。AI擅长生成局部完美的代码片段,就像一个技艺精湛但缺乏大局观的\"万能助理\"——它能帮你写出完美的SMTP配置,也能生成漂亮的密码验证逻辑,但它不会主动告诉你\"这些东西不应该混在一个函数里\"。AI越强大,开发者的架构思维就越重要"]]],["p",{"uuid":"md5ev89qu4prng09p9j","ind":{"firstLine":32}},["span",{"data-type":"text"},["span",{"data-type":"leaf"},"在AI可以秒生代码的今天,真正的价值不在于写得多快,而在于想得多清楚——毕竟,没有人希望维护一个由AI生成的\"意大利面条式巨无霸函数\",那种感觉就像拿到了一个大猩猩、香蕉和整个丛林的打包组合...而你只是想吃个香蕉。"]]],["p",{"uuid":"md4bogluds8tkwz848h"},["span",{"data-type":"text"},["span",{"data-type":"leaf"},""]]],["p",{"uuid":"md4bogxm7l8rczor6km"},["span",{"data-type":"text"},["span",{"data-type":"leaf"},""]]],["p",{"uuid":"md4a0idsu3p6r908s9h"},["span",{"data-type":"text"},["span",{"data-type":"leaf"},""]]]]" data-identifier-application__slash__x-cangjie-fragment="JTdCJTIya2xhc3MlMjIlM0ElMjJkb2N1bWVudCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlMjJjb3B5RnJvbSUyMiUzQTM1OTU4NzQ0MiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJwYXJhZ3JhcGglMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTIydXVpZCUyMiUzQSUyMm1kNDgyazRtYnM5endoZGJ6dmIlMjIlMkMlMjJpbmQlMjIlM0ElN0IlMjJmaXJzdExpbmUlMjIlM0EzMiU3RCU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiVFNSU5QyVBOCVFNyU5NCVCNSVFNSVCRCVCMSVFNyU4OSU4NyVFNSU5QyVCQSVFRiVCQyU4QyVFNCVCOCU4MCVFNCVCOCVBQSVFNCVCQyU5OCVFNyVBNyU4MCVFNyU5QSU4NCVFNSVBRiVCQyVFNiVCQyU5NCVFNiU5OCVBRiVFNSVBNiU4MiVFNCVCRCU5NSVFNSVCNyVBNSVFNCVCRCU5QyVFNyU5QSU4NCVFRiVCQyU5RiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTJDJTIyY29udGVudFR5cGUlMjIlM0ElMjJjYW5namllLXRleHRibG9jayUyMiU3RCUyQyU3QiUyMmtsYXNzJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIycGFyYWdyYXBoJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiUyMnV1aWQlMjIlM0ElMjJtZDQ4Mms0bTJhNWF2cThvNHhzJTIyJTJDJTIyaW5kJTIyJTNBJTdCJTIyZmlyc3RMaW5lJTIyJTNBMzIlN0QlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlRTQlQkIlOTYlRTQlQkMlOUElRTglQjclOUYlRTYlOTElODQlRTUlQkQlQjElRTYlOEMlODclRTUlQUYlQkMlRTglQUYlQjQlRUYlQkMlOUElRTIlODAlOUMlRTYlODglOTElRTUlQjglOEMlRTYlOUMlOUIlRTglQkYlOTklRTQlQjglQUElRTklOTUlOUMlRTUlQTQlQjQlRTglODMlQkQlRTQlQkMlQTAlRTglQkUlQkUlRTUlODclQkElRTQlQjglQkIlRTglQTclOTIlRTUlODYlODUlRTUlQkYlODMlRTclOUElODQlRTUlQUQlQTQlRTclOEIlQUMlRTUlOTIlOEMlRTclQkIlOUQlRTYlOUMlOUIlRTYlODQlOUYlRUYlQkMlOEMlRTYlODglOTElRTQlQkIlQUMlRTclOTQlQTglRTUlODYlQjclRTglODklQjIlRTglQjAlODMlRUYlQkMlOEMlRTYlOUUlODQlRTUlOUIlQkUlRTglQTYlODElRTclQTklQkElRTYlOTclQjclRTQlQjglODAlRTQlQkElOUIlRTMlODAlODIlRTIlODAlOUQlMjAlRUYlQkMlODglRTglQkYlOTklRTYlOTglQUYlRTklQTElQjYlRTUlQjElODIlRTYlODQlOEYlRTUlOUIlQkUlRTUlOTIlOEMlRTglODklQkElRTYlOUMlQUYlRTYlOTYlQjklRTUlOTAlOTElRUYlQkMlODklMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCUyQyUyMmNvbnRlbnRUeXBlJTIyJTNBJTIyY2FuZ2ppZS10ZXh0YmxvY2slMjIlN0QlMkMlN0IlMjJrbGFzcyUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMnBhcmFncmFwaCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlMjJ1dWlkJTIyJTNBJTIybWQ0ODJrNG4zMjBsdWZubTR1cSUyMiUyQyUyMmluZCUyMiUzQSU3QiUyMmZpcnN0TGluZSUyMiUzQTMyJTdEJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJUU3JTg0JUI2JUU1JTkwJThFJUVGJUJDJThDJUU2JTkxJTg0JUU1JUJEJUIxJUU2JThDJTg3JUU1JUFGJUJDJUU0JUJDJTlBJUU2JThBJThBJUU4JUJGJTk5JUU0JUI4JUFBJUU2JThBJUJEJUU4JUIxJUExJUU3JTlBJTg0JUUyJTgwJTlDJUU2JTg0JThGJUU1JTlCJUJFJUUyJTgwJTlEJUU3JUJGJUJCJUU4JUFGJTkxJUU2JTg4JTkwJUU1JTg1JUI3JUU0JUJEJTkzJUU3JTlBJTg0JUU2JTg5JUE3JUU4JUExJThDJUU2JTk2JUI5JUU2JUExJTg4JUVGJUJDJThDJUU1JTkxJThBJUU4JUFGJTg5JUU3JTgxJUFGJUU1JTg1JTg5JUU1JUI4JTg4JUVGJUJDJTlBJUUyJTgwJTlDJUU2JTg4JTkxJUU0JUJCJUFDJUU5JTlDJTgwJUU4JUE2JTgxJUU0JUI4JTgwJUU0JUI4JUFBJUU5JUExJUI2JUU1JTg1JTg5JUVGJUJDJThDJUU3JTk0JUE4JUU0JUJEJThFJUU4JTg5JUIyJUU2JUI4JUE5JUU3JTlBJTg0JUU1JTg1JTg5JUU2JUJBJTkwJUVGJUJDJThDJUU2JThBJThBJUU1JTkxJUE4JUU1JTlCJUI0JUU3JThFJUFGJUU1JUEyJTgzJUU3JTlBJTg0JUU0JUJBJUFFJUU1JUJBJUE2JUU5JTk5JThEJUU0JUI4JThCJUU2JTlEJUE1JUVGJUJDJThDJUU0JUJBJUJBJUU3JTg5JUE5JUU5JTlEJUEyJUU5JTgzJUE4JUU3JTlBJTg0JUU5JTk4JUI0JUU1JUJEJUIxJUU4JUE2JTgxJUU3JUExJUFDJUU0JUI4JTgwJUU0JUJBJTlCJUUzJTgwJTgyJUUyJTgwJTlEJTIwJUVGJUJDJTg4JUU4JUJGJTk5JUU2JTk4JUFGJUU0JUI4JUFEJUU1JUIxJTgyJUU2JThBJTgwJUU2JTlDJUFGJUU2JTk2JUI5JUU2JUExJTg4JUVGJUJDJTg5JTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlMkMlMjJjb250ZW50VHlwZSUyMiUzQSUyMmNhbmdqaWUtdGV4dGJsb2NrJTIyJTdEJTJDJTdCJTIya2xhc3MlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJwYXJhZ3JhcGglMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTIydXVpZCUyMiUzQSUyMm1kNDgyazRubWQ4cHByZnZwYzglMjIlMkMlMjJpbmQlMjIlM0ElN0IlMjJmaXJzdExpbmUlMjIlM0EzMiU3RCU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiVFNiU5QyU4MCVFNSU5MCU4RSVFRiVCQyU4QyVFNyU4MSVBRiVFNSU4NSU4OSVFNSVCOCU4OCVFNCVCQyU5QSVFNiU4QyU4NyVFNiU4QyVBNSVFNSVCNyVBNSVFNCVCRCU5QyVFNCVCQSVCQSVFNSU5MSU5OCVFRiVCQyU5QSVFMiU4MCU5QyVFNiU4QSU4QSVFOSU4MiVBMyVFNyU5QiU4RjJLJUU3JTlBJTg0JUU4JThGJUIyJUU2JUI2JTg1JUU1JUIwJTk0JUU5JTgwJThGJUU5JTk1JTlDJUU3JTgxJUFGJUU1JTkwJThBJUU4JUI1JUI3JUU2JTlEJUE1JUVGJUJDJThDJUU4JUEzJTg1JUU0JUI4JThBMSUyRjQlRTclOUElODQlRTglOTMlOUQlRTglODklQjIlRTglODklQjIlRTclQkElQjglRUYlQkMlOEMlRTclOTQlQTglRTklQkIlOTElRTYlOTclOTclRTYlOEElOEElRTUlQjclQTYlRTglQkUlQjklRTclOUElODQlRTUlODUlODklRTYlOEMlQTElRTYlOEUlODklRTMlODAlODIlRTIlODAlOUQlMjAlRUYlQkMlODglRTglQkYlOTklRTYlOTglQUYlRTUlQkElOTUlRTUlQjElODIlRTUlODUlQjclRTQlQkQlOTMlRTYlOTMlOEQlRTQlQkQlOUMlRUYlQkMlODklMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCUyQyUyMmNvbnRlbnRUeXBlJTIyJTNBJTIyY2FuZ2ppZS10ZXh0YmxvY2slMjIlN0QlMkMlN0IlMjJrbGFzcyUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMnBhcmFncmFwaCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlMjJ1dWlkJTIyJTNBJTIybWQ0ODJrNG5waGxkdm82dGk0ZyUyMiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTJDJTIyY29udGVudFR5cGUlMjIlM0ElMjJjYW5namllLXRleHRibG9jayUyMiU3RCUyQyU3QiUyMmtsYXNzJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIycGFyYWdyYXBoJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiUyMnV1aWQlMjIlM0ElMjJtZDQ4Mms0bmxsZGJ1ZWx3ZnNyJTIyJTJDJTIyaW5kJTIyJTNBJTdCJTIyZmlyc3RMaW5lJTIyJTNBMzIlN0QlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlRTglQkYlOTklRTYlOTglQUYlRTQlQjglODAlRTQlQjglQUElRTYlOUQlODMlRTglQjQlQTMlRTYlQjglODUlRTYlOTklQjAlRTMlODAlODElRTYlQjIlOUYlRTklODAlOUElRTklQUIlOTglRTYlOTUlODglRTclOUElODQlRTQlQkQlOTMlRTclQjMlQkIlRTMlODAlODIlRTYlQUYlOEYlRTQlQjglODAlRTUlQjElODIlRTclOUElODQlRTQlQkElQkElRTklODMlQkQlRTQlQjglOTMlRTYlQjMlQTglRTQlQkElOEUlRTglODclQUElRTUlQjclQjElRTglQUYlQTUlRTUlQjklQjIlRTclOUElODQlRTQlQkElOEIlRTMlODAlODIlRTklODIlQTMlRTQlQjklODglRTglODMlQkQlRTUlQTQlOUYlRTglOTAlQTUlRTklODAlQTAlRTUlODclQkElRTYlOUMlODAlRTclQkIlODglRTYlODglOTAlRTUlOEElOUYlRTclOUElODQlRTQlQkQlOUMlRTUlOTMlODElRTMlODAlODIlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCUyQyUyMmNvbnRlbnRUeXBlJTIyJTNBJTIyY2FuZ2ppZS10ZXh0YmxvY2slMjIlN0QlMkMlN0IlMjJrbGFzcyUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMnBhcmFncmFwaCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlMjJ1dWlkJTIyJTNBJTIybWQ0OGIwYXViczZ5ZHdlNmx4ZCUyMiUyQyUyMmluZCUyMiUzQSU3QiUyMmZpcnN0TGluZSUyMiUzQTMyJTdEJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlMkMlN0IlMjJrbGFzcyUyMiUzQSUyMmlubGluZSUyMiUyQyUyMnR5cGUlMjIlM0ElMjJpbWFnZSUyMiUyQyUyMmRhdGElMjIlM0ElN0IlMjJ1dWlkJTIyJTNBJTIybWQ1ZXc5dmcwZ2Y2dnZpdXN6MyUyMiUyQyUyMm5hbWUlMjIlM0ElMjJpbWFnZS5wbmclMjIlMkMlMjJzaXplJTIyJTNBMjA5NzcxMiUyQyUyMndpZHRoJTIyJTNBNzQ4JTJDJTIyaGVpZ2h0JTIyJTNBNDk4LjY2NjY2NjY2NjY2NjclMkMlMjJzcmMlMjIlM0ElMjJodHRwcyUzQSUyRiUyRm9zcy1hdGEuYWxpYmFiYS5jb20lMkZhcnRpY2xlJTJGMjAyNSUyRjA3JTJGMTJhNzI0NGQtMjY3NS00ODliLWIyOGEtMTYwOGI4Yjc0YmFhLnBuZyUyMiUyQyUyMmV4dHJhRGF0YSUyMiUzQSU3QiUyMnJlc291cmNlSWQlMjIlM0ElMjJhYjZiY2FhMS1lOGI0LTQ0N2QtOTMxMi02MzdlZDc3MzUwZGElMjIlMkMlMjJtZXRhRGF0YSUyMiUzQSU3QiUyMnNpemUlMjIlM0EyMDk3NzEyJTJDJTIyb3JpZ2luV2lkdGglMjIlM0ExNTM2JTJDJTIyb3JpZ2luSGVpZ2h0JTIyJTNBMTAyNCUyQyUyMmZvcm1hdCUyMiUzQSUyMnBuZyUyMiUyQyUyMnJhdGlvJTIyJTNBMSU3RCU3RCU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIya2xhc3MlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTJDJTIyY29udGVudFR5cGUlMjIlM0ElMjJjYW5namllLXRleHRibG9jayUyMiU3RCUyQyU3QiUyMmtsYXNzJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIycGFyYWdyYXBoJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiUyMnV1aWQlMjIlM0ElMjJtZDQ4YjBmd2N6c2pxY25sMHRvJTIyJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlMkMlMjJjb250ZW50VHlwZSUyMiUzQSUyMmNhbmdqaWUtdGV4dGJsb2NrJTIyJTdEJTJDJTdCJTIya2xhc3MlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJwYXJhZ3JhcGglMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTIydXVpZCUyMiUzQSUyMm1kNDgyazRub29jdHU2dWZ6NyUyMiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTJDJTIyY29udGVudFR5cGUlMjIlM0ElMjJjYW5namllLXRleHRibG9jayUyMiU3RCUyQyU3QiUyMmtsYXNzJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIycGFyYWdyYXBoJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiUyMnV1aWQlMjIlM0ElMjJtZDQ4Mms0bnZoNnRsaThsNHNjJTIyJTJDJTIyaW5kJTIyJTNBJTdCJTIyZmlyc3RMaW5lJTIyJTNBMzIlN0QlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlRTclOEUlQjAlRTUlOUMlQTglRUYlQkMlOEMlRTYlODMlQjMlRTglQjElQTElRTQlQjglODAlRTQlQjglQUElRTclQjMlOUYlRTclQjMlOTUlRTclOUElODQlRTMlODAlODElRTclODglQjElRTYlOEElQTIlRTYlQjQlQkIlRTclOUElODQlRTUlQUYlQkMlRTYlQkMlOTQlRTMlODAlODIlRTQlQkIlOTYlRTQlQkMlOUElRTUlOUMlQTglRTclODklODclRTUlOUMlQkElRTUlQTQlQTclRTUlOTYlOEElRUYlQkMlOUElMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCUyQyUyMmNvbnRlbnRUeXBlJTIyJTNBJTIyY2FuZ2ppZS10ZXh0YmxvY2slMjIlN0QlMkMlN0IlMjJrbGFzcyUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMnBhcmFncmFwaCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlMjJ1dWlkJTIyJTNBJTIybWQ0ODJrNG5yamY2ZGpkOXptJTIyJTJDJTIyaW5kJTIyJTNBJTdCJTIyZmlyc3RMaW5lJTIyJTNBMzIlN0QlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlRTIlODAlOUMlRTYlODglOTElRTglQTYlODElRTUlQUQlQTQlRTclOEIlQUMlRTYlODQlOUYlRUYlQkMlODElRTUlQjAlOEYlRTclOEUlOEIlRUYlQkMlOEMlRTUlOEUlQkIlRUYlQkMlOEMlRTYlOEElOEElRTklODIlQTMlRTclOUIlOEYySyVFNyU5QSU4NCVFOCU4RiVCMiVFNiVCNiU4NSVFNSVCMCU5NCVFNyU4MSVBRiVFNyVCQiU5OSVFNiU4OCU5MSVFOCVBMyU4NSVFNCVCOCU4QTElMkY0JUU3JTlBJTg0JUU4JTkzJTlEJUU4JTg5JUIyJUU4JTg5JUIyJUU3JUJBJUI4JUVGJUJDJTgxJUUyJTgwJUE2JUUyJTgwJUE2JUU0JUI4JThEJUU1JUFGJUI5JUVGJUJDJThDJUU1JTkyJUIxJUU0JUJCJUFDJUU4JUJGJTk5JUU0JUI4JUFBJUU5JTk1JTlDJUU1JUE0JUI0JUU3JTlBJTg0JUU2JTlFJTg0JUU1JTlCJUJFJUU2JTk4JUFGJUU0JUI4JThEJUU2JTk4JUFGJUU1JUE0JUFBJUU3JUE5JUJBJUU0JUJBJTg2JUVGJUJDJTlGJUU2JUJDJTk0JUU1JTkxJTk4JUVGJUJDJThDJUU0JUJEJUEwJUU3JTlBJTg0JUU2JTgzJTg1JUU3JUJCJUFBJUU1JTg2JThEJUU3JUJCJTlEJUU2JTlDJTlCJUU0JUI4JTgwJUU3JTgyJUI5JUVGJUJDJTgxJUUyJTgwJTlEJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlMkMlMjJjb250ZW50VHlwZSUyMiUzQSUyMmNhbmdqaWUtdGV4dGJsb2NrJTIyJTdEJTJDJTdCJTIya2xhc3MlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJwYXJhZ3JhcGglMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTIydXVpZCUyMiUzQSUyMm1kNDgyazRvY2l2MnpscjExNzklMjIlMkMlMjJpbmQlMjIlM0ElN0IlMjJmaXJzdExpbmUlMjIlM0EzMiU3RCU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTJDJTIyY29udGVudFR5cGUlMjIlM0ElMjJjYW5namllLXRleHRibG9jayUyMiU3RCUyQyU3QiUyMmtsYXNzJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIycGFyYWdyYXBoJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiUyMnV1aWQlMjIlM0ElMjJtZDQ4M3hxbGh4anVoYnh4a2ZqJTIyJTJDJTIyaW5kJTIyJTNBJTdCJTIyZmlyc3RMaW5lJTIyJTNBMzIlN0QlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlRTUlQkQlOTMlRTUlQUYlQkMlRTYlQkMlOTQlRTYlOUMlQUMlRTQlQkElQkElRTclOUIlQjQlRTYlOEUlQTUlRTglQjclQjMlRTQlQjglOEIlRTUlOEUlQkIlRTYlOEMlODclRTYlOEMlQTUlRTclODElQUYlRTUlODUlODklRTUlQjglODglRTUlOEElQTklRTclOTAlODYlRTIlODAlOUMlRTYlOEQlQTIlRTglODklQjIlRTclQkElQjglRTIlODAlOUQlRTYlOTclQjYlRUYlQkMlOEMlRTQlQkMlOUElRTYlODklOTMlRTQlQjklQjElRTQlQkElODYlRTYlOTUlQjQlRTQlQjglQUElRTUlODglOUIlRTQlQkQlOUMlRTclOUElODQlRTIlODAlOUMlRTYlOEElQkQlRTglQjElQTElRTUlQjElODIlRTYlQUMlQTElRTIlODAlOUQlRTMlODAlODIlRTQlQkIlOTYlRTclOUElODQlRTYlODAlOUQlRTclQkIlQjQlRTUlOUMlQTglRTIlODAlOUMlRTYlOUMlODAlRTclQkIlODglRTglODklQkElRTYlOUMlQUYlRTYlOTUlODglRTYlOUUlOUMlRTIlODAlOUQlRTUlOTIlOEMlRTIlODAlOUMlRTUlODUlQjclRTQlQkQlOTMlRTclODElQUYlRTUlODUlQjclRTUlOUUlOEIlRTUlOEYlQjclRTIlODAlOUQlRTQlQjklOEIlRTklOTclQjQlRTYlOUQlQTUlRTUlOUIlOUUlRTglQjclQjMlRTglQjclODMlRUYlQkMlOEMlRTUlQUYlQkMlRTglODclQjQlRTclOUElODQlRTclQkIlOTMlRTYlOUUlOUMlRTUlQjAlQjElRTYlOTglQUYlRUYlQkMlOUElRTUlOUMlQTglRTUlOUMlQkElRTclOUElODQlRTYlODklODAlRTYlOUMlODklRTQlQkElQkElRUYlQkMlODglRTUlOEMlODUlRTYlOEIlQUMlRTQlQkIlOTYlRTglODclQUElRTUlQjclQjElRUYlQkMlODklRTklODMlQkQlRTYlODQlOUYlRTUlODglQjAlRTYlQjclQjclRTQlQjklQjElRUYlQkMlOEMlRTYlOTclQTAlRTYlQjMlOTUlRTklOUIlODYlRTQlQjglQUQlRTclQjIlQkUlRTUlOEElOUIlRTUlQUUlOEMlRTYlODglOTAlRTglODclQUElRTUlQjclQjElRTUlQjElODIlRTclQkElQTclRTclOUElODQlRTYlOUMlQUMlRTglODElOEMlRTUlQjclQTUlRTQlQkQlOUMlRUYlQkMlOEMlRTYlOUMlODAlRTclQkIlODglRTclOUElODQlRTglODklQkElRTYlOUMlQUYlRTYlOTUlODglRTYlOUUlOUMlRTQlQjklOUYlRTUlQkYlODUlRTclODQlQjYlRTUlQTQlQTclRTYlODklOTMlRTYlOEElOTglRTYlODklQTMlRTMlODAlODIlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCUyQyUyMmNvbnRlbnRUeXBlJTIyJTNBJTIyY2FuZ2ppZS10ZXh0YmxvY2slMjIlN0QlMkMlN0IlMjJrbGFzcyUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMnBhcmFncmFwaCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlMjJ1dWlkJTIyJTNBJTIybWQ0YTBsZzFxazQ3MWE2ZHp2ayUyMiUyQyUyMmluZCUyMiUzQSU3QiU3RCU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTJDJTIyY29udGVudFR5cGUlMjIlM0ElMjJjYW5namllLXRleHRibG9jayUyMiU3RCUyQyU3QiUyMmtsYXNzJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyaGVhZGluZy0xJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiUyMnV1aWQlMjIlM0ElMjJtZDRhMG1iczE5anE0N2k0bnY4JTIyJTJDJTIyaW5kJTIyJTNBJTdCJTdEJTJDJTIyc3BhY2luZyUyMiUzQSU3QiUyMmJlZm9yZSUyMiUzQTI2LjY2NjY2NjY2NjY2NjY2NCUyQyUyMmFmdGVyJTIyJTNBOSUyQyUyMmxpbmUlMjIlM0EwLjg1Mjk0MTE3NjQ3MDU4ODIlN0QlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlRTglQkQlQUYlRTQlQkIlQjYlRTUlQjclQTUlRTclQTglOEIlRTUlQjElODIlRTklOUQlQTIlRTclOUElODQlRTYlOEElQkQlRTglQjElQTElRTUlQjElODIlRTYlQUMlQTElRTYlQjclQjclRTQlQjklQjElMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIybWFyayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJib2xkJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCU3RCUyQyU3QiUyMmtsYXNzJTIyJTNBJTIybWFyayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJzeiUyMiUyQyUyMmRhdGElMjIlM0ElN0IlMjJ2YWx1ZSUyMiUzQTIwJTJDJTIyc3pVbml0JTIyJTNBJTIycHQlMjIlN0QlN0QlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJrbGFzcyUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMnBhcmFncmFwaCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlMjJ1dWlkJTIyJTNBJTIybWQ0ZjdxOXNyOGZ6ZXF3eG9iYyUyMiUyQyUyMmluZCUyMiUzQSU3QiUyMmZpcnN0TGluZSUyMiUzQTMyJTdEJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJUU2JTlDJTgwJUU4JUJGJTkxJUU0JUJGJUFFJUU2JTk0JUI5Y29kZWJhc2UlRTQlQjglQUQlRTclOUElODQlRTQlQjglODAlRTQlQkElOUIlRTQlQkIlQTMlRTclQTAlODElRUYlQkMlOEMlRTYlQjMlQTglRTYlODQlOEYlRTUlODglQjAlRTYlOUMlODklRTUlQkUlODglRTUlQTQlOUElRTQlQkIlQTMlRTclQTAlODElRTUlQUQlOTglRTUlOUMlQTglRTUlQTQlOUElRTQlQjglQUElRTYlOEElQkQlRTglQjElQTElRTUlQjElODIlRTYlQUMlQTElRTYlQjclQjclRTclOTQlQTglRTclOUElODQlRTclOEElQjYlRTUlODYlQjUlRUYlQkMlOEMlRTklOUMlODAlRTglQTYlODElRTQlQkYlQUUlRTYlOTQlQjklRTclOUElODRCdWclRTYlQUQlQTMlRTUlQTUlQkQlRTUlOTIlOEMlRTglQUYlQTUlRTklOTclQUUlRTklQTIlOTglRTYlOUMlODklRTUlODUlQjMlRUYlQkMlOEMlRTQlQjglOEQlRTglQjQlQjQlRTUlOEUlOUYlRTQlQkIlQTMlRTclQTAlODElRUYlQkMlOEMlRTklODAlOUElRTglQkYlODdBSSVFRiVCQyU4QyVFNSU4OCU5QiVFOSU4MCVBMCVFNSU4NyVCQSVFOSVBMyU4RSVFNiVBMCVCQyVFNyVCMSVCQiVFNCVCQyVCQyVFNyU5QSU4NCVFNCVCQiVBMyVFNyVBMCU4MSVFRiVCQyU4QyVFNSVBNiU4MiVFNCVCOCU4QiUzQSUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTJDJTIyY29udGVudFR5cGUlMjIlM0ElMjJjYW5namllLXRleHRibG9jayUyMiU3RCUyQyU3QiUyMmtsYXNzJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIycGFyYWdyYXBoJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiUyMnV1aWQlMjIlM0ElMjJtZDRlem1sZW9sM2kyMTFmaXMlMjIlMkMlMjJpbmQlMjIlM0ElN0IlN0QlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCUyQyUyMmNvbnRlbnRUeXBlJTIyJTNBJTIyY2FuZ2ppZS10ZXh0YmxvY2slMjIlN0QlMkMlN0IlMjJrbGFzcyUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMmNvZGUlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTIyc3ludGF4JTIyJTNBJTIybXMlMjBzcWwlMjIlMkMlMjJ0aGVtZSUyMiUzQSUyMmRlZmF1bHQlMjIlMkMlMjJ3cmFwJTIyJTNBdHJ1ZSUyQyUyMmlkJTIyJTNBJTIyb3pyZHlsJTIyJTJDJTIydGl0bGUlMjIlM0ElMjIlMjIlMkMlMjJmb2xkJTIyJTNBZmFsc2UlMkMlMjJoaWRlSGVhZGVyJTIyJTNBZmFsc2UlMkMlMjJjb2RlRm9sZGluZyUyMiUzQWZhbHNlJTJDJTIyc2hvd0xpbmVOdW1iZXIlMjIlM0F0cnVlJTJDJTIyZm9udCUyMiUzQSU3QiUyMmZvbnRGYW1pbHklMjIlM0ElMjJkZWZhdWx0Rm9udCUyMiUyQyUyMmxpZ2F0dXJlcyUyMiUzQWZhbHNlJTdEJTJDJTIyZW5hYmxlTWFjSGVhZGVyJTIyJTNBZmFsc2UlMkMlMjJ1dWlkJTIyJTNBJTIybWQ0YXh0MmVzMzN5dG1odG5hciUyMiUyQyUyMmNvZGUlMjIlM0ElMjJkZWYlMjByZWdpc3Rlcl91c2VyKHVzZXJuYW1lJTJDJTIwZW1haWwlMkMlMjBwYXNzd29yZCUyQyUyMHVzZXJfdHlwZSklM0ElNUNuJTVDbiUyMCUyMCUyMCUyMCUyMyUyMCVFNyVBQyVBQzElRTUlQjElODIlRUYlQkMlOUElRTQlQjglOUElRTUlOEElQTElRTklODAlQkIlRTglQkUlOTElRTUlQjElODIlMjAtJTIwJUU0JUI4JTlBJUU1JThBJUExJUU4JUE3JTg0JUU1JTg4JTk5JUU1JTg4JUE0JUU2JTk2JUFEJTVDbiUyMCUyMCUyMCUyMGlmJTIwdXNlcl90eXBlJTIwJTNEJTNEJTIwJ3ByZW1pdW0nJTNBJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGlmJTIwbGVuKHVzZXJuYW1lKSUyMCUzQyUyMDYlM0ElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwJTdCJ3N1Y2Nlc3MnJTNBJTIwRmFsc2UlMkMlMjAnZXJyb3InJTNBJTIwJ1ByZW1pdW0lRTclOTQlQTglRTYlODglQjclRTUlOTAlOEQlRTglODclQjMlRTUlQjAlOTE2JUU0JUJEJThEJyU3RCU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjAlRTQlQjglOUElRTUlOEElQTElRTglQTclODQlRTUlODglOTklRUYlQkMlOUFwcmVtaXVtJUU3JTk0JUE4JUU2JTg4JUI3JUU5JTlDJTgwJUU4JUE2JTgxJUU3JTg5JUI5JUU2JUFFJThBJUU5JUFBJThDJUU4JUFGJTgxJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNwZWNpYWxfdmFsaWRhdGlvbl9uZWVkZWQlMjAlM0QlMjBUcnVlJTVDbiUyMCUyMCUyMCUyMGVsc2UlM0ElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3BlY2lhbF92YWxpZGF0aW9uX25lZWRlZCUyMCUzRCUyMEZhbHNlJTVDbiUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjAlMjMlMjAlRTclQUMlQUMyJUU1JUIxJTgyJUVGJUJDJTlBJUU2JTk1JUIwJUU2JThEJUFFJUU1JUE0JTg0JUU3JTkwJTg2JUU1JUIxJTgyJTIwLSUyMCVFNiU5NSVCMCVFNiU4RCVBRSVFOSVBQSU4QyVFOCVBRiU4MSVFNSU5MiU4QyVFOCVCRCVBQyVFNiU4RCVBMiU1Q24lMjAlMjAlMjAlMjAlMjMlMjAlRTklODIlQUUlRTclQUUlQjElRTYlQTAlQkMlRTUlQkMlOEYlRTklQUElOEMlRTglQUYlODElNUNuJTIwJTIwJTIwJTIwaWYlMjBub3QlMjByZS5tYXRjaChyJyU1RSU1QmEtekEtWjAtOS5fJTI1JTJCLSU1RCUyQiU0MCU1QmEtekEtWjAtOS4tJTVEJTJCJTVDJTVDLiU1QmEtekEtWiU1RCU3QjIlMkMlN0QlMjQnJTJDJTIwZW1haWwpJTNBJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMCU3QidzdWNjZXNzJyUzQSUyMEZhbHNlJTJDJTIwJ2Vycm9yJyUzQSUyMCclRTklODIlQUUlRTclQUUlQjElRTYlQTAlQkMlRTUlQkMlOEYlRTQlQjglOEQlRTYlQUQlQTMlRTclQTElQUUnJTdEJTVDbiUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjAlMjMlMjAlRTUlQUYlODYlRTclQTAlODElRTUlQkMlQkElRTUlQkElQTYlRTYlQTMlODAlRTYlOUYlQTUlNUNuJTIwJTIwJTIwJTIwaWYlMjBsZW4ocGFzc3dvcmQpJTIwJTNDJTIwOCUyMG9yJTIwbm90JTIwcmUuc2VhcmNoKHInJTVCQS1aJTVEJyUyQyUyMHBhc3N3b3JkKSUyMG9yJTIwbm90JTIwcmUuc2VhcmNoKHInJTVCMC05JTVEJyUyQyUyMHBhc3N3b3JkKSUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjAlN0Inc3VjY2VzcyclM0ElMjBGYWxzZSUyQyUyMCdlcnJvciclM0ElMjAnJUU1JUFGJTg2JUU3JUEwJTgxJUU1JUJGJTg1JUU5JUExJUJCJUU4JTg3JUIzJUU1JUIwJTkxOCVFNCVCRCU4RCVFNCVCOCU5NCVFNSU4QyU4NSVFNSU5MCVBQiVFNSVBNCVBNyVFNSU4NiU5OSVFNSVBRCU5NyVFNiVBRiU4RCVFNSU5MiU4QyVFNiU5NSVCMCVFNSVBRCU5NyclN0QlNUNuJTIwJTIwJTIwJTIwJTVDbiUyMCUyMCUyMCUyMCUyMyUyMCVFNSVBRiU4NiVFNyVBMCU4MSVFNSU4QSVBMCVFNSVBRiU4NiU1Q24lMjAlMjAlMjAlMjBwYXNzd29yZF9oYXNoJTIwJTNEJTIwaGFzaGxpYi5zaGEyNTYocGFzc3dvcmQuZW5jb2RlKCkpLmhleGRpZ2VzdCgpJTVDbiUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjAlMjMlMjAlRTclQUMlQUMzJUU1JUIxJTgyJUVGJUJDJTlBJUU1JUJBJTk1JUU1JUIxJTgyJUU2JThBJTgwJUU2JTlDJUFGJUU3JUJCJTg2JUU4JThBJTgyJTIwLSUyMCVFNiU5NSVCMCVFNiU4RCVBRSVFNSVCQSU5MyVFNiU5MyU4RCVFNCVCRCU5QyU1Q24lMjAlMjAlMjAlMjB0cnklM0ElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwJUU3JTlCJUI0JUU2JThFJUE1JUU1JTlDJUE4JUU0JUI4JTlBJUU1JThBJUExJUU1JTg3JUJEJUU2JTk1JUIwJUU0JUI4JUFEJUU1JUE0JTg0JUU3JTkwJTg2JUU2JTk1JUIwJUU2JThEJUFFJUU1JUJBJTkzJUU4JUJGJTlFJUU2JThFJUE1JTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGNvbm4lMjAlM0QlMjBzcWxpdGUzLmNvbm5lY3QoJ3VzZXJzLmRiJyklNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwY3Vyc29yJTIwJTNEJTIwY29ubi5jdXJzb3IoKSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwJUU2JUEzJTgwJUU2JTlGJUE1JUU3JTk0JUE4JUU2JTg4JUI3JUU2JTk4JUFGJUU1JTkwJUE2JUU1JUI3JUIyJUU1JUFEJTk4JUU1JTlDJUE4JTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGN1cnNvci5leGVjdXRlKCU1QyUyMlNFTEVDVCUyMGlkJTIwRlJPTSUyMHVzZXJzJTIwV0hFUkUlMjB1c2VybmFtZSUyMCUzRCUyMCUzRiUyME9SJTIwZW1haWwlMjAlM0QlMjAlM0YlNUMlMjIlMkMlMjAlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwKHVzZXJuYW1lJTJDJTIwZW1haWwpKSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpZiUyMGN1cnNvci5mZXRjaG9uZSgpJTNBJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGNvbm4uY2xvc2UoKSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjAlN0Inc3VjY2VzcyclM0ElMjBGYWxzZSUyQyUyMCdlcnJvciclM0ElMjAnJUU3JTk0JUE4JUU2JTg4JUI3JUU1JTkwJThEJUU2JTg4JTk2JUU5JTgyJUFFJUU3JUFFJUIxJUU1JUI3JUIyJUU1JUFEJTk4JUU1JTlDJUE4JyU3RCU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwJUU2JThGJTkyJUU1JTg1JUE1JUU3JTk0JUE4JUU2JTg4JUI3JUU2JTk1JUIwJUU2JThEJUFFJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGN1cnNvci5leGVjdXRlKCU1QyUyMiU1QyUyMiU1QyUyMiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBJTlNFUlQlMjBJTlRPJTIwdXNlcnMlMjAodXNlcm5hbWUlMkMlMjBlbWFpbCUyQyUyMHBhc3N3b3JkX2hhc2glMkMlMjB1c2VyX3R5cGUlMkMlMjBjcmVhdGVkX2F0KSUyMCU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBWQUxVRVMlMjAoJTNGJTJDJTIwJTNGJTJDJTIwJTNGJTJDJTIwJTNGJTJDJTIwJTNGKSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUMlMjIlNUMlMjIlNUMlMjIlMkMlMjAodXNlcm5hbWUlMkMlMjBlbWFpbCUyQyUyMHBhc3N3b3JkX2hhc2glMkMlMjB1c2VyX3R5cGUlMkMlMjBkYXRldGltZS5ub3coKSkpJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjB1c2VyX2lkJTIwJTNEJTIwY3Vyc29yLmxhc3Ryb3dpZCU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBjb25uLmNvbW1pdCgpJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGNvbm4uY2xvc2UoKSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUNuJTIwJTIwJTIwJTIwZXhjZXB0JTIwc3FsaXRlMy5FcnJvciUyMGFzJTIwZSUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjAlRTQlQjglOUElRTUlOEElQTElRTUlQjElODIlRTglQTIlQUIlRTglQkYlQUIlRTUlQTQlODQlRTclOTAlODYlRTYlOTUlQjAlRTYlOEQlQUUlRTUlQkElOTMlRTYlOEElODAlRTYlOUMlQUYlRTclQkIlODYlRTglOEElODIlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwJTdCJ3N1Y2Nlc3MnJTNBJTIwRmFsc2UlMkMlMjAnZXJyb3InJTNBJTIwZiclRTYlOTUlQjAlRTYlOEQlQUUlRTUlQkElOTMlRTklOTQlOTklRTglQUYlQUYlM0ElMjAlN0JzdHIoZSklN0QnJTdEJTVDbiUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjAlMjMlMjAlRTclQUMlQUMzJUU1JUIxJTgyJUVGJUJDJTlBJUU1JUJBJTk1JUU1JUIxJTgyJUU2JThBJTgwJUU2JTlDJUFGJUU3JUJCJTg2JUU4JThBJTgyJTIwLSUyMCVFOSU4MiVBRSVFNCVCQiVCNiVFNSU4RiU5MSVFOSU4MCU4MSU1Q24lMjAlMjAlMjAlMjB0cnklM0ElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwJUU0JUI4JTlBJUU1JThBJUExJUU1JTg3JUJEJUU2JTk1JUIwJUU3JTlCJUI0JUU2JThFJUE1JUU1JUE0JTg0JUU3JTkwJTg2U01UUCVFOSU4NSU4RCVFNyVCRCVBRSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzbXRwX3NlcnZlciUyMCUzRCUyMHNtdHBsaWIuU01UUCgnc210cC5nbWFpbC5jb20nJTJDJTIwNTg3KSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzbXRwX3NlcnZlci5zdGFydHRscygpJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNtdHBfc2VydmVyLmxvZ2luKCd5b3VyX2VtYWlsJTQwZ21haWwuY29tJyUyQyUyMCd5b3VyX3Bhc3N3b3JkJyklNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMCVFNiVBMCVCOSVFNiU4RCVBRSVFNyU5NCVBOCVFNiU4OCVCNyVFNyVCMSVCQiVFNSU5RSU4QiVFNSU4RiU5MSVFOSU4MCU4MSVFNCVCOCU4RCVFNSU5MCU4QyVFOSU4MiVBRSVFNCVCQiVCNiVFRiVCQyU4OCVFNCVCOCU5QSVFNSU4QSVBMSVFOSU4MCVCQiVFOCVCRSU5MSVFNCVCOCU4RSVFNiU4QSU4MCVFNiU5QyVBRiVFNyVCQiU4NiVFOCU4QSU4MiVFNiVCNyVCNyVFNiU5RCU4MiVFRiVCQyU4OSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpZiUyMHVzZXJfdHlwZSUyMCUzRCUzRCUyMCdwcmVtaXVtJyUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzdWJqZWN0JTIwJTNEJTIwJTVDJTIyJUU2JUFDJUEyJUU4JUJGJThFJUU2JTg4JTkwJUU0JUI4JUJBUHJlbWl1bSVFNyU5NCVBOCVFNiU4OCVCNyVFRiVCQyU4MSU1QyUyMiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBib2R5JTIwJTNEJTIwZiU1QyUyMiVFNCVCQSVCMiVFNyU4OCVCMSVFNyU5QSU4NCUyMCU3QnVzZXJuYW1lJTdEJUVGJUJDJThDJUU2JTg0JTlGJUU4JUIwJUEyJUU2JTgyJUE4JUU2JTg4JTkwJUU0JUI4JUJBJUU2JTg4JTkxJUU0JUJCJUFDJUU3JTlBJTg0UHJlbWl1bSVFNyU5NCVBOCVFNiU4OCVCNy4uLiU1QyUyMiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBlbHNlJTNBJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHN1YmplY3QlMjAlM0QlMjAlNUMlMjIlRTYlQUMlQTIlRTglQkYlOEUlRTYlQjMlQTglRTUlODYlOEMlRUYlQkMlODElNUMlMjIlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYm9keSUyMCUzRCUyMGYlNUMlMjIlRTQlQkElQjIlRTclODglQjElRTclOUElODQlMjAlN0J1c2VybmFtZSU3RCVFRiVCQyU4QyVFNiU4NCU5RiVFOCVCMCVBMiVFNiU4MiVBOCVFNyU5QSU4NCVFNiVCMyVBOCVFNSU4NiU4Qy4uLiU1QyUyMiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbXNnJTIwJTNEJTIwTUlNRVRleHQoYm9keSklNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbXNnJTVCJ1N1YmplY3QnJTVEJTIwJTNEJTIwc3ViamVjdCU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBtc2clNUInRnJvbSclNUQlMjAlM0QlMjAneW91cl9lbWFpbCU0MGdtYWlsLmNvbSclNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbXNnJTVCJ1RvJyU1RCUyMCUzRCUyMGVtYWlsJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzbXRwX3NlcnZlci5zZW5kX21lc3NhZ2UobXNnKSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzbXRwX3NlcnZlci5xdWl0KCklNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDbiUyMCUyMCUyMCUyMGV4Y2VwdCUyMHNtdHBsaWIuU01UUEV4Y2VwdGlvbiUyMGFzJTIwZSUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjAlRTQlQjglOUElRTUlOEElQTElRTUlQjElODIlRTglQTIlQUIlRTglQkYlQUIlRTUlQTQlODQlRTclOTAlODYlRTklODIlQUUlRTQlQkIlQjYlRTYlOUMlOEQlRTUlOEElQTElRTUlOTklQTglRTYlOEElODAlRTYlOUMlQUYlRTclQkIlODYlRTglOEElODIlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwJUU4JUJGJTk5JUU5JTg3JThDJUU4JUJGJTk4JUU4JUE2JTgxJUU4JTgwJTgzJUU4JTk5JTkxJUVGJUJDJTlBJUU5JTgyJUFFJUU0JUJCJUI2JUU1JThGJTkxJUU5JTgwJTgxJUU1JUE0JUIxJUU4JUI0JUE1JUU0JUJBJTg2JUVGJUJDJThDJUU4JUE2JTgxJUU0JUI4JThEJUU4JUE2JTgxJUU1JTlCJTlFJUU2JUJCJTlBJUU2JTk1JUIwJUU2JThEJUFFJUU1JUJBJTkzJUVGJUJDJTlGJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHBhc3MlMjAlMjAlMjMlMjAlRTUlODUlODglRTUlQkYlQkQlRTclOTUlQTUlRTklODIlQUUlRTQlQkIlQjYlRTUlOEYlOTElRTklODAlODElRTUlQTQlQjElRTglQjQlQTUlNUNuJTIwJTIwJTIwJTIwJTVDbiUyMCUyMCUyMCUyMCUyMyUyMCVFNyVBQyVBQzElRTUlQjElODIlRUYlQkMlOUElRTQlQjglOUElRTUlOEElQTElRTklODAlQkIlRTglQkUlOTElRTUlQjElODIlMjAtJTIwJUU4JUJGJTk0JUU1JTlCJTlFJUU0JUI4JTlBJUU1JThBJUExJUU3JUJCJTkzJUU2JTlFJTlDJTVDbiUyMCUyMCUyMCUyMHJldHVybiUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAnc3VjY2VzcyclM0ElMjBUcnVlJTJDJTIwJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCd1c2VyX2lkJyUzQSUyMHVzZXJfaWQlMkMlMjAlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJ21lc3NhZ2UnJTNBJTIwZiclN0IlNUMlMjJQcmVtaXVtJTVDJTIyJTIwaWYlMjB1c2VyX3R5cGUlMjAlM0QlM0QlMjAlNUMlMjJwcmVtaXVtJTVDJTIyJTIwZWxzZSUyMCU1QyUyMiVFNiU5OSVBRSVFOSU4MCU5QSU1QyUyMiU3RCVFNyU5NCVBOCVFNiU4OCVCNyVFNiVCMyVBOCVFNSU4NiU4QyVFNiU4OCU5MCVFNSU4QSU5RiclMjIlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjJkZWYlMjByZWdpc3Rlcl91c2VyKHVzZXJuYW1lJTJDJTIwZW1haWwlMkMlMjBwYXNzd29yZCUyQyUyMHVzZXJfdHlwZSklM0ElNUNuJTVDbiUyMCUyMCUyMCUyMCUyMyUyMCVFNyVBQyVBQzElRTUlQjElODIlRUYlQkMlOUElRTQlQjglOUElRTUlOEElQTElRTklODAlQkIlRTglQkUlOTElRTUlQjElODIlMjAtJTIwJUU0JUI4JTlBJUU1JThBJUExJUU4JUE3JTg0JUU1JTg4JTk5JUU1JTg4JUE0JUU2JTk2JUFEJTVDbiUyMCUyMCUyMCUyMGlmJTIwdXNlcl90eXBlJTIwJTNEJTNEJTIwJ3ByZW1pdW0nJTNBJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGlmJTIwbGVuKHVzZXJuYW1lKSUyMCUzQyUyMDYlM0ElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwJTdCJ3N1Y2Nlc3MnJTNBJTIwRmFsc2UlMkMlMjAnZXJyb3InJTNBJTIwJ1ByZW1pdW0lRTclOTQlQTglRTYlODglQjclRTUlOTAlOEQlRTglODclQjMlRTUlQjAlOTE2JUU0JUJEJThEJyU3RCU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjAlRTQlQjglOUElRTUlOEElQTElRTglQTclODQlRTUlODglOTklRUYlQkMlOUFwcmVtaXVtJUU3JTk0JUE4JUU2JTg4JUI3JUU5JTlDJTgwJUU4JUE2JTgxJUU3JTg5JUI5JUU2JUFFJThBJUU5JUFBJThDJUU4JUFGJTgxJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNwZWNpYWxfdmFsaWRhdGlvbl9uZWVkZWQlMjAlM0QlMjBUcnVlJTVDbiUyMCUyMCUyMCUyMGVsc2UlM0ElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3BlY2lhbF92YWxpZGF0aW9uX25lZWRlZCUyMCUzRCUyMEZhbHNlJTVDbiUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjAlMjMlMjAlRTclQUMlQUMyJUU1JUIxJTgyJUVGJUJDJTlBJUU2JTk1JUIwJUU2JThEJUFFJUU1JUE0JTg0JUU3JTkwJTg2JUU1JUIxJTgyJTIwLSUyMCVFNiU5NSVCMCVFNiU4RCVBRSVFOSVBQSU4QyVFOCVBRiU4MSVFNSU5MiU4QyVFOCVCRCVBQyVFNiU4RCVBMiU1Q24lMjAlMjAlMjAlMjAlMjMlMjAlRTklODIlQUUlRTclQUUlQjElRTYlQTAlQkMlRTUlQkMlOEYlRTklQUElOEMlRTglQUYlODElNUNuJTIwJTIwJTIwJTIwaWYlMjBub3QlMjByZS5tYXRjaChyJyU1RSU1QmEtekEtWjAtOS5fJTI1JTJCLSU1RCUyQiU0MCU1QmEtekEtWjAtOS4tJTVEJTJCJTVDJTVDLiU1QmEtekEtWiU1RCU3QjIlMkMlN0QlMjQnJTJDJTIwZW1haWwpJTNBJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMCU3QidzdWNjZXNzJyUzQSUyMEZhbHNlJTJDJTIwJ2Vycm9yJyUzQSUyMCclRTklODIlQUUlRTclQUUlQjElRTYlQTAlQkMlRTUlQkMlOEYlRTQlQjglOEQlRTYlQUQlQTMlRTclQTElQUUnJTdEJTVDbiUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjAlMjMlMjAlRTUlQUYlODYlRTclQTAlODElRTUlQkMlQkElRTUlQkElQTYlRTYlQTMlODAlRTYlOUYlQTUlNUNuJTIwJTIwJTIwJTIwaWYlMjBsZW4ocGFzc3dvcmQpJTIwJTNDJTIwOCUyMG9yJTIwbm90JTIwcmUuc2VhcmNoKHInJTVCQS1aJTVEJyUyQyUyMHBhc3N3b3JkKSUyMG9yJTIwbm90JTIwcmUuc2VhcmNoKHInJTVCMC05JTVEJyUyQyUyMHBhc3N3b3JkKSUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjAlN0Inc3VjY2VzcyclM0ElMjBGYWxzZSUyQyUyMCdlcnJvciclM0ElMjAnJUU1JUFGJTg2JUU3JUEwJTgxJUU1JUJGJTg1JUU5JUExJUJCJUU4JTg3JUIzJUU1JUIwJTkxOCVFNCVCRCU4RCVFNCVCOCU5NCVFNSU4QyU4NSVFNSU5MCVBQiVFNSVBNCVBNyVFNSU4NiU5OSVFNSVBRCU5NyVFNiVBRiU4RCVFNSU5MiU4QyVFNiU5NSVCMCVFNSVBRCU5NyclN0QlNUNuJTIwJTIwJTIwJTIwJTVDbiUyMCUyMCUyMCUyMCUyMyUyMCVFNSVBRiU4NiVFNyVBMCU4MSVFNSU4QSVBMCVFNSVBRiU4NiU1Q24lMjAlMjAlMjAlMjBwYXNzd29yZF9oYXNoJTIwJTNEJTIwaGFzaGxpYi5zaGEyNTYocGFzc3dvcmQuZW5jb2RlKCkpLmhleGRpZ2VzdCgpJTVDbiUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjAlMjMlMjAlRTclQUMlQUMzJUU1JUIxJTgyJUVGJUJDJTlBJUU1JUJBJTk1JUU1JUIxJTgyJUU2JThBJTgwJUU2JTlDJUFGJUU3JUJCJTg2JUU4JThBJTgyJTIwLSUyMCVFNiU5NSVCMCVFNiU4RCVBRSVFNSVCQSU5MyVFNiU5MyU4RCVFNCVCRCU5QyU1Q24lMjAlMjAlMjAlMjB0cnklM0ElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwJUU3JTlCJUI0JUU2JThFJUE1JUU1JTlDJUE4JUU0JUI4JTlBJUU1JThBJUExJUU1JTg3JUJEJUU2JTk1JUIwJUU0JUI4JUFEJUU1JUE0JTg0JUU3JTkwJTg2JUU2JTk1JUIwJUU2JThEJUFFJUU1JUJBJTkzJUU4JUJGJTlFJUU2JThFJUE1JTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGNvbm4lMjAlM0QlMjBzcWxpdGUzLmNvbm5lY3QoJ3VzZXJzLmRiJyklNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwY3Vyc29yJTIwJTNEJTIwY29ubi5jdXJzb3IoKSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwJUU2JUEzJTgwJUU2JTlGJUE1JUU3JTk0JUE4JUU2JTg4JUI3JUU2JTk4JUFGJUU1JTkwJUE2JUU1JUI3JUIyJUU1JUFEJTk4JUU1JTlDJUE4JTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGN1cnNvci5leGVjdXRlKCU1QyUyMlNFTEVDVCUyMGlkJTIwRlJPTSUyMHVzZXJzJTIwV0hFUkUlMjB1c2VybmFtZSUyMCUzRCUyMCUzRiUyME9SJTIwZW1haWwlMjAlM0QlMjAlM0YlNUMlMjIlMkMlMjAlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwKHVzZXJuYW1lJTJDJTIwZW1haWwpKSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpZiUyMGN1cnNvci5mZXRjaG9uZSgpJTNBJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGNvbm4uY2xvc2UoKSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjAlN0Inc3VjY2VzcyclM0ElMjBGYWxzZSUyQyUyMCdlcnJvciclM0ElMjAnJUU3JTk0JUE4JUU2JTg4JUI3JUU1JTkwJThEJUU2JTg4JTk2JUU5JTgyJUFFJUU3JUFFJUIxJUU1JUI3JUIyJUU1JUFEJTk4JUU1JTlDJUE4JyU3RCU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwJUU2JThGJTkyJUU1JTg1JUE1JUU3JTk0JUE4JUU2JTg4JUI3JUU2JTk1JUIwJUU2JThEJUFFJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGN1cnNvci5leGVjdXRlKCU1QyUyMiU1QyUyMiU1QyUyMiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBJTlNFUlQlMjBJTlRPJTIwdXNlcnMlMjAodXNlcm5hbWUlMkMlMjBlbWFpbCUyQyUyMHBhc3N3b3JkX2hhc2glMkMlMjB1c2VyX3R5cGUlMkMlMjBjcmVhdGVkX2F0KSUyMCU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBWQUxVRVMlMjAoJTNGJTJDJTIwJTNGJTJDJTIwJTNGJTJDJTIwJTNGJTJDJTIwJTNGKSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUMlMjIlNUMlMjIlNUMlMjIlMkMlMjAodXNlcm5hbWUlMkMlMjBlbWFpbCUyQyUyMHBhc3N3b3JkX2hhc2glMkMlMjB1c2VyX3R5cGUlMkMlMjBkYXRldGltZS5ub3coKSkpJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjB1c2VyX2lkJTIwJTNEJTIwY3Vyc29yLmxhc3Ryb3dpZCU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBjb25uLmNvbW1pdCgpJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGNvbm4uY2xvc2UoKSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUNuJTIwJTIwJTIwJTIwZXhjZXB0JTIwc3FsaXRlMy5FcnJvciUyMGFzJTIwZSUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjAlRTQlQjglOUElRTUlOEElQTElRTUlQjElODIlRTglQTIlQUIlRTglQkYlQUIlRTUlQTQlODQlRTclOTAlODYlRTYlOTUlQjAlRTYlOEQlQUUlRTUlQkElOTMlRTYlOEElODAlRTYlOUMlQUYlRTclQkIlODYlRTglOEElODIlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwJTdCJ3N1Y2Nlc3MnJTNBJTIwRmFsc2UlMkMlMjAnZXJyb3InJTNBJTIwZiclRTYlOTUlQjAlRTYlOEQlQUUlRTUlQkElOTMlRTklOTQlOTklRTglQUYlQUYlM0ElMjAlN0JzdHIoZSklN0QnJTdEJTVDbiUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjAlMjMlMjAlRTclQUMlQUMzJUU1JUIxJTgyJUVGJUJDJTlBJUU1JUJBJTk1JUU1JUIxJTgyJUU2JThBJTgwJUU2JTlDJUFGJUU3JUJCJTg2JUU4JThBJTgyJTIwLSUyMCVFOSU4MiVBRSVFNCVCQiVCNiVFNSU4RiU5MSVFOSU4MCU4MSU1Q24lMjAlMjAlMjAlMjB0cnklM0ElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwJUU0JUI4JTlBJUU1JThBJUExJUU1JTg3JUJEJUU2JTk1JUIwJUU3JTlCJUI0JUU2JThFJUE1JUU1JUE0JTg0JUU3JTkwJTg2U01UUCVFOSU4NSU4RCVFNyVCRCVBRSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzbXRwX3NlcnZlciUyMCUzRCUyMHNtdHBsaWIuU01UUCgnc210cC5nbWFpbC5jb20nJTJDJTIwNTg3KSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzbXRwX3NlcnZlci5zdGFydHRscygpJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNtdHBfc2VydmVyLmxvZ2luKCd5b3VyX2VtYWlsJTQwZ21haWwuY29tJyUyQyUyMCd5b3VyX3Bhc3N3b3JkJyklNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMCVFNiVBMCVCOSVFNiU4RCVBRSVFNyU5NCVBOCVFNiU4OCVCNyVFNyVCMSVCQiVFNSU5RSU4QiVFNSU4RiU5MSVFOSU4MCU4MSVFNCVCOCU4RCVFNSU5MCU4QyVFOSU4MiVBRSVFNCVCQiVCNiVFRiVCQyU4OCVFNCVCOCU5QSVFNSU4QSVBMSVFOSU4MCVCQiVFOCVCRSU5MSVFNCVCOCU4RSVFNiU4QSU4MCVFNiU5QyVBRiVFNyVCQiU4NiVFOCU4QSU4MiVFNiVCNyVCNyVFNiU5RCU4MiVFRiVCQyU4OSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpZiUyMHVzZXJfdHlwZSUyMCUzRCUzRCUyMCdwcmVtaXVtJyUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzdWJqZWN0JTIwJTNEJTIwJTVDJTIyJUU2JUFDJUEyJUU4JUJGJThFJUU2JTg4JTkwJUU0JUI4JUJBUHJlbWl1bSVFNyU5NCVBOCVFNiU4OCVCNyVFRiVCQyU4MSU1QyUyMiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBib2R5JTIwJTNEJTIwZiU1QyUyMiVFNCVCQSVCMiVFNyU4OCVCMSVFNyU5QSU4NCUyMCU3QnVzZXJuYW1lJTdEJUVGJUJDJThDJUU2JTg0JTlGJUU4JUIwJUEyJUU2JTgyJUE4JUU2JTg4JTkwJUU0JUI4JUJBJUU2JTg4JTkxJUU0JUJCJUFDJUU3JTlBJTg0UHJlbWl1bSVFNyU5NCVBOCVFNiU4OCVCNy4uLiU1QyUyMiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBlbHNlJTNBJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHN1YmplY3QlMjAlM0QlMjAlNUMlMjIlRTYlQUMlQTIlRTglQkYlOEUlRTYlQjMlQTglRTUlODYlOEMlRUYlQkMlODElNUMlMjIlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYm9keSUyMCUzRCUyMGYlNUMlMjIlRTQlQkElQjIlRTclODglQjElRTclOUElODQlMjAlN0J1c2VybmFtZSU3RCVFRiVCQyU4QyVFNiU4NCU5RiVFOCVCMCVBMiVFNiU4MiVBOCVFNyU5QSU4NCVFNiVCMyVBOCVFNSU4NiU4Qy4uLiU1QyUyMiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbXNnJTIwJTNEJTIwTUlNRVRleHQoYm9keSklNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbXNnJTVCJ1N1YmplY3QnJTVEJTIwJTNEJTIwc3ViamVjdCU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBtc2clNUInRnJvbSclNUQlMjAlM0QlMjAneW91cl9lbWFpbCU0MGdtYWlsLmNvbSclNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbXNnJTVCJ1RvJyU1RCUyMCUzRCUyMGVtYWlsJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzbXRwX3NlcnZlci5zZW5kX21lc3NhZ2UobXNnKSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzbXRwX3NlcnZlci5xdWl0KCklNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDbiUyMCUyMCUyMCUyMGV4Y2VwdCUyMHNtdHBsaWIuU01UUEV4Y2VwdGlvbiUyMGFzJTIwZSUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjAlRTQlQjglOUElRTUlOEElQTElRTUlQjElODIlRTglQTIlQUIlRTglQkYlQUIlRTUlQTQlODQlRTclOTAlODYlRTklODIlQUUlRTQlQkIlQjYlRTYlOUMlOEQlRTUlOEElQTElRTUlOTklQTglRTYlOEElODAlRTYlOUMlQUYlRTclQkIlODYlRTglOEElODIlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwJUU4JUJGJTk5JUU5JTg3JThDJUU4JUJGJTk4JUU4JUE2JTgxJUU4JTgwJTgzJUU4JTk5JTkxJUVGJUJDJTlBJUU5JTgyJUFFJUU0JUJCJUI2JUU1JThGJTkxJUU5JTgwJTgxJUU1JUE0JUIxJUU4JUI0JUE1JUU0JUJBJTg2JUVGJUJDJThDJUU4JUE2JTgxJUU0JUI4JThEJUU4JUE2JTgxJUU1JTlCJTlFJUU2JUJCJTlBJUU2JTk1JUIwJUU2JThEJUFFJUU1JUJBJTkzJUVGJUJDJTlGJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHBhc3MlMjAlMjAlMjMlMjAlRTUlODUlODglRTUlQkYlQkQlRTclOTUlQTUlRTklODIlQUUlRTQlQkIlQjYlRTUlOEYlOTElRTklODAlODElRTUlQTQlQjElRTglQjQlQTUlNUNuJTIwJTIwJTIwJTIwJTVDbiUyMCUyMCUyMCUyMCUyMyUyMCVFNyVBQyVBQzElRTUlQjElODIlRUYlQkMlOUElRTQlQjglOUElRTUlOEElQTElRTklODAlQkIlRTglQkUlOTElRTUlQjElODIlMjAtJTIwJUU4JUJGJTk0JUU1JTlCJTlFJUU0JUI4JTlBJUU1JThBJUExJUU3JUJCJTkzJUU2JTlFJTlDJTVDbiUyMCUyMCUyMCUyMHJldHVybiUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAnc3VjY2VzcyclM0ElMjBUcnVlJTJDJTIwJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCd1c2VyX2lkJyUzQSUyMHVzZXJfaWQlMkMlMjAlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJ21lc3NhZ2UnJTNBJTIwZiclN0IlNUMlMjJQcmVtaXVtJTVDJTIyJTIwaWYlMjB1c2VyX3R5cGUlMjAlM0QlM0QlMjAlNUMlMjJwcmVtaXVtJTVDJTIyJTIwZWxzZSUyMCU1QyUyMiVFNiU5OSVBRSVFOSU4MCU5QSU1QyUyMiU3RCVFNyU5NCVBOCVFNiU4OCVCNyVFNiVCMyVBOCVFNSU4NiU4QyVFNiU4OCU5MCVFNSU4QSU5RiclMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCUyQyUyMmNvbnRlbnRUeXBlJTIyJTNBJTIyY2FuZ2ppZS12b2lkYmxvY2slMjIlN0QlMkMlN0IlMjJrbGFzcyUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMnBhcmFncmFwaCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlMjJ1dWlkJTIyJTNBJTIybWQ0ZmptdXY4YXhiYXozb210ZiUyMiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTJDJTIyY29udGVudFR5cGUlMjIlM0ElMjJjYW5namllLXRleHRibG9jayUyMiU3RCUyQyU3QiUyMmtsYXNzJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIycGFyYWdyYXBoJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiUyMnV1aWQlMjIlM0ElMjJtZDRmam95MmZ5eDU3NXRhM2hpJTIyJTJDJTIyaW5kJTIyJTNBJTdCJTIyZmlyc3RMaW5lJTIyJTNBMzIlN0QlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlRTYlOTUlQjQlRTQlQjglQUElRTQlQkIlQTMlRTclQTAlODElRTQlQkIlOEUlRTYlOEElQkQlRTglQjElQTElRTglQTclOTIlRTUlQkElQTYlRUYlQkMlOEMlRTUlOEYlQUYlRTQlQkIlQTUlRTclOUMlOEIlRTUlODElOUElRTYlOTglQUYlRTQlQjglODAlRTQlQjglQUElRTQlQjglOUElRTUlOEElQTElRTUlOEQlOTUlRTUlODUlODMlRTclOUElODQlRTUlQUUlOEMlRTYlOTUlQjQlRTYlOTMlOEQlRTQlQkQlOUMlRUYlQkMlOEMlRTclQTQlQkElRTQlQkUlOEIlRTQlQkIlQTMlRTclQTAlODElRTYlOTglQUYlRTQlQjglODAlRTYlQUMlQTElRTclOTQlQTglRTYlODglQjclRTYlQjMlQTglRTUlODYlOEMlRUYlQkMlOUElMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCUyQyUyMmNvbnRlbnRUeXBlJTIyJTNBJTIyY2FuZ2ppZS10ZXh0YmxvY2slMjIlN0QlMkMlN0IlMjJrbGFzcyUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMnBhcmFncmFwaCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlMjJ1dWlkJTIyJTNBJTIybWQ0Zm9vOTV1Mjk1c2FxdGhtOSUyMiUyQyUyMmluZCUyMiUzQSU3QiUyMmxlZnQlMjIlM0EwJTdEJTJDJTIybGlzdCUyMiUzQSU3QiUyMmxpc3RJZCUyMiUzQSUyMjV1bnJodjVsc2Q4JTIyJTJDJTIybGV2ZWwlMjIlM0EwJTJDJTIyaXNUYXNrTGlzdCUyMiUzQWZhbHNlJTJDJTIyaXNPcmRlcmVkJTIyJTNBZmFsc2UlMkMlMjJsaXN0U3R5bGVUeXBlJTIyJTNBJTIyU0NJUl9FQ0lSX1NSRUMlMjIlMkMlMjJzeW1ib2xTdHlsZSUyMiUzQSU3QiU3RCUyQyUyMmxpc3RTdHlsZSUyMiUzQSU3QiUyMmZvcm1hdCUyMiUzQSUyMmJ1bGxldCUyMiUyQyUyMnRleHQlMjIlM0ElMjIlRTIlOTclOEYlMjIlMkMlMjJhbGlnbiUyMiUzQSUyMmxlZnQlMjIlN0QlN0QlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlRTglQkUlOTMlRTUlODUlQTUlRTklQUElOEMlRTglQUYlODElRTQlQjglOEUlRTglQTclODQlRTUlODglOTklRTYlQTMlODAlRTYlOUYlQTUlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIybWFyayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJib2xkJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCU3RCU1RCU3RCUyQyU3QiUyMmtsYXNzJTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAtJTIwJUU2JUEwJUI5JUU2JThEJUFFJUU3JTk0JUE4JUU2JTg4JUI3JUU3JUIxJUJCJUU1JTlFJThCJUU2JTg5JUE3JUU4JUExJThDJUU0JUI4JThEJUU1JTkwJThDJUU3JTlBJTg0JUU0JUI4JTlBJUU1JThBJUExJUU4JUE3JTg0JUU1JTg4JTk5JUU2JUEwJUExJUU5JUFBJThDJUVGJUJDJThDJUU1JUFGJUI5JUU5JTgyJUFFJUU3JUFFJUIxJUU2JUEwJUJDJUU1JUJDJThGJUUzJTgwJTgxJUU1JUFGJTg2JUU3JUEwJTgxJUU1JUJDJUJBJUU1JUJBJUE2JUU3JUFEJTg5JUU1JTg1JUIzJUU5JTk0JUFFJUU2JTk1JUIwJUU2JThEJUFFJUU4JUJGJTlCJUU4JUExJThDJUU1JTkwJTg4JUU2JUIzJTk1JUU2JTgwJUE3JUU5JUFBJThDJUU4JUFGJTgxJUUzJTgwJTgyJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlMkMlMjJjb250ZW50VHlwZSUyMiUzQSUyMmNhbmdqaWUtdGV4dGJsb2NrJTIyJTdEJTJDJTdCJTIya2xhc3MlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJwYXJhZ3JhcGglMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTIydXVpZCUyMiUzQSUyMm1kNGZvbzk1M21weWJ6azUyeDUlMjIlMkMlMjJpbmQlMjIlM0ElN0IlMjJsZWZ0JTIyJTNBMCU3RCUyQyUyMmxpc3QlMjIlM0ElN0IlMjJsaXN0SWQlMjIlM0ElMjI1dW5yaHY1bHNkOCUyMiUyQyUyMmxldmVsJTIyJTNBMCUyQyUyMmlzVGFza0xpc3QlMjIlM0FmYWxzZSUyQyUyMmlzT3JkZXJlZCUyMiUzQWZhbHNlJTJDJTIybGlzdFN0eWxlVHlwZSUyMiUzQSUyMlNDSVJfRUNJUl9TUkVDJTIyJTJDJTIyc3ltYm9sU3R5bGUlMjIlM0ElN0IlN0QlMkMlMjJsaXN0U3R5bGUlMjIlM0ElN0IlMjJmb3JtYXQlMjIlM0ElMjJidWxsZXQlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJUUyJTk3JThGJTIyJTJDJTIyYWxpZ24lMjIlM0ElMjJsZWZ0JTIyJTdEJTdEJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJUU2JTk1JUIwJUU2JThEJUFFJUU4JUJEJUFDJUU2JThEJUEyJUU0JUI4JThFJUU2JThDJTgxJUU0JUI5JTg1JUU1JThDJTk2JTIyJTJDJTIybWFya3MlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMm1hcmslMjIlMkMlMjJ0eXBlJTIyJTNBJTIyYm9sZCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlN0QlN0QlNUQlN0QlMkMlN0IlMjJrbGFzcyUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIwLSUyMCVFNSVCMCU4NiVFNSU4RSU5RiVFNSVBNyU4QiVFNSVBRiU4NiVFNyVBMCU4MSVFOCVCRCVBQyVFNiU4RCVBMiVFNCVCOCVCQSVFNSU5MyU4OCVFNSVCOCU4QyVFNSU4MCVCQyVFRiVCQyU4QyVFNiVBMyU4MCVFNiU5RiVBNSVFNyU5NCVBOCVFNiU4OCVCNyVFNSU5NCVBRiVFNCVCOCU4MCVFNiU4MCVBNyVFNyVCQSVBNiVFNiU5RCU5RiVFRiVCQyU4QyVFNSVCMCU4NiVFNyU5NCVBOCVFNiU4OCVCNyVFNCVCRiVBMSVFNiU4MSVBRiVFNSVBRCU5OCVFNSU4MiVBOCVFNSU4OCVCMCVFNiU5NSVCMCVFNiU4RCVBRSVFNSVCQSU5MyVFNCVCOCVBRCVFOCU4RSVCNyVFNSU4RiU5NiVFNyU5NCVBOCVFNiU4OCVCN0lEJUUzJTgwJTgyJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlMkMlMjJjb250ZW50VHlwZSUyMiUzQSUyMmNhbmdqaWUtdGV4dGJsb2NrJTIyJTdEJTJDJTdCJTIya2xhc3MlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJwYXJhZ3JhcGglMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTIydXVpZCUyMiUzQSUyMm1kNGZvbzk1ZjZwZ3ZhN3lnYmMlMjIlMkMlMjJpbmQlMjIlM0ElN0IlMjJsZWZ0JTIyJTNBMCU3RCUyQyUyMmxpc3QlMjIlM0ElN0IlMjJsaXN0SWQlMjIlM0ElMjI1dW5yaHY1bHNkOCUyMiUyQyUyMmxldmVsJTIyJTNBMCUyQyUyMmlzVGFza0xpc3QlMjIlM0FmYWxzZSUyQyUyMmlzT3JkZXJlZCUyMiUzQWZhbHNlJTJDJTIybGlzdFN0eWxlVHlwZSUyMiUzQSUyMlNDSVJfRUNJUl9TUkVDJTIyJTJDJTIyc3ltYm9sU3R5bGUlMjIlM0ElN0IlN0QlMkMlMjJsaXN0U3R5bGUlMjIlM0ElN0IlMjJmb3JtYXQlMjIlM0ElMjJidWxsZXQlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJUUyJTk3JThGJTIyJTJDJTIyYWxpZ24lMjIlM0ElMjJsZWZ0JTIyJTdEJTdEJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJUU1JUE0JTk2JUU5JTgzJUE4JUU2JTlDJThEJUU1JThBJUExJUU0JUJBJUE0JUU0JUJBJTkyJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMm1hcmslMjIlMkMlMjJ0eXBlJTIyJTNBJTIyYm9sZCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlN0QlN0QlNUQlN0QlMkMlN0IlMjJrbGFzcyUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIwLSUyMCVFNiVBMCVCOSVFNiU4RCVBRSVFNyU5NCVBOCVFNiU4OCVCNyVFNyVCMSVCQiVFNSU5RSU4QiVFNiU5RSU4NCVFOSU4MCVBMCVFNyU5QiVCOCVFNSVCQSU5NCVFNyU5QSU4NCVFNiVBQyVBMiVFOCVCRiU4RSVFOSU4MiVBRSVFNCVCQiVCNiVFNSU4NiU4NSVFNSVBRSVCOSVFRiVCQyU4QyVFOSU4MCU5QSVFOCVCRiU4N1NNVFAlRTYlOUMlOEQlRTUlOEElQTElRTUlOEYlOTElRTklODAlODElRTklODAlOUElRTclOUYlQTUlRTklODIlQUUlRTQlQkIlQjYlRTUlQUUlOEMlRTYlODglOTAlRTclOTQlQTglRTYlODglQjclRTQlQkQlOTMlRTklQUElOEMlRTklOTclQUQlRTclOEUlQUYlRTMlODAlODIlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCUyQyUyMmNvbnRlbnRUeXBlJTIyJTNBJTIyY2FuZ2ppZS10ZXh0YmxvY2slMjIlN0QlMkMlN0IlMjJrbGFzcyUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMnBhcmFncmFwaCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlMjJ1dWlkJTIyJTNBJTIybWQ0Zm9vOTZtY3VnZzh3bWw0JTIyJTJDJTIyaW5kJTIyJTNBJTdCJTIybGVmdCUyMiUzQTAlN0QlMkMlMjJsaXN0JTIyJTNBJTdCJTIybGlzdElkJTIyJTNBJTIyNXVucmh2NWxzZDglMjIlMkMlMjJsZXZlbCUyMiUzQTAlMkMlMjJpc1Rhc2tMaXN0JTIyJTNBZmFsc2UlMkMlMjJpc09yZGVyZWQlMjIlM0FmYWxzZSUyQyUyMmxpc3RTdHlsZVR5cGUlMjIlM0ElMjJTQ0lSX0VDSVJfU1JFQyUyMiUyQyUyMnN5bWJvbFN0eWxlJTIyJTNBJTdCJTdEJTJDJTIybGlzdFN0eWxlJTIyJTNBJTdCJTIyZm9ybWF0JTIyJTNBJTIyYnVsbGV0JTIyJTJDJTIydGV4dCUyMiUzQSUyMiVFMiU5NyU4RiUyMiUyQyUyMmFsaWduJTIyJTNBJTIybGVmdCUyMiU3RCU3RCU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiVFNyVCQiU5MyVFNiU5RSU5QyVFNSVCMCU4MSVFOCVBMyU4NSVFNCVCOCU4RSVFOCVCRiU5NCVFNSU5QiU5RSUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJtYXJrJTIyJTJDJTIydHlwZSUyMiUzQSUyMmJvbGQlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTdEJTVEJTdEJTJDJTdCJTIya2xhc3MlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMC0lMjAlRTUlQjAlODYlRTYlOTMlOEQlRTQlQkQlOUMlRTclQkIlOTMlRTYlOUUlOUMlRTMlODAlODElRTclOTQlQTglRTYlODglQjdJRCVFMyU4MCU4MSVFNyU4QSVCNiVFNiU4MCU4MSVFNCVCRiVBMSVFNiU4MSVBRiVFNyVCQiU5RiVFNCVCOCU4MCVFNSVCMCU4MSVFOCVBMyU4NSVFNiU4OCU5MCVFNiVBMCU4NyVFNSU4NyU4NiVFNSU5MyU4RCVFNSVCQSU5NCVFNiVBMCVCQyVFNSVCQyU4RiVFRiVCQyU4QyVFNCVCOCVCQSVFNCVCOCU4QSVFNSVCMSU4MiVFOCVCMCU4MyVFNyU5NCVBOCVFNiU4RiU5MCVFNCVCRSU5QiVFNiVCOCU4NSVFNiU5OSVCMCVFNyU5QSU4NCVFNiU4OSVBNyVFOCVBMSU4QyVFNSU4RiU4RCVFOSVBNiU4OCVFMyU4MCU4MiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTJDJTIyY29udGVudFR5cGUlMjIlM0ElMjJjYW5namllLXRleHRibG9jayUyMiU3RCUyQyU3QiUyMmtsYXNzJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIycGFyYWdyYXBoJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiUyMnV1aWQlMjIlM0ElMjJtZDRmcGF6cjN5eTZ4a25rZjkyJTIyJTJDJTIyaW5kJTIyJTNBJTdCJTIybGVmdCUyMiUzQTAlN0QlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCUyQyUyMmNvbnRlbnRUeXBlJTIyJTNBJTIyY2FuZ2ppZS10ZXh0YmxvY2slMjIlN0QlMkMlN0IlMjJrbGFzcyUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMnBhcmFncmFwaCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlMjJ1dWlkJTIyJTNBJTIybWQ0ZnBjOTQwM2ljZXc2amRmcTYlMjIlMkMlMjJpbmQlMjIlM0ElN0IlMjJmaXJzdExpbmUlMjIlM0EzMiU3RCU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiVFNSU4RiVBRiVFNCVCQiVBNSVFNyU5QyU4QiVFNSU4OCVCMCVFRiVCQyU4QyVFOCVBRiVBNSVFNSU4NyVCRCVFNiU5NSVCMCVFNyU5QSU4NCVFNSU4QSU5RiVFOCU4MyVCRCVFNiVBOCVBQSVFOCVCNyVBOCVFNCVCQSU4NiVFNCVCOCU4OSVFNCVCOCVBQSVFNiU4QSVCRCVFOCVCMSVBMSVFNSVCMSU4MiVFOSU5RCVBMiVFRiVCQyU4QyVFNCVCQiU4RSVFNiU5QyU4MCVFNCVCOCU4QSVFNSVCMSU4MiVFNyU5QSU4NCVFNiVCMyVBOCVFNSU4NiU4QyVFNyU5NCVBOCVFNiU4OCVCNyVFNCVCOCU5QSVFNSU4QSVBMSVFOSU4MCVCQiVFOCVCRSU5MSVFRiVCQyU4QyVFNSU4OCVCMCVFNSVBRiVCOSVFNCVCQSU4RSVFNyU5NCVBOCVFNiU4OCVCNyVFNSVBRiVCOSVFOCVCMSVBMSVFNyU5QSU4NCVFNSVBNCU4NCVFRiVCQyU4QyVFNSU4NiU4RCVFNSU4OCVCMCVFOSU5RCU5RSVFNSVCOCVCOCVFNyVCQiU4NiVFOCU4QSU4MiVFNyU5QSU4NCVFNiU5QyU4RCVFNSU4QSVBMSVFNCVCQSVBNCVFNCVCQSU5MiVFRiVCQyU4QyVFNiU5NSVCMCVFNiU4RCVBRSVFOSVBQSU4QyVFOCVBRiU4MSVFNCVCQiVBNSVFNSU4RiU4QVNRTCVFNSVBNCU4NCVFNyU5MCU4NiVFRiVCQyU4QyVFOSU5QyU4MCVFOCVBNiU4MSVFNiVBOCVBQSVFOCVCNyVBOCVFNSVBNCU5QSVFNCVCOCVBQSVFNiU4QSVCRCVFOCVCMSVBMSVFNSVCMSU4MiVFNyVCQSVBNyVFMyU4MCU4MiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTJDJTIyY29udGVudFR5cGUlMjIlM0ElMjJjYW5namllLXRleHRibG9jayUyMiU3RCUyQyU3QiUyMmtsYXNzJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIycGFyYWdyYXBoJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiUyMnV1aWQlMjIlM0ElMjJtZDRmczhjcDN3czRwMjMzejhpJTIyJTJDJTIyaW5kJTIyJTNBJTdCJTIyZmlyc3RMaW5lJTIyJTNBMzIlN0QlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlRTglQkYlOTklRTclQTclOEQlRTQlQkQlOTMlRTYlODQlOUYlRUYlQkMlOEMlRTUlOUMlQTglRTklOTglODUlRTglQUYlQkIlRTglQUYlQTUlRTQlQkIlQTMlRTclQTAlODElRTYlOTclQjYlRUYlQkMlOEMlRTQlQkMlOUElRTYlODQlOUYlRTglQTclODklRTYlOEElQkQlRTglQjElQTElRTUlQjElODIlRTYlQUMlQTElRTklOUQlOUUlRTUlQjglQjglRTYlQjclQjclRTQlQjklQjElRUYlQkMlOEMlRTglODAlODMlRTglOTklOTElRTQlQjglOUElRTUlOEElQTElRTklODAlQkIlRTglQkUlOTElRTclOUElODQlRTUlOTAlOEMlRTYlOTclQjYlRUYlQkMlOEMlRTglQkYlOTglRTklOUMlODAlRTglQTYlODElRTclOUMlOEIlRTUlODglQjAlRTUlQUYlODYlRTclQTAlODElRTklOTUlQkYlRTUlQkElQTYlRTglQTclODQlRTUlODglOTklRTclOUElODQlRTclQkIlODYlRTglOEElODIlRUYlQkMlOEMlRTUlQTYlODIlRTYlOUUlOUMlRTglQkYlOTklRTclQjElQkIlRTQlQkIlQTMlRTclQTAlODElRTglQUYlQkIlRTclOUElODQlRTUlQTQlOUElRUYlQkMlOEMlRTUlQkUlODglRTUlQUUlQjklRTYlOTglOTMlRTglQkYlQjclRTUlQTQlQjElRTUlOUMlQTglRTclQkIlODYlRTglOEElODIlRTQlQjglQUQlRUYlQkMlOEMlRTYlODAlQkIlRTclQkIlOTMlRTYlOUQlQTUlRTclOUMlOEIlRUYlQkMlOEMlRTQlQkMlOUElRTYlOUMlODklRTQlQjglOEIlRTklOUQlQTIlRTklOTclQUUlRTklQTIlOTglRUYlQkMlOUElMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCUyQyUyMmNvbnRlbnRUeXBlJTIyJTNBJTIyY2FuZ2ppZS10ZXh0YmxvY2slMjIlN0QlMkMlN0IlMjJrbGFzcyUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMnBhcmFncmFwaCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlMjJ1dWlkJTIyJTNBJTIybWQ0ZzkwZ3NnY3c2YjV3Ymt6diUyMiUyQyUyMmluZCUyMiUzQSU3QiU3RCU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTJDJTIyY29udGVudFR5cGUlMjIlM0ElMjJjYW5namllLXRleHRibG9jayUyMiU3RCUyQyU3QiUyMmtsYXNzJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIycGFyYWdyYXBoJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiUyMnV1aWQlMjIlM0ElMjJtZDRnYWl0MWo3c2J0YWZlajFtJTIyJTJDJTIyaW5kJTIyJTNBJTdCJTIybGVmdCUyMiUzQTAlN0QlMkMlMjJsaXN0JTIyJTNBJTdCJTIybGlzdElkJTIyJTNBJTIyY2MwOGNodHozNnMlMjIlMkMlMjJsZXZlbCUyMiUzQTAlMkMlMjJpc1Rhc2tMaXN0JTIyJTNBZmFsc2UlMkMlMjJpc09yZGVyZWQlMjIlM0FmYWxzZSUyQyUyMmxpc3RTdHlsZVR5cGUlMjIlM0ElMjJTQ0lSX0VDSVJfU1JFQyUyMiUyQyUyMnN5bWJvbFN0eWxlJTIyJTNBJTdCJTdEJTJDJTIybGlzdFN0eWxlJTIyJTNBJTdCJTIyZm9ybWF0JTIyJTNBJTIyYnVsbGV0JTIyJTJDJTIydGV4dCUyMiUzQSUyMiVFMiU5NyU4RiUyMiUyQyUyMmFsaWduJTIyJTNBJTIybGVmdCUyMiU3RCU3RCU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiVFNCVCQiVBMyVFNyVBMCU4MSVFNSU4RiVBRiVFOCVBRiVCQiVFNiU4MCVBNyVFNiU5RSU4MSVFNSVCNyVBRSVFRiVCQyU4QyVFOSU5QSVCRSVFNCVCQiVBNSVFNyU5MCU4NiVFOCVBNyVBMyVFRiVCQyU4OCVFMiU4MCU5QyVFOCVBRSVBNCVFNyU5RiVBNSVFOCVCRiU4NyVFOCVCRCVCRCVFMiU4MCU5RCVFRiVCQyU4OSUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJtYXJrJTIyJTJDJTIydHlwZSUyMiUzQSUyMmJvbGQlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTdEJTVEJTdEJTJDJTdCJTIya2xhc3MlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiVFRiVCQyU5QSVFNSVBNCVBNyVFOCU4NCU5MSVFNSVCRiU4NSVFOSVBMSVCQiVFNSU5QyVBOCVFNCVCOCU4RCVFNSU5MCU4QyVFNyU5QSU4NCVFNiU4QSVCRCVFOCVCMSVBMSVFNiU4MCU5RCVFNyVCQiVCNCVFNSVCMSU4MiVFOSU5RCVBMiVFNCVCOSU4QiVFOSU5NyVCNCVFOSVBMiU5MSVFNyVCOSU4MSVFNSU4OCU4NyVFNiU4RCVBMiVFRiVCQyU4QyVFNiU4MCU5RCVFNyVCQiVCNCVFOSU5QyU4MCVFOCVBNiU4MSVFOCVCNyVBOCVFNSVCMSU4MiVFNiVBQyVBMSVFRiVCQyU4QyUyMCVFOCVCRiU5OSVFNyVBNyU4RCVFNiU4NCU5RiVFOCVBNyU4OSVFNSVCRSU4OCVFNiU4QiVBNyVFNSVCNyVCNCVFRiVCQyU4QyUyMCVFNSVCMCVCMSVFNSU4MyU4RiVFNCVCRCVBMCVFNiU4MyVCMyVFOCVBNyU4NCVFNSU4OCU5MiVFNCVCOCU4MCVFNCVCOCVBQSVFNiU5NyU4NSVFOCVBMSU4QyVFRiVCQyU4QyVFOCVBNyU4NCVFNSU4OCU5MiVFOCVBMSU4QyVFNyVBOCU4QiVFNyU5QSU4NCVFOCVCRiU4NyVFNyVBOCU4QiVFNCVCOCVBRCVFRiVCQyU4QyVFNSU5MCU4QyVFNiU5NyVCNiVFOCU4MCU4MyVFOCU5OSU5MSVFNiU5OCVBRiVFNCVCOCU4RCVFNiU5OCVBRiVFOCVBNiU4MSVFNiU4RiU5MCVFNSU4OSU4RCVFNSU4MCVCQyVFNiU5QyVCQSVFRiVCQyU4QyVFOSU4MCU4OSVFNSU5MyVBQSVFNCVCOCVBQSVFNSVCQSVBNyVFNCVCRCU4RCVFRiVCQyU4QyVFOCU4MCU4QyVFNCVCOCU4RCVFNiU5OCVBRiVFNiU5QiVCNGhpZ2glMjBsZXZlbCVFNyU5QSU4NCVFNSU4RSVCQiVFNSU5MyVBQSVFNyU4RSVBOSVFMyU4MCU4MiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTJDJTIyY29udGVudFR5cGUlMjIlM0ElMjJjYW5namllLXRleHRibG9jayUyMiU3RCUyQyU3QiUyMmtsYXNzJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIycGFyYWdyYXBoJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiUyMnV1aWQlMjIlM0ElMjJtZDRnOXRiaWVxZzNkNHo2MjclMjIlMkMlMjJpbmQlMjIlM0ElN0IlMjJsZWZ0JTIyJTNBMCU3RCUyQyUyMmxpc3QlMjIlM0ElN0IlMjJsaXN0SWQlMjIlM0ElMjJjYzA4Y2h0ejM2cyUyMiUyQyUyMmxldmVsJTIyJTNBMCUyQyUyMmlzVGFza0xpc3QlMjIlM0FmYWxzZSUyQyUyMmlzT3JkZXJlZCUyMiUzQWZhbHNlJTJDJTIybGlzdFN0eWxlVHlwZSUyMiUzQSUyMlNDSVJfRUNJUl9TUkVDJTIyJTJDJTIyc3ltYm9sU3R5bGUlMjIlM0ElN0IlN0QlMkMlMjJsaXN0U3R5bGUlMjIlM0ElN0IlMjJmb3JtYXQlMjIlM0ElMjJidWxsZXQlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJUUyJTk3JThGJTIyJTJDJTIyYWxpZ24lMjIlM0ElMjJsZWZ0JTIyJTdEJTdEJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJUU0JUJCJUEzJUU3JUEwJTgxJUU5JTlBJUJFJUU0JUJCJUE1JUU3JUJCJUI0JUU2JThBJUE0JUU1JTkyJThDJUU0JUJGJUFFJUU2JTk0JUI5JTIyJTJDJTIybWFya3MlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMm1hcmslMjIlMkMlMjJ0eXBlJTIyJTNBJTIyYm9sZCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlN0QlN0QlNUQlN0QlMkMlN0IlMjJrbGFzcyUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJUVGJUJDJTlBJUU1JTlDJUE4JUU0JUI4JTgwJUU0JUI4JUFBJUU2JUI3JUI3JUU1JTkwJTg4JUU0JUJBJTg2JUU0JUI4JThEJUU1JTkwJThDJUU2JThBJUJEJUU4JUIxJUExJUU1JUIxJTgyJUU2JUFDJUExJUU3JTlBJTg0JUUyJTgwJTlDJUU1JUE0JUE3JUU2JUIzJUE1JUU3JTkwJTgzJUUyJTgwJTlEJUU1JTg3JUJEJUU2JTk1JUIwJUU0JUI4JUFEJUVGJUJDJThDJUU1JTkwJTg0JUU0JUI4JUFBJUU5JTgzJUE4JUU1JTg4JTg2JUU3JUI0JUE3JUU1JUFGJTg2JUU1JTlDJUIwJUU4JTgwJUE2JUU1JTkwJTg4JUU1JTlDJUE4JUU0JUI4JTgwJUU4JUI1JUI3JUUzJTgwJTgyJUU0JUJCJUJCJUU0JUJEJTk1JUU1JUJFJUFFJUU1JUIwJThGJUU3JTlBJTg0JUU2JTk0JUI5JUU1JThBJUE4JUU5JTgzJUJEJUU1JThGJUFGJUU4JTgzJUJEJUU1JUJDJTk1JUU1JThGJTkxJUU2JTg0JThGJUU2JTgzJUIzJUU0JUI4JThEJUU1JTg4JUIwJUU3JTlBJTg0JUU4JUJGJTlFJUU5JTk0JTgxJUU1JThGJThEJUU1JUJBJTk0JUUzJTgwJTgyJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlMkMlMjJjb250ZW50VHlwZSUyMiUzQSUyMmNhbmdqaWUtdGV4dGJsb2NrJTIyJTdEJTJDJTdCJTIya2xhc3MlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJwYXJhZ3JhcGglMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTIydXVpZCUyMiUzQSUyMm1kNGdhZXhhYXZtbjN0YXhod3MlMjIlMkMlMjJpbmQlMjIlM0ElN0IlMjJsZWZ0JTIyJTNBMCU3RCUyQyUyMmxpc3QlMjIlM0ElN0IlMjJsaXN0SWQlMjIlM0ElMjJjYzA4Y2h0ejM2cyUyMiUyQyUyMmxldmVsJTIyJTNBMCUyQyUyMmlzVGFza0xpc3QlMjIlM0FmYWxzZSUyQyUyMmlzT3JkZXJlZCUyMiUzQWZhbHNlJTJDJTIybGlzdFN0eWxlVHlwZSUyMiUzQSUyMlNDSVJfRUNJUl9TUkVDJTIyJTJDJTIyc3ltYm9sU3R5bGUlMjIlM0ElN0IlN0QlMkMlMjJsaXN0U3R5bGUlMjIlM0ElN0IlMjJmb3JtYXQlMjIlM0ElMjJidWxsZXQlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJUUyJTk3JThGJTIyJTJDJTIyYWxpZ24lMjIlM0ElMjJsZWZ0JTIyJTdEJTdEJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJUU0JUJCJUEzJUU3JUEwJTgxJUU5JTlBJUJFJUU0JUJCJUE1JUU2JUI1JThCJUU4JUFGJTk1JTIyJTJDJTIybWFya3MlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMm1hcmslMjIlMkMlMjJ0eXBlJTIyJTNBJTIyYm9sZCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlN0QlN0QlNUQlN0QlMkMlN0IlMjJrbGFzcyUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJUVGJUJDJTlBJUU1JTg3JUJEJUU2JTk1JUIwJUU0JUI4JThEJUU0JUJCJTg1JUU1JTlDJTg4JUU1JUE0JThEJUU2JTlEJTgyJUU1JUJBJUE2JUU5JUFCJTk4JUVGJUJDJThDJUU1JTkwJThDJUU2JTk3JUI2JUU1JThGJTg4JUU1JUFEJTk4JUU1JTlDJUE4JUU1JUJFJTg4JUU1JUE0JTlBJUU1JUE0JTk2JUU5JTgzJUE4JUU0JUJFJTlEJUU4JUI1JTk2JUVGJUJDJThDJUU1JThEJTk1JUU1JTg1JTgzJUU2JUI1JThCJUU4JUFGJTk1JUU0JUJDJTlBJUU5JTlEJTlFJUU1JUI4JUI4JUU1JTlCJUIwJUU5JTlBJUJFJUUzJTgwJTgyJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlMkMlMjJjb250ZW50VHlwZSUyMiUzQSUyMmNhbmdqaWUtdGV4dGJsb2NrJTIyJTdEJTJDJTdCJTIya2xhc3MlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJwYXJhZ3JhcGglMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTIydXVpZCUyMiUzQSUyMm1kNGdiZTRoeDgyemNyNDlxaCUyMiUyQyUyMmluZCUyMiUzQSU3QiUyMmxlZnQlMjIlM0EwJTdEJTJDJTIybGlzdCUyMiUzQSU3QiUyMmxpc3RJZCUyMiUzQSUyMmNjMDhjaHR6MzZzJTIyJTJDJTIybGV2ZWwlMjIlM0EwJTJDJTIyaXNUYXNrTGlzdCUyMiUzQWZhbHNlJTJDJTIyaXNPcmRlcmVkJTIyJTNBZmFsc2UlMkMlMjJsaXN0U3R5bGVUeXBlJTIyJTNBJTIyU0NJUl9FQ0lSX1NSRUMlMjIlMkMlMjJzeW1ib2xTdHlsZSUyMiUzQSU3QiU3RCUyQyUyMmxpc3RTdHlsZSUyMiUzQSU3QiUyMmZvcm1hdCUyMiUzQSUyMmJ1bGxldCUyMiUyQyUyMnRleHQlMjIlM0ElMjIlRTIlOTclOEYlMjIlMkMlMjJhbGlnbiUyMiUzQSUyMmxlZnQlMjIlN0QlN0QlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlRTQlQkIlQTMlRTclQTAlODElRTUlQTQlOEQlRTclOTQlQTglRTYlODAlQTclRTYlOUUlODElRTQlQkQlOEUlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIybWFyayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJib2xkJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCU3RCU1RCU3RCUyQyU3QiUyMmtsYXNzJTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlRUYlQkMlOUElRTYlOTUlQjQlRTQlQjglQUElRTQlQkIlQTMlRTclQTAlODElRTQlQkIlODUlRTklODAlODIlRTclOTQlQTglRTQlQkElOEUlRTUlOEQlOTUlRTQlQjglODAlRTYlQjUlODElRTclQTglOEIlRUYlQkMlODglRTclOTQlQTglRTYlODglQjclRTYlQjMlQTglRTUlODYlOEMlRUYlQkMlODklRUYlQkMlOEMlRTUlODUlQjYlRTQlQkIlOTYlRTYlQTglQTElRTUlOUQlOTclRTYlODMlQjMlRTglQTYlODElRTUlQkMlOTUlRTclOTQlQTglRUYlQkMlOEMlRTUlQjAlQjElRTQlQkMlOUElRTklOTklQjclRTUlODUlQTUlRTUlODglQjAlRTklQTYlOTklRTglOTUlODklRTUlQTQlQTclRTclOEMlQTklRTclOEMlQTklRTklOTclQUUlRTklQTIlOTglMjAlMjAlRUYlQkMlOUElRTQlQkQlQTAlRTYlODMlQjMlRTglQTYlODElRTQlQjglODAlRTQlQjglQUElRTklQTYlOTklRTglOTUlODklRUYlQkMlOEMlRTQlQkQlODYlRTQlQkQlQTAlRTUlQkUlOTclRTUlODglQjAlRTclOUElODQlRTYlOTglQUYlRTQlQjglODAlRTQlQjglQUElRTUlQTQlQTclRTclOEMlQTklRTclOEMlQTklRTYlOEIlQkYlRTclOUQlODAlRTklQTYlOTklRTglOTUlODklRUYlQkMlOEMlRTQlQkIlQTUlRTUlOEYlOEElRTYlOTUlQjQlRTQlQjglQUElRTQlQjglOUIlRTYlOUUlOTclRTMlODAlODIlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCUyQyUyMmNvbnRlbnRUeXBlJTIyJTNBJTIyY2FuZ2ppZS10ZXh0YmxvY2slMjIlN0QlMkMlN0IlMjJrbGFzcyUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMnBhcmFncmFwaCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlMjJ1dWlkJTIyJTNBJTIybWQ0Z2NrcGZ1ZGJhaWN4NW43byUyMiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTJDJTIyY29udGVudFR5cGUlMjIlM0ElMjJjYW5namllLXRleHRibG9jayUyMiU3RCUyQyU3QiUyMmtsYXNzJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIycGFyYWdyYXBoJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiUyMnV1aWQlMjIlM0ElMjJtZDRicGhpN3dsbWIyaDRiM2RlJTIyJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlMkMlMjJjb250ZW50VHlwZSUyMiUzQSUyMmNhbmdqaWUtdGV4dGJsb2NrJTIyJTdEJTJDJTdCJTIya2xhc3MlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJwYXJhZ3JhcGglMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTIydXVpZCUyMiUzQSUyMm1kNGZlc2g3OW5vbWN2ZDB3YjYlMjIlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCUyQyUyMmNvbnRlbnRUeXBlJTIyJTNBJTIyY2FuZ2ppZS10ZXh0YmxvY2slMjIlN0QlMkMlN0IlMjJrbGFzcyUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMnBhcmFncmFwaCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlMjJ1dWlkJTIyJTNBJTIybWQ0ZmVzbTRkdzdjMngzOXlpcCUyMiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTJDJTIyY29udGVudFR5cGUlMjIlM0ElMjJjYW5namllLXRleHRibG9jayUyMiU3RCUyQyU3QiUyMmtsYXNzJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyaGVhZGluZy0xJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiUyMnV1aWQlMjIlM0ElMjJtZDRmZXNxYnV6a3N1cnNocGlrJTIyJTJDJTIyc3BhY2luZyUyMiUzQSU3QiUyMmJlZm9yZSUyMiUzQTI2LjY2NjY2NjY2NjY2NjY2NCUyQyUyMmFmdGVyJTIyJTNBOSUyQyUyMmxpbmUlMjIlM0EwLjg1Mjk0MTE3NjQ3MDU4ODIlN0QlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlRTUlOEQlOTUlRTQlQjglODAlRTYlOEElQkQlRTglQjElQTElRTUlQjElODIlRTYlQUMlQTElRTUlOEUlOUYlRTUlODglOTklMjAoU2luZ2xlJTIwTGV2ZWwlMjBvZiUyMEFic3RyYWN0aW9uJTIwUHJpbmNpcGxlJTJDJTIwU0xBUCklMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIybWFyayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJib2xkJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCU3RCUyQyU3QiUyMmtsYXNzJTIyJTNBJTIybWFyayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJzeiUyMiUyQyUyMmRhdGElMjIlM0ElN0IlMjJ2YWx1ZSUyMiUzQTIwJTJDJTIyc3pVbml0JTIyJTNBJTIycHQlMjIlN0QlN0QlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJrbGFzcyUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMnBhcmFncmFwaCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlMjJ1dWlkJTIyJTNBJTIybWQ0Z2ZueWI4d3VmMTFheWxiciUyMiUyQyUyMmluZCUyMiUzQSU3QiUyMmZpcnN0TGluZSUyMiUzQTMyJTdEJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJUU1JUE2JTgyJUU0JUJEJTk1JUU4JUE3JUEzJUU1JTg2JUIzJUVGJUJDJTlGVW5jbGUlMjBCb2IlRTUlOUMlQThDbGVhbiUyMENvZGUlRTQlQjglQUQlRTYlOEYlOTAlRTUlODclQkElRTglQkYlODclRTQlQjglODAlRTQlQjglQUFTTEFQJUU1JThFJTlGJUU1JTg4JTk5JUVGJUJDJThDJUU3JUFFJTgwJUU1JThEJTk1JUU2JTlEJUE1JUU4JUFGJUI0JUU1JUIwJUIxJUU2JTk4JUFGJUU1JTlDJUE4JUU0JUI4JTgwJUU0JUI4JUFBJUU1JTg3JUJEJUU2JTk1JUIwJUVGJUJDJTg4JUU2JTg4JTk2JUU4JTgwJTg1JUU2JTk2JUI5JUU2JUIzJTk1JUVGJUJDJTg5JUVGJUJDJThDJUU2JTg5JTgwJUU2JTlDJTg5JUU0JUJCJUEzJUU3JUEwJTgxJUU4JUFGJUFEJUU1JThGJUE1JUU5JTgzJUJEJUU1JUJBJTk0JUU4JUFGJUE1JUU1JTlDJUE4JUU1JTkwJThDJUU0JUI4JTgwJUU0JUI4JUFBJUUyJTgwJTlDJUU2JThBJUJEJUU4JUIxJUExJUU3JUJBJUE3JUU1JTg4JUFCJUUyJTgwJTlEJUU0JUI4JThBJUUzJTgwJTgyJUU1JTlDJUE4JUU2JTg4JTkxJUU3JTlDJThCJUU2JTlEJUE1JUU3JUIxJUJCJUU3JTlBJTg0JUU0JUI5JTlGJUU1JUJBJTk0JUU4JUFGJUE1JUU5JTgxJUI1JUU1JUJFJUFBJUU4JUFGJUE1JUU1JThFJTlGJUU1JTg4JTk5JUUzJTgwJTgyJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlMkMlMjJjb250ZW50VHlwZSUyMiUzQSUyMmNhbmdqaWUtdGV4dGJsb2NrJTIyJTdEJTJDJTdCJTIya2xhc3MlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJwYXJhZ3JhcGglMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTIydXVpZCUyMiUzQSUyMm1kNWVjbjBlZng1NXE0M251N2IlMjIlMkMlMjJpbmQlMjIlM0ElN0IlMjJmaXJzdExpbmUlMjIlM0EzMiU3RCU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiVFNSU5QyVBOCVFNSVCQyU4MCVFNSVBNCVCNCVFNyU5QSU4NCVFNiU5NSU4NSVFNCVCQSU4QiVFNCVCOCVBRCVFRiVCQyU4QyVFNSVBRiVCQyVFNiVCQyU5NCVFMyU4MCU4MSVFNiU5MSU4NCVFNSVCRCVCMSVFNiU4QyU4NyVFNSVBRiVCQyVFMyU4MCU4MSVFNyU4MSVBRiVFNSU4NSU4OSVFNSVCOCU4OCVFNiU4OSU4MCVFOSU5QyU4MCVFOCVBNiU4MSVFOSU5RCVBMiVFNSVBRiVCOSVFNyU5QSU4NCVFOSU5NyVBRSVFOSVBMiU5OCVFNSU4OCU4NiVFNSU4OCVBQiVFNCVCRCU4RCVFNCVCQSU4RSVFNCVCOCU4OSVFNCVCOCVBQSVFNSVCMSU4MiVFNiVBQyVBMSVFRiVCQyU4QyVFNSVBNiU4MiVFNCVCOCU4QiVFNSU5QiVCRSVFRiVCQyU5QSUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTJDJTIyY29udGVudFR5cGUlMjIlM0ElMjJjYW5namllLXRleHRibG9jayUyMiU3RCUyQyU3QiUyMmtsYXNzJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIycGFyYWdyYXBoJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiUyMnV1aWQlMjIlM0ElMjJtZDRmang2Zjg5cGV0amdibDlxJTIyJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlMkMlMjJjb250ZW50VHlwZSUyMiUzQSUyMmNhbmdqaWUtdGV4dGJsb2NrJTIyJTdEJTJDJTdCJTIya2xhc3MlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJwYXJhZ3JhcGglMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTIydXVpZCUyMiUzQSUyMm1kNGZqdXk1NzltMzg4MmMxM2MlMjIlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCUyQyU3QiUyMmtsYXNzJTIyJTNBJTIyaW5saW5lJTIyJTJDJTIydHlwZSUyMiUzQSUyMmltYWdlJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiUyMnV1aWQlMjIlM0ElMjJtZDVldzl2Z2lvbDFtMHJwcGYlMjIlMkMlMjJuYW1lJTIyJTNBJTIyaW1hZ2UucG5nJTIyJTJDJTIyc2l6ZSUyMiUzQTEyOTk0NjclMkMlMjJ3aWR0aCUyMiUzQTc0OCUyQyUyMmhlaWdodCUyMiUzQTQ5OC42NjY2NjY2NjY2NjY3NCUyQyUyMnNyYyUyMiUzQSUyMmh0dHBzJTNBJTJGJTJGb3NzLWF0YS5hbGliYWJhLmNvbSUyRmFydGljbGUlMkYyMDI1JTJGMDclMkY2NWMxNmUwOC0zNDZlLTQxODEtOWFlYy1iNDU4ZTRjYTYzNzcucG5nJTIyJTJDJTIyZXh0cmFEYXRhJTIyJTNBJTdCJTIycmVzb3VyY2VJZCUyMiUzQSUyMmJmZjJmM2Y5LWNkOTUtNDk3MC04NmNiLTc1ZTVjNTkzNzUyYSUyMiUyQyUyMm1ldGFEYXRhJTIyJTNBJTdCJTIyc2l6ZSUyMiUzQTEyOTk0NjclMkMlMjJvcmlnaW5XaWR0aCUyMiUzQTE1MzYlMkMlMjJvcmlnaW5IZWlnaHQlMjIlM0ExMDI0JTJDJTIyZm9ybWF0JTIyJTNBJTIycG5nJTIyJTJDJTIycmF0aW8lMjIlM0ExJTdEJTdEJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJrbGFzcyUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlMkMlMjJjb250ZW50VHlwZSUyMiUzQSUyMmNhbmdqaWUtdGV4dGJsb2NrJTIyJTdEJTJDJTdCJTIya2xhc3MlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJwYXJhZ3JhcGglMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTIydXVpZCUyMiUzQSUyMm1kNGZqdzNrZ3p1d2h5MXQ3YmslMjIlMkMlMjJpbmQlMjIlM0ElN0IlMjJmaXJzdExpbmUlMjIlM0EzMiU3RCU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiVFNiVBRiU4RiVFNCVCOCVBQSVFOCVBNyU5MiVFOCU4OSVCMiVFNCVCQiU4NSVFOCU4MCU4MyVFOCU5OSU5MSVFNSVCRCU5MyVFNSU4OSU4RCVFNiU4QSVCRCVFOCVCMSVBMSVFNSVCMSU4MiVFNiVBQyVBMSVFNyU5QSU4NCVFOSU5NyVBRSVFOSVBMiU5OCVFRiVCQyU4QyVFNCVCRCVCRiVFNSVCRSU5NyVFNSU4OCU4NiVFNSVCNyVBNSVFNSU4RCU4RiVFNCVCRCU5QyVFNiU5NSU4OCVFNyU4RSU4NyVFNSVBNCVBNyVFNSVBMiU5RSVFMyU4MCU4MiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTJDJTIyY29udGVudFR5cGUlMjIlM0ElMjJjYW5namllLXRleHRibG9jayUyMiU3RCUyQyU3QiUyMmtsYXNzJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIycGFyYWdyYXBoJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiUyMnV1aWQlMjIlM0ElMjJtZDRnaTFsYXhpeTN1eTJ4ZDlsJTIyJTJDJTIyaW5kJTIyJTNBJTdCJTIyZmlyc3RMaW5lJTIyJTNBMzIlN0QlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlRTklQTIlOTglRTUlQTQlOTYlRTglQUYlOUQlRUYlQkMlOEMlRTglQkQlQUYlRTQlQkIlQjYlRTUlQjclQTUlRTclQTglOEIlRTglQkYlOTglRTYlOUMlODklRTQlQjglODAlRTQlQjglQUElRTglQUYlQjQlRTYlQjMlOTUlRUYlQkMlOEMlRTUlQTYlODIlRTYlOUUlOUMlRTUlQjglOEMlRTYlOUMlOUIlRTUlODElOUElRTUlQTUlQkQlRTUlQkQlOTMlRTUlODklOEQlRTUlQjElODIlRTclQkElQTclRTclOUElODQlRTQlQkElOEIlRUYlQkMlOEMlRTklOUMlODAlRTglQTYlODElRTUlQUYlQjklRTQlQjglOEIlRTQlQjglODAlRTUlQjElODIlRTclQkElQTclRTQlQjklOUYlRTYlOUMlODklRTQlQkElODYlRTglQTclQTMlRUYlQkMlODglRTQlQkUlOEIlRTUlQTYlODIlRUYlQkMlOEMlRTUlODYlOTlTUUwlRTUlOEYlQUYlRTQlQkIlQTUlRTQlQjglOEQlRTYlODclODIlRTQlQkMlOTglRTUlOEMlOTYlRTUlOTklQTglRUYlQkMlOEMlRTQlQkQlODYlRTYlODclODIlRTQlQkElODYlRTQlQkMlOTglRTUlOEMlOTYlRTUlOTklQTglRTUlOEYlQUYlRTQlQkIlQTUlRTUlODYlOTklRTUlODclQkElRTYlOUIlQjQlRTUlQTUlQkQlRTclOUElODRTUUwlRUYlQkMlODklRTMlODAlODIlRTYlODklODAlRTQlQkIlQTUlRTUlQjglOEMlRTYlOUMlOUIlRTclOTQlQThBSSVFNSU4NiU5OSVFNSU4NyVCQSVFNSVBNSVCRCVFNyU5QSU4NCVFNCVCQiVBMyVFNyVBMCU4MSVFRiVCQyU4Q0FJJUU0JUI4JThCJUU1JUIxJTgyJUU3JTlBJTg0JUU4JUJEJUFGJUU0JUJCJUI2JUU1JUI3JUE1JUU3JUE4JThCJUU3JTkwJTg2JUU4JUFFJUJBJUU1JThGJTk4JUU3JTlBJTg0JUU2JTlCJUI0JUU1JThBJUEwJUU5JTg3JThEJUU4JUE2JTgxJUVGJUJDJThDJUU1JTkwJUE2JUU1JTg4JTk5JUU3JTk0JTlGJUU2JTg4JTkwJUU3JTlBJTg0JUU0JUJCJUEzJUU3JUEwJTgxJUU1JUFGJUI5JUU0JUJBJThFJUU1JUE0JUE3JUU1JTlFJThCJUU5JUExJUI5JUU3JTlCJUFFJUU1JThGJUFGJUU4JTgzJUJEJUU2JTk4JUFGJUU3JUJCJUI0JUU2JThBJUE0JUU2JTgwJUE3JUU3JTgxJUJFJUU5JTlBJUJFJUUzJTgwJTgyJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlMkMlMjJjb250ZW50VHlwZSUyMiUzQSUyMmNhbmdqaWUtdGV4dGJsb2NrJTIyJTdEJTJDJTdCJTIya2xhc3MlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJwYXJhZ3JhcGglMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTIydXVpZCUyMiUzQSUyMm1kNWVoNmVnZHhkdWRrNjkyeHIlMjIlMkMlMjJpbmQlMjIlM0ElN0IlMjJmaXJzdExpbmUlMjIlM0EzMiU3RCU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTJDJTIyY29udGVudFR5cGUlMjIlM0ElMjJjYW5namllLXRleHRibG9jayUyMiU3RCUyQyU3QiUyMmtsYXNzJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIycGFyYWdyYXBoJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiUyMnV1aWQlMjIlM0ElMjJtZDVlaDZpa3RvcW1weXF5bTlrJTIyJTJDJTIyaW5kJTIyJTNBJTdCJTIyZmlyc3RMaW5lJTIyJTNBMzIlN0QlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlRTUlOUIlQTAlRTYlQUQlQTQlRTUlOUIlOUUlRTUlODglQjAlRTUlQkMlODAlRTUlQTQlQjQlRTclOUElODQlRTUlODclQkQlRTYlOTUlQjByZWdpc3Rlcl91c2VyJUVGJUJDJThDJUU2JThDJTg5JUU1JUJDJTgwJUU1JUE0JUI0JUU3JTk0JUI1JUU1JUJEJUIxJUU1JUFGJUJDJUU2JUJDJTk0JUU2JTk1JTg1JUU0JUJBJThCJUU3JTlBJTg0JUU2JThBJUJEJUU4JUIxJUExJUU1JUIxJTgyJUU2JUFDJUExJUU2JThCJTg2JUU1JTg4JTg2JUVGJUJDJThDJUU1JTg4JTg2JUU0JUI4JUJBMyVFOSU4MyVBOCVFNSU4OCU4NiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTJDJTIyY29udGVudFR5cGUlMjIlM0ElMjJjYW5namllLXRleHRibG9jayUyMiU3RCUyQyU3QiUyMmtsYXNzJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIycGFyYWdyYXBoJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiUyMnV1aWQlMjIlM0ElMjJtZDVlaG9obHR5cGFva3V6MGIlMjIlMkMlMjJpbmQlMjIlM0ElN0IlN0QlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCUyQyUyMmNvbnRlbnRUeXBlJTIyJTNBJTIyY2FuZ2ppZS10ZXh0YmxvY2slMjIlN0QlMkMlN0IlMjJrbGFzcyUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMmhlYWRpbmctMiUyMiUyQyUyMmRhdGElMjIlM0ElN0IlMjJ1dWlkJTIyJTNBJTIybWQ1ZWhxa3N6cHVlbG1qcGVzbSUyMiUyQyUyMmluZCUyMiUzQSU3QiU3RCUyQyUyMnNwYWNpbmclMjIlM0ElN0IlMjJiZWZvcmUlMjIlM0EyMS4zMzMzMzMzMzMzMzMzMzIlMkMlMjJhZnRlciUyMiUzQTklMkMlMjJsaW5lJTIyJTNBMC44NTI5NDExNzY0NzA1ODgyJTdEJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJUU0JUI4JTlBJUU1JThBJUExJUU1JThEJThGJUU4JUIwJTgzJUU1JUIxJTgyJTIwLSUyMCVFNiU5QyU4MCVFOSVBQiU5OCVFNiU4QSVCRCVFOCVCMSVBMSVFNSVCMSU4MiVFNiVBQyVBMSUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJtYXJrJTIyJTJDJTIydHlwZSUyMiUzQSUyMmJvbGQlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTdEJTJDJTdCJTIya2xhc3MlMjIlM0ElMjJtYXJrJTIyJTJDJTIydHlwZSUyMiUzQSUyMnN6JTIyJTJDJTIyZGF0YSUyMiUzQSU3QiUyMnZhbHVlJTIyJTNBMTYlMkMlMjJzelVuaXQlMjIlM0ElMjJwdCUyMiU3RCU3RCU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMmtsYXNzJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIycGFyYWdyYXBoJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiUyMnV1aWQlMjIlM0ElMjJtZDVlbDNoZTBtYmN4eGsxYjFyJTIyJTJDJTIyaW5kJTIyJTNBJTdCJTIyZmlyc3RMaW5lJTIyJTNBMzIlN0QlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlRTglQkYlOTklRTQlQjglODAlRTUlQjElODIlRTYlOTglQUYlRTYlOTUlQjQlRTQlQjglQUElRTQlQjglOUElRTUlOEElQTElRTYlQjUlODElRTclQTglOEIlRTclOUElODQlRTIlODAlOUMlRTUlQUYlQkMlRTYlQkMlOTQlRTIlODAlOUQlRTYlODglOTYlRTIlODAlOUMlRTYlODAlQkIlRTYlOEMlODclRTYlOEMlQTUlRTIlODAlOUQlRTMlODAlODIlRTUlQUUlODMlRTclOUElODQlRTYlQTAlQjglRTUlQkYlODMlRTglODElOEMlRTglQjQlQTMlRTYlOTglQUYlRTclQkMlOTYlRTYlOEUlOTIlRTUlOTIlOEMlRTUlOEQlOEYlRTglQjAlODMlRUYlQkMlOEMlRTglODAlOEMlRTklOUQlOUUlRTYlODklQTclRTglQTElOEMlRTMlODAlODIlRTUlQjAlQjElRTUlODMlOEYlRTUlQUYlQkMlRTYlQkMlOTQlRTUlOTElOEElRTglQUYlODklRTYlOTElODQlRTUlQkQlQjElRTYlOEMlODclRTUlQUYlQkMlRTIlODAlOUMlRTYlODglOTElRTklOUMlODAlRTglQTYlODElRTUlQUQlQTQlRTclOEIlQUMlRTYlODQlOUYlRTIlODAlOUQlRUYlQkMlOENyZWdpc3Rlcl91c2VyJUU1JTg3JUJEJUU2JTk1JUIwJUU5JTgwJTlBJUU4JUJGJTg3JUU4JUIwJTgzJUU3JTk0JUE4VXNlci5jcmVhdGUlMkMlMjB1c2VyLnNhdmUlRTUlOTIlOENfc2VuZF93ZWxjb21lX2VtYWlsJUU3JUFEJTg5JUU0JUI4JTgwJUU3JUIzJUJCJUU1JTg4JTk3JUU5JUFCJTk4JUU1JUIxJTgyJUU2JUFDJUExJUU3JTlBJTg0JUU2JThDJTg3JUU0JUJCJUE0JUVGJUJDJThDJUU2JUI4JTg1JUU2JTk5JUIwJUU1JTlDJUIwJUU2JThGJThGJUU4JUJGJUIwJUU0JUJBJTg2JUUyJTgwJTlDJUU3JTk0JUE4JUU2JTg4JUI3JUU2JUIzJUE4JUU1JTg2JThDJUUyJTgwJTlEJUU4JUJGJTk5JUU0JUI4JUFBJUU0JUI4JTlBJUU1JThBJUExJUU2JTk1JTg1JUU0JUJBJThCJUU3JTlBJTg0JUUyJTgwJTlDV2hhdCVFMiU4MCU5RCVFRiVCQyU4QyVFOCU4MCU4QyVFNCVCOCU4RCVFNiU5OCVBRiVFMiU4MCU5Q0hvdyVFMiU4MCU5RCVFMyU4MCU4MiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTJDJTIyY29udGVudFR5cGUlMjIlM0ElMjJjYW5namllLXRleHRibG9jayUyMiU3RCUyQyU3QiUyMmtsYXNzJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIycGFyYWdyYXBoJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiUyMnV1aWQlMjIlM0ElMjJtZDVlbDNoZnd6M2Zrbmhoa2YlMjIlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCUyQyUyMmNvbnRlbnRUeXBlJTIyJTNBJTIyY2FuZ2ppZS10ZXh0YmxvY2slMjIlN0QlMkMlN0IlMjJrbGFzcyUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMmNvZGUlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTIyc3ludGF4JTIyJTNBJTIycHl0aG9uJTIyJTJDJTIydGhlbWUlMjIlM0ElMjJkZWZhdWx0JTIyJTJDJTIyd3JhcCUyMiUzQXRydWUlMkMlMjJpZCUyMiUzQSUyMmEybjV1cSUyMiUyQyUyMnRpdGxlJTIyJTNBJTIyJTIyJTJDJTIyZm9sZCUyMiUzQWZhbHNlJTJDJTIyaGlkZUhlYWRlciUyMiUzQWZhbHNlJTJDJTIyY29kZUZvbGRpbmclMjIlM0FmYWxzZSUyQyUyMnNob3dMaW5lTnVtYmVyJTIyJTNBdHJ1ZSUyQyUyMmZvbnQlMjIlM0ElN0IlMjJmb250RmFtaWx5JTIyJTNBJTIyZGVmYXVsdEZvbnQlMjIlMkMlMjJsaWdhdHVyZXMlMjIlM0FmYWxzZSU3RCUyQyUyMmVuYWJsZU1hY0hlYWRlciUyMiUzQWZhbHNlJTJDJTIydXVpZCUyMiUzQSUyMm1kNGJwamd4bW1kYWpuY2NsazklMjIlMkMlMjJjb2RlJTIyJTNBJTIyJTIzJTIwJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTVDbiUyMyUyMCVFNyVBQyVBQzElRTUlQjElODIlRUYlQkMlOUElRTQlQjglOUElRTUlOEElQTElRTUlOEQlOEYlRTglQjAlODMlRTUlQjElODIlMjAtJTIwJUU2JTlDJTgwJUU5JUFCJTk4JUU2JThBJUJEJUU4JUIxJUExJUU1JUIxJTgyJUU2JUFDJUExJTVDbiUyMyUyMCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCU1Q24lNUNuZGVmJTIwcmVnaXN0ZXJfdXNlcih1c2VybmFtZSUzQSUyMHN0ciUyQyUyMGVtYWlsJTNBJTIwc3RyJTJDJTIwcGFzc3dvcmQlM0ElMjBzdHIlMkMlMjB1c2VyX3R5cGUlM0ElMjBzdHIpJTIwLSUzRSUyMERpY3QlNUJzdHIlMkMlMjBBbnklNUQlM0ElNUNuJTIwJTIwJTIwJTIwJTVDJTIyJTVDJTIyJTVDJTIyJUU3JTk0JUE4JUU2JTg4JUI3JUU2JUIzJUE4JUU1JTg2JThDJUU0JUI4JUJCJUU2JUI1JTgxJUU3JUE4JThCJTIwLSUyMCVFNCVCOCU5QSVFNSU4QSVBMSVFNSU4RCU4RiVFOCVCMCU4MyVFRiVCQyU4QyVFNiU5QyU4MCVFOSVBQiU5OCVFNiU4QSVCRCVFOCVCMSVBMSVFNSVCMSU4MiVFNiVBQyVBMSU1QyUyMiU1QyUyMiU1QyUyMiU1Q24lMjAlMjAlMjAlMjAlNUNuJTIwJTIwJTIwJTIwJTIzJTIwJUU1JTg4JTlCJUU1JUJCJUJBJUU3JTk0JUE4JUU2JTg4JUI3JUVGJUJDJTg4JUU1JTg2JTg1JUU5JTgzJUE4JUU0JUJDJTlBJUU5JUFBJThDJUU4JUFGJTgxJUVGJUJDJTg5JTVDbiUyMCUyMCUyMCUyMHVzZXJfcmVzdWx0JTIwJTNEJTIwVXNlci5jcmVhdGUodXNlcm5hbWUlMkMlMjBlbWFpbCUyQyUyMHBhc3N3b3JkJTJDJTIwdXNlcl90eXBlKSU1Q24lMjAlMjAlMjAlMjBpZiUyMG5vdCUyMHVzZXJfcmVzdWx0LnN1Y2Nlc3MlM0ElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwJTdCJ3N1Y2Nlc3MnJTNBJTIwRmFsc2UlMkMlMjAnZXJyb3InJTNBJTIwdXNlcl9yZXN1bHQuZXJyb3IlN0QlNUNuJTIwJTIwJTIwJTIwJTVDbiUyMCUyMCUyMCUyMHVzZXIlMjAlM0QlMjB1c2VyX3Jlc3VsdC51c2VyJTVDbiUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjAlMjMlMjAlRTQlQkYlOUQlRTUlQUQlOTglRTclOTQlQTglRTYlODglQjclNUNuJTIwJTIwJTIwJTIwc2F2ZV9yZXN1bHQlMjAlM0QlMjB1c2VyLnNhdmUoKSU1Q24lMjAlMjAlMjAlMjBpZiUyMG5vdCUyMHNhdmVfcmVzdWx0LnN1Y2Nlc3MlM0ElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwJTdCJ3N1Y2Nlc3MnJTNBJTIwRmFsc2UlMkMlMjAnZXJyb3InJTNBJTIwc2F2ZV9yZXN1bHQuZXJyb3IlN0QlNUNuJTIwJTIwJTIwJTIwJTVDbiUyMCUyMCUyMCUyMCUyMyUyMCVFNSU4RiU5MSVFOSU4MCU4MSVFNiVBQyVBMiVFOCVCRiU4RSVFOSU4MiVBRSVFNCVCQiVCNiU1Q24lMjAlMjAlMjAlMjBfc2VuZF93ZWxjb21lX2VtYWlsKHVzZXIpJTVDbiUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjAlMjMlMjAlRTglQkYlOTQlRTUlOUIlOUUlRTYlODglOTAlRTUlOEElOUYlRTclQkIlOTMlRTYlOUUlOUMlNUNuJTIwJTIwJTIwJTIwcmV0dXJuJTIwX2NyZWF0ZV9zdWNjZXNzX3Jlc3BvbnNlKHVzZXIpJTVDbiU1Q24lNUNuZGVmJTIwX3NlbmRfd2VsY29tZV9lbWFpbCh1c2VyJTNBJTIwJ1VzZXInKSUyMC0lM0UlMjBOb25lJTNBJTVDbiUyMCUyMCUyMCUyMCU1QyUyMiU1QyUyMiU1QyUyMiVFNSU4RiU5MSVFOSU4MCU4MSVFNiVBQyVBMiVFOCVCRiU4RSVFOSU4MiVBRSVFNCVCQiVCNiUyMC0lMjAlRTUlOEQlOEYlRTglQjAlODMlRTUlQjElODIlRTglODElOEMlRTglQjQlQTMlNUMlMjIlNUMlMjIlNUMlMjIlNUNuJTIwJTIwJTIwJTIwdHJ5JTNBJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGVtYWlsX2NvbnRlbnQlMjAlM0QlMjBfZ2V0X3dlbGNvbWVfZW1haWxfY29udGVudCh1c2VyKSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBlbWFpbF9zZW5kZXIlMjAlM0QlMjBFbWFpbFNlbmRlcigpJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGVtYWlsX3NlbmRlci5zZW5kKHVzZXIuZW1haWwlMkMlMjBlbWFpbF9jb250ZW50KSU1Q24lMjAlMjAlMjAlMjBleGNlcHQlMjBFeGNlcHRpb24lM0ElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwJUU5JTgyJUFFJUU0JUJCJUI2JUU1JThGJTkxJUU5JTgwJTgxJUU1JUE0JUIxJUU4JUI0JUE1JUU0JUI4JThEJUU1JUJEJUIxJUU1JTkzJThEJUU2JUIzJUE4JUU1JTg2JThDJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHBhc3MlNUNuJTVDbiU1Q25kZWYlMjBfZ2V0X3dlbGNvbWVfZW1haWxfY29udGVudCh1c2VyJTNBJTIwJ1VzZXInKSUyMC0lM0UlMjBEaWN0JTVCc3RyJTJDJTIwc3RyJTVEJTNBJTVDbiUyMCUyMCUyMCUyMCU1QyUyMiU1QyUyMiU1QyUyMiVFOCU4RSVCNyVFNSU4RiU5NiVFNiVBQyVBMiVFOCVCRiU4RSVFOSU4MiVBRSVFNCVCQiVCNiVFNSU4NiU4NSVFNSVBRSVCOSU1QyUyMiU1QyUyMiU1QyUyMiU1Q24lMjAlMjAlMjAlMjByZXR1cm4lMjB1c2VyLmdldF93ZWxjb21lX2VtYWlsX2NvbnRlbnQoKSU1Q24lNUNuJTVDbmRlZiUyMF9jcmVhdGVfc3VjY2Vzc19yZXNwb25zZSh1c2VyJTNBJTIwJ1VzZXInKSUyMC0lM0UlMjBEaWN0JTVCc3RyJTJDJTIwQW55JTVEJTNBJTVDbiUyMCUyMCUyMCUyMCU1QyUyMiU1QyUyMiU1QyUyMiVFNSU4OCU5QiVFNSVCQiVCQSVFNiU4OCU5MCVFNSU4QSU5RiVFNSU5MyU4RCVFNSVCQSU5NCU1QyUyMiU1QyUyMiU1QyUyMiU1Q24lMjAlMjAlMjAlMjB1c2VyX3R5cGVfZGlzcGxheSUyMCUzRCUyMCU1QyUyMlByZW1pdW0lNUMlMjIlMjBpZiUyMHVzZXIudXNlcl90eXBlJTIwJTNEJTNEJTIwJTVDJTIycHJlbWl1bSU1QyUyMiUyMGVsc2UlMjAlNUMlMjIlRTYlOTklQUUlRTklODAlOUElNUMlMjIlNUNuJTIwJTIwJTIwJTIwcmV0dXJuJTIwJTdCJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCdzdWNjZXNzJyUzQSUyMFRydWUlMkMlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJ3VzZXJfaWQnJTNBJTIwdXNlci51c2VyX2lkJTJDJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCdtZXNzYWdlJyUzQSUyMGYnJTdCdXNlcl90eXBlX2Rpc3BsYXklN0QlRTclOTQlQTglRTYlODglQjclRTYlQjMlQTglRTUlODYlOEMlRTYlODglOTAlRTUlOEElOUYnJTVDbiUyMCUyMCUyMCUyMCU3RCU1Q24lMjIlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjMlMjAlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlNUNuJTIzJTIwJUU3JUFDJUFDMSVFNSVCMSU4MiVFRiVCQyU5QSVFNCVCOCU5QSVFNSU4QSVBMSVFNSU4RCU4RiVFOCVCMCU4MyVFNSVCMSU4MiUyMC0lMjAlRTYlOUMlODAlRTklQUIlOTglRTYlOEElQkQlRTglQjElQTElRTUlQjElODIlRTYlQUMlQTElNUNuJTIzJTIwJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTVDbiU1Q25kZWYlMjByZWdpc3Rlcl91c2VyKHVzZXJuYW1lJTNBJTIwc3RyJTJDJTIwZW1haWwlM0ElMjBzdHIlMkMlMjBwYXNzd29yZCUzQSUyMHN0ciUyQyUyMHVzZXJfdHlwZSUzQSUyMHN0ciklMjAtJTNFJTIwRGljdCU1QnN0ciUyQyUyMEFueSU1RCUzQSU1Q24lMjAlMjAlMjAlMjAlNUMlMjIlNUMlMjIlNUMlMjIlRTclOTQlQTglRTYlODglQjclRTYlQjMlQTglRTUlODYlOEMlRTQlQjglQkIlRTYlQjUlODElRTclQTglOEIlMjAtJTIwJUU0JUI4JTlBJUU1JThBJUExJUU1JThEJThGJUU4JUIwJTgzJUVGJUJDJThDJUU2JTlDJTgwJUU5JUFCJTk4JUU2JThBJUJEJUU4JUIxJUExJUU1JUIxJTgyJUU2JUFDJUExJTVDJTIyJTVDJTIyJTVDJTIyJTVDbiUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjAlMjMlMjAlRTUlODglOUIlRTUlQkIlQkElRTclOTQlQTglRTYlODglQjclRUYlQkMlODglRTUlODYlODUlRTklODMlQTglRTQlQkMlOUElRTklQUElOEMlRTglQUYlODElRUYlQkMlODklNUNuJTIwJTIwJTIwJTIwdXNlcl9yZXN1bHQlMjAlM0QlMjBVc2VyLmNyZWF0ZSh1c2VybmFtZSUyQyUyMGVtYWlsJTJDJTIwcGFzc3dvcmQlMkMlMjB1c2VyX3R5cGUpJTVDbiUyMCUyMCUyMCUyMGlmJTIwbm90JTIwdXNlcl9yZXN1bHQuc3VjY2VzcyUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjAlN0Inc3VjY2VzcyclM0ElMjBGYWxzZSUyQyUyMCdlcnJvciclM0ElMjB1c2VyX3Jlc3VsdC5lcnJvciU3RCU1Q24lMjAlMjAlMjAlMjAlNUNuJTIwJTIwJTIwJTIwdXNlciUyMCUzRCUyMHVzZXJfcmVzdWx0LnVzZXIlNUNuJTIwJTIwJTIwJTIwJTVDbiUyMCUyMCUyMCUyMCUyMyUyMCVFNCVCRiU5RCVFNSVBRCU5OCVFNyU5NCVBOCVFNiU4OCVCNyU1Q24lMjAlMjAlMjAlMjBzYXZlX3Jlc3VsdCUyMCUzRCUyMHVzZXIuc2F2ZSgpJTVDbiUyMCUyMCUyMCUyMGlmJTIwbm90JTIwc2F2ZV9yZXN1bHQuc3VjY2VzcyUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjAlN0Inc3VjY2VzcyclM0ElMjBGYWxzZSUyQyUyMCdlcnJvciclM0ElMjBzYXZlX3Jlc3VsdC5lcnJvciU3RCU1Q24lMjAlMjAlMjAlMjAlNUNuJTIwJTIwJTIwJTIwJTIzJTIwJUU1JThGJTkxJUU5JTgwJTgxJUU2JUFDJUEyJUU4JUJGJThFJUU5JTgyJUFFJUU0JUJCJUI2JTVDbiUyMCUyMCUyMCUyMF9zZW5kX3dlbGNvbWVfZW1haWwodXNlciklNUNuJTIwJTIwJTIwJTIwJTVDbiUyMCUyMCUyMCUyMCUyMyUyMCVFOCVCRiU5NCVFNSU5QiU5RSVFNiU4OCU5MCVFNSU4QSU5RiVFNyVCQiU5MyVFNiU5RSU5QyU1Q24lMjAlMjAlMjAlMjByZXR1cm4lMjBfY3JlYXRlX3N1Y2Nlc3NfcmVzcG9uc2UodXNlciklNUNuJTVDbiU1Q25kZWYlMjBfc2VuZF93ZWxjb21lX2VtYWlsKHVzZXIlM0ElMjAnVXNlcicpJTIwLSUzRSUyME5vbmUlM0ElNUNuJTIwJTIwJTIwJTIwJTVDJTIyJTVDJTIyJTVDJTIyJUU1JThGJTkxJUU5JTgwJTgxJUU2JUFDJUEyJUU4JUJGJThFJUU5JTgyJUFFJUU0JUJCJUI2JTIwLSUyMCVFNSU4RCU4RiVFOCVCMCU4MyVFNSVCMSU4MiVFOCU4MSU4QyVFOCVCNCVBMyU1QyUyMiU1QyUyMiU1QyUyMiU1Q24lMjAlMjAlMjAlMjB0cnklM0ElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZW1haWxfY29udGVudCUyMCUzRCUyMF9nZXRfd2VsY29tZV9lbWFpbF9jb250ZW50KHVzZXIpJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGVtYWlsX3NlbmRlciUyMCUzRCUyMEVtYWlsU2VuZGVyKCklNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZW1haWxfc2VuZGVyLnNlbmQodXNlci5lbWFpbCUyQyUyMGVtYWlsX2NvbnRlbnQpJTVDbiUyMCUyMCUyMCUyMGV4Y2VwdCUyMEV4Y2VwdGlvbiUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjAlRTklODIlQUUlRTQlQkIlQjYlRTUlOEYlOTElRTklODAlODElRTUlQTQlQjElRTglQjQlQTUlRTQlQjglOEQlRTUlQkQlQjElRTUlOTMlOEQlRTYlQjMlQTglRTUlODYlOEMlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcGFzcyU1Q24lNUNuJTVDbmRlZiUyMF9nZXRfd2VsY29tZV9lbWFpbF9jb250ZW50KHVzZXIlM0ElMjAnVXNlcicpJTIwLSUzRSUyMERpY3QlNUJzdHIlMkMlMjBzdHIlNUQlM0ElNUNuJTIwJTIwJTIwJTIwJTVDJTIyJTVDJTIyJTVDJTIyJUU4JThFJUI3JUU1JThGJTk2JUU2JUFDJUEyJUU4JUJGJThFJUU5JTgyJUFFJUU0JUJCJUI2JUU1JTg2JTg1JUU1JUFFJUI5JTVDJTIyJTVDJTIyJTVDJTIyJTVDbiUyMCUyMCUyMCUyMHJldHVybiUyMHVzZXIuZ2V0X3dlbGNvbWVfZW1haWxfY29udGVudCgpJTVDbiU1Q24lNUNuZGVmJTIwX2NyZWF0ZV9zdWNjZXNzX3Jlc3BvbnNlKHVzZXIlM0ElMjAnVXNlcicpJTIwLSUzRSUyMERpY3QlNUJzdHIlMkMlMjBBbnklNUQlM0ElNUNuJTIwJTIwJTIwJTIwJTVDJTIyJTVDJTIyJTVDJTIyJUU1JTg4JTlCJUU1JUJCJUJBJUU2JTg4JTkwJUU1JThBJTlGJUU1JTkzJThEJUU1JUJBJTk0JTVDJTIyJTVDJTIyJTVDJTIyJTVDbiUyMCUyMCUyMCUyMHVzZXJfdHlwZV9kaXNwbGF5JTIwJTNEJTIwJTVDJTIyUHJlbWl1bSU1QyUyMiUyMGlmJTIwdXNlci51c2VyX3R5cGUlMjAlM0QlM0QlMjAlNUMlMjJwcmVtaXVtJTVDJTIyJTIwZWxzZSUyMCU1QyUyMiVFNiU5OSVBRSVFOSU4MCU5QSU1QyUyMiU1Q24lMjAlMjAlMjAlMjByZXR1cm4lMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJ3N1Y2Nlc3MnJTNBJTIwVHJ1ZSUyQyU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAndXNlcl9pZCclM0ElMjB1c2VyLnVzZXJfaWQlMkMlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJ21lc3NhZ2UnJTNBJTIwZiclN0J1c2VyX3R5cGVfZGlzcGxheSU3RCVFNyU5NCVBOCVFNiU4OCVCNyVFNiVCMyVBOCVFNSU4NiU4QyVFNiU4OCU5MCVFNSU4QSU5RiclNUNuJTIwJTIwJTIwJTIwJTdEJTVDbiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTJDJTIyY29udGVudFR5cGUlMjIlM0ElMjJjYW5namllLXZvaWRibG9jayUyMiU3RCUyQyU3QiUyMmtsYXNzJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIycGFyYWdyYXBoJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiUyMnV1aWQlMjIlM0ElMjJtZDRicGhtMDk5NnBpOTAzNSUyMiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTJDJTIyY29udGVudFR5cGUlMjIlM0ElMjJjYW5namllLXRleHRibG9jayUyMiU3RCUyQyU3QiUyMmtsYXNzJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyaGVhZGluZy0yJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiUyMnV1aWQlMjIlM0ElMjJtZDVlaTNhMG41cmI3Z3didnIlMjIlMkMlMjJzcGFjaW5nJTIyJTNBJTdCJTIyYmVmb3JlJTIyJTNBMjEuMzMzMzMzMzMzMzMzMzMyJTJDJTIyYWZ0ZXIlMjIlM0E5JTJDJTIybGluZSUyMiUzQTAuODUyOTQxMTc2NDcwNTg4MiU3RCU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiVFNCVCOCU5QSVFNSU4QSVBMSVFNSVBRiVCOSVFOCVCMSVBMSVFNSVCMSU4MiUyMC0lMjAlRTQlQjglQUQlRTYlOEElQkQlRTglQjElQTElRTUlQjElODIlRTYlQUMlQTElRUYlQkMlOEMlRTUlODElQTUlRTUlQTMlQUUlRTclOUElODQlRTQlQjglOUElRTUlOEElQTElRTUlQUYlQjklRTglQjElQTElMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIybWFyayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJib2xkJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCU3RCUyQyU3QiUyMmtsYXNzJTIyJTNBJTIybWFyayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJzeiUyMiUyQyUyMmRhdGElMjIlM0ElN0IlMjJ2YWx1ZSUyMiUzQTE2JTJDJTIyc3pVbml0JTIyJTNBJTIycHQlMjIlN0QlN0QlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJrbGFzcyUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMnBhcmFncmFwaCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlMjJ1dWlkJTIyJTNBJTIybWQ1ZWxxaTFjamk4MnczdTR4ZyUyMiUyQyUyMmluZCUyMiUzQSU3QiUyMmZpcnN0TGluZSUyMiUzQTMyJTdEJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJUU4JUJGJTk5JUU0JUI4JTgwJUU1JUIxJTgyJUU2JTk4JUFGJUU0JUI4JTlBJUU1JThBJUExJUU5JTgwJUJCJUU4JUJFJTkxJUU3JTlBJTg0JUUyJTgwJTlDJUU2JUEwJUI4JUU1JUJGJTgzJUU2JTg5JUJGJUU4JUJEJUJEJUU4JTgwJTg1JUUyJTgwJTlEJUVGJUJDJThDJUU1JUE2JTgyJUU1JTkwJThDJUU3JTk0JUI1JUU1JUJEJUIxJUU2JThCJThEJUU2JTkxJTg0JUU0JUI4JUFEJUU3JTlBJTg0JUUyJTgwJTlDJUU2JTkxJTg0JUU1JUJEJUIxJUU2JThDJTg3JUU1JUFGJUJDJUUyJTgwJTlEJUVGJUJDJThDJUU4JUI0JTlGJUU4JUI0JUEzJUU1JUIwJTg2JUU1JUFGJUJDJUU2JUJDJTk0JUU3JTlBJTg0JUU2JThBJUJEJUU4JUIxJUExJUU2JTg0JThGJUU1JTlCJUJFJUU4JUJEJUFDJUU1JThDJTk2JUU0JUI4JUJBJUU1JTg1JUI3JUU0JUJEJTkzJUU1JThGJUFGJUU2JTg5JUE3JUU4JUExJThDJUU3JTlBJTg0JUUyJTgwJTlDJUU2JThCJThEJUU2JTkxJTg0JUU2JTk2JUI5JUU2JUExJTg4JUUyJTgwJTlEJUUzJTgwJTgyJUU1JTlDJUE4JUU4JUJGJTk5JUU5JTg3JThDJUVGJUJDJThDJUU2JUEwJUI4JUU1JUJGJTgzJUU2JTk4JUFGVXNlciVFOCVCRiU5OSVFNCVCOCVBQSVFNCVCOCU5QSVFNSU4QSVBMSVFNSVBRiVCOSVFOCVCMSVBMSVFMyU4MCU4MiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTJDJTIyY29udGVudFR5cGUlMjIlM0ElMjJjYW5namllLXRleHRibG9jayUyMiU3RCUyQyU3QiUyMmtsYXNzJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIycGFyYWdyYXBoJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiUyMnV1aWQlMjIlM0ElMjJtZDVlbDNoZnM2NjF2OTcwdGtuJTIyJTJDJTIyaW5kJTIyJTNBJTdCJTIyZmlyc3RMaW5lJTIyJTNBMzIlN0QlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlRTUlQUUlODMlRTQlQjglOEQlRTUlODYlOEQlRTYlOTglQUYlRTQlQjglODAlRTQlQjglQUElRTclQUUlODAlRTUlOEQlOTUlRTclOUElODQlRTglQjQlQUIlRTglQTElODAlRTYlOTUlQjAlRTYlOEQlQUUlRTclQjElQkIlRUYlQkMlOEMlRTglODAlOEMlRTYlOTglQUYlRTQlQjglODAlRTQlQjglQUElRTUlODElQTUlRTUlQTMlQUUlRTclOUElODQlRTMlODAlODElRTglODclQUElRTYlQjQlQkQlRTclOUElODQlRTUlQUUlOUUlRTQlQkQlOTMlRTMlODAlODIlRTUlQUUlODMlRTUlQjAlODElRTglQTMlODUlRTQlQkElODYlRTQlQjglOEUlRTIlODAlOUMlRTclOTQlQTglRTYlODglQjclRTIlODAlOUQlRTclOUIlQjglRTUlODUlQjMlRTclOUElODQlRTYlODklODAlRTYlOUMlODklRTQlQjglOUElRTUlOEElQTElRTglQTclODQlRTUlODglOTklRTUlOTIlOEMlRTYlOTUlQjAlRTYlOEQlQUUlRTYlOTMlOEQlRTQlQkQlOUMlRUYlQkMlOUElMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCUyQyUyMmNvbnRlbnRUeXBlJTIyJTNBJTIyY2FuZ2ppZS10ZXh0YmxvY2slMjIlN0QlMkMlN0IlMjJrbGFzcyUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMmNvZGUlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTIyc3ludGF4JTIyJTNBJTIycHl0aG9uJTIyJTJDJTIydGhlbWUlMjIlM0ElMjJkZWZhdWx0JTIyJTJDJTIyd3JhcCUyMiUzQXRydWUlMkMlMjJpZCUyMiUzQSUyMjl1ZWlxdyUyMiUyQyUyMnRpdGxlJTIyJTNBJTIyJTIyJTJDJTIyZm9sZCUyMiUzQWZhbHNlJTJDJTIyaGlkZUhlYWRlciUyMiUzQWZhbHNlJTJDJTIyY29kZUZvbGRpbmclMjIlM0FmYWxzZSUyQyUyMnNob3dMaW5lTnVtYmVyJTIyJTNBdHJ1ZSUyQyUyMmZvbnQlMjIlM0ElN0IlMjJmb250RmFtaWx5JTIyJTNBJTIyZGVmYXVsdEZvbnQlMjIlMkMlMjJsaWdhdHVyZXMlMjIlM0FmYWxzZSU3RCUyQyUyMmVuYWJsZU1hY0hlYWRlciUyMiUzQWZhbHNlJTJDJTIydXVpZCUyMiUzQSUyMm1kNGJxcTV4cnN6dmFlYmd4dW4lMjIlMkMlMjJjb2RlJTIyJTNBJTIyJTIzJTIwJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTVDbiUyMyUyMCVFNyVBQyVBQzIlRTUlQjElODIlRUYlQkMlOUElRTQlQjglOUElRTUlOEElQTElRTUlQUYlQjklRTglQjElQTElRTUlQjElODIlMjAtJTIwJUU0JUI4JUFEJUU2JThBJUJEJUU4JUIxJUExJUU1JUIxJTgyJUU2JUFDJUExJUVGJUJDJThDJUU1JTgxJUE1JUU1JUEzJUFFJUU3JTlBJTg0JUU0JUI4JTlBJUU1JThBJUExJUU1JUFGJUI5JUU4JUIxJUExJTVDbiUyMyUyMCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCU1Q24lNUNuJTQwZGF0YWNsYXNzJTVDbmNsYXNzJTIwVXNlckNyZWF0aW9uUmVzdWx0JTNBJTVDbiUyMCUyMCUyMCUyMCU1QyUyMiU1QyUyMiU1QyUyMiVFNyU5NCVBOCVFNiU4OCVCNyVFNSU4OCU5QiVFNSVCQiVCQSVFNyVCQiU5MyVFNiU5RSU5QyU1QyUyMiU1QyUyMiU1QyUyMiU1Q24lMjAlMjAlMjAlMjBzdWNjZXNzJTNBJTIwYm9vbCU1Q24lMjAlMjAlMjAlMjB1c2VyJTNBJTIwT3B0aW9uYWwlNUInVXNlciclNUQlMjAlM0QlMjBOb25lJTVDbiUyMCUyMCUyMCUyMGVycm9yJTNBJTIwT3B0aW9uYWwlNUJzdHIlNUQlMjAlM0QlMjBOb25lJTVDbiU1Q24lNUNuJTQwZGF0YWNsYXNzJTVDbmNsYXNzJTIwU2F2ZVJlc3VsdCUzQSU1Q24lMjAlMjAlMjAlMjAlNUMlMjIlNUMlMjIlNUMlMjIlRTQlQkYlOUQlRTUlQUQlOTglRTclQkIlOTMlRTYlOUUlOUMlNUMlMjIlNUMlMjIlNUMlMjIlNUNuJTIwJTIwJTIwJTIwc3VjY2VzcyUzQSUyMGJvb2wlNUNuJTIwJTIwJTIwJTIwdXNlcl9pZCUzQSUyME9wdGlvbmFsJTVCaW50JTVEJTIwJTNEJTIwTm9uZSU1Q24lMjAlMjAlMjAlMjBlcnJvciUzQSUyME9wdGlvbmFsJTVCc3RyJTVEJTIwJTNEJTIwTm9uZSU1Q24lNUNuJTVDbmNsYXNzJTIwVXNlciUzQSU1Q24lMjAlMjAlMjAlMjAlNUMlMjIlNUMlMjIlNUMlMjIlRTclOTQlQTglRTYlODglQjclMjAtJTIwJUU2JUEwJUI4JUU1JUJGJTgzJUU0JUI4JTlBJUU1JThBJUExJUU1JUFGJUI5JUU4JUIxJUExJUVGJUJDJThDJUU1JTg2JTg1JUU5JTgzJUE4JUU5JUFBJThDJUU4JUFGJTgxJUU0JUJGJTlEJUU4JUFGJTgxJUU1JTgxJUE1JUU1JUEzJUFFJUU2JTgwJUE3JTVDJTIyJTVDJTIyJTVDJTIyJTVDbiUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjBkZWYlMjBfX2luaXRfXyhzZWxmJTJDJTIwdXNlcm5hbWUlM0ElMjBzdHIlMkMlMjBlbWFpbCUzQSUyMHN0ciUyQyUyMHBhc3N3b3JkX2hhc2glM0ElMjBzdHIlMkMlMjB1c2VyX3R5cGUlM0ElMjBzdHIpJTNBJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNlbGYudXNlcm5hbWUlMjAlM0QlMjB1c2VybmFtZSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzZWxmLmVtYWlsJTIwJTNEJTIwZW1haWwlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc2VsZi5wYXNzd29yZF9oYXNoJTIwJTNEJTIwcGFzc3dvcmRfaGFzaCU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzZWxmLnVzZXJfdHlwZSUyMCUzRCUyMHVzZXJfdHlwZSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzZWxmLnVzZXJfaWQlMjAlM0QlMjBOb25lJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNlbGYuY3JlYXRlZF9hdCUyMCUzRCUyMGRhdGV0aW1lLm5vdygpJTVDbiUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjAlNDBjbGFzc21ldGhvZCU1Q24lMjAlMjAlMjAlMjBkZWYlMjBjcmVhdGUoY2xzJTJDJTIwdXNlcm5hbWUlM0ElMjBzdHIlMkMlMjBlbWFpbCUzQSUyMHN0ciUyQyUyMHBhc3N3b3JkJTNBJTIwc3RyJTJDJTIwdXNlcl90eXBlJTNBJTIwc3RyKSUyMC0lM0UlMjBVc2VyQ3JlYXRpb25SZXN1bHQlM0ElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTIyJTVDJTIyJTVDJTIyJUU1JTg4JTlCJUU1JUJCJUJBJUU3JTk0JUE4JUU2JTg4JUI3JTIwLSUyMCVFNSU4NiU4NSVFOSU4MyVBOCVFOSVBQSU4QyVFOCVBRiU4MSVFNCVCRiU5RCVFOCVBRiU4MSVFNSU4MSVBNSVFNSVBMyVBRSVFNiU4MCVBNyU1QyUyMiU1QyUyMiU1QyUyMiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwJUU5JUFBJThDJUU4JUFGJTgxJUU3JTk0JUE4JUU2JTg4JUI3JUU3JUIxJUJCJUU1JTlFJThCJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGlmJTIwdXNlcl90eXBlJTIwbm90JTIwaW4lMjAlNUIncmVndWxhciclMkMlMjAncHJlbWl1bSclNUQlM0ElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwVXNlckNyZWF0aW9uUmVzdWx0KHN1Y2Nlc3MlM0RGYWxzZSUyQyUyMGVycm9yJTNEJyVFNiU5NyVBMCVFNiU5NSU4OCVFNyU5QSU4NCVFNyU5NCVBOCVFNiU4OCVCNyVFNyVCMSVCQiVFNSU5RSU4QicpJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjAlRTklQUElOEMlRTglQUYlODElRTclOTQlQTglRTYlODglQjclRTUlOTAlOEQlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwdXNlcm5hbWVfZXJyb3IlMjAlM0QlMjBjbHMuX3ZhbGlkYXRlX3VzZXJuYW1lKHVzZXJuYW1lJTJDJTIwdXNlcl90eXBlKSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpZiUyMHVzZXJuYW1lX2Vycm9yJTNBJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMFVzZXJDcmVhdGlvblJlc3VsdChzdWNjZXNzJTNERmFsc2UlMkMlMjBlcnJvciUzRHVzZXJuYW1lX2Vycm9yKSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwJUU5JUFBJThDJUU4JUFGJTgxJUU5JTgyJUFFJUU3JUFFJUIxJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGVtYWlsX2Vycm9yJTIwJTNEJTIwY2xzLl92YWxpZGF0ZV9lbWFpbChlbWFpbCklNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaWYlMjBlbWFpbF9lcnJvciUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjBVc2VyQ3JlYXRpb25SZXN1bHQoc3VjY2VzcyUzREZhbHNlJTJDJTIwZXJyb3IlM0RlbWFpbF9lcnJvciklNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMCVFOSVBQSU4QyVFOCVBRiU4MSVFNSVBRiU4NiVFNyVBMCU4MSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBwYXNzd29yZF9lcnJvciUyMCUzRCUyMGNscy5fdmFsaWRhdGVfcGFzc3dvcmQocGFzc3dvcmQpJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGlmJTIwcGFzc3dvcmRfZXJyb3IlM0ElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwVXNlckNyZWF0aW9uUmVzdWx0KHN1Y2Nlc3MlM0RGYWxzZSUyQyUyMGVycm9yJTNEcGFzc3dvcmRfZXJyb3IpJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjAlRTYlQTMlODAlRTYlOUYlQTUlRTclOTQlQTglRTYlODglQjclRTYlOTglQUYlRTUlOTAlQTYlRTUlQjclQjIlRTUlQUQlOTglRTUlOUMlQTglNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaWYlMjBVc2VyUmVwb3NpdG9yeSgpLmV4aXN0cyh1c2VybmFtZSUyQyUyMGVtYWlsKSUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjBVc2VyQ3JlYXRpb25SZXN1bHQoc3VjY2VzcyUzREZhbHNlJTJDJTIwZXJyb3IlM0QnJUU3JTk0JUE4JUU2JTg4JUI3JUU1JTkwJThEJUU2JTg4JTk2JUU5JTgyJUFFJUU3JUFFJUIxJUU1JUI3JUIyJUU1JUFEJTk4JUU1JTlDJUE4JyklNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMCVFNSU4OCU5QiVFNSVCQiVCQSVFNyU5NCVBOCVFNiU4OCVCNyVFNSVBRiVCOSVFOCVCMSVBMSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBwYXNzd29yZF9oYXNoJTIwJTNEJTIwY2xzLl9oYXNoX3Bhc3N3b3JkKHBhc3N3b3JkKSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjB1c2VyJTIwJTNEJTIwY2xzKHVzZXJuYW1lJTJDJTIwZW1haWwlMkMlMjBwYXNzd29yZF9oYXNoJTJDJTIwdXNlcl90eXBlKSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwVXNlckNyZWF0aW9uUmVzdWx0KHN1Y2Nlc3MlM0RUcnVlJTJDJTIwdXNlciUzRHVzZXIpJTVDbiUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjBkZWYlMjBzYXZlKHNlbGYpJTIwLSUzRSUyMFNhdmVSZXN1bHQlM0ElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTIyJTVDJTIyJTVDJTIyJUU0JUJGJTlEJUU1JUFEJTk4JUU3JTk0JUE4JUU2JTg4JUI3JUU1JTg4JUIwJUU2JTk1JUIwJUU2JThEJUFFJUU1JUJBJTkzJTVDJTIyJTVDJTIyJTVDJTIyJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHRyeSUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXBvc2l0b3J5JTIwJTNEJTIwVXNlclJlcG9zaXRvcnkoKSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzZWxmLnVzZXJfaWQlMjAlM0QlMjByZXBvc2l0b3J5LmFkZChzZWxmKSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjBTYXZlUmVzdWx0KHN1Y2Nlc3MlM0RUcnVlJTJDJTIwdXNlcl9pZCUzRHNlbGYudXNlcl9pZCklNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZXhjZXB0JTIwRXhjZXB0aW9uJTIwYXMlMjBlJTNBJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMFNhdmVSZXN1bHQoc3VjY2VzcyUzREZhbHNlJTJDJTIwZXJyb3IlM0RmJyVFNCVCRiU5RCVFNSVBRCU5OCVFNyU5NCVBOCVFNiU4OCVCNyVFNSVBNCVCMSVFOCVCNCVBNSUzQSUyMCU3QnN0cihlKSU3RCcpJTVDbiUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjAlNDBzdGF0aWNtZXRob2QlNUNuJTIwJTIwJTIwJTIwZGVmJTIwX3ZhbGlkYXRlX3VzZXJuYW1lKHVzZXJuYW1lJTNBJTIwc3RyJTJDJTIwdXNlcl90eXBlJTNBJTIwc3RyKSUyMC0lM0UlMjBPcHRpb25hbCU1QnN0ciU1RCUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUMlMjIlNUMlMjIlNUMlMjIlRTklQUElOEMlRTglQUYlODElRTclOTQlQTglRTYlODglQjclRTUlOTAlOEQlNUMlMjIlNUMlMjIlNUMlMjIlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaWYlMjBub3QlMjB1c2VybmFtZSUyMG9yJTIwbm90JTIwdXNlcm5hbWUuc3RyaXAoKSUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjAnJUU3JTk0JUE4JUU2JTg4JUI3JUU1JTkwJThEJUU0JUI4JThEJUU4JTgzJUJEJUU0JUI4JUJBJUU3JUE5JUJBJyU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaWYlMjB1c2VyX3R5cGUlMjAlM0QlM0QlMjAncHJlbWl1bSclMjBhbmQlMjBsZW4odXNlcm5hbWUpJTIwJTNDJTIwNiUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjAnUHJlbWl1bSVFNyU5NCVBOCVFNiU4OCVCNyVFNSU5MCU4RCVFOCU4NyVCMyVFNSVCMCU5MTYlRTQlQkQlOEQnJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjBOb25lJTVDbiUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjAlNDBzdGF0aWNtZXRob2QlNUNuJTIwJTIwJTIwJTIwZGVmJTIwX3ZhbGlkYXRlX2VtYWlsKGVtYWlsJTNBJTIwc3RyKSUyMC0lM0UlMjBPcHRpb25hbCU1QnN0ciU1RCUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUMlMjIlNUMlMjIlNUMlMjIlRTklQUElOEMlRTglQUYlODElRTklODIlQUUlRTclQUUlQjElNUMlMjIlNUMlMjIlNUMlMjIlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaWYlMjBub3QlMjBlbWFpbCUyMG9yJTIwbm90JTIwZW1haWwuc3RyaXAoKSUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjAnJUU5JTgyJUFFJUU3JUFFJUIxJUU0JUI4JThEJUU4JTgzJUJEJUU0JUI4JUJBJUU3JUE5JUJBJyU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcGF0dGVybiUyMCUzRCUyMHInJTVFJTVCYS16QS1aMC05Ll8lMjUlMkItJTVEJTJCJTQwJTVCYS16QS1aMC05Li0lNUQlMkIlNUMlNUMuJTVCYS16QS1aJTVEJTdCMiUyQyU3RCUyNCclNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaWYlMjBub3QlMjByZS5tYXRjaChwYXR0ZXJuJTJDJTIwZW1haWwpJTNBJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMCclRTklODIlQUUlRTclQUUlQjElRTYlQTAlQkMlRTUlQkMlOEYlRTQlQjglOEQlRTYlQUQlQTMlRTclQTElQUUnJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjBOb25lJTVDbiUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjAlNDBzdGF0aWNtZXRob2QlNUNuJTIwJTIwJTIwJTIwZGVmJTIwX3ZhbGlkYXRlX3Bhc3N3b3JkKHBhc3N3b3JkJTNBJTIwc3RyKSUyMC0lM0UlMjBPcHRpb25hbCU1QnN0ciU1RCUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUMlMjIlNUMlMjIlNUMlMjIlRTklQUElOEMlRTglQUYlODElRTUlQUYlODYlRTclQTAlODElNUMlMjIlNUMlMjIlNUMlMjIlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaWYlMjBub3QlMjBwYXNzd29yZCUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjAnJUU1JUFGJTg2JUU3JUEwJTgxJUU0JUI4JThEJUU4JTgzJUJEJUU0JUI4JUJBJUU3JUE5JUJBJyU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaWYlMjBsZW4ocGFzc3dvcmQpJTIwJTNDJTIwOCUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjAnJUU1JUFGJTg2JUU3JUEwJTgxJUU1JUJGJTg1JUU5JUExJUJCJUU4JTg3JUIzJUU1JUIwJTkxOCVFNCVCRCU4RCclNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGlmJTIwbm90JTIwcmUuc2VhcmNoKHInJTVCQS1aJTVEJyUyQyUyMHBhc3N3b3JkKSUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjAnJUU1JUFGJTg2JUU3JUEwJTgxJUU1JUJGJTg1JUU5JUExJUJCJUU1JThDJTg1JUU1JTkwJUFCJUU1JUE0JUE3JUU1JTg2JTk5JUU1JUFEJTk3JUU2JUFGJThEJyU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaWYlMjBub3QlMjByZS5zZWFyY2gociclNUIwLTklNUQnJTJDJTIwcGFzc3dvcmQpJTNBJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMCclRTUlQUYlODYlRTclQTAlODElRTUlQkYlODUlRTklQTElQkIlRTUlOEMlODUlRTUlOTAlQUIlRTYlOTUlQjAlRTUlQUQlOTcnJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjBOb25lJTVDbiUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjBkZWYlMjBnZXRfd2VsY29tZV9lbWFpbF9jb250ZW50KHNlbGYpJTIwLSUzRSUyMERpY3QlNUJzdHIlMkMlMjBzdHIlNUQlM0ElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTIyJTVDJTIyJTVDJTIyJUU4JThFJUI3JUU1JThGJTk2JUU2JUFDJUEyJUU4JUJGJThFJUU5JTgyJUFFJUU0JUJCJUI2JUU1JTg2JTg1JUU1JUFFJUI5JTVDJTIyJTVDJTIyJTVDJTIyJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGlmJTIwc2VsZi51c2VyX3R5cGUlMjAlM0QlM0QlMjAncHJlbWl1bSclM0ElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwJTdCJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCdzdWJqZWN0JyUzQSUyMCclRTYlQUMlQTIlRTglQkYlOEUlRTYlODglOTAlRTQlQjglQkFQcmVtaXVtJUU3JTk0JUE4JUU2JTg4JUI3JUVGJUJDJTgxJyUyQyU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAnYm9keSclM0ElMjBmJyVFNCVCQSVCMiVFNyU4OCVCMSVFNyU5QSU4NCUyMCU3QnNlbGYudXNlcm5hbWUlN0QlRUYlQkMlOEMlRTYlODQlOUYlRTglQjAlQTIlRTYlODIlQTglRTYlODglOTAlRTQlQjglQkElRTYlODglOTElRTQlQkIlQUMlRTclOUElODRQcmVtaXVtJUU3JTk0JUE4JUU2JTg4JUI3Li4uJyU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0QlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZWxzZSUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJ3N1YmplY3QnJTNBJTIwJyVFNiVBQyVBMiVFOCVCRiU4RSVFNiVCMyVBOCVFNSU4NiU4QyVFRiVCQyU4MSclMkMlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJ2JvZHknJTNBJTIwZiclRTQlQkElQjIlRTclODglQjElRTclOUElODQlMjAlN0JzZWxmLnVzZXJuYW1lJTdEJUVGJUJDJThDJUU2JTg0JTlGJUU4JUIwJUEyJUU2JTgyJUE4JUU3JTlBJTg0JUU2JUIzJUE4JUU1JTg2JThDLi4uJyU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0QlNUNuJTIwJTIwJTIwJTIwJTVDbiUyMCUyMCUyMCUyMCU0MHN0YXRpY21ldGhvZCU1Q24lMjAlMjAlMjAlMjBkZWYlMjBfaGFzaF9wYXNzd29yZChwYXNzd29yZCUzQSUyMHN0ciklMjAtJTNFJTIwc3RyJTNBJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMiU1QyUyMiU1QyUyMiVFNyU5NCU5RiVFNiU4OCU5MCVFNSVBRiU4NiVFNyVBMCU4MSVFNSU5MyU4OCVFNSVCOCU4QyU1QyUyMiU1QyUyMiU1QyUyMiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjBoYXNobGliLnNoYTI1NihwYXNzd29yZC5lbmNvZGUoKSkuaGV4ZGlnZXN0KCklMjIlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjMlMjAlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlNUNuJTIzJTIwJUU3JUFDJUFDMiVFNSVCMSU4MiVFRiVCQyU5QSVFNCVCOCU5QSVFNSU4QSVBMSVFNSVBRiVCOSVFOCVCMSVBMSVFNSVCMSU4MiUyMC0lMjAlRTQlQjglQUQlRTYlOEElQkQlRTglQjElQTElRTUlQjElODIlRTYlQUMlQTElRUYlQkMlOEMlRTUlODElQTUlRTUlQTMlQUUlRTclOUElODQlRTQlQjglOUElRTUlOEElQTElRTUlQUYlQjklRTglQjElQTElNUNuJTIzJTIwJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTVDbiU1Q24lNDBkYXRhY2xhc3MlNUNuY2xhc3MlMjBVc2VyQ3JlYXRpb25SZXN1bHQlM0ElNUNuJTIwJTIwJTIwJTIwJTVDJTIyJTVDJTIyJTVDJTIyJUU3JTk0JUE4JUU2JTg4JUI3JUU1JTg4JTlCJUU1JUJCJUJBJUU3JUJCJTkzJUU2JTlFJTlDJTVDJTIyJTVDJTIyJTVDJTIyJTVDbiUyMCUyMCUyMCUyMHN1Y2Nlc3MlM0ElMjBib29sJTVDbiUyMCUyMCUyMCUyMHVzZXIlM0ElMjBPcHRpb25hbCU1QidVc2VyJyU1RCUyMCUzRCUyME5vbmUlNUNuJTIwJTIwJTIwJTIwZXJyb3IlM0ElMjBPcHRpb25hbCU1QnN0ciU1RCUyMCUzRCUyME5vbmUlNUNuJTVDbiU1Q24lNDBkYXRhY2xhc3MlNUNuY2xhc3MlMjBTYXZlUmVzdWx0JTNBJTVDbiUyMCUyMCUyMCUyMCU1QyUyMiU1QyUyMiU1QyUyMiVFNCVCRiU5RCVFNSVBRCU5OCVFNyVCQiU5MyVFNiU5RSU5QyU1QyUyMiU1QyUyMiU1QyUyMiU1Q24lMjAlMjAlMjAlMjBzdWNjZXNzJTNBJTIwYm9vbCU1Q24lMjAlMjAlMjAlMjB1c2VyX2lkJTNBJTIwT3B0aW9uYWwlNUJpbnQlNUQlMjAlM0QlMjBOb25lJTVDbiUyMCUyMCUyMCUyMGVycm9yJTNBJTIwT3B0aW9uYWwlNUJzdHIlNUQlMjAlM0QlMjBOb25lJTVDbiU1Q24lNUNuY2xhc3MlMjBVc2VyJTNBJTVDbiUyMCUyMCUyMCUyMCU1QyUyMiU1QyUyMiU1QyUyMiVFNyU5NCVBOCVFNiU4OCVCNyUyMC0lMjAlRTYlQTAlQjglRTUlQkYlODMlRTQlQjglOUElRTUlOEElQTElRTUlQUYlQjklRTglQjElQTElRUYlQkMlOEMlRTUlODYlODUlRTklODMlQTglRTklQUElOEMlRTglQUYlODElRTQlQkYlOUQlRTglQUYlODElRTUlODElQTUlRTUlQTMlQUUlRTYlODAlQTclNUMlMjIlNUMlMjIlNUMlMjIlNUNuJTIwJTIwJTIwJTIwJTVDbiUyMCUyMCUyMCUyMGRlZiUyMF9faW5pdF9fKHNlbGYlMkMlMjB1c2VybmFtZSUzQSUyMHN0ciUyQyUyMGVtYWlsJTNBJTIwc3RyJTJDJTIwcGFzc3dvcmRfaGFzaCUzQSUyMHN0ciUyQyUyMHVzZXJfdHlwZSUzQSUyMHN0ciklM0ElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc2VsZi51c2VybmFtZSUyMCUzRCUyMHVzZXJuYW1lJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNlbGYuZW1haWwlMjAlM0QlMjBlbWFpbCU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzZWxmLnBhc3N3b3JkX2hhc2glMjAlM0QlMjBwYXNzd29yZF9oYXNoJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNlbGYudXNlcl90eXBlJTIwJTNEJTIwdXNlcl90eXBlJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNlbGYudXNlcl9pZCUyMCUzRCUyME5vbmUlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc2VsZi5jcmVhdGVkX2F0JTIwJTNEJTIwZGF0ZXRpbWUubm93KCklNUNuJTIwJTIwJTIwJTIwJTVDbiUyMCUyMCUyMCUyMCU0MGNsYXNzbWV0aG9kJTVDbiUyMCUyMCUyMCUyMGRlZiUyMGNyZWF0ZShjbHMlMkMlMjB1c2VybmFtZSUzQSUyMHN0ciUyQyUyMGVtYWlsJTNBJTIwc3RyJTJDJTIwcGFzc3dvcmQlM0ElMjBzdHIlMkMlMjB1c2VyX3R5cGUlM0ElMjBzdHIpJTIwLSUzRSUyMFVzZXJDcmVhdGlvblJlc3VsdCUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUMlMjIlNUMlMjIlNUMlMjIlRTUlODglOUIlRTUlQkIlQkElRTclOTQlQTglRTYlODglQjclMjAtJTIwJUU1JTg2JTg1JUU5JTgzJUE4JUU5JUFBJThDJUU4JUFGJTgxJUU0JUJGJTlEJUU4JUFGJTgxJUU1JTgxJUE1JUU1JUEzJUFFJUU2JTgwJUE3JTVDJTIyJTVDJTIyJTVDJTIyJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjAlRTklQUElOEMlRTglQUYlODElRTclOTQlQTglRTYlODglQjclRTclQjElQkIlRTUlOUUlOEIlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaWYlMjB1c2VyX3R5cGUlMjBub3QlMjBpbiUyMCU1QidyZWd1bGFyJyUyQyUyMCdwcmVtaXVtJyU1RCUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjBVc2VyQ3JlYXRpb25SZXN1bHQoc3VjY2VzcyUzREZhbHNlJTJDJTIwZXJyb3IlM0QnJUU2JTk3JUEwJUU2JTk1JTg4JUU3JTlBJTg0JUU3JTk0JUE4JUU2JTg4JUI3JUU3JUIxJUJCJUU1JTlFJThCJyklNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMCVFOSVBQSU4QyVFOCVBRiU4MSVFNyU5NCVBOCVFNiU4OCVCNyVFNSU5MCU4RCU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjB1c2VybmFtZV9lcnJvciUyMCUzRCUyMGNscy5fdmFsaWRhdGVfdXNlcm5hbWUodXNlcm5hbWUlMkMlMjB1c2VyX3R5cGUpJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGlmJTIwdXNlcm5hbWVfZXJyb3IlM0ElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwVXNlckNyZWF0aW9uUmVzdWx0KHN1Y2Nlc3MlM0RGYWxzZSUyQyUyMGVycm9yJTNEdXNlcm5hbWVfZXJyb3IpJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjAlRTklQUElOEMlRTglQUYlODElRTklODIlQUUlRTclQUUlQjElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZW1haWxfZXJyb3IlMjAlM0QlMjBjbHMuX3ZhbGlkYXRlX2VtYWlsKGVtYWlsKSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpZiUyMGVtYWlsX2Vycm9yJTNBJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMFVzZXJDcmVhdGlvblJlc3VsdChzdWNjZXNzJTNERmFsc2UlMkMlMjBlcnJvciUzRGVtYWlsX2Vycm9yKSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwJUU5JUFBJThDJUU4JUFGJTgxJUU1JUFGJTg2JUU3JUEwJTgxJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHBhc3N3b3JkX2Vycm9yJTIwJTNEJTIwY2xzLl92YWxpZGF0ZV9wYXNzd29yZChwYXNzd29yZCklNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaWYlMjBwYXNzd29yZF9lcnJvciUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjBVc2VyQ3JlYXRpb25SZXN1bHQoc3VjY2VzcyUzREZhbHNlJTJDJTIwZXJyb3IlM0RwYXNzd29yZF9lcnJvciklNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMCVFNiVBMyU4MCVFNiU5RiVBNSVFNyU5NCVBOCVFNiU4OCVCNyVFNiU5OCVBRiVFNSU5MCVBNiVFNSVCNyVCMiVFNSVBRCU5OCVFNSU5QyVBOCU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpZiUyMFVzZXJSZXBvc2l0b3J5KCkuZXhpc3RzKHVzZXJuYW1lJTJDJTIwZW1haWwpJTNBJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMFVzZXJDcmVhdGlvblJlc3VsdChzdWNjZXNzJTNERmFsc2UlMkMlMjBlcnJvciUzRCclRTclOTQlQTglRTYlODglQjclRTUlOTAlOEQlRTYlODglOTYlRTklODIlQUUlRTclQUUlQjElRTUlQjclQjIlRTUlQUQlOTglRTUlOUMlQTgnKSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwJUU1JTg4JTlCJUU1JUJCJUJBJUU3JTk0JUE4JUU2JTg4JUI3JUU1JUFGJUI5JUU4JUIxJUExJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHBhc3N3b3JkX2hhc2glMjAlM0QlMjBjbHMuX2hhc2hfcGFzc3dvcmQocGFzc3dvcmQpJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHVzZXIlMjAlM0QlMjBjbHModXNlcm5hbWUlMkMlMjBlbWFpbCUyQyUyMHBhc3N3b3JkX2hhc2glMkMlMjB1c2VyX3R5cGUpJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjBVc2VyQ3JlYXRpb25SZXN1bHQoc3VjY2VzcyUzRFRydWUlMkMlMjB1c2VyJTNEdXNlciklNUNuJTIwJTIwJTIwJTIwJTVDbiUyMCUyMCUyMCUyMGRlZiUyMHNhdmUoc2VsZiklMjAtJTNFJTIwU2F2ZVJlc3VsdCUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUMlMjIlNUMlMjIlNUMlMjIlRTQlQkYlOUQlRTUlQUQlOTglRTclOTQlQTglRTYlODglQjclRTUlODglQjAlRTYlOTUlQjAlRTYlOEQlQUUlRTUlQkElOTMlNUMlMjIlNUMlMjIlNUMlMjIlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwdHJ5JTNBJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJlcG9zaXRvcnklMjAlM0QlMjBVc2VyUmVwb3NpdG9yeSgpJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNlbGYudXNlcl9pZCUyMCUzRCUyMHJlcG9zaXRvcnkuYWRkKHNlbGYpJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMFNhdmVSZXN1bHQoc3VjY2VzcyUzRFRydWUlMkMlMjB1c2VyX2lkJTNEc2VsZi51c2VyX2lkKSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBleGNlcHQlMjBFeGNlcHRpb24lMjBhcyUyMGUlM0ElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwU2F2ZVJlc3VsdChzdWNjZXNzJTNERmFsc2UlMkMlMjBlcnJvciUzRGYnJUU0JUJGJTlEJUU1JUFEJTk4JUU3JTk0JUE4JUU2JTg4JUI3JUU1JUE0JUIxJUU4JUI0JUE1JTNBJTIwJTdCc3RyKGUpJTdEJyklNUNuJTIwJTIwJTIwJTIwJTVDbiUyMCUyMCUyMCUyMCU0MHN0YXRpY21ldGhvZCU1Q24lMjAlMjAlMjAlMjBkZWYlMjBfdmFsaWRhdGVfdXNlcm5hbWUodXNlcm5hbWUlM0ElMjBzdHIlMkMlMjB1c2VyX3R5cGUlM0ElMjBzdHIpJTIwLSUzRSUyME9wdGlvbmFsJTVCc3RyJTVEJTNBJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMiU1QyUyMiU1QyUyMiVFOSVBQSU4QyVFOCVBRiU4MSVFNyU5NCVBOCVFNiU4OCVCNyVFNSU5MCU4RCU1QyUyMiU1QyUyMiU1QyUyMiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpZiUyMG5vdCUyMHVzZXJuYW1lJTIwb3IlMjBub3QlMjB1c2VybmFtZS5zdHJpcCgpJTNBJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMCclRTclOTQlQTglRTYlODglQjclRTUlOTAlOEQlRTQlQjglOEQlRTglODMlQkQlRTQlQjglQkElRTclQTklQkEnJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpZiUyMHVzZXJfdHlwZSUyMCUzRCUzRCUyMCdwcmVtaXVtJyUyMGFuZCUyMGxlbih1c2VybmFtZSklMjAlM0MlMjA2JTNBJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMCdQcmVtaXVtJUU3JTk0JUE4JUU2JTg4JUI3JUU1JTkwJThEJUU4JTg3JUIzJUU1JUIwJTkxNiVFNCVCRCU4RCclNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyME5vbmUlNUNuJTIwJTIwJTIwJTIwJTVDbiUyMCUyMCUyMCUyMCU0MHN0YXRpY21ldGhvZCU1Q24lMjAlMjAlMjAlMjBkZWYlMjBfdmFsaWRhdGVfZW1haWwoZW1haWwlM0ElMjBzdHIpJTIwLSUzRSUyME9wdGlvbmFsJTVCc3RyJTVEJTNBJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMiU1QyUyMiU1QyUyMiVFOSVBQSU4QyVFOCVBRiU4MSVFOSU4MiVBRSVFNyVBRSVCMSU1QyUyMiU1QyUyMiU1QyUyMiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpZiUyMG5vdCUyMGVtYWlsJTIwb3IlMjBub3QlMjBlbWFpbC5zdHJpcCgpJTNBJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMCclRTklODIlQUUlRTclQUUlQjElRTQlQjglOEQlRTglODMlQkQlRTQlQjglQkElRTclQTklQkEnJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBwYXR0ZXJuJTIwJTNEJTIwciclNUUlNUJhLXpBLVowLTkuXyUyNSUyQi0lNUQlMkIlNDAlNUJhLXpBLVowLTkuLSU1RCUyQiU1QyU1Qy4lNUJhLXpBLVolNUQlN0IyJTJDJTdEJTI0JyU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpZiUyMG5vdCUyMHJlLm1hdGNoKHBhdHRlcm4lMkMlMjBlbWFpbCklM0ElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwJyVFOSU4MiVBRSVFNyVBRSVCMSVFNiVBMCVCQyVFNSVCQyU4RiVFNCVCOCU4RCVFNiVBRCVBMyVFNyVBMSVBRSclNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyME5vbmUlNUNuJTIwJTIwJTIwJTIwJTVDbiUyMCUyMCUyMCUyMCU0MHN0YXRpY21ldGhvZCU1Q24lMjAlMjAlMjAlMjBkZWYlMjBfdmFsaWRhdGVfcGFzc3dvcmQocGFzc3dvcmQlM0ElMjBzdHIpJTIwLSUzRSUyME9wdGlvbmFsJTVCc3RyJTVEJTNBJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMiU1QyUyMiU1QyUyMiVFOSVBQSU4QyVFOCVBRiU4MSVFNSVBRiU4NiVFNyVBMCU4MSU1QyUyMiU1QyUyMiU1QyUyMiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpZiUyMG5vdCUyMHBhc3N3b3JkJTNBJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMCclRTUlQUYlODYlRTclQTAlODElRTQlQjglOEQlRTglODMlQkQlRTQlQjglQkElRTclQTklQkEnJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpZiUyMGxlbihwYXNzd29yZCklMjAlM0MlMjA4JTNBJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMCclRTUlQUYlODYlRTclQTAlODElRTUlQkYlODUlRTklQTElQkIlRTglODclQjMlRTUlQjAlOTE4JUU0JUJEJThEJyU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaWYlMjBub3QlMjByZS5zZWFyY2gociclNUJBLVolNUQnJTJDJTIwcGFzc3dvcmQpJTNBJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMCclRTUlQUYlODYlRTclQTAlODElRTUlQkYlODUlRTklQTElQkIlRTUlOEMlODUlRTUlOTAlQUIlRTUlQTQlQTclRTUlODYlOTklRTUlQUQlOTclRTYlQUYlOEQnJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpZiUyMG5vdCUyMHJlLnNlYXJjaChyJyU1QjAtOSU1RCclMkMlMjBwYXNzd29yZCklM0ElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwJyVFNSVBRiU4NiVFNyVBMCU4MSVFNSVCRiU4NSVFOSVBMSVCQiVFNSU4QyU4NSVFNSU5MCVBQiVFNiU5NSVCMCVFNSVBRCU5NyclNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyME5vbmUlNUNuJTIwJTIwJTIwJTIwJTVDbiUyMCUyMCUyMCUyMGRlZiUyMGdldF93ZWxjb21lX2VtYWlsX2NvbnRlbnQoc2VsZiklMjAtJTNFJTIwRGljdCU1QnN0ciUyQyUyMHN0ciU1RCUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUMlMjIlNUMlMjIlNUMlMjIlRTglOEUlQjclRTUlOEYlOTYlRTYlQUMlQTIlRTglQkYlOEUlRTklODIlQUUlRTQlQkIlQjYlRTUlODYlODUlRTUlQUUlQjklNUMlMjIlNUMlMjIlNUMlMjIlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaWYlMjBzZWxmLnVzZXJfdHlwZSUyMCUzRCUzRCUyMCdwcmVtaXVtJyUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJ3N1YmplY3QnJTNBJTIwJyVFNiVBQyVBMiVFOCVCRiU4RSVFNiU4OCU5MCVFNCVCOCVCQVByZW1pdW0lRTclOTQlQTglRTYlODglQjclRUYlQkMlODEnJTJDJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCdib2R5JyUzQSUyMGYnJUU0JUJBJUIyJUU3JTg4JUIxJUU3JTlBJTg0JTIwJTdCc2VsZi51c2VybmFtZSU3RCVFRiVCQyU4QyVFNiU4NCU5RiVFOCVCMCVBMiVFNiU4MiVBOCVFNiU4OCU5MCVFNCVCOCVCQSVFNiU4OCU5MSVFNCVCQiVBQyVFNyU5QSU4NFByZW1pdW0lRTclOTQlQTglRTYlODglQjcuLi4nJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3RCU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBlbHNlJTNBJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAnc3ViamVjdCclM0ElMjAnJUU2JUFDJUEyJUU4JUJGJThFJUU2JUIzJUE4JUU1JTg2JThDJUVGJUJDJTgxJyUyQyU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAnYm9keSclM0ElMjBmJyVFNCVCQSVCMiVFNyU4OCVCMSVFNyU5QSU4NCUyMCU3QnNlbGYudXNlcm5hbWUlN0QlRUYlQkMlOEMlRTYlODQlOUYlRTglQjAlQTIlRTYlODIlQTglRTclOUElODQlRTYlQjMlQTglRTUlODYlOEMuLi4nJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3RCU1Q24lMjAlMjAlMjAlMjAlNUNuJTIwJTIwJTIwJTIwJTQwc3RhdGljbWV0aG9kJTVDbiUyMCUyMCUyMCUyMGRlZiUyMF9oYXNoX3Bhc3N3b3JkKHBhc3N3b3JkJTNBJTIwc3RyKSUyMC0lM0UlMjBzdHIlM0ElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTIyJTVDJTIyJTVDJTIyJUU3JTk0JTlGJUU2JTg4JTkwJUU1JUFGJTg2JUU3JUEwJTgxJUU1JTkzJTg4JUU1JUI4JThDJTVDJTIyJTVDJTIyJTVDJTIyJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMGhhc2hsaWIuc2hhMjU2KHBhc3N3b3JkLmVuY29kZSgpKS5oZXhkaWdlc3QoKSUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTJDJTIyY29udGVudFR5cGUlMjIlM0ElMjJjYW5namllLXZvaWRibG9jayUyMiU3RCUyQyU3QiUyMmtsYXNzJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIycGFyYWdyYXBoJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiUyMnV1aWQlMjIlM0ElMjJtZDVlaTlkbTEyMWNwajFxdGJ5ZCUyMiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTJDJTIyY29udGVudFR5cGUlMjIlM0ElMjJjYW5namllLXRleHRibG9jayUyMiU3RCUyQyU3QiUyMmtsYXNzJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyaGVhZGluZy0yJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiUyMnV1aWQlMjIlM0ElMjJtZDVlaTlqbjhnNDJtaTNhemklMjIlMkMlMjJzcGFjaW5nJTIyJTNBJTdCJTIyYmVmb3JlJTIyJTNBMjEuMzMzMzMzMzMzMzMzMzMyJTJDJTIyYWZ0ZXIlMjIlM0E5JTJDJTIybGluZSUyMiUzQTAuODUyOTQxMTc2NDcwNTg4MiU3RCU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiVFNSU5RiVCQSVFNyVBMSU4MCVFOCVBRSVCRSVFNiU5NiVCRCVFNSVCMSU4MiUyMC0lMjAlRTYlOUMlODAlRTQlQkQlOEUlRTYlOEElQkQlRTglQjElQTElRTUlQjElODIlRTYlQUMlQTElRUYlQkMlOEMlRTclQkElQUYlRTYlOEElODAlRTYlOUMlQUYlRTUlQUUlOUUlRTclOEUlQjAlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIybWFyayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJib2xkJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCU3RCUyQyU3QiUyMmtsYXNzJTIyJTNBJTIybWFyayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJzeiUyMiUyQyUyMmRhdGElMjIlM0ElN0IlMjJ2YWx1ZSUyMiUzQTE2JTJDJTIyc3pVbml0JTIyJTNBJTIycHQlMjIlN0QlN0QlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJrbGFzcyUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMnBhcmFncmFwaCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlMjJ1dWlkJTIyJTNBJTIybWQ1ZW0wMHFvcGplemcxNjc1JTIyJTJDJTIyaW5kJTIyJTNBJTdCJTIyZmlyc3RMaW5lJTIyJTNBMzIlN0QlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlRTglQkYlOTklRTQlQjglODAlRTUlQjElODIlRTYlOTglQUYlRTYlOTUlQjQlRTQlQjglQUElRTQlQkQlOTMlRTclQjMlQkIlRTclOUElODQlRTIlODAlOUMlRTclODElQUYlRTUlODUlODklRTUlQjglODglRTIlODAlOUQlRTUlOTIlOEMlRTIlODAlOUMlRTUlOUMlQkElRTUlOEElQTElRTIlODAlOUQlRUYlQkMlOEMlRTglQjQlOUYlRTglQjQlQTMlRTYlODklODAlRTYlOUMlODklRTUlODUlQjclRTQlQkQlOTMlRTclOUElODQlRTIlODAlOUMlRTglODQlOEYlRTYlQjQlQkIlRTclQjQlQUYlRTYlQjQlQkIlRTIlODAlOUQlRTMlODAlODIlRTUlQUUlODMlRTUlOEMlODUlRTUlOTAlQUIlRTQlQkElODYlRTQlQjglOEUlRTUlQTQlOTYlRTklODMlQTglRTQlQjglOTYlRTclOTUlOEMlRUYlQkMlODglRTUlQTYlODIlRTYlOTUlQjAlRTYlOEQlQUUlRTUlQkElOTMlRTMlODAlODElRTYlOTYlODclRTQlQkIlQjYlRTclQjMlQkIlRTclQkIlOUYlRTMlODAlODElRTklODIlQUUlRTQlQkIlQjYlRTYlOUMlOEQlRTUlOEElQTElRTUlOTklQTglRTclQUQlODklRUYlQkMlODklRTYlODklOTMlRTQlQkElQTQlRTklODElOTMlRTclOUElODQlRTYlODklODAlRTYlOUMlODklRTYlOEElODAlRTYlOUMlQUYlRTUlQUUlOUUlRTclOEUlQjAlRTMlODAlODIlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCUyQyUyMmNvbnRlbnRUeXBlJTIyJTNBJTIyY2FuZ2ppZS10ZXh0YmxvY2slMjIlN0QlMkMlN0IlMjJrbGFzcyUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMmNvZGUlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTIyc3ludGF4JTIyJTNBJTIycHl0aG9uJTIyJTJDJTIydGhlbWUlMjIlM0ElMjJkZWZhdWx0JTIyJTJDJTIyd3JhcCUyMiUzQXRydWUlMkMlMjJpZCUyMiUzQSUyMjF1cnF0diUyMiUyQyUyMnRpdGxlJTIyJTNBJTIyJTIyJTJDJTIyZm9sZCUyMiUzQWZhbHNlJTJDJTIyaGlkZUhlYWRlciUyMiUzQWZhbHNlJTJDJTIyY29kZUZvbGRpbmclMjIlM0FmYWxzZSUyQyUyMnNob3dMaW5lTnVtYmVyJTIyJTNBdHJ1ZSUyQyUyMmZvbnQlMjIlM0ElN0IlMjJmb250RmFtaWx5JTIyJTNBJTIyZGVmYXVsdEZvbnQlMjIlMkMlMjJsaWdhdHVyZXMlMjIlM0FmYWxzZSU3RCUyQyUyMmVuYWJsZU1hY0hlYWRlciUyMiUzQWZhbHNlJTJDJTIydXVpZCUyMiUzQSUyMm1kNGJyNmN6bDA1NGRvZ2liMGYlMjIlMkMlMjJjb2RlJTIyJTNBJTIyJTIwJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTVDbiUyMyUyMCVFNyVBQyVBQzMlRTUlQjElODIlRUYlQkMlOUElRTUlOUYlQkElRTclQTElODAlRTglQUUlQkUlRTYlOTYlQkQlRTUlQjElODIlMjAtJTIwJUU2JTlDJTgwJUU0JUJEJThFJUU2JThBJUJEJUU4JUIxJUExJUU1JUIxJTgyJUU2JUFDJUExJUVGJUJDJThDJUU3JUJBJUFGJUU2JThBJTgwJUU2JTlDJUFGJUU1JUFFJTlFJUU3JThFJUIwJTVDbiUyMyUyMCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCU1Q24lNUNuY2xhc3MlMjBVc2VyUmVwb3NpdG9yeSUzQSU1Q24lMjAlMjAlMjAlMjAlNUMlMjIlNUMlMjIlNUMlMjIlRTclOTQlQTglRTYlODglQjclRTQlQkIlOTMlRTUlODIlQTglMjAtJTIwJUU0JUI4JTlBJUU1JThBJUExJUU1JTlDJUJBJUU2JTk5JUFGJUU3JTlBJTg0JUU2JTk1JUIwJUU2JThEJUFFJUU4JUFFJUJGJUU5JTk3JUFFJTVDJTIyJTVDJTIyJTVDJTIyJTVDbiUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjBkZWYlMjBfX2luaXRfXyhzZWxmKSUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzZWxmLmRiX3BhdGglMjAlM0QlMjAndXNlcnMuZGInJTVDbiUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjBkZWYlMjBleGlzdHMoc2VsZiUyQyUyMHVzZXJuYW1lJTNBJTIwc3RyJTJDJTIwZW1haWwlM0ElMjBzdHIpJTIwLSUzRSUyMGJvb2wlM0ElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTIyJTVDJTIyJTVDJTIyJUU2JUEzJTgwJUU2JTlGJUE1JUU3JTk0JUE4JUU2JTg4JUI3JUU2JTk4JUFGJUU1JTkwJUE2JUU1JUFEJTk4JUU1JTlDJUE4JTVDJTIyJTVDJTIyJTVDJTIyJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHRyeSUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjB3aXRoJTIwc2VsZi5fY29ubmVjdCgpJTIwYXMlMjBjb25uJTNBJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGN1cnNvciUyMCUzRCUyMGNvbm4uY3Vyc29yKCklNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwY3Vyc29yLmV4ZWN1dGUoJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMlNFTEVDVCUyMGlkJTIwRlJPTSUyMHVzZXJzJTIwV0hFUkUlMjB1c2VybmFtZSUyMCUzRCUyMCUzRiUyME9SJTIwZW1haWwlMjAlM0QlMjAlM0YlNUMlMjIlMkMlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwKHVzZXJuYW1lJTJDJTIwZW1haWwpJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCklNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwY3Vyc29yLmZldGNob25lKCklMjBpcyUyMG5vdCUyME5vbmUlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZXhjZXB0JTIwRXhjZXB0aW9uJTNBJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMEZhbHNlJTIwJTIwJTIzJTIwJUU2JTk1JUIwJUU2JThEJUFFJUU1JUJBJTkzJUU5JTk0JTk5JUU4JUFGJUFGJUU2JTk3JUI2JUU0JUJGJTlEJUU1JUFFJTg4JUU1JUE0JTg0JUU3JTkwJTg2JTVDbiUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjBkZWYlMjBhZGQoc2VsZiUyQyUyMHVzZXIlM0ElMjBVc2VyKSUyMC0lM0UlMjBpbnQlM0ElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTIyJTVDJTIyJTVDJTIyJUU2JUI3JUJCJUU1JThBJUEwJUU3JTk0JUE4JUU2JTg4JUI3JUU4JUFFJUIwJUU1JUJEJTk1JTVDJTIyJTVDJTIyJTVDJTIyJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHdpdGglMjBzZWxmLl9jb25uZWN0KCklMjBhcyUyMGNvbm4lM0ElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwY3Vyc29yJTIwJTNEJTIwY29ubi5jdXJzb3IoKSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBjdXJzb3IuZXhlY3V0ZSglNUMlMjIlNUMlMjIlNUMlMjIlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwSU5TRVJUJTIwSU5UTyUyMHVzZXJzJTIwKHVzZXJuYW1lJTJDJTIwZW1haWwlMkMlMjBwYXNzd29yZF9oYXNoJTJDJTIwdXNlcl90eXBlJTJDJTIwY3JlYXRlZF9hdCklMjAlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwVkFMVUVTJTIwKCUzRiUyQyUyMCUzRiUyQyUyMCUzRiUyQyUyMCUzRiUyQyUyMCUzRiklNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTIyJTVDJTIyJTVDJTIyJTJDJTIwKHVzZXIudXNlcm5hbWUlMkMlMjB1c2VyLmVtYWlsJTJDJTIwdXNlci5wYXNzd29yZF9oYXNoJTJDJTIwJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHVzZXIudXNlcl90eXBlJTJDJTIwdXNlci5jcmVhdGVkX2F0KSklNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwY3Vyc29yLmxhc3Ryb3dpZCU1Q24lMjAlMjAlMjAlMjAlNUNuJTIwJTIwJTIwJTIwZGVmJTIwX2Nvbm5lY3Qoc2VsZiklM0ElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTIyJTVDJTIyJTVDJTIyJUU1JTg4JTlCJUU1JUJCJUJBJUU2JTk1JUIwJUU2JThEJUFFJUU1JUJBJTkzJUU4JUJGJTlFJUU2JThFJUE1JTVDJTIyJTVDJTIyJTVDJTIyJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMHNxbGl0ZTMuY29ubmVjdChzZWxmLmRiX3BhdGgpJTVDbiU1Q24lNUNuY2xhc3MlMjBFbWFpbFNlbmRlciUzQSU1Q24lMjAlMjAlMjAlMjAlNUMlMjIlNUMlMjIlNUMlMjIlRTklODIlQUUlRTQlQkIlQjYlRTUlOEYlOTElRTklODAlODElRTUlOTklQTglMjAtJTIwJUU3JUJBJUFGJUU2JThBJTgwJUU2JTlDJUFGJUU1JUFFJTlFJUU3JThFJUIwJUVGJUJDJThDJUU0JUI4JThEJUU1JThDJTg1JUU1JTkwJUFCJUU0JUI4JTlBJUU1JThBJUExJUU5JTgwJUJCJUU4JUJFJTkxJTVDJTIyJTVDJTIyJTVDJTIyJTVDbiUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjBkZWYlMjBfX2luaXRfXyhzZWxmKSUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzZWxmLnNtdHBfaG9zdCUyMCUzRCUyMCdzbXRwLmdtYWlsLmNvbSclNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc2VsZi5zbXRwX3BvcnQlMjAlM0QlMjA1ODclNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc2VsZi51c2VybmFtZSUyMCUzRCUyMCd5b3VyX2VtYWlsJTQwZ21haWwuY29tJyU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzZWxmLnBhc3N3b3JkJTIwJTNEJTIwJ3lvdXJfcGFzc3dvcmQnJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNlbGYuZnJvbV9lbWFpbCUyMCUzRCUyMCd5b3VyX2VtYWlsJTQwZ21haWwuY29tJyU1Q24lMjAlMjAlMjAlMjAlNUNuJTIwJTIwJTIwJTIwZGVmJTIwc2VuZChzZWxmJTJDJTIwdG9fZW1haWwlM0ElMjBzdHIlMkMlMjBjb250ZW50JTNBJTIwRGljdCU1QnN0ciUyQyUyMHN0ciU1RCklMjAtJTNFJTIwTm9uZSUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUMlMjIlNUMlMjIlNUMlMjIlRTUlOEYlOTElRTklODAlODElRTklODIlQUUlRTQlQkIlQjYlNUMlMjIlNUMlMjIlNUMlMjIlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaWYlMjBub3QlMjB0b19lbWFpbCUyMG9yJTIwbm90JTIwY29udGVudCUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByYWlzZSUyMFZhbHVlRXJyb3IoJTVDJTIyJUU5JTgyJUFFJUU0JUJCJUI2JUU1JTlDJUIwJUU1JTlEJTgwJUU1JTkyJThDJUU1JTg2JTg1JUU1JUFFJUI5JUU0JUI4JThEJUU4JTgzJUJEJUU0JUI4JUJBJUU3JUE5JUJBJTVDJTIyKSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbWVzc2FnZSUyMCUzRCUyMHNlbGYuX2NyZWF0ZV9tZXNzYWdlKHRvX2VtYWlsJTJDJTIwY29udGVudCklNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwd2l0aCUyMHNlbGYuX2Nvbm5lY3QoKSUyMGFzJTIwc210cCUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzbXRwLnNlbmRfbWVzc2FnZShtZXNzYWdlKSU1Q24lMjAlMjAlMjAlMjAlNUNuJTIwJTIwJTIwJTIwZGVmJTIwX2NyZWF0ZV9tZXNzYWdlKHNlbGYlMkMlMjB0b19lbWFpbCUzQSUyMHN0ciUyQyUyMGNvbnRlbnQlM0ElMjBEaWN0JTVCc3RyJTJDJTIwc3RyJTVEKSUyMC0lM0UlMjBNSU1FVGV4dCUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUMlMjIlNUMlMjIlNUMlMjIlRTUlODglOUIlRTUlQkIlQkElRTklODIlQUUlRTQlQkIlQjYlRTYlQjYlODglRTYlODElQUYlNUMlMjIlNUMlMjIlNUMlMjIlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbXNnJTIwJTNEJTIwTUlNRVRleHQoY29udGVudC5nZXQoJ2JvZHknJTJDJTIwJycpKSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBtc2clNUInU3ViamVjdCclNUQlMjAlM0QlMjBjb250ZW50LmdldCgnc3ViamVjdCclMkMlMjAnJyklNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbXNnJTVCJ0Zyb20nJTVEJTIwJTNEJTIwc2VsZi5mcm9tX2VtYWlsJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG1zZyU1QidUbyclNUQlMjAlM0QlMjB0b19lbWFpbCU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjBtc2clNUNuJTIwJTIwJTIwJTIwJTVDbiUyMCUyMCUyMCUyMGRlZiUyMF9jb25uZWN0KHNlbGYpJTNBJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMiU1QyUyMiU1QyUyMiVFNSU4OCU5QiVFNSVCQiVCQVNNVFAlRTglQkYlOUUlRTYlOEUlQTUlNUMlMjIlNUMlMjIlNUMlMjIlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc210cCUyMCUzRCUyMHNtdHBsaWIuU01UUChzZWxmLnNtdHBfaG9zdCUyQyUyMHNlbGYuc210cF9wb3J0KSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzbXRwLnN0YXJ0dGxzKCklNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc210cC5sb2dpbihzZWxmLnVzZXJuYW1lJTJDJTIwc2VsZi5wYXNzd29yZCklNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwc210cCUyMiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCUzRCU1Q24lMjMlMjAlRTclQUMlQUMzJUU1JUIxJTgyJUVGJUJDJTlBJUU1JTlGJUJBJUU3JUExJTgwJUU4JUFFJUJFJUU2JTk2JUJEJUU1JUIxJTgyJTIwLSUyMCVFNiU5QyU4MCVFNCVCRCU4RSVFNiU4QSVCRCVFOCVCMSVBMSVFNSVCMSU4MiVFNiVBQyVBMSVFRiVCQyU4QyVFNyVCQSVBRiVFNiU4QSU4MCVFNiU5QyVBRiVFNSVBRSU5RSVFNyU4RSVCMCU1Q24lMjMlMjAlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlM0QlNUNuJTVDbmNsYXNzJTIwVXNlclJlcG9zaXRvcnklM0ElNUNuJTIwJTIwJTIwJTIwJTVDJTIyJTVDJTIyJTVDJTIyJUU3JTk0JUE4JUU2JTg4JUI3JUU0JUJCJTkzJUU1JTgyJUE4JTIwLSUyMCVFNCVCOCU5QSVFNSU4QSVBMSVFNSU5QyVCQSVFNiU5OSVBRiVFNyU5QSU4NCVFNiU5NSVCMCVFNiU4RCVBRSVFOCVBRSVCRiVFOSU5NyVBRSU1QyUyMiU1QyUyMiU1QyUyMiU1Q24lMjAlMjAlMjAlMjAlNUNuJTIwJTIwJTIwJTIwZGVmJTIwX19pbml0X18oc2VsZiklM0ElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc2VsZi5kYl9wYXRoJTIwJTNEJTIwJ3VzZXJzLmRiJyU1Q24lMjAlMjAlMjAlMjAlNUNuJTIwJTIwJTIwJTIwZGVmJTIwZXhpc3RzKHNlbGYlMkMlMjB1c2VybmFtZSUzQSUyMHN0ciUyQyUyMGVtYWlsJTNBJTIwc3RyKSUyMC0lM0UlMjBib29sJTNBJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMiU1QyUyMiU1QyUyMiVFNiVBMyU4MCVFNiU5RiVBNSVFNyU5NCVBOCVFNiU4OCVCNyVFNiU5OCVBRiVFNSU5MCVBNiVFNSVBRCU5OCVFNSU5QyVBOCU1QyUyMiU1QyUyMiU1QyUyMiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjB0cnklM0ElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwd2l0aCUyMHNlbGYuX2Nvbm5lY3QoKSUyMGFzJTIwY29ubiUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBjdXJzb3IlMjAlM0QlMjBjb25uLmN1cnNvcigpJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGN1cnNvci5leGVjdXRlKCU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUMlMjJTRUxFQ1QlMjBpZCUyMEZST00lMjB1c2VycyUyMFdIRVJFJTIwdXNlcm5hbWUlMjAlM0QlMjAlM0YlMjBPUiUyMGVtYWlsJTIwJTNEJTIwJTNGJTVDJTIyJTJDJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCh1c2VybmFtZSUyQyUyMGVtYWlsKSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjApJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMGN1cnNvci5mZXRjaG9uZSgpJTIwaXMlMjBub3QlMjBOb25lJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGV4Y2VwdCUyMEV4Y2VwdGlvbiUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjBGYWxzZSUyMCUyMCUyMyUyMCVFNiU5NSVCMCVFNiU4RCVBRSVFNSVCQSU5MyVFOSU5NCU5OSVFOCVBRiVBRiVFNiU5NyVCNiVFNCVCRiU5RCVFNSVBRSU4OCVFNSVBNCU4NCVFNyU5MCU4NiU1Q24lMjAlMjAlMjAlMjAlNUNuJTIwJTIwJTIwJTIwZGVmJTIwYWRkKHNlbGYlMkMlMjB1c2VyJTNBJTIwVXNlciklMjAtJTNFJTIwaW50JTNBJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMiU1QyUyMiU1QyUyMiVFNiVCNyVCQiVFNSU4QSVBMCVFNyU5NCVBOCVFNiU4OCVCNyVFOCVBRSVCMCVFNSVCRCU5NSU1QyUyMiU1QyUyMiU1QyUyMiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjB3aXRoJTIwc2VsZi5fY29ubmVjdCgpJTIwYXMlMjBjb25uJTNBJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGN1cnNvciUyMCUzRCUyMGNvbm4uY3Vyc29yKCklNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwY3Vyc29yLmV4ZWN1dGUoJTVDJTIyJTVDJTIyJTVDJTIyJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMElOU0VSVCUyMElOVE8lMjB1c2VycyUyMCh1c2VybmFtZSUyQyUyMGVtYWlsJTJDJTIwcGFzc3dvcmRfaGFzaCUyQyUyMHVzZXJfdHlwZSUyQyUyMGNyZWF0ZWRfYXQpJTIwJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMFZBTFVFUyUyMCglM0YlMkMlMjAlM0YlMkMlMjAlM0YlMkMlMjAlM0YlMkMlMjAlM0YpJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMiU1QyUyMiU1QyUyMiUyQyUyMCh1c2VyLnVzZXJuYW1lJTJDJTIwdXNlci5lbWFpbCUyQyUyMHVzZXIucGFzc3dvcmRfaGFzaCUyQyUyMCU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjB1c2VyLnVzZXJfdHlwZSUyQyUyMHVzZXIuY3JlYXRlZF9hdCkpJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMGN1cnNvci5sYXN0cm93aWQlNUNuJTIwJTIwJTIwJTIwJTVDbiUyMCUyMCUyMCUyMGRlZiUyMF9jb25uZWN0KHNlbGYpJTNBJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QyUyMiU1QyUyMiU1QyUyMiVFNSU4OCU5QiVFNSVCQiVCQSVFNiU5NSVCMCVFNiU4RCVBRSVFNSVCQSU5MyVFOCVCRiU5RSVFNiU4RSVBNSU1QyUyMiU1QyUyMiU1QyUyMiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjBzcWxpdGUzLmNvbm5lY3Qoc2VsZi5kYl9wYXRoKSU1Q24lNUNuJTVDbmNsYXNzJTIwRW1haWxTZW5kZXIlM0ElNUNuJTIwJTIwJTIwJTIwJTVDJTIyJTVDJTIyJTVDJTIyJUU5JTgyJUFFJUU0JUJCJUI2JUU1JThGJTkxJUU5JTgwJTgxJUU1JTk5JUE4JTIwLSUyMCVFNyVCQSVBRiVFNiU4QSU4MCVFNiU5QyVBRiVFNSVBRSU5RSVFNyU4RSVCMCVFRiVCQyU4QyVFNCVCOCU4RCVFNSU4QyU4NSVFNSU5MCVBQiVFNCVCOCU5QSVFNSU4QSVBMSVFOSU4MCVCQiVFOCVCRSU5MSU1QyUyMiU1QyUyMiU1QyUyMiU1Q24lMjAlMjAlMjAlMjAlNUNuJTIwJTIwJTIwJTIwZGVmJTIwX19pbml0X18oc2VsZiklM0ElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc2VsZi5zbXRwX2hvc3QlMjAlM0QlMjAnc210cC5nbWFpbC5jb20nJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNlbGYuc210cF9wb3J0JTIwJTNEJTIwNTg3JTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNlbGYudXNlcm5hbWUlMjAlM0QlMjAneW91cl9lbWFpbCU0MGdtYWlsLmNvbSclNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc2VsZi5wYXNzd29yZCUyMCUzRCUyMCd5b3VyX3Bhc3N3b3JkJyU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzZWxmLmZyb21fZW1haWwlMjAlM0QlMjAneW91cl9lbWFpbCU0MGdtYWlsLmNvbSclNUNuJTIwJTIwJTIwJTIwJTVDbiUyMCUyMCUyMCUyMGRlZiUyMHNlbmQoc2VsZiUyQyUyMHRvX2VtYWlsJTNBJTIwc3RyJTJDJTIwY29udGVudCUzQSUyMERpY3QlNUJzdHIlMkMlMjBzdHIlNUQpJTIwLSUzRSUyME5vbmUlM0ElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTIyJTVDJTIyJTVDJTIyJUU1JThGJTkxJUU5JTgwJTgxJUU5JTgyJUFFJUU0JUJCJUI2JTVDJTIyJTVDJTIyJTVDJTIyJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGlmJTIwbm90JTIwdG9fZW1haWwlMjBvciUyMG5vdCUyMGNvbnRlbnQlM0ElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmFpc2UlMjBWYWx1ZUVycm9yKCU1QyUyMiVFOSU4MiVBRSVFNCVCQiVCNiVFNSU5QyVCMCVFNSU5RCU4MCVFNSU5MiU4QyVFNSU4NiU4NSVFNSVBRSVCOSVFNCVCOCU4RCVFOCU4MyVCRCVFNCVCOCVCQSVFNyVBOSVCQSU1QyUyMiklNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG1lc3NhZ2UlMjAlM0QlMjBzZWxmLl9jcmVhdGVfbWVzc2FnZSh0b19lbWFpbCUyQyUyMGNvbnRlbnQpJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHdpdGglMjBzZWxmLl9jb25uZWN0KCklMjBhcyUyMHNtdHAlM0ElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc210cC5zZW5kX21lc3NhZ2UobWVzc2FnZSklNUNuJTIwJTIwJTIwJTIwJTVDbiUyMCUyMCUyMCUyMGRlZiUyMF9jcmVhdGVfbWVzc2FnZShzZWxmJTJDJTIwdG9fZW1haWwlM0ElMjBzdHIlMkMlMjBjb250ZW50JTNBJTIwRGljdCU1QnN0ciUyQyUyMHN0ciU1RCklMjAtJTNFJTIwTUlNRVRleHQlM0ElNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVDJTIyJTVDJTIyJTVDJTIyJUU1JTg4JTlCJUU1JUJCJUJBJUU5JTgyJUFFJUU0JUJCJUI2JUU2JUI2JTg4JUU2JTgxJUFGJTVDJTIyJTVDJTIyJTVDJTIyJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG1zZyUyMCUzRCUyME1JTUVUZXh0KGNvbnRlbnQuZ2V0KCdib2R5JyUyQyUyMCcnKSklNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbXNnJTVCJ1N1YmplY3QnJTVEJTIwJTNEJTIwY29udGVudC5nZXQoJ3N1YmplY3QnJTJDJTIwJycpJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG1zZyU1QidGcm9tJyU1RCUyMCUzRCUyMHNlbGYuZnJvbV9lbWFpbCU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBtc2clNUInVG8nJTVEJTIwJTNEJTIwdG9fZW1haWwlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwbXNnJTVDbiUyMCUyMCUyMCUyMCU1Q24lMjAlMjAlMjAlMjBkZWYlMjBfY29ubmVjdChzZWxmKSUzQSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUMlMjIlNUMlMjIlNUMlMjIlRTUlODglOUIlRTUlQkIlQkFTTVRQJUU4JUJGJTlFJUU2JThFJUE1JTVDJTIyJTVDJTIyJTVDJTIyJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNtdHAlMjAlM0QlMjBzbXRwbGliLlNNVFAoc2VsZi5zbXRwX2hvc3QlMkMlMjBzZWxmLnNtdHBfcG9ydCklNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc210cC5zdGFydHRscygpJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNtdHAubG9naW4oc2VsZi51c2VybmFtZSUyQyUyMHNlbGYucGFzc3dvcmQpJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMHNtdHAlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCUyQyUyMmNvbnRlbnRUeXBlJTIyJTNBJTIyY2FuZ2ppZS12b2lkYmxvY2slMjIlN0QlMkMlN0IlMjJrbGFzcyUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMnBhcmFncmFwaCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlMjJ1dWlkJTIyJTNBJTIybWQ0ZWEwcmNycWYzY3BlZGp6JTIyJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlMkMlMjJjb250ZW50VHlwZSUyMiUzQSUyMmNhbmdqaWUtdGV4dGJsb2NrJTIyJTdEJTJDJTdCJTIya2xhc3MlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJwYXJhZ3JhcGglMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTIydXVpZCUyMiUzQSUyMm1kNWVxZmloOXcxZ2QxcjI2NGQlMjIlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlRTYlOTUlQjQlRTQlQjglQUElRTUlQUUlOUUlRTclOEUlQjAlRTclOUElODQlRTYlOUUlQjYlRTYlOUUlODQlRTUlQTYlODIlRTUlOUIlQkUlRUYlQkMlOUElMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCUyQyUyMmNvbnRlbnRUeXBlJTIyJTNBJTIyY2FuZ2ppZS10ZXh0YmxvY2slMjIlN0QlMkMlN0IlMjJrbGFzcyUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMnBhcmFncmFwaCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlMjJ1dWlkJTIyJTNBJTIybWQ1ZXh6eWE2bWhkc2g0aXp4OCUyMiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTJDJTdCJTIya2xhc3MlMjIlM0ElMjJpbmxpbmUlMjIlMkMlMjJ0eXBlJTIyJTNBJTIyaW1hZ2UlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTIydXVpZCUyMiUzQSUyMm5rOHRtbyUyMiUyQyUyMm5hbWUlMjIlM0ElMjJpbWFnZS5wbmclMjIlMkMlMjJzaXplJTIyJTNBNDc0MjYzJTJDJTIyd2lkdGglMjIlM0E4NjglMkMlMjJoZWlnaHQlMjIlM0E0NDMuODUzODk5MzA4OTgzMiUyQyUyMnNyYyUyMiUzQSUyMmh0dHBzJTNBJTJGJTJGb3NzLWF0YS5hbGliYWJhLmNvbSUyRmFydGljbGUlMkYyMDI1JTJGMDclMkZjMmRjNTI1Zi02OTU1LTRiODUtYjZiMy04ZjE4Nzc4Nzg1YjQucG5nJTIyJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJrbGFzcyUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlMkMlMjJjb250ZW50VHlwZSUyMiUzQSUyMmNhbmdqaWUtdGV4dGJsb2NrJTIyJTdEJTJDJTdCJTIya2xhc3MlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJwYXJhZ3JhcGglMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlMkMlMjJjb250ZW50VHlwZSUyMiUzQSUyMmNhbmdqaWUtdGV4dGJsb2NrJTIyJTdEJTJDJTdCJTIya2xhc3MlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJoZWFkaW5nLTElMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTIydXVpZCUyMiUzQSUyMm1kNGdqdmh5MzBsbmxubDJ6dWklMjIlMkMlMjJzcGFjaW5nJTIyJTNBJTdCJTIyYmVmb3JlJTIyJTNBMjYuNjY2NjY2NjY2NjY2NjY0JTJDJTIyYWZ0ZXIlMjIlM0E5JTJDJTIybGluZSUyMiUzQTAuODUyOTQxMTc2NDcwNTg4MiU3RCU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiVFNSVCMCU4RiVFNyVCQiU5MyUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJtYXJrJTIyJTJDJTIydHlwZSUyMiUzQSUyMmJvbGQlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTdEJTJDJTdCJTIya2xhc3MlMjIlM0ElMjJtYXJrJTIyJTJDJTIydHlwZSUyMiUzQSUyMnN6JTIyJTJDJTIyZGF0YSUyMiUzQSU3QiUyMnZhbHVlJTIyJTNBMjAlMkMlMjJzelVuaXQlMjIlM0ElMjJwdCUyMiU3RCU3RCU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMmtsYXNzJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIycGFyYWdyYXBoJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiUyMnV1aWQlMjIlM0ElMjJtZDQ4Mms0b3E0N2EwZjB1Y2RrJTIyJTJDJTIyaW5kJTIyJTNBJTdCJTIyZmlyc3RMaW5lJTIyJTNBMzIlN0QlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlRTUlQjAlQjElRTUlODMlOEYlRTQlQjglODAlRTQlQjglQUElRTUlQTUlQkQlRTUlQUYlQkMlRTYlQkMlOTQlRTclQkIlOUQlRTQlQjglOEQlRTQlQkMlOUElRTQlQkElQjIlRTglODclQUElRTUlOEUlQkIlRTglQjAlODMlRTclODElQUYlRTUlODUlODklRTglODklQjIlRTclQkElQjglRTQlQjglODAlRTYlQTAlQjclRUYlQkMlOEMlRTUlQTUlQkQlRTclOUElODQlRTQlQkIlQTMlRTclQTAlODElRTQlQjklOUYlRTUlQkElOTQlRTglQUYlQTUlRTUlOTAlODQlRTUlOEYlQjglRTUlODUlQjYlRTglODElOEMlRTMlODAlODElRTUlQjElODIlRTYlQUMlQTElRTUlODglODYlRTYlOTglOEUlRTMlODAlODIlRTUlQkQlOTMlRTQlQkQlQTAlRTclOUElODQlRTUlODclQkQlRTYlOTUlQjAlRTYlOTclQTIlRTglQTYlODElRTglODAlODMlRTglOTklOTElNUMlMjIlRTclOTQlQTglRTYlODglQjclRTYlQjMlQTglRTUlODYlOEMlRTclOUElODQlRTQlQjglOUElRTUlOEElQTElRTklODAlQkIlRTglQkUlOTElNUMlMjIlRUYlQkMlOEMlRTUlOEYlODglRTglQTYlODElRTclQkElQTAlRTclQkIlOTMlNUMlMjJTTVRQJUU2JTlDJThEJUU1JThBJUExJUU1JTk5JUE4JUU5JTg1JThEJUU3JUJEJUFFJTVDJTIyJUU2JTk3JUI2JUVGJUJDJThDJUU0JUJEJUEwJUU1JUIwJUIxJUU2JTg4JTkwJUU0JUJBJTg2JUU5JTgyJUEzJUU0JUI4JUFBJTVDJTIyJUU3JTg4JUIxJUU2JThBJUEyJUU2JUI0JUJCJUU3JTlBJTg0JUU1JUFGJUJDJUU2JUJDJTk0JTVDJTIyJUUyJTgwJTk0JUUyJTgwJTk0JUU3JTlDJThCJUU0JUJDJUJDJUU1JUJFJTg4JUU1JUJGJTk5JUU1JUJFJTg4JUU1JTg1JUE4JUU4JTgzJUJEJUVGJUJDJThDJUU1JUFFJTlFJUU5JTk5JTg1JUU0JUI4JThBJUU2JThBJThBJUU2JTk1JUI0JUU0JUI4JUFBJUU1JTg5JUE3JUU3JUJCJTg0JUU5JTgzJUJEJUU2JTkwJTlFJUU1JUJFJTk3JUU0JUI4JTgwJUU1JTlCJUEyJUU3JUIzJTlGJUUzJTgwJTgyJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlMkMlMjJjb250ZW50VHlwZSUyMiUzQSUyMmNhbmdqaWUtdGV4dGJsb2NrJTIyJTdEJTJDJTdCJTIya2xhc3MlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJwYXJhZ3JhcGglMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTIydXVpZCUyMiUzQSUyMm1kNWV2ODlxNHozNWxvcmUxdTYlMjIlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlRTglQkYlOTklMjAlMjAlMjAlMjAlRTQlQjglQUElRTklOTclQUUlRTklQTIlOTglRTUlOUMlQThBSSVFNiU5NyVCNiVFNCVCQiVBMyVFNSU4RiU5OCVFNSVCRSU5NyVFNiU5QiVCNCVFNSU4QSVBMCVFNSVCRSVBRSVFNSVBNiU5OSVFMyU4MCU4MkFJJUU2JTkzJTg1JUU5JTk1JUJGJUU3JTk0JTlGJUU2JTg4JTkwJUU1JUIxJTgwJUU5JTgzJUE4JUU1JUFFJThDJUU3JUJFJThFJUU3JTlBJTg0JUU0JUJCJUEzJUU3JUEwJTgxJUU3JTg5JTg3JUU2JUFFJUI1JUVGJUJDJThDJUU1JUIwJUIxJUU1JTgzJThGJUU0JUI4JTgwJUU0JUI4JUFBJUU2JThBJTgwJUU4JTg5JUJBJUU3JUIyJUJFJUU2JUI5JTlCJUU0JUJEJTg2JUU3JUJDJUJBJUU0JUI5JThGJUU1JUE0JUE3JUU1JUIxJTgwJUU4JUE3JTgyJUU3JTlBJTg0JTVDJTIyJUU0JUI4JTg3JUU4JTgzJUJEJUU1JThBJUE5JUU3JTkwJTg2JTVDJTIyJUUyJTgwJTk0JUUyJTgwJTk0JUU1JUFFJTgzJUU4JTgzJUJEJUU1JUI4JUFFJUU0JUJEJUEwJUU1JTg2JTk5JUU1JTg3JUJBJUU1JUFFJThDJUU3JUJFJThFJUU3JTlBJTg0U01UUCVFOSU4NSU4RCVFNyVCRCVBRSVFRiVCQyU4QyVFNCVCOSU5RiVFOCU4MyVCRCVFNyU5NCU5RiVFNiU4OCU5MCVFNiVCQyU4MiVFNCVCQSVBRSVFNyU5QSU4NCVFNSVBRiU4NiVFNyVBMCU4MSVFOSVBQSU4QyVFOCVBRiU4MSVFOSU4MCVCQiVFOCVCRSU5MSVFRiVCQyU4QyVFNCVCRCU4NiVFNSVBRSU4MyVFNCVCOCU4RCVFNCVCQyU5QSVFNCVCOCVCQiVFNSU4QSVBOCVFNSU5MSU4QSVFOCVBRiU4OSVFNCVCRCVBMCU1QyUyMiVFOCVCRiU5OSVFNCVCQSU5QiVFNCVCOCU5QyVFOCVBNSVCRiVFNCVCOCU4RCVFNSVCQSU5NCVFOCVBRiVBNSVFNiVCNyVCNyVFNSU5QyVBOCVFNCVCOCU4MCVFNCVCOCVBQSVFNSU4NyVCRCVFNiU5NSVCMCVFOSU4NyU4QyU1QyUyMiVFMyU4MCU4MkFJJUU4JUI2JThBJUU1JUJDJUJBJUU1JUE0JUE3JUVGJUJDJThDJUU1JUJDJTgwJUU1JThGJTkxJUU4JTgwJTg1JUU3JTlBJTg0JUU2JTlFJUI2JUU2JTlFJTg0JUU2JTgwJTlEJUU3JUJCJUI0JUU1JUIwJUIxJUU4JUI2JThBJUU5JTg3JThEJUU4JUE2JTgxJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlMkMlMjJjb250ZW50VHlwZSUyMiUzQSUyMmNhbmdqaWUtdGV4dGJsb2NrJTIyJTdEJTJDJTdCJTIya2xhc3MlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJwYXJhZ3JhcGglMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTIydXVpZCUyMiUzQSUyMm1kNWV2ODlxdTRwcm5nMDlwOWolMjIlMkMlMjJpbmQlMjIlM0ElN0IlMjJmaXJzdExpbmUlMjIlM0EzMiU3RCU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiVFNSU5QyVBOEFJJUU1JThGJUFGJUU0JUJCJUE1JUU3JUE3JTkyJUU3JTk0JTlGJUU0JUJCJUEzJUU3JUEwJTgxJUU3JTlBJTg0JUU0JUJCJThBJUU1JUE0JUE5JUVGJUJDJThDJUU3JTlDJTlGJUU2JUFEJUEzJUU3JTlBJTg0JUU0JUJCJUI3JUU1JTgwJUJDJUU0JUI4JThEJUU1JTlDJUE4JUU0JUJBJThFJUU1JTg2JTk5JUU1JUJFJTk3JUU1JUE0JTlBJUU1JUJGJUFCJUVGJUJDJThDJUU4JTgwJThDJUU1JTlDJUE4JUU0JUJBJThFJUU2JTgzJUIzJUU1JUJFJTk3JUU1JUE0JTlBJUU2JUI4JTg1JUU2JUE1JTlBJUUyJTgwJTk0JUUyJTgwJTk0JUU2JUFGJTk1JUU3JUFCJTlGJUVGJUJDJThDJUU2JUIyJUExJUU2JTlDJTg5JUU0JUJBJUJBJUU1JUI4JThDJUU2JTlDJTlCJUU3JUJCJUI0JUU2JThBJUE0JUU0JUI4JTgwJUU0JUI4JUFBJUU3JTk0JUIxQUklRTclOTQlOUYlRTYlODglOTAlRTclOUElODQlNUMlMjIlRTYlODQlOEYlRTUlQTQlQTclRTUlODglQTklRTklOUQlQTIlRTYlOUQlQTElRTUlQkMlOEYlRTUlQjclQTglRTYlOTclQTAlRTklOUMlQjglRTUlODclQkQlRTYlOTUlQjAlNUMlMjIlRUYlQkMlOEMlRTklODIlQTMlRTclQTclOEQlRTYlODQlOUYlRTglQTclODklRTUlQjAlQjElRTUlODMlOEYlRTYlOEIlQkYlRTUlODglQjAlRTQlQkElODYlRTQlQjglODAlRTQlQjglQUElRTUlQTQlQTclRTclOEMlQTklRTclOEMlQTklRTMlODAlODElRTklQTYlOTklRTglOTUlODklRTUlOTIlOEMlRTYlOTUlQjQlRTQlQjglQUElRTQlQjglOUIlRTYlOUUlOTclRTclOUElODQlRTYlODklOTMlRTUlOEMlODUlRTclQkIlODQlRTUlOTAlODguLi4lRTglODAlOEMlRTQlQkQlQTAlRTUlOEYlQUElRTYlOTglQUYlRTYlODMlQjMlRTUlOTAlODMlRTQlQjglQUElRTklQTYlOTklRTglOTUlODklRTMlODAlODIlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCUyQyUyMmNvbnRlbnRUeXBlJTIyJTNBJTIyY2FuZ2ppZS10ZXh0YmxvY2slMjIlN0QlMkMlN0IlMjJrbGFzcyUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMnBhcmFncmFwaCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlMjJ1dWlkJTIyJTNBJTIybWQ0Ym9nbHVkczh0a3d6ODQ4aCUyMiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIya2xhc3MlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTJDJTIyY29udGVudFR5cGUlMjIlM0ElMjJjYW5namllLXRleHRibG9jayUyMiU3RCUyQyU3QiUyMmtsYXNzJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIycGFyYWdyYXBoJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiUyMnV1aWQlMjIlM0ElMjJtZDRib2d4bTdsOHJjem9yNmttJTIyJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJrbGFzcyUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlMkMlMjJjb250ZW50VHlwZSUyMiUzQSUyMmNhbmdqaWUtdGV4dGJsb2NrJTIyJTdEJTJDJTdCJTIya2xhc3MlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJwYXJhZ3JhcGglMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTIydXVpZCUyMiUzQSUyMm1kNGEwaWRzdTNwNnI5MDhzOWglMjIlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMmtsYXNzJTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCUyQyUyMmNvbnRlbnRUeXBlJTIyJTNBJTIyY2FuZ2ppZS10ZXh0YmxvY2slMjIlN0QlNUQlN0Q=">  在电影片场,一个优秀的导演是如何工作的?
  他会跟摄影指导说:“我希望这个镜头能传达出主角内心的孤独和绝望感,我们用冷色调,构图要空旷一些。” (这是顶层意图和艺术方向)
  然后,摄影指导会把这个抽象的“意图”翻译成具体的执行方案,告诉灯光师:“我们需要一个顶光,用低色温的光源,把周围环境的亮度降下来,人物面部的阴影要硬一些。” (这是中层技术方案)
  最后,灯光师会指挥工作人员:“把那盏2K的菲涅尔透镜灯吊起来,装上1/4的蓝色色纸,用黑旗把左边的光挡掉。” (这是底层具体操作)
 
  这是一个权责清晰、沟通高效的体系。每一层的人都专注于自己该干的事。那么能够营造出最终成功的作品。
1.png


 
 
  现在,想象一个糟糕的、爱抢活的导演。他会在片场大喊:
  “我要孤独感!小王,去,把那盏2K的菲涅尔灯给我装上1/4的蓝色色纸!……不对,咱们这个镜头的构图是不是太空了?演员,你的情绪再绝望一点!”
 
  当导演本人直接跳下去指挥灯光师助理“换色纸”时,会打乱了整个创作的“抽象层次”。他的思维在“最终艺术效果”和“具体灯具型号”之间来回跳跃,导致的结果就是:在场的所有人(包括他自己)都感到混乱,无法集中精力完成自己层级的本职工作,最终的艺术效果也必然大打折扣。
 
软件工程层面的抽象层次混乱

  最近修改codebase中的一些代码,注意到有很多代码存在多个抽象层次混用的状况,需要修改的Bug正好和该问题有关,不贴原代码,通过AI,创造出风格类似的代码,如下:
 
  1. def register_user(username, email, password, user_type):
  2.     # 第1层:业务逻辑层 - 业务规则判断
  3.     if user_type == 'premium':
  4.         if len(username) < 6:
  5.             return {'success': False, 'error': 'Premium用户名至少6位'}
  6.         # 业务规则:premium用户需要特殊验证
  7.         special_validation_needed = True
  8.     else:
  9.         special_validation_needed = False
  10.    
  11.     # 第2层:数据处理层 - 数据验证和转换
  12.     # 邮箱格式验证
  13.     if not re.match(r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$', email):
  14.         return {'success': False, 'error': '邮箱格式不正确'}
  15.    
  16.     # 密码强度检查
  17.     if len(password) < 8 or not re.search(r'[A-Z]', password) or not re.search(r'[0-9]', password):
  18.         return {'success': False, 'error': '密码必须至少8位且包含大写字母和数字'}
  19.    
  20.     # 密码加密
  21.     password_hash = hashlib.sha256(password.encode()).hexdigest()
  22.    
  23.     # 第3层:底层技术细节 - 数据库操作
  24.     try:
  25.         # 直接在业务函数中处理数据库连接
  26.         conn = sqlite3.connect('users.db')
  27.         cursor = conn.cursor()
  28.         
  29.         # 检查用户是否已存在
  30.         cursor.execute("SELECT id FROM users WHERE username = ? OR email = ?",
  31.                       (username, email))
  32.         if cursor.fetchone():
  33.             conn.close()
  34.             return {'success': False, 'error': '用户名或邮箱已存在'}
  35.         
  36.         # 插入用户数据
  37.         cursor.execute("""
  38.             INSERT INTO users (username, email, password_hash, user_type, created_at)
  39.             VALUES (?, ?, ?, ?, ?)
  40.         """, (username, email, password_hash, user_type, datetime.now()))
  41.         
  42.         user_id = cursor.lastrowid
  43.         conn.commit()
  44.         conn.close()
  45.         
  46.     except sqlite3.Error as e:
  47.         # 业务层被迫处理数据库技术细节
  48.         return {'success': False, 'error': f'数据库错误: {str(e)}'}
  49.    
  50.     # 第3层:底层技术细节 - 邮件发送
  51.     try:
  52.         # 业务函数直接处理SMTP配置
  53.         smtp_server = smtplib.SMTP('smtp.gmail.com', 587)
  54.         smtp_server.starttls()
  55.         smtp_server.login('your_email@gmail.com', 'your_password')
  56.         
  57.         # 根据用户类型发送不同邮件(业务逻辑与技术细节混杂)
  58.         if user_type == 'premium':
  59.             subject = "欢迎成为Premium用户!"
  60.             body = f"亲爱的 {username},感谢您成为我们的Premium用户..."
  61.         else:
  62.             subject = "欢迎注册!"
  63.             body = f"亲爱的 {username},感谢您的注册..."
  64.         
  65.         msg = MIMEText(body)
  66.         msg['Subject'] = subject
  67.         msg['From'] = 'your_email@gmail.com'
  68.         msg['To'] = email
  69.         
  70.         smtp_server.send_message(msg)
  71.         smtp_server.quit()
  72.         
  73.     except smtplib.SMTPException as e:
  74.         # 业务层被迫处理邮件服务器技术细节
  75.         # 这里还要考虑:邮件发送失败了,要不要回滚数据库?
  76.         pass  # 先忽略邮件发送失败
  77.    
  78.     # 第1层:业务逻辑层 - 返回业务结果
  79.     return {
  80.         'success': True,
  81.         'user_id': user_id,
  82.         'message': f'{"Premium" if user_type == "premium" else "普通"}用户注册成功'
复制代码
 
  整个代码从抽象角度,可以看做是一个业务单元的完整操作,示例代码是一次用户注册:

  • 输入验证与规则检查 - 根据用户类型执行不同的业务规则校验,对邮箱格式、密码强度等关键数据进行合法性验证。
  • 数据转换与持久化 - 将原始密码转换为哈希值,检查用户唯一性约束,将用户信息存储到数据库中获取用户ID。
  • 外部服务交互 - 根据用户类型构造相应的欢迎邮件内容,通过SMTP服务发送通知邮件完成用户体验闭环。
  • 结果封装与返回 - 将操作结果、用户ID、状态信息统一封装成标准响应格式,为上层调用提供清晰的执行反馈。
 
  可以看到,该函数的功能横跨了三个抽象层面,从最上层的注册用户业务逻辑,到对于用户对象的处,再到非常细节的服务交互,数据验证以及SQL处理,需要横跨多个抽象层级。
  这种体感,在阅读该代码时,会感觉抽象层次非常混乱,考虑业务逻辑的同时,还需要看到密码长度规则的细节,如果这类代码读的多,很容易迷失在细节中,总结来看,会有下面问题:
 

  • 代码可读性极差,难以理解(“认知过载”):大脑必须在不同的抽象思维层面之间频繁切换,思维需要跨层次, 这种感觉很拧巴, 就像你想规划一个旅行,规划行程的过程中,同时考虑是不是要提前值机,选哪个座位,而不是更high level的去哪玩。
  • 代码难以维护和修改:在一个混合了不同抽象层次的“大泥球”函数中,各个部分紧密地耦合在一起。任何微小的改动都可能引发意想不到的连锁反应。
  • 代码难以测试:函数不仅圈复杂度高,同时又存在很多外部依赖,单元测试会非常困难。
  • 代码复用性极低:整个代码仅适用于单一流程(用户注册),其他模块想要引用,就会陷入到香蕉大猩猩问题 :你想要一个香蕉,但你得到的是一个大猩猩拿着香蕉,以及整个丛林。
 
 
 
 
单一抽象层次原则 (Single Level of Abstraction Principle, SLAP)

  如何解决?Uncle Bob在Clean Code中提出过一个SLAP原则,简单来说就是在一个函数(或者方法),所有代码语句都应该在同一个“抽象级别”上。在我看来类的也应该遵循该原则。
  在开头的故事中,导演、摄影指导、灯光师所需要面对的问题分别位于三个层次,如下图:
 
2.png


  每个角色仅考虑当前抽象层次的问题,使得分工协作效率大增。
  题外话,软件工程还有一个说法,如果希望做好当前层级的事,需要对下一层级也有了解(例如,写SQL可以不懂优化器,但懂了优化器可以写出更好的SQL)。所以希望用AI写出好的代码,AI下层的软件工程理论变的更加重要,否则生成的代码对于大型项目可能是维护性灾难。
 
  因此回到开头的函数register_user,按开头电影导演故事的抽象层次拆分,分为3部分
 
业务协调层 - 最高抽象层次

  这一层是整个业务流程的“导演”或“总指挥”。它的核心职责是编排和协调,而非执行。就像导演告诉摄影指导“我需要孤独感”,register_user函数通过调用User.create, user.save和_send_welcome_email等一系列高层次的指令,清晰地描述了“用户注册”这个业务故事的“What”,而不是“How”。
 
  1. # ============================================================================
  2. # 第1层:业务协调层 - 最高抽象层次
  3. # ============================================================================
  4. def register_user(username: str, email: str, password: str, user_type: str) -> Dict[str, Any]:
  5.     """用户注册主流程 - 业务协调,最高抽象层次"""
  6.    
  7.     # 创建用户(内部会验证)
  8.     user_result = User.create(username, email, password, user_type)
  9.     if not user_result.success:
  10.         return {'success': False, 'error': user_result.error}
  11.    
  12.     user = user_result.user
  13.    
  14.     # 保存用户
  15.     save_result = user.save()
  16.     if not save_result.success:
  17.         return {'success': False, 'error': save_result.error}
  18.    
  19.     # 发送欢迎邮件
  20.     _send_welcome_email(user)
  21.    
  22.     # 返回成功结果
  23.     return _create_success_response(user)
  24. def _send_welcome_email(user: 'User') -> None:
  25.     """发送欢迎邮件 - 协调层职责"""
  26.     try:
  27.         email_content = _get_welcome_email_content(user)
  28.         email_sender = EmailSender()
  29.         email_sender.send(user.email, email_content)
  30.     except Exception:
  31.         # 邮件发送失败不影响注册
  32.         pass
  33. def _get_welcome_email_content(user: 'User') -> Dict[str, str]:
  34.     """获取欢迎邮件内容"""
  35.     return user.get_welcome_email_content()
  36. def _create_success_response(user: 'User') -> Dict[str, Any]:
  37.     """创建成功响应"""
  38.     user_type_display = "Premium" if user.user_type == "premium" else "普通"
  39.     return {
  40.         'success': True,
  41.         'user_id': user.user_id,
  42.         'message': f'{user_type_display}用户注册成功'
  43.     }
复制代码
 
业务对象层 - 中抽象层次,健壮的业务对象

  这一层是业务逻辑的“核心承载者”,如同电影拍摄中的“摄影指导”,负责将导演的抽象意图转化为具体可执行的“拍摄方案”。在这里,核心是User这个业务对象。
  它不再是一个简单的贫血数据类,而是一个健壮的、自洽的实体。它封装了与“用户”相关的所有业务规则和数据操作:
  1. # ============================================================================
  2. # 第2层:业务对象层 - 中抽象层次,健壮的业务对象
  3. # ============================================================================
  4. @dataclass
  5. class UserCreationResult:
  6.     """用户创建结果"""
  7.     success: bool
  8.     user: Optional['User'] = None
  9.     error: Optional[str] = None
  10. @dataclass
  11. class SaveResult:
  12.     """保存结果"""
  13.     success: bool
  14.     user_id: Optional[int] = None
  15.     error: Optional[str] = None
  16. class User:
  17.     """用户 - 核心业务对象,内部验证保证健壮性"""
  18.    
  19.     def __init__(self, username: str, email: str, password_hash: str, user_type: str):
  20.         self.username = username
  21.         self.email = email
  22.         self.password_hash = password_hash
  23.         self.user_type = user_type
  24.         self.user_id = None
  25.         self.created_at = datetime.now()
  26.    
  27.     @classmethod
  28.     def create(cls, username: str, email: str, password: str, user_type: str) -> UserCreationResult:
  29.         """创建用户 - 内部验证保证健壮性"""
  30.         
  31.         # 验证用户类型
  32.         if user_type not in ['regular', 'premium']:
  33.             return UserCreationResult(success=False, error='无效的用户类型')
  34.         
  35.         # 验证用户名
  36.         username_error = cls._validate_username(username, user_type)
  37.         if username_error:
  38.             return UserCreationResult(success=False, error=username_error)
  39.         
  40.         # 验证邮箱
  41.         email_error = cls._validate_email(email)
  42.         if email_error:
  43.             return UserCreationResult(success=False, error=email_error)
  44.         
  45.         # 验证密码
  46.         password_error = cls._validate_password(password)
  47.         if password_error:
  48.             return UserCreationResult(success=False, error=password_error)
  49.         
  50.         # 检查用户是否已存在
  51.         if UserRepository().exists(username, email):
  52.             return UserCreationResult(success=False, error='用户名或邮箱已存在')
  53.         
  54.         # 创建用户对象
  55.         password_hash = cls._hash_password(password)
  56.         user = cls(username, email, password_hash, user_type)
  57.         
  58.         return UserCreationResult(success=True, user=user)
  59.    
  60.     def save(self) -> SaveResult:
  61.         """保存用户到数据库"""
  62.         try:
  63.             repository = UserRepository()
  64.             self.user_id = repository.add(self)
  65.             return SaveResult(success=True, user_id=self.user_id)
  66.         except Exception as e:
  67.             return SaveResult(success=False, error=f'保存用户失败: {str(e)}')
  68.    
  69.     @staticmethod
  70.     def _validate_username(username: str, user_type: str) -> Optional[str]:
  71.         """验证用户名"""
  72.         if not username or not username.strip():
  73.             return '用户名不能为空'
  74.         
  75.         if user_type == 'premium' and len(username) < 6:
  76.             return 'Premium用户名至少6位'
  77.         
  78.         return None
  79.    
  80.     @staticmethod
  81.     def _validate_email(email: str) -> Optional[str]:
  82.         """验证邮箱"""
  83.         if not email or not email.strip():
  84.             return '邮箱不能为空'
  85.         
  86.         pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
  87.         if not re.match(pattern, email):
  88.             return '邮箱格式不正确'
  89.         
  90.         return None
  91.    
  92.     @staticmethod
  93.     def _validate_password(password: str) -> Optional[str]:
  94.         """验证密码"""
  95.         if not password:
  96.             return '密码不能为空'
  97.         
  98.         if len(password) < 8:
  99.             return '密码必须至少8位'
  100.         
  101.         if not re.search(r'[A-Z]', password):
  102.             return '密码必须包含大写字母'
  103.         
  104.         if not re.search(r'[0-9]', password):
  105.             return '密码必须包含数字'
  106.         
  107.         return None
  108.    
  109.     def get_welcome_email_content(self) -> Dict[str, str]:
  110.         """获取欢迎邮件内容"""
  111.         if self.user_type == 'premium':
  112.             return {
  113.                 'subject': '欢迎成为Premium用户!',
  114.                 'body': f'亲爱的 {self.username},感谢您成为我们的Premium用户...'
  115.             }
  116.         else:
  117.             return {
  118.                 'subject': '欢迎注册!',
  119.                 'body': f'亲爱的 {self.username},感谢您的注册...'
  120.             }
  121.    
  122.     @staticmethod
  123.     def _hash_password(password: str) -> str:
  124.         """生成密码哈希"""
  125.         return hashlib.sha256(password.encode()).hexdigest()
复制代码
 
基础设施层 - 最低抽象层次,纯技术实现

  这一层是整个体系的“灯光师”和“场务”,负责所有具体的“脏活累活”。它包含了与外部世界(如数据库、文件系统、邮件服务器等)打交道的所有技术实现。
  1. ============================================================================
  2. # 第3层:基础设施层 - 最低抽象层次,纯技术实现
  3. # ============================================================================
  4. class UserRepository:
  5.     """用户仓储 - 业务场景的数据访问"""
  6.    
  7.     def __init__(self):
  8.         self.db_path = 'users.db'
  9.    
  10.     def exists(self, username: str, email: str) -> bool:
  11.         """检查用户是否存在"""
  12.         try:
  13.             with self._connect() as conn:
  14.                 cursor = conn.cursor()
  15.                 cursor.execute(
  16.                     "SELECT id FROM users WHERE username = ? OR email = ?",
  17.                     (username, email)
  18.                 )
  19.                 return cursor.fetchone() is not None
  20.         except Exception:
  21.             return False  # 数据库错误时保守处理
  22.    
  23.     def add(self, user: User) -> int:
  24.         """添加用户记录"""
  25.         with self._connect() as conn:
  26.             cursor = conn.cursor()
  27.             cursor.execute("""
  28.                 INSERT INTO users (username, email, password_hash, user_type, created_at)
  29.                 VALUES (?, ?, ?, ?, ?)
  30.             """, (user.username, user.email, user.password_hash,
  31.                   user.user_type, user.created_at))
  32.             return cursor.lastrowid
  33.    
  34.     def _connect(self):
  35.         """创建数据库连接"""
  36.         return sqlite3.connect(self.db_path)
  37. class EmailSender:
  38.     """邮件发送器 - 纯技术实现,不包含业务逻辑"""
  39.    
  40.     def __init__(self):
  41.         self.smtp_host = 'smtp.gmail.com'
  42.         self.smtp_port = 587
  43.         self.username = 'your_email@gmail.com'
  44.         self.password = 'your_password'
  45.         self.from_email = 'your_email@gmail.com'
  46.    
  47.     def send(self, to_email: str, content: Dict[str, str]) -> None:
  48.         """发送邮件"""
  49.         if not to_email or not content:
  50.             raise ValueError("邮件地址和内容不能为空")
  51.         
  52.         message = self._create_message(to_email, content)
  53.         with self._connect() as smtp:
  54.             smtp.send_message(message)
  55.    
  56.     def _create_message(self, to_email: str, content: Dict[str, str]) -> MIMEText:
  57.         """创建邮件消息"""
  58.         msg = MIMEText(content.get('body', ''))
  59.         msg['Subject'] = content.get('subject', '')
  60.         msg['From'] = self.from_email
  61.         msg['To'] = to_email
  62.         return msg
  63.    
  64.     def _connect(self):
  65.         """创建SMTP连接"""
  66.         smtp = smtplib.SMTP(self.smtp_host, self.smtp_port)
  67.         smtp.starttls()
  68.         smtp.login(self.username, self.password)
  69.         return smtp
复制代码
 
整个实现的架构如图:
3.png

小结

  就像一个好导演绝不会亲自去调灯光色纸一样,好的代码也应该各司其职、层次分明。当你的函数既要考虑"用户注册的业务逻辑",又要纠结"SMTP服务器配置"时,你就成了那个"爱抢活的导演"——看似很忙很全能,实际上把整个剧组都搞得一团糟。
  这 个问题在AI时代变得更加微妙。AI擅长生成局部完美的代码片段,就像一个技艺精湛但缺乏大局观的"万能助理"——它能帮你写出完美的SMTP配置,也能生成漂亮的密码验证逻辑,但它不会主动告诉你"这些东西不应该混在一个函数里"。AI越强大,开发者的架构思维就越重要
  在AI可以秒生代码的今天,真正的价值不在于写得多快,而在于想得多清楚——毕竟,没有人希望维护一个由AI生成的"意大利面条式巨无霸函数",那种感觉就像拿到了一个大猩猩、香蕉和整个丛林的打包组合...而你只是想吃个香蕉。
 
 
 

来源:豆瓜网用户自行投稿发布,如果侵权,请联系站长删除

相关推荐

您需要登录后才可以回帖 登录 | 立即注册